# HG changeset patch # User Todd Larsen # Date 1232504045 0 # Node ID cfb57fe35d3cca776cce72da24ff7b7da58178dc # Parent b93fad44b70a1322e75b7e30f07bb68f4a91f992 Add a clean_agrees_to_tos() validator that requires "Yes" if ToS exists. Also, more user_logic.logic => user_logic fixes. If you are going to import "as", you might as well make the renaming worthwhile. Maybe we need to add a section on "import ... from ... as ..." in the style guide? Patch by: Todd Larsen Review by: to-be-reviewed diff -r b93fad44b70a -r cfb57fe35d3c app/soc/views/models/user_self.py --- a/app/soc/views/models/user_self.py Wed Jan 21 00:32:05 2009 +0000 +++ b/app/soc/views/models/user_self.py Wed Jan 21 02:14:05 2009 +0000 @@ -34,7 +34,8 @@ from soc.logic import dicts from soc.logic import validate from soc.logic import models as model_logic -from soc.logic.models import user as user_logic +from soc.logic.models.site import logic as site_logic +from soc.logic.models.user import logic as user_logic from soc.views import helper from soc.views import out_of_band from soc.views.helper import access @@ -62,8 +63,7 @@ if not validate.isLinkIdFormatValid(link_id): raise forms.ValidationError("This link ID is in wrong format.") - user = user_logic.logic.getForFields({'link_id': link_id}, - unique=True) + user = user_logic.getForFields({'link_id': link_id}, unique=True) # Get the currently logged in user account current_account = users.get_current_user() @@ -74,6 +74,20 @@ return link_id + def clean_agrees_to_tos(self): + agrees_to_tos = self.cleaned_data.get('agrees_to_tos') + + if not site_logic.getToS(site_logic.getSingleton()): + return agrees_to_tos + + # Site settings specify a site-wide ToS, so agreement is *required* + if agrees_to_tos: + return True + + raise forms.ValidationError( + 'The site-wide Terms of Service must be accepted to participate' + ' on this site.') + class View(base.View): """View methods for the User model. @@ -107,7 +121,7 @@ new_params = {} new_params['rights'] = rights - new_params['logic'] = user_logic.logic + new_params['logic'] = user_logic new_params['name'] = "User" new_params['module_name'] = "user_self" @@ -164,7 +178,7 @@ account = users.get_current_user() properties = {'account': account} - user = user_logic.logic.getForFields(properties, unique=True) + user = user_logic.getForFields(properties, unique=True) # create default template context for use with any templates context = helper.responses.getUniversalContext(request) @@ -183,14 +197,14 @@ # check if user account is not in former_accounts # if it is show error message that account is invalid - if user_logic.logic.isFormerAccount(account): + if user_logic.isFormerAccount(account): msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % { 'email': account.email()} error = out_of_band.Error(msg) return helper.responses.errorResponse( error, request, template=self.EDIT_SELF_TMPL, context=context) - user = user_logic.logic.updateOrCreateFromFields( + user = user_logic.updateOrCreateFromFields( properties, {'link_id': new_link_id}) # redirect to /user/profile?s=0 @@ -253,7 +267,7 @@ link_title = ugettext_lazy('Notifications') - user = user_logic.logic.getForCurrentAccount() + user = user_logic.getForCurrentAccount() filter = { 'scope': user,