app/soc/views/models/user_self.py
changeset 876 0c1329d4b514
parent 860 cfb57fe35d3c
child 890 b3bf833c4580
equal deleted inserted replaced
875:03c674f510d8 876:0c1329d4b514
    37 from soc.logic.models.site import logic as site_logic
    37 from soc.logic.models.site import logic as site_logic
    38 from soc.logic.models.user import logic as user_logic
    38 from soc.logic.models.user import logic as user_logic
    39 from soc.views import helper
    39 from soc.views import helper
    40 from soc.views import out_of_band
    40 from soc.views import out_of_band
    41 from soc.views.helper import access
    41 from soc.views.helper import access
       
    42 from soc.views.helper import decorators
    42 from soc.views.models import base
    43 from soc.views.models import base
    43 
    44 
    44 import soc.models.linkable
    45 import soc.models.linkable
    45 import soc.models.user
    46 import soc.models.user
    46 import soc.views.helper
    47 import soc.views.helper
   125 
   126 
   126     new_params['name'] = "User"
   127     new_params['name'] = "User"
   127     new_params['module_name'] = "user_self"
   128     new_params['module_name'] = "user_self"
   128     new_params['url_name'] = "user"
   129     new_params['url_name'] = "user"
   129 
   130 
       
   131     new_params['edit_template'] = 'soc/user/edit_self.html'
       
   132 
   130     new_params['sidebar_heading'] = 'User (self)'
   133     new_params['sidebar_heading'] = 'User (self)'
   131     new_params['sidebar'] = [
   134     new_params['sidebar'] = [
   132         (users.create_login_url("/user/edit"), 'Sign In', 'signIn'),
   135         (users.create_login_url("/user/edit"), 'Sign In', 'signIn'),
   133         ('/' + new_params['url_name'] + '/edit', 'Profile', 'edit'),
   136         ('/' + new_params['url_name'] + '/edit', 'Profile', 'edit'),
   134         ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'),
   137         ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'),
   148     
   151     
   149     params = dicts.merge(params, new_params)
   152     params = dicts.merge(params, new_params)
   150 
   153 
   151     super(View, self).__init__(params=params)
   154     super(View, self).__init__(params=params)
   152 
   155 
   153   EDIT_SELF_TMPL = 'soc/user/edit_self.html'
   156   @decorators.merge_params
   154 
   157   @decorators.check_access
   155   def edit(self, request, access_type,
   158   def edit(self, request, access_type,
   156            page_name=None, params=None, seed=None, **kwargs):
   159            page_name=None, params=None, seed=None, **kwargs):
   157     """Displays User self edit page for the entity specified by **kwargs.
   160     """Displays User self edit page for the entity specified by **kwargs.
   158 
   161 
   159     Args:
   162     Args:
   160       request: the standard Django HTTP request object
   163       request: the standard Django HTTP request object
   161       page_name: the page name displayed in templates as page and header title
   164       page_name: the page name displayed in templates as page and header title
   162       params: a dict with params for this View
   165       params: a dict with params for this View
   163       kwargs: The Key Fields for the specified entity
   166       kwargs: The Key Fields for the specified entity
   164     """
   167     """
   165 
       
   166     new_params = {}
       
   167     new_params['edit_template'] = self.EDIT_SELF_TMPL
       
   168 
       
   169     params = dicts.merge(params, new_params)
       
   170     params = dicts.merge(params, self._params)
       
   171 
       
   172     try:
       
   173       access.checkAccess(access_type, request, params['rights'])
       
   174     except out_of_band.Error, error:
       
   175       return helper.responses.errorResponse(error, request, 
       
   176           template=self.EDIT_SELF_TMPL)
       
   177 
   168 
   178     account = users.get_current_user()
   169     account = users.get_current_user()
   179     properties = {'account': account}
   170     properties = {'account': account}
   180 
   171 
   181     user = user_logic.getForFields(properties, unique=True)
   172     user = user_logic.getForFields(properties, unique=True)
   200         if user_logic.isFormerAccount(account):
   191         if user_logic.isFormerAccount(account):
   201           msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % {
   192           msg = self.DEF_USER_ACCOUNT_INVALID_MSG_FMT % {
   202             'email': account.email()}
   193             'email': account.email()}
   203           error = out_of_band.Error(msg)
   194           error = out_of_band.Error(msg)
   204           return helper.responses.errorResponse(
   195           return helper.responses.errorResponse(
   205               error, request, template=self.EDIT_SELF_TMPL, context=context)
   196               error, request, template=params['edit_template'], context=context)
   206 
   197 
   207         user = user_logic.updateOrCreateFromFields(
   198         user = user_logic.updateOrCreateFromFields(
   208             properties, {'link_id': new_link_id})
   199             properties, {'link_id': new_link_id})
   209 
   200 
   210         # redirect to /user/profile?s=0
   201         # redirect to /user/profile?s=0