app/soc/views/models/user_self.py
changeset 1347 88dac688b673
parent 1317 fad74cf4e5da
child 1384 bb22ea156567
equal deleted inserted replaced
1346:b3bbc6fa18ef 1347:88dac688b673
    44 from soc.views.helper import dynaform
    44 from soc.views.helper import dynaform
    45 from soc.views.helper import redirects
    45 from soc.views.helper import redirects
    46 from soc.views.helper import widgets
    46 from soc.views.helper import widgets
    47 from soc.views.models import base
    47 from soc.views.models import base
    48 from soc.views.models import user as user_view
    48 from soc.views.models import user as user_view
       
    49 from soc.views.models import role as role_view
    49 
    50 
    50 import soc.models.user
    51 import soc.models.user
    51 
    52 
    52 
    53 
    53 class View(base.View):
    54 class View(base.View):
    54   """Views for User own profiles.
    55   """Views for User own profiles.
    55   """
    56   """
       
    57 
       
    58   DEF_ROLE_LIST_MSG_FMT = ugettext("An overview of your roles as %(name)s.")
    56 
    59 
    57   def __init__(self, params=None):
    60   def __init__(self, params=None):
    58     """Defines the fields and methods required for the base View class
    61     """Defines the fields and methods required for the base View class
    59     to provide the user with list, public, create, edit and delete views.
    62     to provide the user with list, public, create, edit and delete views.
    60 
    63 
    66     rights['unspecified'] = ['deny']
    69     rights['unspecified'] = ['deny']
    67     rights['any_access'] = ['allow']
    70     rights['any_access'] = ['allow']
    68     rights['create_profile'] = ['checkIsUnusedAccount']
    71     rights['create_profile'] = ['checkIsUnusedAccount']
    69     rights['edit_profile'] = ['checkHasUserEntity']
    72     rights['edit_profile'] = ['checkHasUserEntity']
    70     rights['roles'] = ['checkIsUser']
    73     rights['roles'] = ['checkIsUser']
       
    74     rights['requests'] = ['checkIsUser']
    71     rights['signIn'] = ['checkNotLoggedIn']
    75     rights['signIn'] = ['checkNotLoggedIn']
    72     rights['notification'] = ['checkIsUser']
    76     rights['notification'] = ['checkIsUser']
    73 
    77 
    74     new_params = {}
    78     new_params = {}
    75     new_params['rights'] = rights
    79     new_params['rights'] = rights
   103     new_params['sidebar'] = [
   107     new_params['sidebar'] = [
   104         (users.create_login_url("/"), 'Sign In', 'signIn'),
   108         (users.create_login_url("/"), 'Sign In', 'signIn'),
   105         ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'),
   109         ('/' + new_params['url_name'] + '/create_profile', 'Create Profile', 'create_profile'),
   106         ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'),
   110         ('/' + new_params['url_name'] + '/edit_profile', 'Edit Profile', 'edit_profile'),
   107         ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'),
   111         ('/' + new_params['url_name'] + '/roles', 'Roles', 'roles'),
       
   112         ('/' + new_params['url_name'] + '/requests', 'Requests', 'requests'),
   108         ]
   113         ]
   109 
   114 
   110     patterns = []
   115     patterns = []
   111 
   116 
   112     page_name = ugettext("Create your profile")
   117     page_name = ugettext("Create your profile")
   117     patterns += [(r'^%(url_name)s/(?P<access_type>edit_profile)$',
   122     patterns += [(r'^%(url_name)s/(?P<access_type>edit_profile)$',
   118                   'soc.views.models.%(module_name)s.edit', page_name)]
   123                   'soc.views.models.%(module_name)s.edit', page_name)]
   119 
   124 
   120     page_name = ugettext("List of your roles")
   125     page_name = ugettext("List of your roles")
   121     patterns += [(r'^%(url_name)s/(?P<access_type>roles)$',
   126     patterns += [(r'^%(url_name)s/(?P<access_type>roles)$',
       
   127                    'soc.views.models.user_self.roles', page_name)]
       
   128 
       
   129     page_name = ugettext("List of your requests")
       
   130     patterns += [(r'^%(url_name)s/(?P<access_type>requests)$',
   122                    'soc.views.models.request.list_self', page_name)]
   131                    'soc.views.models.request.list_self', page_name)]
   123 
   132 
   124     new_params['django_patterns_defaults'] = patterns
   133     new_params['django_patterns_defaults'] = patterns
   125 
   134 
   126     params = dicts.merge(params, new_params)
   135     params = dicts.merge(params, new_params)
   127 
   136 
   128     super(View, self).__init__(params=params)
   137     super(View, self).__init__(params=params)
   129 
       
   130 
   138 
   131   @decorators.merge_params
   139   @decorators.merge_params
   132   @decorators.check_access
   140   @decorators.check_access
   133   def editProfile(self, request, access_type,
   141   def editProfile(self, request, access_type,
   134            page_name=None, params=None, seed=None, **kwargs):
   142            page_name=None, params=None, seed=None, **kwargs):
   145     user_entity = user_logic.getForCurrentAccount()
   153     user_entity = user_logic.getForCurrentAccount()
   146     link_id = user_entity.link_id
   154     link_id = user_entity.link_id
   147 
   155 
   148     return self.edit(request, access_type,
   156     return self.edit(request, access_type,
   149          page_name=page_name, params=params, seed=seed, link_id=link_id, **kwargs)
   157          page_name=page_name, params=params, seed=seed, link_id=link_id, **kwargs)
   150 
       
   151 
   158 
   152   def editGet(self, request, entity, context, seed, params=None):
   159   def editGet(self, request, entity, context, seed, params=None):
   153     """Overwrite so we can add the contents of the ToS.
   160     """Overwrite so we can add the contents of the ToS.
   154     For params see base.View.editGet().
   161     For params see base.View.editGet().
   155     """
   162     """
   184     site_tos = s_logic.getToS(s_logic.getSingleton())
   191     site_tos = s_logic.getToS(s_logic.getSingleton())
   185     if site_tos:
   192     if site_tos:
   186       context['tos_contents'] = site_tos.content
   193       context['tos_contents'] = site_tos.content
   187 
   194 
   188     return super(View, self).editPost(request, entity, context, params=params)
   195     return super(View, self).editPost(request, entity, context, params=params)
   189 
       
   190 
   196 
   191   def _editPost(self, request, entity, fields):
   197   def _editPost(self, request, entity, fields):
   192     """See base.View._editPost().
   198     """See base.View._editPost().
   193     """
   199     """
   194 
   200 
   211         # set the time of agreement
   217         # set the time of agreement
   212         fields['agreed_to_tos_on'] = datetime.datetime.now()
   218         fields['agreed_to_tos_on'] = datetime.datetime.now()
   213 
   219 
   214     super(View, self)._editPost(request, entity, fields)
   220     super(View, self)._editPost(request, entity, fields)
   215 
   221 
       
   222   @decorators.merge_params
       
   223   @decorators.check_access
       
   224   def roles(self, request, access_type,
       
   225                page_name=None, params=None, **kwargs):
       
   226     """Displays the unhandled requests for this user.
       
   227 
       
   228     Args:
       
   229       request: the standard Django HTTP request object
       
   230       access_type : the name of the access type which should be checked
       
   231       page_name: the page name displayed in templates as page and header title
       
   232       params: a dict with params for this View
       
   233       kwargs: not used
       
   234     """
       
   235 
       
   236     user = user_logic.getForCurrentAccount()
       
   237 
       
   238 
       
   239     # only select the roles for the current user
       
   240     filter = {
       
   241         'link_id': user.link_id,
       
   242         }
       
   243 
       
   244     contents = []
       
   245 
       
   246     i = 0
       
   247 
       
   248     for name, view in sorted(role_view.ROLE_VIEWS.iteritems()):
       
   249       params = view.getParams().copy()
       
   250       params['list_action'] = (redirects.getEditRedirect, params)
       
   251       params['list_description'] = self.DEF_ROLE_LIST_MSG_FMT % params
       
   252 
       
   253       list = helper.lists.getListContent(request, params, filter, i)
       
   254       contents.append(list)
       
   255       i += 1
       
   256 
       
   257     return self._list(request, params, contents, page_name)
   216 
   258 
   217   def getSidebarMenus(self, id, user, params=None):
   259   def getSidebarMenus(self, id, user, params=None):
   218     """See base.View.getSidebarMenus().
   260     """See base.View.getSidebarMenus().
   219     """
   261     """
   220 
   262 
   251 view = View()
   293 view = View()
   252 
   294 
   253 create = view.create
   295 create = view.create
   254 edit = view.editProfile
   296 edit = view.editProfile
   255 export = view.export
   297 export = view.export
   256 
   298 roles = view.roles