diff -r ee9122db04af -r 37735d97b541 app/soc/views/models/user.py --- a/app/soc/views/models/user.py Wed Nov 26 16:33:36 2008 +0000 +++ b/app/soc/views/models/user.py Wed Nov 26 20:50:56 2008 +0000 @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Views for Host profiles. +"""Views for User profiles. """ __authors__ = [ @@ -110,49 +110,10 @@ key_name = forms.CharField(widget=forms.HiddenInput) -class UserForm(helper.forms.BaseForm): - """Django form displayed when creating or editing a User. - """ - class Meta: - """Inner Meta class that defines some behavior for the form. - """ - #: db.Model subclass for which the form will gather information - model = soc.models.user.User - - #: list of model fields which will *not* be gathered by the form - exclude = ['account', 'former_accounts', 'is_developer'] - - def clean_link_id(self): - link_id = self.cleaned_data.get('link_id') - if not validate.isLinkIdFormatValid(link_id): - raise forms.ValidationError("This link ID is in wrong format.") - - user = soc.logic.models.user.logic.getForFields({'link_id': link_id}, - unique=True) - - # Get the currently logged in user account - current_account = users.get_current_user() - - if user: - if current_account != user.account: - raise forms.ValidationError("This link ID is already in use.") - - return link_id - - class View(base.View): """View methods for the User model. """ - DEF_USER_ACCOUNT_INVALID_MSG_FMT = ugettext_lazy( - 'The %(email)s account cannot be used with this site, for' - ' one or more of the following reasons:' - '') def __init__(self, original_params=None): """Defines the fields and methods required for the base View class @@ -164,12 +125,7 @@ self._logic = soc.logic.models.user.logic - rights = {} - rights['editSelf'] = [access.allow] - rights['roles'] = [access.checkIsUser] - params = {} - params['rights'] = rights params['name'] = "User" params['name_short'] = "User" @@ -188,96 +144,7 @@ base.View.__init__(self, params=params) - EDIT_SELF_TMPL = 'soc/user/edit_self.html' - def editSelf(self, request, page_name=None, params=None, **kwargs): - """Displays User self edit page for the entity specified by **kwargs. - - Args: - request: the standard Django HTTP request object - page_name: the page name displayed in templates as page and header title - params: a dict with params for this View - kwargs: The Key Fields for the specified entity - """ - - try: - self.checkAccess('editSelf', request) - except out_of_band.Error, error: - return error.response(request, template=self.EDIT_SELF_TMPL) - - new_params = {} - new_params['edit_template'] = self.EDIT_SELF_TMPL - - params = dicts.merge(params, new_params) - params = dicts.merge(params, self._params) - - account = users.get_current_user() - properties = {'account': account} - - user = soc.logic.models.user.logic.getForFields(properties, unique=True) - - # create default template context for use with any templates - context = helper.responses.getUniversalContext(request) - - if request.method == 'POST': - form = UserForm(request.POST) - - if form.is_valid(): - new_link_id = form.cleaned_data.get('link_id') - properties = { - 'link_id': new_link_id, - 'name': form.cleaned_data.get("name"), - 'account': account, - } - - # check if user account is not in former_accounts - # if it is show error message that account is invalid - if soc.logic.models.user.logic.isFormerAccount(account): - msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % { - 'email': account.email()} - error = out_of_band.Error(msg) - return error.response(request, template=self.EDIT_SELF_TMPL, - context=context) - - user = soc.logic.models.user.logic.updateOrCreateFromFields( - properties, {'link_id': new_link_id}) - - # redirect to /user/profile?s=0 - # (causes 'Profile saved' message to be displayed) - return helper.responses.redirectToChangedSuffix( - request, None, params=params['edit_params']) - else: # request.method == 'GET' - if user: - # is 'Profile saved' parameter present, but referrer was not ourself? - # (e.g. someone bookmarked the GET that followed the POST submit) - if (request.GET.get(self.DEF_SUBMIT_MSG_PARAM_NAME) - and (not helper.requests.isReferrerSelf(request))): - # redirect to aggressively remove 'Profile saved' query parameter - return http.HttpResponseRedirect(request.path) - - # referrer was us, so select which submit message to display - # (may display no message if ?s=0 parameter is not present) - context['notice'] = ( - helper.requests.getSingleIndexedParamValue( - request, self.DEF_SUBMIT_MSG_PARAM_NAME, - values=params['save_message'])) - - # populate form with the existing User entity - form = UserForm(instance=user) - else: - if request.GET.get(self.DEF_SUBMIT_MSG_PARAM_NAME): - # redirect to aggressively remove 'Profile saved' query parameter - return http.HttpResponseRedirect(request.path) - - # no User entity exists for this Google Account, so show a blank form - form = UserForm() - - context['form'] = form - - template = params['edit_template'] - - return helper.responses.respond(request, template, context) - def _editGet(self, request, entity, form): """See base.View._editGet(). """ @@ -290,33 +157,6 @@ # fill in the account field with the user created from email fields['account'] = users.User(fields['email']) - def getUserSidebar(self, request): - """Returns an dictionary with the user sidebar entry. - """ - - params = {} - params['sidebar_heading'] = "User (self)" - params['sidebar'] = [ - ('/' + self._params['url_name'] + '/edit', 'Profile', 'editSelf'), - ('/' + self._params['url_name'] + '/roles', 'Roles', 'roles'), - ] - return self.getSidebarLinks(request, params) - - def getDjangoURLPatterns(self): - """See base.View.getDjangoURLPatterns(). - """ - - patterns = super(View, self).getDjangoURLPatterns() - patterns += [(r'^' + self._params['url_name'] + '/edit$', - 'soc.views.models.user.edit_self')] - - page_name = "Requests Overview" - patterns += [(r'^' + self._params['url_name'] + '/roles$', - 'soc.views.models.request.list_self', - {'page_name': page_name}, page_name)] - - return patterns - view = View() @@ -325,4 +165,3 @@ edit = view.edit list = view.list public = view.public -edit_self = view.editSelf