Add a license preference field
This feature is absolutely necessary. Now a user can simply define their default license and quickly go through a form, as opposed to stopping to click on the select and choosing the same option over and over again. Also added DB migration for the field, so that's working now, too. Rebased by Sebastian and made the default value to be unicode. Reviewed-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
49745d5138
commit
dc4dfbde35
@ -184,3 +184,15 @@ def fix_CollectionItem_v0_constraint(db_conn):
|
||||
pass
|
||||
|
||||
db_conn.commit()
|
||||
|
||||
|
||||
@RegisterMigration(8, MIGRATIONS)
|
||||
def add_license_preference(db):
|
||||
metadata = MetaData(bind=db.bind)
|
||||
|
||||
user_table = Table('core__users', metadata, autoload=True,
|
||||
autoload_with=db.bind)
|
||||
|
||||
col = Column('license_preference', Unicode, default=u'')
|
||||
col.create(user_table)
|
||||
db.commit()
|
||||
|
@ -63,6 +63,7 @@ class User(Base, UserMixin):
|
||||
# Intented to be nullable=False, but migrations would not work for it
|
||||
# set to nullable=True implicitly.
|
||||
wants_comment_notification = Column(Boolean, default=True)
|
||||
license_preference = Column(Unicode)
|
||||
verification_key = Column(Unicode)
|
||||
is_admin = Column(Boolean, default=False, nullable=False)
|
||||
url = Column(Unicode)
|
||||
|
@ -65,8 +65,19 @@ class EditAccountForm(wtforms.Form):
|
||||
"Enter your old password to prove you own this account."))
|
||||
new_password = wtforms.PasswordField(
|
||||
_('New password'),
|
||||
[wtforms.validators.Length(min=6, max=30)],
|
||||
[
|
||||
wtforms.validators.Optional(),
|
||||
wtforms.validators.Length(min=6, max=30)
|
||||
],
|
||||
id="password")
|
||||
license_preference = wtforms.SelectField(
|
||||
_('License preference'),
|
||||
[
|
||||
wtforms.validators.Optional(),
|
||||
wtforms.validators.AnyOf([lic[0] for lic in licenses_as_choices()]),
|
||||
],
|
||||
choices=licenses_as_choices(),
|
||||
description=_('This will be your default license on upload forms.'))
|
||||
wants_comment_notification = wtforms.BooleanField(
|
||||
label=_("Email me when others comment on my media"))
|
||||
|
||||
|
@ -219,45 +219,42 @@ def edit_profile(request, url_user=None):
|
||||
def edit_account(request):
|
||||
user = request.user
|
||||
form = forms.EditAccountForm(request.form,
|
||||
wants_comment_notification=user.get('wants_comment_notification'))
|
||||
wants_comment_notification=user.get('wants_comment_notification'),
|
||||
license_preference=user.get('license_preference'))
|
||||
|
||||
if request.method == 'POST':
|
||||
form_validated = form.validate()
|
||||
|
||||
#if the user has not filled in the new or old password fields
|
||||
if not form.new_password.data and not form.old_password.data:
|
||||
if form.wants_comment_notification.validate(form):
|
||||
user.wants_comment_notification = \
|
||||
form.wants_comment_notification.data
|
||||
user.save()
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
_("Account settings saved"))
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=user.username)
|
||||
if form_validated and \
|
||||
form.wants_comment_notification.validate(form):
|
||||
user.wants_comment_notification = \
|
||||
form.wants_comment_notification.data
|
||||
|
||||
#so the user has filled in one or both of the password fields
|
||||
else:
|
||||
if form_validated:
|
||||
password_matches = auth_lib.bcrypt_check_password(
|
||||
form.old_password.data,
|
||||
user.pw_hash)
|
||||
if password_matches:
|
||||
#the entire form validates and the password matches
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
|
||||
form.new_password.data)
|
||||
user.wants_comment_notification = \
|
||||
form.wants_comment_notification.data
|
||||
user.save()
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
_("Account settings saved"))
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=user.username)
|
||||
else:
|
||||
form.old_password.errors.append(_('Wrong password'))
|
||||
if form_validated and \
|
||||
form.new_password.data or form.old_password.data:
|
||||
password_matches = auth_lib.bcrypt_check_password(
|
||||
form.old_password.data,
|
||||
user.pw_hash)
|
||||
if password_matches:
|
||||
#the entire form validates and the password matches
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
|
||||
form.new_password.data)
|
||||
else:
|
||||
form.old_password.errors.append(_('Wrong password'))
|
||||
|
||||
if form_validated and \
|
||||
form.license_preference.validate(form):
|
||||
user.license_preference = \
|
||||
form.license_preference.data
|
||||
|
||||
if form_validated and not form.errors:
|
||||
user.save()
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
_("Account settings saved"))
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=user.username)
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
|
@ -41,7 +41,8 @@ def submit_start(request):
|
||||
"""
|
||||
First view for submitting a file.
|
||||
"""
|
||||
submit_form = submit_forms.SubmitStartForm(request.form)
|
||||
submit_form = submit_forms.SubmitStartForm(request.form,
|
||||
license=request.user.get('license_preference'))
|
||||
|
||||
if request.method == 'POST' and submit_form.validate():
|
||||
if not ('file' in request.files
|
||||
|
@ -47,6 +47,10 @@
|
||||
<p>{{ form.wants_comment_notification }}
|
||||
{{ form.wants_comment_notification.label }}</p>
|
||||
</div>
|
||||
<div class="form_field_input">
|
||||
<p>{{ form.license_preference }}
|
||||
{{ form.license_preference.label }}</p>
|
||||
</div>
|
||||
<div class="form_submit_buttons">
|
||||
<input type="submit" value="{% trans %}Save changes{% endtrans %}" class="button_form" />
|
||||
{{ csrf_token }}
|
||||
|
Loading…
x
Reference in New Issue
Block a user