From: ĎÚβĨŐÚŚ Dod Date: Tue, 26 Jun 2018 13:28:29 +0000 (-0400) Subject: 2 bug fixes in editor views X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=3dfc8c9b4baff65f68e902adaa55a7f7b44c4e79;p=mediagoblin.git 2 bug fixes in editor views * `WTForms` instances get `__init__`-ed with `defaults` as `kwargs`. The first arg is a `request.form` (which is what one must supply if this is a `POST` and must *not* supply otherwise). The content of that form (empty on `GET`) has higher priority than the defaults (which makes the user get an empty form). * Fix `edit_profile()` to allow changing `location` from a non-blank value to blank (i.e. removing the location). (cherry picked from commit 75f3e23b92392b9bd309fab4c1a52fd38d453627) --- diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index 17aea922..a296a184 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -1,4 +1,4 @@ -# GNU MediaGoblin -- federated, autonomous media hosting + # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. # # This program is free software: you can redistribute it and/or modify @@ -70,7 +70,7 @@ def edit_media(request, media): license=media.license) form = forms.EditForm( - request.form, + request.method=='POST' and request.form or None, **defaults) if request.method == 'POST' and form.validate(): @@ -219,7 +219,8 @@ def edit_profile(request, url_user=None): else: location = user.get_location.name - form = forms.EditProfileForm(request.form, + form = forms.EditProfileForm( + request.method == 'POST' and request.form or None, url=user.url, bio=user.bio, location=location) @@ -235,6 +236,8 @@ def edit_profile(request, url_user=None): location = user.get_location location.name = six.text_type(form.location.data) location.save() + else: + user.location = None user.save() @@ -260,7 +263,8 @@ EMAIL_VERIFICATION_TEMPLATE = ( @require_active_login def edit_account(request): user = request.user - form = forms.EditAccountForm(request.form, + form = forms.EditAccountForm( + request.method == 'POST' and request.form or None, wants_comment_notification=user.wants_comment_notification, license_preference=user.license_preference, wants_notifications=user.wants_notifications) @@ -358,7 +362,7 @@ def edit_collection(request, collection): description=collection.description) form = forms.EditCollectionForm( - request.form, + request.method == 'POST' and request.form or None, **defaults) if request.method == 'POST' and form.validate(): @@ -454,7 +458,8 @@ def verify_email(request): @require_active_login def change_email(request): """ View to change the user's email """ - form = forms.ChangeEmailForm(request.form) + form = forms.ChangeEmailForm( + request.method == 'POST' and request.form or None) user = request.user # If no password authentication, no need to enter a password @@ -511,7 +516,8 @@ def edit_metadata(request, media): if not media.state == u'processed': return render_404(request) - form = forms.EditMetaDataForm(request.form) + form = forms.EditMetaDataForm( + request.method == 'POST' and request.form or None) if request.method == "POST" and form.validate(): metadata_dict = dict([(row['identifier'],row['value']) for row in form.media_metadata.data])