app/soc/views/models/group.py
author Sverre Rabbelier <srabbelier@gmail.com>
Thu, 05 Feb 2009 23:52:27 +0000
changeset 1230 b1b1897e4df1
parent 1218 569a3fe9cb88
child 1283 438dceed3132
permissions -rw-r--r--
Cleanup in org_app and replace ReferenceProperty with LinkProperty Using LinkProperty allows the org to host their idea's list on Melange through the Document system, and then specify the URL of that document. This also makes it possible for the orgs to specify a document that is not hosted on Melange. Patch by: Sverre Rabbelier
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    17
"""Views for Groups.
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
"""
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
429
e50e18936f06 Fixed typo in e-mail address
Sverre Rabbelier <srabbelier@gmail.com>
parents: 409
diff changeset
    21
    '"Sverre Rabbelier" <sverre@rabbelier.nl>',
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    22
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
  ]
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
from google.appengine.api import users
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    27
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
from django import forms
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    29
from django import http
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    30
from django.utils.translation import ugettext
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
387
c55195361cb6 Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents: 363
diff changeset
    32
from soc.logic import dicts
662
0e89b027b140 Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents: 658
diff changeset
    33
from soc.logic.models import user as user_logic
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    34
from soc.views.helper import decorators
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    35
from soc.views.helper import lists as list_helper
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    36
from soc.views.helper import redirects
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    37
from soc.views.helper import responses
755
1ed041c0cdc6 Remove unused imports and variables in different soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 681
diff changeset
    38
from soc.views.helper import widgets
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    39
from soc.views.models import presence
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    40
from soc.views.models import document as document_view
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    41
from soc.views.models.request import view as request_view
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    42
from soc.views.sitemap import sidebar
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    44
import soc.views.helper
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    45
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    46
class View(presence.View):
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    47
  """View methods for the Group model.
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
  """
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    49
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    50
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    51
  def __init__(self, params=None):
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
    """Defines the fields and methods required for the base View class
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
    to provide the user with list, public, create, edit and delete views.
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
    Params:
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    56
      params: a dict with params for this View
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    57
    """
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    58
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    59
    new_params = {}
606
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    60
1049
cc6aedbde28d Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1030
diff changeset
    61
    new_params['extra_dynaexclude'] = ['founder','home', 'tos',
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
    62
                                       'member_template', 'status']
668
77f9a6ea6e67 Some style and typo fixes in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 662
diff changeset
    63
    new_params['edit_extra_dynafields'] = {
755
1ed041c0cdc6 Remove unused imports and variables in different soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 681
diff changeset
    64
        'founded_by': forms.CharField(widget=widgets.ReadOnlyInput(),
606
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    65
                                   required=False),
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    66
        }
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    67
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    68
    #set the extra_django_patterns and include the one from params
1049
cc6aedbde28d Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1030
diff changeset
    69
    patterns = params.get('extra_django_patterns', [])
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    70
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    71
    patterns += [
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    72
        (r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$',
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    73
        'soc.views.models.%(module_name)s.list_requests',
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    74
        'List of requests for %(name)s'),
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    75
        (r'^%(url_name)s/(?P<access_type>list_roles)/%(key_fields)s$',
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    76
        'soc.views.models.%(module_name)s.list_roles',
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    77
        'List of roles for %(name)s')]
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    78
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    79
    if params.get('group_applicant_url'):
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    80
      # add the applicant pattern
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    81
      patterns += [
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    82
          (r'^%(url_name)s/(?P<access_type>applicant)/%(key_fields)s$',
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    83
          'soc.views.models.%(module_name)s.applicant', 
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    84
          "%(name)s Creation via Accepted Application"),]
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    85
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    86
    new_params['extra_django_patterns'] = patterns
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    87
502
e1e24c0a4e82 Add new parameters to views: url_name which is name used in urls (instead of using lower entity names) and module_name which is used for constructing django urls. Append changes to all affected files. Fix some title names. Change urls that included underscores like "site_settings" into urls with slash "site/settings". Plus some other minor fixes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 499
diff changeset
    88
    # TODO(tlarsen): Add support for Django style template lookup
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    89
    new_params['public_template'] = 'soc/group/public.html'
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    90
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    91
    new_params['list_row'] = 'soc/group/list/row.html'
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    92
    new_params['list_heading'] = 'soc/group/list/heading.html'
493
6976c4d8d0ac Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents: 492
diff changeset
    93
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    94
    new_params['role_views'] = {}
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    95
1060
eb6231138307 Added state and shipping address fields to group model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1049
diff changeset
    96
    params = dicts.merge(params, new_params, sub_merge=True)
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    97
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    98
    super(View, self).__init__(params=params)
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    99
583
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   100
  def _editGet(self, request, entity, form):
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   101
    """See base.View._editGet().
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   102
    """
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   103
583
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   104
    # fill in the founded_by with data from the entity
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   105
    form.fields['founded_by'].initial = entity.founder.name
681
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   106
    super(View, self)._editGet(request, entity, form)
583
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   107
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   108
  def _editPost(self, request, entity, fields):
402
021e86368600 Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents: 399
diff changeset
   109
    """See base.View._editPost().
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   110
    """
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   111
583
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   112
    if not entity:
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   113
      # only if we are creating a new entity we should fill in founder
1127
69a9134c5c7e Fixed two small errors.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1115
diff changeset
   114
      user = user_logic.logic.getForCurrentAccount()
583
12960609a69c Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents: 569
diff changeset
   115
      fields['founder'] = user
681
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   116
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   117
    super(View, self)._editPost(request, entity, fields)
858
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 809
diff changeset
   118
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   119
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   120
  @decorators.merge_params
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   121
  @decorators.check_access
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   122
  def applicant(self, request, access_type,
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   123
                page_name=None, params=None, **kwargs):
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   124
    """Handles the creation of a group via an approved group application.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   125
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   126
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   127
      request: the standard Django HTTP request object
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   128
      access_type : the name of the access type which should be checked
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   129
      page_name: the page name displayed in templates as page and header title
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   130
      params: a dict with params for this View
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   131
      kwargs: the Key Fields for the specified entity
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   132
    """
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   133
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   134
    # get the context for this webpage
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   135
    context = responses.getUniversalContext(request)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   136
    context['page_name'] = page_name
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   137
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   138
    if request.method == 'POST':
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   139
      return self.applicantPost(request, context, params, **kwargs)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   140
    else:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   141
      # request.method == 'GET'
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   142
      return self.applicantGet(request, context, params, **kwargs)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   143
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   144
  def applicantGet(self, request, context, params, **kwargs):
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   145
    """Handles the GET request concerning the creation of a group via an
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   146
    approved group application.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   147
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   148
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   149
      request: the standard Django HTTP request object
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   150
      context: dictionary containing the context for this view
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   151
      params: a dict with params for this View
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   152
      kwargs: the Key Fields for the specified entity
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   153
    """
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   154
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   155
    # find the application
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   156
    application_logic = params['application_logic']
1218
569a3fe9cb88 Cleaned up getKeyNameFromFields in Logic base.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1153
diff changeset
   157
    application = application_logic.logic.getFromKeyFields(kwargs)
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   158
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   159
    # extract the application fields
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   160
    field_names = application.properties().keys()
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   161
    fields = dict( [(i, getattr(application, i)) for i in field_names] )
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   162
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   163
    # create the form using the fields from the application as the initial value
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   164
    form = params['applicant_create_form'](initial=fields)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   165
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   166
    # construct the appropriate response
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   167
    return super(View, self)._constructResponse(request, entity=None,
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   168
        context=context, form=form, params=params)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   169
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   170
  def applicantPost(self, request, context, params, **kwargs):
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   171
    """Handles the POST request concerning the creation of a group via an
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   172
    approved group application.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   173
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   174
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   175
      request: the standard Django HTTP request object
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   176
      context: dictionary containing the context for this view
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   177
      params: a dict with params for this View
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   178
      kwargs: the Key Fields for the specified entity
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   179
    """
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   180
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   181
    # populate the form using the POST data
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   182
    form = params['applicant_create_form'](request.POST)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   183
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   184
    if not form.is_valid():
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   185
      # return the invalid form response
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   186
      return self._constructResponse(request, entity=None, context=context,
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   187
          form=form, params=params)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   188
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   189
    # collect the cleaned data from the valid form
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   190
    key_name, fields = soc.views.helper.forms.collectCleanedFields(form)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   191
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   192
    # do post processing
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   193
    self._applicantPost(request, context, fields)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   194
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   195
    if not key_name:
1218
569a3fe9cb88 Cleaned up getKeyNameFromFields in Logic base.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1153
diff changeset
   196
      key_name = self._logic.getKeyNameFromFields(fields)
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   197
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   198
    # create the group entity
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   199
    entity = self._logic.updateOrCreateFromKeyName(fields, key_name)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   200
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   201
    # redirect to notifications list to see the admin invite
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   202
    return http.HttpResponseRedirect('/notification/list')
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   203
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   204
  def _applicantPost(self, request, context, fields):
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   205
    """Performs any required processing on the entity to post its edit page.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   206
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   207
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   208
      request: the django request object
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   209
      context: the context for the webpage
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   210
      fields: the new field values
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   211
    """
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   212
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   213
     # fill in the founder of the group
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   214
    user = user_logic.logic.getForCurrentAccount()
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   215
    fields['founder'] = user
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   216
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   217
    # If scope_logic is not defined, this entity has no scope
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   218
    if not self._params['scope_logic']:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   219
      return
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   220
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   221
    # If this entity is unscoped, do not try to retrieve a scope
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   222
    if 'scope_path' not in fields:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   223
      return
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   224
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   225
    scope = self._params['scope_logic'].logic.getFromKeyName(
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   226
        fields['scope_path'])
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   227
    fields['scope'] = scope
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   228
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   229
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   230
  @decorators.merge_params
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   231
  @decorators.check_access
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   232
  def listRequests(self, request, access_type,
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   233
                   page_name=None, params=None, **kwargs):
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   234
    """Gives an overview of all the requests for a specific group.
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   235
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   236
    Args:
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   237
      request: the standard Django HTTP request object
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   238
      access_type : the name of the access type which should be checked
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   239
      page_name: the page name displayed in templates as page and header title
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   240
      params: a dict with params for this View
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   241
      kwargs: the Key Fields for the specified entity
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   242
    """
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   243
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   244
    # set the pagename to include the link_id
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   245
    page_name = '%s %s' %(page_name, kwargs['link_id'])
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   246
994
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   247
    # get the group from the request
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   248
    group_logic = params['logic']
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   249
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1085
diff changeset
   250
    group_entity = group_logic.getFromKeyFields(kwargs)
994
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   251
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   252
    role_names = params['role_views'].keys()
994
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   253
    
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   254
    # list all incoming requests
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   255
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   256
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   257
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   258
        'status': 'new'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   259
        }
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   260
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   261
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   262
    inc_req_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   263
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   264
    # define the list redirect action to the request processing page
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   265
    inc_req_params['list_action'] = (redirects.getProcessRequestRedirect, None)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   266
    inc_req_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   267
        "An overview of the %(name)s's incoming requests." % params)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   268
    
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   269
    inc_req_content = list_helper.getListContent(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   270
        request, inc_req_params, filter, 0)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   271
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   272
    # list all outstanding invites
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   273
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   274
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   275
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   276
        'status': 'group_accepted'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   277
        }
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   278
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   279
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   280
    out_inv_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   281
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   282
    # define the list redirect action to the request processing page
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   283
    out_inv_params['list_action'] = (redirects.getProcessRequestRedirect, None)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   284
    out_inv_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   285
        "An overview of the %(name)s's outstanding invites." % params)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   286
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   287
    out_inv_content = list_helper.getListContent(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   288
        request, out_inv_params, filter, 1)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   289
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   290
    # list all ignored requests
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   291
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   292
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   293
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   294
        'status': 'ignored'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   295
        }
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   296
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   297
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   298
    ignored_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   299
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   300
    # define the list redirect action to the request processing page
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   301
    ignored_params['list_action'] = (redirects.getProcessRequestRedirect, None)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   302
    ignored_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   303
        "An overview of the %(name)s's ignored requests." % params)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   304
    
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   305
    ignored_content = list_helper.getListContent(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   306
        request, ignored_params, filter, 2)
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   307
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   308
    contents = [inc_req_content, out_inv_content, ignored_content]
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   309
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   310
    return self._list(request, params, contents, page_name)
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   311
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   312
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   313
  @decorators.merge_params
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   314
  @decorators.check_access
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   315
  def listRoles(self, request, access_type,
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   316
                page_name=None, params=None, **kwargs):
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   317
    """Gives an overview of all the roles in a specific group.
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   318
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   319
    Args:
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   320
      request: the standard Django HTTP request object
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   321
      access_type : the name of the access type which should be checked
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   322
      page_name: the page name displayed in templates as page and header title
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   323
      params: a dict with params for this View
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   324
      kwargs: the Key Fields for the specified entity
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   325
    """
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   326
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   327
    # set the pagename to include the link_id
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   328
    page_name = '%s %s' %(page_name, kwargs['link_id'])
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   329
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   330
    # get the group from the request
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   331
    group_logic = params['logic']
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   332
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1085
diff changeset
   333
    group_entity = group_logic.getFromKeyFields(kwargs)
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   334
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   335
    # create the filter
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   336
    filter = {
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   337
        'scope' : group_entity,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   338
        'status': 'active'
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   339
        }
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   340
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   341
    role_views = params['role_views']
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   342
    contents = []
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   343
    index = 0
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   344
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   345
    # for each role we create a separate list
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   346
    for role_name in role_views.keys():
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   347
      # create the list parameters
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   348
      list_params = role_views[role_name].getParams().copy()
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   349
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   350
      list_params['list_action'] = (redirects.getManageRedirect, list_params)
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   351
      list_params['list_description'] = ugettext(
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   352
          "An overview of the %s for this %s." % (
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   353
          list_params['name_plural'], params['name']))
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   354
    
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   355
      new_list_content = list_helper.getListContent(
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   356
          request, list_params, filter, index)
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   357
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   358
      contents += [new_list_content]
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   359
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   360
      index += 1
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   361
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   362
    # call the _list method from base.View to show the list
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   363
    return self._list(request, params, contents, page_name)
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   364
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   365
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   366
  def registerRole(self, role_name, role_view):
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   367
    """Adds a role to the role_views param.
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   368
    
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   369
    Args:
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   370
      role_name: The name of the role that needs to be added
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   371
      role_view: The view that needs to be added to role_views.
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   372
    """
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   373
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   374
    role_views = self._params['role_views']
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   375
    role_views[role_name] = role_view
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   376
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1003
diff changeset
   377
  def getExtraMenus(self, id, user, params=None):
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   378
    """Returns the extra menu's for this view.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   379
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   380
    A menu item is generated for each group that the user has an active
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   381
    role for. The public page for each group is added as menu item,
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   382
    as well as all public documents for that group.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   383
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   384
    Args:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   385
      params: a dict with params for this View.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   386
    """
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   387
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   388
    params = dicts.merge(params, self._params)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   389
    logic = params['logic']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   390
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   391
    # set fields to match every active role this user has
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1003
diff changeset
   392
    fields = {'user': user,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   393
              'status': 'active'}
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   394
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   395
    # get the role views and start filling group_entities
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   396
    role_views = self._params['role_views']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   397
    role_descriptions = {}
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   398
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   399
    for role_name in role_views.keys():
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   400
      role_view = role_views[role_name]
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   401
      role_view_params = role_view.getParams()
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   402
      role_logic = role_view_params['logic']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   403
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   404
      roles = role_logic.getForFields(fields)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   405
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   406
      for role in roles:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   407
        group_key_name = role.scope.key().name()
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   408
        existing_role_descriptions = role_descriptions.get(group_key_name)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   409
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   410
        if existing_role_descriptions:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   411
          # add this description to existing roles
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   412
          existing_roles = existing_role_descriptions['roles']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   413
          existing_roles[role_name] = role
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   414
        else:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   415
          # create a description of this role
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   416
          role_description = {'roles': {role_name: role},
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   417
              'group': role.scope}
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   418
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   419
          # add the new entry to our dictionary
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   420
          role_descriptions[group_key_name] = role_description
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   421
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   422
    # get the document view params to add the group's documents to the menu
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   423
    doc_params = document_view.view.getParams()
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   424
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   425
    menus = []
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   426
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   427
    # for each role description in our collection
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   428
    for role_description in role_descriptions.itervalues():
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   429
      #start with an empty menu
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   430
      menu = {}
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   431
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   432
      # get the group for this role description
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   433
      group_entity = role_description['group']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   434
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   435
      # set the menu header name
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   436
      menu['heading'] = group_entity.short_name
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   437
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   438
      # get the documents for this group entity
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   439
      doc_items = document_view.view.getMenusForScope(group_entity, params)
1023
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   440
      doc_items = sidebar.getSidebarMenu(id, user, doc_items,
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   441
                                         params=doc_params)
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   442
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   443
      # get the group specific items
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   444
      group_items = self._getExtraMenuItems(role_description, params)
1023
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   445
      group_items = sidebar.getSidebarMenu(id, user, group_items,
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   446
                                           params=self._params)
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   447
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   448
      # add the items together
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   449
      menu['items'] = doc_items + group_items
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   450
      menu['group'] = params['name_plural']
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   451
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   452
      # append this as a new menu
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   453
      menus.append(menu)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   454
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   455
    return menus
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   456
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   457
  def _getExtraMenuItems(self, role_description, params=None):
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   458
    """Used to implement group instance specific needs for the side menu.
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   459
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   460
    Args:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   461
      role_description : dict containing all the roles which is a dict of 
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   462
                         name and the role entity to which it belongs. Also
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   463
                         group contains the group entity to which these roles
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   464
                         belong.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   465
      params: a dict with params for this View.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   466
    """
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   467
    return []