app/soc/views/models/group.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sat, 07 Mar 2009 17:55:14 +0000
changeset 1720 33e34c4716d2
parent 1667 95bc81b4cd5c
child 1722 7f285e96cb17
permissions -rw-r--r--
Removed the street address from influencing the maps plug in. Legally we are not allowed to publish people's street address, people can drag the marker to their street if they wish to, we are now using the postal code which would be a region within a city (if this is too much we might also take this out). Patch by: Mario Ferraro Reviewed by: Lennard de Rijk
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
#
1308
35b75ffcbb37 Partially reverted "Update the copyright notice for 2009."
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1307
diff changeset
     3
# Copyright 2008 the Melange authors.
363
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 django import forms
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    27
from django import http
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    28
from django.utils.translation import ugettext
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
387
c55195361cb6 Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents: 363
diff changeset
    30
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
    31
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
    32
from soc.views.helper import decorators
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    33
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
    34
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
    35
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
    36
from soc.views.helper import widgets
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    37
from soc.views.models import presence
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    38
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
    39
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
    40
from soc.views.sitemap import sidebar
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    42
import soc.views.helper
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
    44
class View(presence.View):
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
    45
  """View methods for the Group model.
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    46
  """
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    47
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    48
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    49
  def __init__(self, params=None):
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
    """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
    51
    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
    52
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
    Params:
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    54
      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
    55
    """
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    57
    new_params = {}
606
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    58
1640
c63fb0240203 Remove unused imports and variable, plus some style fixes in soc.views.models.group module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1430
diff changeset
    59
    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
    60
                                       'member_template', 'status']
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1361
diff changeset
    61
    new_params['edit_extra_dynaproperties'] = {
755
1ed041c0cdc6 Remove unused imports and variables in different soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 681
diff changeset
    62
        'founded_by': forms.CharField(widget=widgets.ReadOnlyInput(),
606
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    63
                                   required=False),
65d35584ee31 Make forms generic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 605
diff changeset
    64
        }
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    65
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    66
    #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
    67
    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
    68
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    69
    patterns += [
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    70
        (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
    71
        '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
    72
        '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
    73
        (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
    74
        '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
    75
        '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
    76
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    77
    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
    78
      # add the applicant pattern
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    79
      patterns += [
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
    80
          (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
    81
          '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
    82
          "%(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
    83
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    84
    new_params['extra_django_patterns'] = patterns
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
    85
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
    86
    # 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
    87
    new_params['public_template'] = 'soc/group/public.html'
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    88
656
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    89
    new_params['list_row'] = 'soc/group/list/row.html'
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    90
    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
    91
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
    92
    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
    93
1060
eb6231138307 Added state and shipping address fields to group model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1049
diff changeset
    94
    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
    95
a76f1b443ea4 Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 654
diff changeset
    96
    super(View, self).__init__(params=params)
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    97
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
    98
  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
    99
    """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
   100
    """
658
9964b1571ef8 Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents: 656
diff changeset
   101
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
   102
    # 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
   103
    form.fields['founded_by'].initial = entity.founder.name
681
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   104
    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
   105
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   106
  def _editPost(self, request, entity, fields):
402
021e86368600 Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents: 399
diff changeset
   107
    """See base.View._editPost().
363
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   108
    """
d35ffa6ca643 Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   109
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
   110
    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
   111
      # 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
   112
      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
   113
      fields['founder'] = user
681
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   114
48983ecf4665 Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 668
diff changeset
   115
    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
   116
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   117
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   118
  @decorators.merge_params
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   119
  @decorators.check_access
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   120
  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
   121
                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
   122
    """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
   123
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   124
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   125
      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
   126
      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
   127
      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
   128
      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
   129
      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
   130
    """
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   131
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   132
    # 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
   133
    context = responses.getUniversalContext(request)
1361
228061de9e8d Fixed a copy/paste bug in group.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1357
diff changeset
   134
    responses.useJavaScript(context, params['js_uses_all'])
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   135
    context['page_name'] = page_name
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   136
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   137
    if request.method == 'POST':
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   138
      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
   139
    else:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   140
      # request.method == 'GET'
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   141
      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
   142
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   143
  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
   144
    """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
   145
    approved group application.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   146
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   147
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   148
      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
   149
      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
   150
      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
   151
      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
   152
    """
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
    # find the application
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   155
    application_logic = params['application_logic']
1218
569a3fe9cb88 Cleaned up getKeyNameFromFields in Logic base.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1153
diff changeset
   156
    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
   157
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   158
    # extract the application fields
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   159
    field_names = application.properties().keys()
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   160
    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
   161
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   162
    # 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
   163
    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
   164
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   165
    # construct the appropriate response
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   166
    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
   167
        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
   168
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   169
  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
   170
    """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
   171
    approved group application.
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   172
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   173
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   174
      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
   175
      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
   176
      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
   177
      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
   178
    """
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
    # 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
   181
    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
   182
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   183
    if not form.is_valid():
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   184
      # return the invalid form response
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   185
      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
   186
          form=form, params=params)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   187
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   188
    # 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
   189
    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
   190
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   191
    # do post processing
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   192
    self._applicantPost(request, context, fields)
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   193
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   194
    if not key_name:
1218
569a3fe9cb88 Cleaned up getKeyNameFromFields in Logic base.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1153
diff changeset
   195
      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
   196
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   197
    # create the group entity
1640
c63fb0240203 Remove unused imports and variable, plus some style fixes in soc.views.models.group module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1430
diff changeset
   198
    self._logic.updateOrCreateFromKeyName(fields, key_name)
1153
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   199
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   200
    # 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
   201
    return http.HttpResponseRedirect('/notification/list')
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   202
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   203
  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
   204
    """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
   205
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   206
    Args:
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   207
      request: the django request object
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   208
      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
   209
      fields: the new field values
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   210
    """
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
     # 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
   213
    user = user_logic.logic.getForCurrentAccount()
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   214
    fields['founder'] = user
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   215
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   216
    # 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
   217
    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
   218
      return
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   219
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   220
    # 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
   221
    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
   222
      return
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   223
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   224
    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
   225
        fields['scope_path'])
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   226
    fields['scope'] = scope
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   227
4804f7f5a7c0 Refactored applicant from club view to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1127
diff changeset
   228
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   229
  @decorators.merge_params
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   230
  @decorators.check_access
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   231
  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
   232
                   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
   233
    """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
   234
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   235
    Args:
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   236
      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
   237
      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
   238
      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
   239
      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
   240
      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
   241
    """
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
    # set the pagename to include the link_id
1640
c63fb0240203 Remove unused imports and variable, plus some style fixes in soc.views.models.group module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1430
diff changeset
   244
    page_name = '%s %s' % (page_name, kwargs['link_id'])
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   245
994
f05c02ba40fc listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 993
diff changeset
   246
    # 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
   247
    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
   248
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1085
diff changeset
   249
    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
   250
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   251
    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
   252
    
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   253
    # list all incoming requests
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   254
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   255
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   256
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   257
        'status': 'new'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   258
        }
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
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   261
    inc_req_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   262
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   263
    # 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
   264
    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
   265
    inc_req_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   266
        "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
   267
    
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   268
    inc_req_content = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1640
diff changeset
   269
        request, inc_req_params, filter, idx=0)
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   270
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   271
    # list all outstanding invites
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   272
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   273
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   274
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   275
        'status': 'group_accepted'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   276
        }
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
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   279
    out_inv_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   280
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   281
    # 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
   282
    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
   283
    out_inv_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   284
        "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
   285
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   286
    out_inv_content = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1640
diff changeset
   287
        request, out_inv_params, filter, idx=1)
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   288
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   289
    # list all ignored requests
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   290
    filter = {
1030
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   291
        'scope': group_entity,
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   292
        'role': role_names,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   293
        'status': 'ignored'
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   294
        }
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
    # create the list parameters
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   297
    ignored_params = request_view.getParams()
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   298
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   299
    # 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
   300
    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
   301
    ignored_params['list_description'] = ugettext(
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   302
        "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
   303
    
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   304
    ignored_content = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1640
diff changeset
   305
        request, ignored_params, filter, idx=2)
989
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   306
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   307
    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
   308
f52654ea6350 Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 858
diff changeset
   309
    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
   310
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
  @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
   313
  @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
   314
  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
   315
                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
   316
    """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
   317
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   318
    Args:
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   319
      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
   320
      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
   321
      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
   322
      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
   323
      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
   324
    """
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
    # set the pagename to include the link_id
1640
c63fb0240203 Remove unused imports and variable, plus some style fixes in soc.views.models.group module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1430
diff changeset
   327
    page_name = '%s %s' % (page_name, kwargs['link_id'])
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   328
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   329
    # 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
   330
    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
   331
1115
0a723ff3d27c Cleanups in base.Logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1085
diff changeset
   332
    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
   333
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   334
    # 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
   335
    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
        'scope' : group_entity,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   337
        '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
   338
        }
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
    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
   341
    contents = []
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   342
    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
   343
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   344
    # 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
   345
    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
   346
      # 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
   347
      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
   348
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   349
      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
   350
      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
   351
          "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
   352
          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
   353
    
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   354
      new_list_content = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1640
diff changeset
   355
          request, list_params, filter, idx=index)
998
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   356
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   357
      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
   358
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   359
      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
   360
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   361
    # 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
   362
    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
   363
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   364
  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
   365
    """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
   366
    
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   367
    Args:
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   368
      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
   369
      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
   370
    """
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   371
125257161908 Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 994
diff changeset
   372
    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
   373
    role_views[role_name] = role_view
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   374
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1003
diff changeset
   375
  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
   376
    """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
   377
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   378
    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
   379
    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
   380
    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
   381
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   382
    Args:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   383
      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
   384
    """
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   385
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   386
    params = dicts.merge(params, self._params)
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
    # 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
   389
    fields = {'user': user,
1085
0afbdd0905ef Renamed state to status where appropriate.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1075
diff changeset
   390
              'status': 'active'}
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   391
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   392
    # 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
   393
    role_views = self._params['role_views']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   394
    role_descriptions = {}
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   395
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   396
    for role_name in role_views.keys():
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   397
      role_view = role_views[role_name]
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   398
      role_view_params = role_view.getParams()
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   399
      role_logic = role_view_params['logic']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   400
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   401
      roles = role_logic.getForFields(fields)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   402
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   403
      for role in roles:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   404
        group_key_name = role.scope.key().name()
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   405
        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
   406
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   407
        if existing_role_descriptions:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   408
          # add this description to existing roles
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   409
          existing_roles = existing_role_descriptions['roles']
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   410
          existing_roles[role_name] = role
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   411
        else:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   412
          # 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
   413
          role_description = {'roles': {role_name: role},
a0081c626acb Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1024
diff changeset
   414
              'group': role.scope}
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   415
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   416
          # add the new entry to our dictionary
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   417
          role_descriptions[group_key_name] = role_description
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
    # 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
   420
    doc_params = document_view.view.getParams()
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
    menus = []
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   423
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   424
    # for each role description in our collection
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   425
    for role_description in role_descriptions.itervalues():
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   426
      #start with an empty menu
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   427
      menu = {}
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   428
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   429
      # get the group for this role description
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   430
      group_entity = role_description['group']
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
      # set the menu header name
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   433
      menu['heading'] = group_entity.short_name
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   434
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   435
      # 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
   436
      doc_items = document_view.view.getMenusForScope(group_entity, params)
1023
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   437
      doc_items = sidebar.getSidebarMenu(id, user, doc_items,
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   438
                                         params=doc_params)
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   439
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   440
      # get the group specific items
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   441
      group_items = self._getExtraMenuItems(role_description, params)
1023
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   442
      group_items = sidebar.getSidebarMenu(id, user, group_items,
d849b47645f9 Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   443
                                           params=self._params)
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   444
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   445
      # add the items together
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   446
      menu['items'] = doc_items + group_items
1065
b661dc8ffd5f Added manage redirect.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1060
diff changeset
   447
      menu['group'] = params['name_plural']
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   448
1003
b13da1ddcd50 Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1002
diff changeset
   449
      # append this as a new menu
1002
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   450
      menus.append(menu)
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   451
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   452
    return menus
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   453
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   454
  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
   455
    """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
   456
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   457
    Args:
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   458
      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
   459
                         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
   460
                         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
   461
                         belong.
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   462
      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
   463
    """
11a2aff6c3ad Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 998
diff changeset
   464
    return []