paste settings improved

This commit is contained in:
teraflops 2025-06-08 15:44:54 +02:00
parent e3adeb642f
commit b2a3402b24
3 changed files with 80 additions and 3 deletions

View File

@ -3028,6 +3028,36 @@ def init_routes(app):
"mediaCounts": [media_count]
})
@app.route('/paste/<int:paste_id>/settings', methods=['GET', 'POST'])
@login_required
def paste_settings(paste_id):
paste = Paste.query.get_or_404(paste_id)
if paste.owner_id != current_user.id:
flash('You do not have permission to modify this paste.', 'danger')
return redirect(url_for('user_dashboard'))
if request.method == 'POST':
paste.title = request.form.get('title') or None
paste.language = request.form.get('language') or None
paste.editable = 'editable' in request.form
paste.private = 'private' in request.form
expires = request.form.get('expires_at')
paste.expires_at = datetime.strptime(expires, "%Y-%m-%d") if expires else None
db.session.commit()
flash('Paste settings updated.', 'success')
return redirect(url_for('paste_settings', paste_id=paste.id))
# 👇 Pasamos la lista de lenguajes al template
pygments_languages = get_readable_languages()
return render_template(
'paste_settings.html',
paste=paste,
pygments_languages=pygments_languages
)
@app.route('/generate_code_from_paste/<int:id>', methods=['GET'])
def generate_code_from_paste(id):
"""

View File

@ -0,0 +1,45 @@
{% extends "base.html" %}
{% block title %}Paste Settings{% endblock %}
{% block content %}
<div class="container mt-4">
<h3>Settings for: paste_{{ paste.id }}.{{ paste.get_extension() }}</h3>
<form method="POST">
<div class="mb-3">
<label for="title" class="form-label">Title</label>
<input type="text" id="title" name="title" class="form-control" value="{{ paste.title or '' }}">
</div>
<div class="mb-3">
<label for="language" class="form-label">Language (Optional)</label>
<select class="form-select" id="language" name="language">
<option value="">Select a Language, leave it blank to auto detect</option>
{% for value, label in pygments_languages %}
<option value="{{ value }}" {% if paste.language == value %}selected{% endif %}>
{{ label }}
</option>
{% endfor %}
</select>
</div>
<div class="mb-3">
<label for="expires_at" class="form-label">Expires At</label>
<input type="date" id="expires_at" name="expires_at" class="form-control"
value="{{ paste.expires_at.strftime('%Y-%m-%d') if paste.expires_at else '' }}">
</div>
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="private" name="private" {% if paste.private %}checked{% endif %}>
<label class="form-check-label" for="private">Private</label>
</div>
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="editable" name="editable" {% if paste.editable %}checked{% endif %}>
<label class="form-check-label" for="editable">Editable</label>
</div>
<button type="submit" class="btn btn-primary">Save Changes</button>
<a href="{{ url_for('user_dashboard') }}" class="btn btn-secondary">Back</a>
</form>
</div>
{% endblock %}

View File

@ -267,9 +267,11 @@
{% for paste in pastes %}
<tr id="paste-{{ paste.id }}">
<td>{{ paste.id }}</td>
<td>paste_{{ paste.id }}.{{ paste.get_extension() }}</td>
<td>
<a href="{{ url_for('paste_settings', paste_id=paste.id) }}">
paste_{{ paste.id }}.{{ paste.get_extension() }}
</a>
</td>
<td>{{ paste.get_type() }}</td>
<td>{{ paste.size }}</td>