app/soc/views/models/student.py
author Pawel Solyga <Pawel.Solyga@gmail.com>
Thu, 02 Apr 2009 10:11:38 +0000
changeset 2051 cecbef1289a5
parent 2050 b3b235acdc6e
child 2076 1cd180cc56c9
permissions -rw-r--r--
Make the mentor and organization admin comment submission on student proposal nicer. Now drop down box allows you to select comment type and based on selected type and your current Role shows you available comment options. Left TODO to put inline JS into separate JS file. Patch by: Tim Ansell (small fixes by Pawel Solyga) Reviewed by: Pawel Solyga
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Views for Student.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
    '"Lennard de Rijk" <ljvderijk@gmail.com>'
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
from django import forms
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
from django.utils.translation import ugettext
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
from soc.logic import cleaning
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    29
from soc.logic import dicts
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
from soc.logic.models import program as program_logic
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
from soc.logic.models import student as student_logic
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
from soc.logic.models import user as user_logic
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    33
from soc.views.helper import access
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
from soc.views.helper import decorators
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    35
from soc.views.helper import dynaform
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    36
from soc.views.helper import redirects
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    37
from soc.views.helper import widgets
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    38
from soc.views.models import program as program_view
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
from soc.views.models import role
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
import soc.logic.models.student
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    43
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
class View(role.View):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    45
  """View methods for the Student model.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    46
  """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    47
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    48
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    49
  def __init__(self, params=None):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
    """Defines the fields and methods required for the base View class
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
    to provide the user with list, public, create, edit and delete views.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    52
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    53
    Params:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
      params: a dict with params for this View
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
    """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
    rights = access.Checker(params)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
    rights['create'] = ['checkIsDeveloper']
2018
c584eb2f57db Added missing access checks to various roles.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1980
diff changeset
    59
    rights['edit'] = [('checkHasActiveRoleForScope', student_logic.logic),
2020
df3552deba66 Clarified docstring in access.py and changed edit access checks for role views.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2018
diff changeset
    60
        ('checkIsMyEntity', [student_logic.logic, 'user', True])]
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
    rights['delete'] = ['checkIsDeveloper']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    62
    rights['apply'] = [
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    63
        'checkIsUser',
1382
293a14668dc9 Students can now only get a student role during the student signup period.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1379
diff changeset
    64
        ('checkIsActivePeriod', ['student_signup', 'scope_path']),
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
        'checkIsNotParticipatingInProgramInScope',
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
        ]
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    67
    rights['manage'] = [
1724
d8d04e17b574 Students can not be kicked from a program by a organization admin.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    68
        ('checkIsAllowedToManageRole', [soc.logic.models.host.logic])]
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    69
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
    new_params = {}
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    71
    new_params['logic'] = soc.logic.models.student.logic
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
    new_params['group_logic'] = program_logic.logic
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    73
    new_params['group_view'] = program_view.view
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    74
    new_params['rights'] = rights
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    75
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    76
    new_params['scope_view'] = program_view
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    77
    new_params['scope_redirect'] = redirects.getCreateRedirect
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    78
    new_params['manage_redirect'] = redirects.getUserRolesRedirect
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    79
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    80
    new_params['name'] = "Student"
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    81
    new_params['module_name'] = "student"
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    82
    new_params['sidebar_grouping'] = 'Students'
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    83
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    84
    # add apply pattern
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    85
    patterns = [(r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$',
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    86
        'soc.views.models.%(module_name)s.apply',
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    87
        'Become a %(name)s'),]
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    88
    new_params['extra_django_patterns'] = patterns
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    89
1383
18383d2e5a5b Students now have a reference to school again.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1382
diff changeset
    90
    new_params['extra_dynaexclude'] = ['agreed_to_tos', 'school']
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    91
1980
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    92
    new_params['create_extra_dynaproperties'] = {
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    93
        'expected_graduation': forms.IntegerField(required=True,
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    94
                                                  max_value=2030,
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    95
                                                  min_value=2009)
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    96
        }
db7c98580008 Added fields requested in Issue 392 to Student Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1949
diff changeset
    97
1461
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
    98
    new_params['create_dynafields'] = [
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
    99
        {'name': 'scope_path',
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   100
         'base': forms.fields.CharField,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   101
         'widget': forms.HiddenInput,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   102
         'required': True,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   103
         },
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   104
        {'name': 'student_agreement',
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   105
         'base': forms.fields.CharField,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   106
         'required': False,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   107
         'widget': widgets.AgreementField,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   108
         'group': ugettext("5. Terms of Service"),
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   109
         },
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   110
        {'name': 'agreed_to_student_agreement',
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   111
         'base': forms.fields.BooleanField,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   112
         'initial': False,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   113
         'required':True,
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   114
         'label': ugettext('I agree to the Student Agreement'),
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   115
         'group': ugettext("5. Terms of Service"),
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   116
         },
92c5a390739a Convert student and org_admin to dynafield
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1430
diff changeset
   117
        ]
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
1384
bb22ea156567 Role overview membership is now determined by setting show_in_roles_overview param to true in the view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1383
diff changeset
   119
    new_params['show_in_roles_overview'] = True
bb22ea156567 Role overview membership is now determined by setting show_in_roles_overview param to true in the view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1383
diff changeset
   120
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   121
    params = dicts.merge(params, new_params)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   122
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   123
    super(View, self).__init__(params=params)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   124
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   125
    # create and store the special form for users
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   126
    updated_fields = {
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   127
        'link_id': forms.CharField(widget=forms.HiddenInput,
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   128
            required=True),
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   129
        'clean_link_id': cleaning.clean_user_is_current('link_id')
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   130
        }
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   131
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   132
    user_create_form = dynaform.extendDynaForm(
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   133
        dynaform = self._params['create_form'],
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1394
diff changeset
   134
        dynaproperties = updated_fields)
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   135
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   136
    self._params['user_create_form'] = user_create_form
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   137
1384
bb22ea156567 Role overview membership is now determined by setting show_in_roles_overview param to true in the view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1383
diff changeset
   138
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   139
  @decorators.merge_params
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   140
  @decorators.check_access
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   141
  def apply(self, request, access_type,
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   142
           page_name=None, params=None, **kwargs):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   143
    """Handles student role creation for the current user.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   144
    """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   145
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   146
    user_entity = user_logic.logic.getForCurrentAccount()
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   147
    params['create_form'] = params['user_create_form']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   148
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   149
    return self.create(request, access_type='unspecified', page_name=page_name,
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   150
        params=params, link_id=user_entity.link_id, **kwargs)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   151
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   152
  def _editPost(self, request, entity, fields):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   153
    """See base.View._editPost().
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   154
    """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   155
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   156
    if not entity:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   157
      fields['user'] = fields['link_id']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   158
      fields['link_id'] = fields['user'].link_id
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   159
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   160
    fields['agreed_to_tos'] = fields['agreed_to_student_agreement']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   161
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   162
    super(View, self)._editPost(request, entity, fields)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   163
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   164
  def _editGet(self, request, entity, form):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   165
    """Sets the content of the agreed_to_tos_on field and replaces.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   166
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   167
    Also replaces the agreed_to_tos field with a hidden field when the ToS has been signed.
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   168
    For params see base.View._editGet().
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   169
    """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   170
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   171
    if entity.agreed_to_tos:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   172
      form.fields['agreed_to_student_agreement'] = forms.fields.BooleanField(
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   173
          widget=forms.HiddenInput, initial=entity.agreed_to_tos,
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   174
          required=True)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   175
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   176
    super(View, self)._editGet(request, entity, form)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   177
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   178
  def _editContext(self, request, context):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   179
    """See base.View._editContext().
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   180
    """
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   181
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   182
    entity = context['entity']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   183
    form = context['form']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   184
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   185
    if 'scope_path' in form.initial:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   186
      scope_path = form.initial['scope_path']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   187
    elif 'scope_path' in request.POST:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   188
      scope_path = request.POST['scope_path']
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   189
    else:
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   190
      form.fields['student_agreement'] = None
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   191
      return
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   192
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   193
    program = program_logic.logic.getFromKeyName(scope_path)
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   194
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   195
    if not (program and program.student_agreement):
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   196
      return
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   197
1726
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   198
    agreement = program.student_agreement
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   199
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   200
    content = agreement.content
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   201
    params = {'url_name': 'document'}
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   202
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   203
    widget = form.fields['student_agreement'].widget
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   204
    widget.text = content
711c8dcab67e Add a link to the full agreement text
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1724
diff changeset
   205
    widget.url = redirects.getPublicRedirect(agreement, params)
1379
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   206
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   207
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   208
view = View()
e6341549300c Added student view and accompanying templates.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   209
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   210
apply = decorators.view(view.apply)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   211
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   212
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   213
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   214
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   215
manage = decorators.view(view.manage)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   216
public = decorators.view(view.public)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1461
diff changeset
   217
export = decorators.view(view.export)