Enhance upload functionality: add channel selection, display duration, and fix media file visibility
This commit is contained in:
45
server.py
45
server.py
@@ -199,13 +199,19 @@ def admin():
|
||||
@app.route('/user')
|
||||
@login_required
|
||||
def user_dashboard():
|
||||
# Get user's files
|
||||
user_files = MediaFile.query.filter_by(uploaded_by=current_user.id, is_active=True).order_by(MediaFile.upload_date.desc()).all()
|
||||
# Get all active files (for signage systems, users should see all available media)
|
||||
user_files = MediaFile.query.filter_by(is_active=True).order_by(MediaFile.upload_date.desc()).all()
|
||||
|
||||
# Get all active channels
|
||||
channels = StreamingChannel.query.filter_by(is_active=True).order_by(StreamingChannel.name).all()
|
||||
|
||||
# Get all users for display in file info
|
||||
users = User.query.all()
|
||||
|
||||
# Get user's activity
|
||||
user_activity = ActivityLog.query.filter_by(user_id=current_user.id).order_by(ActivityLog.timestamp.desc()).limit(10).all()
|
||||
|
||||
return render_template('user.html', user_files=user_files, user_activity=user_activity)
|
||||
return render_template('user.html', user_files=user_files, user_activity=user_activity, channels=channels, users=users)
|
||||
|
||||
# File Management Routes
|
||||
@app.route('/upload', methods=['POST'])
|
||||
@@ -243,8 +249,39 @@ def upload_file():
|
||||
db.session.add(media_file)
|
||||
db.session.commit()
|
||||
|
||||
# If channel is selected, add to channel
|
||||
channel_id = request.form.get('channel_id')
|
||||
display_duration = request.form.get('display_duration', 10)
|
||||
|
||||
if channel_id and channel_id.strip():
|
||||
try:
|
||||
channel_id = int(channel_id)
|
||||
channel = StreamingChannel.query.get(channel_id)
|
||||
|
||||
if channel and channel.is_active:
|
||||
# Get next order number for this channel
|
||||
max_order = db.session.query(db.func.max(ChannelContent.order)).filter_by(channel_id=channel_id).scalar() or 0
|
||||
|
||||
# Add to channel
|
||||
channel_content = ChannelContent(
|
||||
channel_id=channel_id,
|
||||
media_file_id=media_file.id,
|
||||
duration=int(display_duration),
|
||||
order=max_order + 1
|
||||
)
|
||||
db.session.add(channel_content)
|
||||
db.session.commit()
|
||||
|
||||
log_activity('Content added to channel', f'Added {file.filename} to channel {channel.name}')
|
||||
flash(f'File "{file.filename}" uploaded and added to channel "{channel.name}"!', 'success')
|
||||
else:
|
||||
flash(f'File "{file.filename}" uploaded but channel not found!', 'warning')
|
||||
except (ValueError, TypeError):
|
||||
flash(f'File "{file.filename}" uploaded but invalid channel selected!', 'warning')
|
||||
else:
|
||||
flash(f'File "{file.filename}" uploaded successfully!', 'success')
|
||||
|
||||
log_activity('File uploaded', f'Uploaded: {file.filename}')
|
||||
flash(f'File "{file.filename}" uploaded successfully!', 'success')
|
||||
else:
|
||||
flash('Invalid file type. Please upload images, videos, PDFs, or JSON files.', 'error')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user