mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
user avatars and banner images
This commit is contained in:
parent
46900390a5
commit
b32be0127e
3 changed files with 33 additions and 7 deletions
|
@ -1,5 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% from 'bootstrap/form.html' import render_form %}
|
||||
{% from 'bootstrap/form.html' import render_field %}
|
||||
|
||||
{% block app_content %}
|
||||
<div class="row">
|
||||
|
@ -11,9 +11,21 @@
|
|||
<li class="breadcrumb-item active">{{ _('Edit profile') }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<h1 class="mt-2">{{ _('Edit profile') }}</h1>
|
||||
<form method='post'>
|
||||
{{ render_form(form) }}
|
||||
<h1 class="mt-2">{{ _('Edit profile of %(name)s', name=user.user_name) }}</h1>
|
||||
<form method='post' enctype="multipart/form-data">
|
||||
{{ form.csrf_token() }}
|
||||
|
||||
{{ render_field(form.email) }}
|
||||
{{ render_field(form.password_field) }}
|
||||
<hr />
|
||||
{{ render_field(form.about) }}
|
||||
{{ render_field(form.profile_file) }}
|
||||
<small class="field_hint">Provide a square image that looks good when small.</small>
|
||||
{{ render_field(form.banner_file) }}
|
||||
<small class="field_hint">Provide a wide image - letterbox orientation.</small>
|
||||
<hr />
|
||||
{{ render_field(form.bot) }}
|
||||
{{ render_field(form.submit) }}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,6 +11,9 @@ class ProfileForm(FlaskForm):
|
|||
password_field = PasswordField(_l('Set new password'), validators=[Optional(), Length(min=1, max=50)],
|
||||
render_kw={"autocomplete": 'Off'})
|
||||
about = TextAreaField(_l('Bio'), validators=[Optional(), Length(min=3, max=5000)])
|
||||
profile_file = FileField(_('Avatar image'))
|
||||
banner_file = FileField(_('Top banner image'))
|
||||
bot = BooleanField(_l('This profile is a bot'))
|
||||
submit = SubmitField(_l('Save profile'))
|
||||
|
||||
def validate_email(self, field):
|
||||
|
@ -20,7 +23,6 @@ class ProfileForm(FlaskForm):
|
|||
|
||||
class SettingsForm(FlaskForm):
|
||||
newsletter = BooleanField(_l('Subscribe to email newsletter'))
|
||||
bot = BooleanField(_l('This profile is a bot'))
|
||||
ignore_bots = BooleanField(_l('Hide posts by bots'))
|
||||
nsfw = BooleanField(_l('Show NSFW posts'))
|
||||
nsfl = BooleanField(_l('Show NSFL posts'))
|
||||
|
|
|
@ -5,10 +5,12 @@ from flask_login import login_user, logout_user, current_user, login_required
|
|||
from flask_babel import _
|
||||
|
||||
from app import db, cache
|
||||
from app.community.util import save_icon_file, save_banner_file
|
||||
from app.models import Post, Community, CommunityMember, User, PostReply, PostVote, Notification, utcnow
|
||||
from app.user import bp
|
||||
from app.user.forms import ProfileForm, SettingsForm
|
||||
from app.utils import get_setting, render_template, markdown_to_html, user_access, markdown_to_text, shorten_string
|
||||
from app.utils import get_setting, render_template, markdown_to_html, user_access, markdown_to_text, shorten_string, \
|
||||
is_image_url
|
||||
from sqlalchemy import desc, or_, text
|
||||
|
||||
|
||||
|
@ -47,6 +49,17 @@ def edit_profile(actor):
|
|||
if form.password_field.data.strip() != '':
|
||||
current_user.set_password(form.password_field.data)
|
||||
current_user.about = form.about.data
|
||||
current_user.bot = form.bot.data
|
||||
profile_file = request.files['profile_file']
|
||||
if profile_file and profile_file.filename != '':
|
||||
file = save_icon_file(profile_file)
|
||||
if file:
|
||||
current_user.avatar = file
|
||||
banner_file = request.files['banner_file']
|
||||
if banner_file and banner_file.filename != '':
|
||||
file = save_banner_file(banner_file)
|
||||
if file:
|
||||
current_user.cover = file
|
||||
current_user.flush_cache()
|
||||
db.session.commit()
|
||||
|
||||
|
@ -73,7 +86,6 @@ def change_settings(actor):
|
|||
form = SettingsForm()
|
||||
if form.validate_on_submit():
|
||||
current_user.newsletter = form.newsletter.data
|
||||
current_user.bot = form.bot.data
|
||||
current_user.ignore_bots = form.ignore_bots.data
|
||||
current_user.show_nsfw = form.nsfw.data
|
||||
current_user.show_nsfl = form.nsfl.data
|
||||
|
|
Loading…
Reference in a new issue