app/soc/views/models/org_app.py
author Sverre Rabbelier <srabbelier@gmail.com>
Mon, 07 Sep 2009 20:06:27 +0200
changeset 2867 e8d86272e6ea
parent 2781 8f6c0a5a7491
child 2871 e440e94a874b
permissions -rw-r--r--
Use system.getHostname() everywhere Replace os.environ['HTTP_HOST'] with system.getHostname(), as a result we do not crash when 'HTTP_HOST' is unset now.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     1
#!/usr/bin/python2.5
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     2
#
1307
091a21cf3627 Update the copyright notice for 2009.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1297
diff changeset
     3
# Copyright 2009 the Melange authors.
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     4
#
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     6
# you may not use this file except in compliance with the License.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     7
# You may obtain a copy of the License at
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     8
#
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    10
#
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    14
# See the License for the specific language governing permissions and
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    15
# limitations under the License.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    16
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    17
"""Views for Organization App profiles.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    18
"""
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    19
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    20
__authors__ = [
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    21
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    22
  ]
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    23
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    24
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    25
from django import forms
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
    26
from django.utils import simplejson
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    27
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
    28
from soc.logic import accounts
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
    29
from soc.logic import cleaning
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    30
from soc.logic import dicts
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
    31
from soc.logic import mail_dispatcher
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
    32
from soc.logic import models as model_logic
2867
e8d86272e6ea Use system.getHostname() everywhere
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2781
diff changeset
    33
from soc.logic import system
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
    34
from soc.logic.models import program as program_logic
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    35
from soc.logic.models import org_app as org_app_logic
1566
5388270fb363 contrib template in org_app is now a TextProperty.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1559
diff changeset
    36
from soc.views import helper
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    37
from soc.views.helper import access
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
    38
from soc.views.helper import decorators
1185
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    39
from soc.views.helper import redirects
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
    40
from soc.views.helper import responses
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
    41
from soc.views.helper import widgets
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    42
from soc.views.models import group_app
1185
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    43
from soc.views.models import program as program_view
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    44
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    45
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    46
class View(group_app.View):
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    47
  """View methods for the Organization Application model.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    48
  """
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    49
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    50
  def __init__(self, params=None):
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    51
    """Defines the fields and methods required for the base View class
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    52
    to provide the user with list, public, create, edit and delete views.
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    53
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    54
    Params:
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    55
      params: a dict with params for this View
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    56
    """
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    57
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    58
    rights = access.Checker(params)
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    59
    rights['create'] = ['checkIsDeveloper']
1931
b5d0e70c8607 Org applications can now be deleted up to the deadline.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1913
diff changeset
    60
    rights['delete'] = [('checkCanEditGroupApp',
b5d0e70c8607 Org applications can now be deleted up to the deadline.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1913
diff changeset
    61
                       [org_app_logic.logic]),
2781
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    62
                       ('checkIsActivePeriod',
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    63
                        ['org_signup', 'scope_path', program_logic.logic])]
1200
e68fd70ba076 Added checkCanEditGroupApp to access.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1185
diff changeset
    64
    rights['edit'] = [('checkCanEditGroupApp',
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
    65
                       [org_app_logic.logic]),
2781
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    66
                       ('checkIsActivePeriod', 
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    67
                        ['org_signup', 'scope_path', program_logic.logic])]
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    68
    rights['list'] = ['checkIsDeveloper']
1255
9fe8c6c54933 Redone the listing in group_app.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1250
diff changeset
    69
    rights['list_self'] = ['checkIsUser']
1939
a1c53f546603 Allow everyone to view an org app public page
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1931
diff changeset
    70
    rights['show'] = ['allow']
1250
b06e6e014658 Fixed access checkers for orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1246
diff changeset
    71
    rights['review'] = ['checkIsHostForProgramInScope',
1201
0a4c1af700a0 Added checkCanReviewGroupApp to acces.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1200
diff changeset
    72
                        ('checkCanReviewGroupApp', [org_app_logic.logic])]
1250
b06e6e014658 Fixed access checkers for orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1246
diff changeset
    73
    rights['review_overview'] = ['checkIsHostForProgramInScope']
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
    74
    rights['bulk_accept'] = ['checkIsHostForProgramInScope']
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
    75
    rights['bulk_reject'] = ['checkIsHostForProgramInScope']
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
    76
    rights['apply'] = ['checkIsUser',
2781
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    77
                             ('checkCanCreateOrgApp', 
8f6c0a5a7491 program_logic is passed as a parameter to three checkers than hard coding it.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2171
diff changeset
    78
                              ['org_signup', program_logic.logic]),
1559
283046e54c01 Fixed issue 205.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1553
diff changeset
    79
                       'checkIsNotStudentForProgramInScope']
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    80
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    81
    new_params = {}
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    82
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    83
    new_params['rights'] = rights
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    84
    new_params['logic'] = org_app_logic.logic
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    85
1185
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    86
    new_params['scope_view'] = program_view
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    87
    new_params['scope_redirect'] = redirects.getCreateRedirect
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    88
fe25d98a24c3 Create org_application now shows select program view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1182
diff changeset
    89
    new_params['sidebar_grouping'] = 'Organizations'
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
    90
1813
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    91
    new_params['list_key_order'] = [
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    92
        'link_id', 'scope_path', 'name', 'home_page', 'email',
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    93
        'description', 'why_applying','pub_mailing_list','irc_channel',
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    94
        'member_criteria', 'prior_participation', 'prior_application',
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    95
        'license_name', 'ideas', 'dev_mailing_list', 'contrib_template',
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    96
        'contrib_disappears', 'member_disappears', 'encourage_contribs',
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    97
        'continued_contribs']
5cc9e055a818 Define a key order for document and org app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1781
diff changeset
    98
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
    99
    patterns = [(r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$',
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
   100
        'soc.views.models.%(module_name)s.create',
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   101
        'Create an %(name_plural)s'),
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   102
        (r'^%(url_name)s/(?P<access_type>bulk_accept)/%(scope)s$',
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   103
        'soc.views.models.%(module_name)s.bulk_accept',
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   104
        'Bulk Acceptation of %(name_plural)s'),
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   105
        (r'^%(url_name)s/(?P<access_type>bulk_reject)/%(scope)s$',
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   106
        'soc.views.models.%(module_name)s.bulk_reject',
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   107
        'Bulk Rejection of %(name_plural)s'),]
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
   108
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
   109
    new_params['extra_django_patterns'] = patterns
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   110
    new_params['extra_key_order'] = ['admin_agreement',
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   111
                                     'agreed_to_admin_agreement']
1225
1d5c58e24fd3 Org applications can now only be made by a user when a program allows it.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1205
diff changeset
   112
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   113
    new_params['extra_dynaexclude'] = ['applicant', 'backup_admin', 'status',
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   114
        'created_on', 'last_modified_on']
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   115
1875
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   116
    new_params['create_dynafields'] = [
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   117
        {'name': 'link_id',
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   118
         'base': forms.fields.CharField,
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   119
         'label': 'Organization Link ID',
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   120
         },
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   121
        ]
69d60793092a Specify the type of Link ID used
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1868
diff changeset
   122
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1349
diff changeset
   123
    new_params['create_extra_dynaproperties'] = {
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   124
        'scope_path': forms.fields.CharField(widget=forms.HiddenInput,
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   125
                                             required=True),
1566
5388270fb363 contrib template in org_app is now a TextProperty.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1559
diff changeset
   126
        'contrib_template': forms.fields.CharField(
5388270fb363 contrib template in org_app is now a TextProperty.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1559
diff changeset
   127
            widget=helper.widgets.FullTinyMCE(
5388270fb363 contrib template in org_app is now a TextProperty.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1559
diff changeset
   128
                attrs={'rows': 25, 'cols': 100})),
1781
f8e85447fbdf Add TinyMCE widget for org apps
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1777
diff changeset
   129
        'description': forms.fields.CharField(
f8e85447fbdf Add TinyMCE widget for org apps
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1777
diff changeset
   130
            widget=helper.widgets.FullTinyMCE(
f8e85447fbdf Add TinyMCE widget for org apps
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1777
diff changeset
   131
                attrs={'rows': 25, 'cols': 100})),
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   132
        'admin_agreement': forms.fields.Field(required=False,
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   133
            widget=widgets.AgreementField),
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   134
        'agreed_to_admin_agreement': forms.fields.BooleanField(
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   135
            initial=False, required=True),
1781
f8e85447fbdf Add TinyMCE widget for org apps
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1777
diff changeset
   136
f8e85447fbdf Add TinyMCE widget for org apps
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1777
diff changeset
   137
        'clean_description': cleaning.clean_html_content('description'),
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1939
diff changeset
   138
        'clean_contrib_template': cleaning.clean_html_content(
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1939
diff changeset
   139
            'contrib_template'),
1230
b1b1897e4df1 Cleanup in org_app and replace ReferenceProperty with LinkProperty
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1225
diff changeset
   140
        'clean_ideas': cleaning.clean_url('ideas'),
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   141
        'clean': cleaning.validate_new_group('link_id', 'scope_path',
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   142
            model_logic.organization, org_app_logic)}
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   143
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   144
    # get rid of the clean method
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1349
diff changeset
   145
    new_params['edit_extra_dynaproperties'] = {
1205
2e88261aba72 Added validate_new_group to cleaning and removed clean_new_club_link_id.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1201
diff changeset
   146
        'clean': (lambda x: x.cleaned_data)}
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   147
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   148
    new_params['name'] = "Organization Application"
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   149
    new_params['name_plural'] = "Organization Applications"
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   150
    new_params['name_short'] = "Org App"
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   151
    new_params['url_name'] = "org_app"
1533
50fb3a9b6615 Fix for Issue 218.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1506
diff changeset
   152
    new_params['group_name'] = "Organization"
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   153
    new_params['group_url_name'] = 'org'
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   154
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   155
    new_params['review_template'] = 'soc/org_app/review.html'
1868
6847be02943a Updated the accepted organization email for GSoC 2009.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1862
diff changeset
   156
    # TODO use a proper template that works for each program
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1939
diff changeset
   157
    new_params['accepted_mail_template'] = \
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1939
diff changeset
   158
        'soc/org_app/mail/accepted_gsoc2009.html'
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   159
    new_params['rejected_mail_template'] = 'soc/org_app/mail/rejected.html'
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   160
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   161
    params = dicts.merge(params, new_params)
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   162
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   163
    super(View, self).__init__(params=params)
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   164
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   165
  @ decorators.merge_params
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   166
  def reviewOverview(self, request, access_type,
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   167
               page_name=None, params=None, **kwargs):
1645
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   168
    """View that allows to see organization application review overview.
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   169
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   170
       For Args see base.View.public().
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   171
    """
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   172
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   173
    params['list_template'] = 'soc/org_app/review_overview.html'
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   174
    context = {
1645
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   175
        'bulk_accept_link': '/org_app/bulk_accept/%(scope_path)s' % (kwargs),
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   176
        'bulk_reject_link': '/org_app/bulk_reject/%(scope_path)s' % (kwargs),}
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   177
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   178
    return super(View, self).reviewOverview(request, access_type,
1296
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   179
        page_name=page_name, params=params, context=context, **kwargs)
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   180
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   181
  def _editContext(self, request, context):
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   182
    """See base.View._editContext.
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   183
    """
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   184
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   185
    entity = context['entity']
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   186
    form = context['form']
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   187
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   188
    if 'scope_path' in form.initial:
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   189
      scope_path = form.initial['scope_path']
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   190
    elif 'scope_path' in request.POST:
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   191
      scope_path = request.POST['scope_path']
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   192
    else:
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   193
      del form.fields['admin_agreement']
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   194
      return
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   195
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   196
    entity = program_logic.logic.getFromKeyName(scope_path)
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   197
1763
6bd59cad39a5 Addressed comments by Pawel
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1754
diff changeset
   198
    if not (entity and entity.org_admin_agreement):
6bd59cad39a5 Addressed comments by Pawel
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1754
diff changeset
   199
      return
1726
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   200
1763
6bd59cad39a5 Addressed comments by Pawel
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1754
diff changeset
   201
    agreement = entity.org_admin_agreement
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   202
1726
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   203
    content = agreement.content
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   204
    params = {'url_name': 'document'}
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   205
1726
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   206
    widget = form.fields['admin_agreement'].widget
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   207
    widget.text = content
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1645
diff changeset
   208
    widget.url = redirects.getPublicRedirect(agreement, params)
1276
7f460f46a611 Initial implementation of a ToS requirement in org_app
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1255
diff changeset
   209
1296
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   210
  def _review(self, request, params, app_entity, status, **kwargs):
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   211
    """Sends out an email if an org_app has been accepted or rejected.
1296
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   212
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   213
    For params see group_app.View._review().
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   214
    """
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   215
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   216
    if status == 'accepted' or status == 'rejected':
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   217
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   218
      default_sender = mail_dispatcher.getDefaultMailSender()
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   219
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   220
      if not default_sender:
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   221
        # no default sender abort
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   222
        return
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   223
      else:
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   224
        (sender_name, sender) = default_sender
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   225
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   226
      # construct the contents of the email
2170
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   227
      admin_entity = app_entity.applicant
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   228
      backup_entity = app_entity.backup_admin
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   229
2170
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   230
      context = {
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   231
          'sender': sender,
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   232
          'sender_name': sender_name,
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   233
          'program_name': app_entity.scope.name,
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   234
          'org_app_name': app_entity.name
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   235
          }
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   236
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   237
      if status == 'accepted':
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   238
        # use the accepted template and subject
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   239
        template = params['accepted_mail_template']
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   240
        context['subject'] = 'Congratulations!'
2867
e8d86272e6ea Use system.getHostname() everywhere
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2781
diff changeset
   241
        context['HTTP_host'] = 'http://%s' % (system.getHostname())
1553
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   242
      elif status == 'rejected':
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   243
        # use the rejected template and subject
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   244
        template = params['rejected_mail_template']
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   245
        context['subject'] = 'Thank you for your application'
451c804c6aab Added sending of an email upon Organization Application acceptance or rejection.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1537
diff changeset
   246
2170
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   247
      for to in [admin_entity, backup_entity]:
2171
83d96aadd228 Do not rely on a backup_admin being set
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2170
diff changeset
   248
        if not to:
83d96aadd228 Do not rely on a backup_admin being set
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2170
diff changeset
   249
          continue
83d96aadd228 Do not rely on a backup_admin being set
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2170
diff changeset
   250
2170
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   251
        email = accounts.denormalizeAccount(to.account).email()
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   252
        context['to'] = email
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   253
        context['to_name'] = to.name
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   254
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   255
        # send out the constructed email
cec46675f866 Send out notifications and emails to admin and backup admin
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2160
diff changeset
   256
        mail_dispatcher.sendMailFromTemplate(template, context)
1296
64918d0c97ea Implemented the 2nd part of bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1294
diff changeset
   257
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   258
  @decorators.merge_params
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   259
  @decorators.check_access
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   260
  def bulkAccept(self, request, access_type,
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   261
               page_name=None, params=None, **kwargs):
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   262
    """Returns a HTTP Response containing JSON information needed
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   263
       to bulk-accept orgs.
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   264
    """
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   265
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   266
    program_keyname = kwargs['scope_path']
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   267
    return self._bulkReview(request, params, 'pre-accepted', 'accepted',
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   268
        program_keyname)
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   269
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   270
  @decorators.merge_params
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   271
  @decorators.check_access
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   272
  def bulkReject(self, request, access_type,
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   273
               page_name=None, params=None, **kwargs):
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   274
    """Returns a HTTP Response containing JSON information needed
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   275
       to bulk-accept orgs.
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   276
    """
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   277
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   278
    program_keyname = kwargs['scope_path']
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   279
    return self._bulkReview(request, params, 'pre-rejected', 'rejected',
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   280
                            program_keyname)
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   281
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   282
  def _bulkReview(self, request, params, from_status, to_status,
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   283
                  program_keyname):
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   284
    """Returns a HTTP Response containing JSON information needed
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   285
       to bulk-review organization applications.
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   286
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   287
       Args:
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   288
         request: Standard Django HTTP Request object
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   289
         params: Params for this view
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   290
         from_status: The status for the applications which should
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   291
                      be reviewed (can be a list)
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   292
         to_status: The status to which all applications should be changed to
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   293
         program_keyname: The keyname for the program to which
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   294
                          the application belongs
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   295
    """
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   296
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   297
    # get the program entity from the keyname
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   298
    program_entity = program_logic.logic.getFromKeyName(program_keyname)
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   299
1645
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   300
    # get all the organization applications for the 
c7e05dafaede Style fixes plus removal of unused imports, add missing docstring and fix too long lines in soc.views.models.org_app module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1615
diff changeset
   301
    # given program and from_status
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   302
    filter = {'scope': program_entity,
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   303
              'status': from_status}
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   304
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   305
    org_app_entities = params['logic'].getForFields(filter=filter)
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   306
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   307
    # convert each application into a dictionary containing only the fields
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   308
    # given by the dict_filter
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   309
    dict_filter = ['link_id', 'name']
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   310
    org_apps = [dicts.filter(i.toDict(), dict_filter) for i in org_app_entities]
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   311
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   312
    to_json = {
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   313
        'program' : program_entity.name,
1297
033fa805b361 Added number of applications and their type to the bulkaccept JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1296
diff changeset
   314
        'nr_applications' : len(org_apps),
033fa805b361 Added number of applications and their type to the bulkaccept JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1296
diff changeset
   315
        'application_type' : params['name_plural'],
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   316
        'applications': org_apps,
1537
fb89938aa078 Added bulk reject to org_app view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1533
diff changeset
   317
        'link' : '/%s/review/%s/(link_id)?status=%s' %(
2160
3f9dd37d98a8 Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2076
diff changeset
   318
            params['url_name'] ,program_entity.key().id_or_name(), to_status),
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   319
        }
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   320
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   321
    json = simplejson.dumps(to_json)
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   322
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   323
    # use the standard JSON template to return our response
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   324
    context = {'json': json}
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   325
    template = 'soc/json.html'
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   326
1506
b908d671624e Solved the JSON caching problem for bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
   327
    return responses.respond(request, template, context)
1294
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   328
359987b7027d Added bulk_accept view which returns a JSON object.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1276
diff changeset
   329
1182
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   330
view = View()
5bea281505f4 Fixed EOL damage in org_app and access checks
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1151
diff changeset
   331
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   332
admin = decorators.view(view.admin)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   333
bulk_accept = decorators.view(view.bulkAccept)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   334
bulk_reject = decorators.view(view.bulkReject)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   335
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   336
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   337
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   338
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   339
list_self = decorators.view(view.listSelf)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   340
public = decorators.view(view.public)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   341
export = decorators.view(view.export)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   342
review = decorators.view(view.review)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1566
diff changeset
   343
review_overview = decorators.view(view.reviewOverview)