app/soc/views/models/student_project.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sun, 02 Aug 2009 02:57:20 -0700
changeset 2711 4df8c11c36cb
parent 2707 ffabb3576744
child 2715 afd5368af75c
permissions -rw-r--r--
addressed comments by Lennard
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Views for Student Project.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
    25
import logging
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
import time
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
from django import forms
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
    29
from django import http
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
    30
from django.utils.translation import ugettext
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
from soc.logic import cleaning
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    33
from soc.logic import dicts
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
from soc.logic.models import mentor as mentor_logic
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    35
from soc.logic.models.organization import logic as org_logic
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    36
from soc.logic.models.org_admin import logic as org_admin_logic
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    37
from soc.logic.models import student as student_logic
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
    38
from soc.logic.models.program import logic as program_logic
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    39
from soc.logic.models.student_project import logic as project_logic
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
    40
from soc.views import out_of_band
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
from soc.views.helper import access
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
from soc.views.helper import decorators
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    43
from soc.views.helper import dynaform
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    44
from soc.views.helper import forms as forms_helper
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    45
from soc.views.helper import lists
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    46
from soc.views.helper import params as params_helper
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    47
from soc.views.helper import redirects
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    48
from soc.views.helper import responses
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
    49
from soc.views.helper import widgets
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
from soc.views.models import base
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
from soc.views.models import organization as org_view
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    52
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    53
import soc.logic.models.student_project
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
class View(base.View):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
  """View methods for the Student Project model.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
  """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    59
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    60
  def __init__(self, params=None):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
    """Defines the fields and methods required for the base View class
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    62
    to provide the user with list, public, create, edit and delete views.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    63
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    64
    Params:
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
      params: a dict with params for this View
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    67
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    68
    rights = access.Checker(params)
2241
5e5b7f5d9a89 Allow anyone to see student projects
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2183
diff changeset
    69
    rights['any_access'] = ['allow']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
    rights['create'] = ['checkIsDeveloper']
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1936
diff changeset
    71
    rights['edit'] = ['checkIsDeveloper']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
    rights['delete'] = ['checkIsDeveloper']
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    73
    rights['show'] = ['allow']
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    74
    rights['list'] = ['checkIsDeveloper']
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    75
    rights['manage'] = [('checkHasActiveRoleForScope',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    76
                         org_admin_logic),
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
    77
        ('checkStudentProjectHasStatus', [['accepted']])]
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    78
    rights['manage_overview'] = [('checkHasActiveRoleForScope',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    79
                         org_admin_logic)]
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
    80
    # TODO: lack of better name here!
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    81
    rights['st_edit'] = ['checkIsMyStudentProject',
2152
3c3f0cd9873d Brown paper bag fix for Student Project Manage and Edit access check.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2146
diff changeset
    82
        ('checkStudentProjectHasStatus',
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
    83
            [['accepted', 'completed']])
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    84
        ]
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
    85
    rights['withdraw'] = ['checkIsHostForProgram']
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    86
    rights['withdraw_project'] = ['checkIsHostForStudentProject',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    87
        ('checkStudentProjectHasStatus',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    88
            [['accepted', 'completed']])
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    89
        ]
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    90
    rights['accept_project'] = ['checkIsHostForStudentProject',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    91
        ('checkStudentProjectHasStatus',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    92
            [['withdrawn']])
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    93
        ]
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    94
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    95
    new_params = {}
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    96
    new_params['logic'] = soc.logic.models.student_project.logic
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    97
    new_params['rights'] = rights
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    98
    new_params['name'] = "Student Project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    99
    new_params['url_name'] = "student_project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   100
    new_params['sidebar_grouping'] = 'Students'
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   101
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   102
    new_params['scope_view'] = org_view
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   103
    new_params['scope_redirect'] = redirects.getCreateRedirect
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   104
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   105
    new_params['no_create_with_key_fields'] = True
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   106
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   107
    new_params['extra_dynaexclude'] = ['program', 'status', 'link_id',
2183
4e036dcc79ba Added additional_mentors property to StudentProject.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2177
diff changeset
   108
                                       'mentor', 'additional_mentors',
2637
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
   109
                                       'student', 'passed_evaluations',
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
   110
                                       'failed_evaluations']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   111
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   112
    new_params['create_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   113
        'scope_path': forms.CharField(widget=forms.HiddenInput,
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   114
            required=True),
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   115
        'public_info': forms.fields.CharField(required=True,
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   116
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   117
        'student_id': forms.CharField(label='Student Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
            required=True),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   119
        'mentor_id': forms.CharField(label='Mentor Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   120
            required=True),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   121
        'clean_abstract': cleaning.clean_content_length('abstract'),
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   122
        'clean_public_info': cleaning.clean_html_content('public_info'),
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   123
        'clean_student': cleaning.clean_link_id('student'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   124
        'clean_mentor': cleaning.clean_link_id('mentor'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   125
        'clean_additional_info': cleaning.clean_url('additional_info'),
2122
b709f9d1566a Added feed_url to StudentProject.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2121
diff changeset
   126
        'clean_feed_url': cleaning.clean_feed_url,
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   127
        'clean': cleaning.validate_student_project('scope_path',
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   128
            'mentor_id', 'student_id')
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   129
        }
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   130
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   131
    new_params['edit_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   132
        'link_id': forms.CharField(widget=forms.HiddenInput),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   133
        }
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   134
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   135
    patterns = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   136
        (r'^%(url_name)s/(?P<access_type>manage_overview)/%(scope)s$',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   137
        'soc.views.models.%(module_name)s.manage_overview',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   138
        'Overview of %(name_plural)s to Manage for'),
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   139
        (r'^%(url_name)s/(?P<access_type>manage)/%(key_fields)s$',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   140
        'soc.views.models.%(module_name)s.manage',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   141
        'Manage %(name)s'),
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   142
        (r'^%(url_name)s/(?P<access_type>st_edit)/%(key_fields)s$',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   143
        'soc.views.models.%(module_name)s.st_edit',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   144
        'Edit my %(name)s'),
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   145
        (r'^%(url_name)s/(?P<access_type>withdraw)/(?P<scope_path>%(ulnp)s)/%(lnp)s$',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   146
        'soc.views.models.%(module_name)s.withdraw',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   147
        'Withdraw %(name_plural)s'),
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   148
        (r'^%(url_name)s/(?P<access_type>withdraw_project)/%(key_fields)s$',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   149
        'soc.views.models.%(module_name)s.withdraw_project',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   150
        'Withdraw a %(name)s'),
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   151
        (r'^%(url_name)s/(?P<access_type>accept_project)/%(key_fields)s$',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   152
        'soc.views.models.%(module_name)s.accept_project',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   153
        'Accept a %(name)s'),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   154
    ]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   155
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   156
    new_params['extra_django_patterns'] = patterns
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   157
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   158
    new_params['edit_template'] = 'soc/student_project/edit.html'
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   159
    new_params['manage_template'] = 'soc/student_project/manage.html'
2685
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   160
    new_params['manage_overview_heading'] = \
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   161
        'soc/student_project/list/heading_manage.html'
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   162
    new_params['manage_overview_row'] = \
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   163
        'soc/student_project/list/row_manage.html'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   164
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   165
    params = dicts.merge(params, new_params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   166
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   167
    super(View, self).__init__(params=params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   168
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   169
    # create the form that students will use to edit their projects
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   170
    dynaproperties = {
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   171
        'public_info': forms.fields.CharField(required=True,
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   172
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   173
        'clean_abstract': cleaning.clean_content_length('abstract'),
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   174
        'clean_public_info': cleaning.clean_html_content('public_info'),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   175
        'clean_additional_info': cleaning.clean_url('additional_info'),
2122
b709f9d1566a Added feed_url to StudentProject.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2121
diff changeset
   176
        'clean_feed_url': cleaning.clean_feed_url,
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   177
        }
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   178
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   179
    student_edit_form = dynaform.newDynaForm(
2177
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   180
        dynabase = self._params['dynabase'],
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   181
        dynamodel = self._params['logic'].getModel(),
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   182
        dynaexclude = self._params['create_dynaexclude'],
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   183
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   184
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   185
2177
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   186
    self._params['student_edit_form'] = student_edit_form
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   187
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   188
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   189
  def _editGet(self, request, entity, form):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   190
    """See base.View._editGet().
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   191
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   192
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   193
    form.fields['link_id'].initial = entity.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   194
    form.fields['student_id'].initial = entity.student.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   195
    form.fields['mentor_id'].initial = entity.mentor.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   196
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   197
    return super(View, self)._editGet(request, entity, form)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   198
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   199
  def _editPost(self, request, entity, fields):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   200
    """See base.View._editPost().
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   201
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   202
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   203
    if not entity:
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1936
diff changeset
   204
      fields['link_id'] = 't%i' % (int(time.time()*100))
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   205
    else:
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   206
      fields['link_id'] = entity.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   207
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   208
    # fill in the scope via call to super
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   209
    super(View, self)._editPost(request, entity, fields)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   210
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   211
    # editing a project so set the program, student and mentor field
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   212
    if entity:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   213
      organization = entity.scope
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   214
    else:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   215
      organization = fields['scope']
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   216
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   217
    fields['program'] = organization.scope
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   218
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   219
    filter = {'scope': fields['program'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   220
              'link_id': fields['student_id']}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   221
    fields['student'] = student_logic.logic.getForFields(filter, unique=True)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   222
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   223
    filter = {'scope': organization,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   224
              'link_id': fields['mentor_id'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   225
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   226
    fields['mentor'] = mentor_logic.logic.getForFields(filter, unique=True)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   227
2280
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   228
  def _public(self, request, entity, context):
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   229
    """Adds the names of all additional mentors to the context.
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   230
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   231
    For params see base.View._public()
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   232
    """
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   233
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   234
    additional_mentors = entity.additional_mentors
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   235
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   236
    if not additional_mentors:
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   237
      context['additional_mentors'] = []
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   238
    else:
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   239
      mentor_names = []
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   240
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   241
      for mentor_key in additional_mentors:
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   242
        additional_mentor = mentor_logic.logic.getFromKeyName(
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   243
            mentor_key.id_or_name())
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   244
        mentor_names.append(additional_mentor.name())
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   245
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   246
      context['additional_mentors'] = ', '.join(mentor_names)
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   247
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   248
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   249
  @decorators.check_access
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   250
  def withdraw(self, request, access_type,
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   251
                      page_name=None, params=None, **kwargs):
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   252
    """View that allows Program Admins to accept or withdraw Student Projects.
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   253
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   254
    For params see base.View().public()
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   255
    """
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   256
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   257
    program = program_logic.getFromKeyFieldsOr404(kwargs)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   258
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   259
    fields = {
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   260
        'program': program,
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   261
        'status': ['accepted', 'completed'],
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   262
        }
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   263
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   264
    ap_params = params.copy() # accepted projects
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   265
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   266
    ap_params['list_action'] = (redirects.getWithdrawProjectRedirect, ap_params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   267
    ap_params['list_description'] = ugettext(
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   268
        "An overview of accepted and completed Projects.")
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   269
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   270
    ap_list = lists.getListContent(
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   271
        request, ap_params, fields, idx=0)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   272
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   273
    fields['status'] = ['withdrawn']
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   274
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   275
    wp_params = params.copy() # withdrawn projects
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   276
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   277
    wp_params['list_action'] = (redirects.getAcceptProjectRedirect, wp_params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   278
    wp_params['list_description'] = ugettext(
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   279
        "An overview of withdrawn Projects.")
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   280
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   281
    wp_list = lists.getListContent(
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   282
        request, wp_params, fields, idx=1)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   283
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   284
    # fill contents with all the needed lists
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   285
    contents = [ap_list, wp_list]
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   286
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   287
    # call the _list method from base to display the list
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   288
    return self._list(request, params, contents, page_name)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   289
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   290
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   291
  @decorators.check_access
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   292
  def withdrawProject(self, request, access_type,
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   293
                      page_name=None, params=None, **kwargs):
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   294
    """View that allows Program Admins to withdraw Student Projects.
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   295
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   296
    For params see base.View().public()
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   297
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   298
    """
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   299
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   300
    logic = params['logic']
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   301
    entity = logic.getFromKeyFieldsOr404(kwargs)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   302
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   303
    fields = {
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   304
        'status': 'withdrawn',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   305
        }
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   306
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   307
    logic.updateEntityProperties(entity, fields)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   308
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   309
    url = redirects.getWithdrawRedirect(entity.program, params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   310
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   311
    return http.HttpResponseRedirect(url)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   312
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   313
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   314
  @decorators.check_access
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   315
  def acceptProject(self, request, access_type,
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   316
                      page_name=None, params=None, **kwargs):
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   317
    """View that allows Program Admins to accept Student Projects.
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   318
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   319
    For params see base.View().public()
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   320
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   321
    """
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   322
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   323
    logic = params['logic']
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   324
    entity = logic.getFromKeyFieldsOr404(kwargs)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   325
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   326
    fields = {
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   327
        'status': 'accepted',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   328
        }
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   329
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   330
    logic.updateEntityProperties(entity, fields)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   331
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   332
    url = redirects.getWithdrawRedirect(entity.program, params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   333
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   334
    return http.HttpResponseRedirect(url)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   335
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   336
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   337
  @decorators.check_access
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   338
  def manage(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   339
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   340
    """View that allows Organization Admins to manage their Student Projects.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   341
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   342
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   343
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   344
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   345
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   346
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   347
    except out_of_band.Error, error:
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   348
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   349
          error, request, template=params['error_public'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   350
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   351
    get_dict = request.GET
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   352
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   353
    if 'remove' in get_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   354
      # get the mentor to remove
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   355
      fields = {'link_id': get_dict['remove'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   356
                'scope': entity.scope}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   357
      mentor = mentor_logic.logic.getForFields(fields, unique=True)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   358
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   359
      additional_mentors = entity.additional_mentors
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
   360
      # pylint: disable-msg=E1103
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   361
      if additional_mentors and mentor.key() in additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   362
        # remove the mentor from the additional mentors list
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   363
        additional_mentors.remove(mentor.key())
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   364
        fields = {'additional_mentors': additional_mentors}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   365
        project_logic.updateEntityProperties(entity, fields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   366
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   367
      # redirect to the same page without GET arguments
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   368
      redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   369
      return http.HttpResponseRedirect(redirect)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   370
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   371
    template = params['manage_template']
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   372
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   373
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   374
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   375
    responses.useJavaScript(context, params['js_uses_all'])
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   376
    context['page_name'] = "%s '%s' from %s" % (page_name, entity.title,
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   377
                                                entity.student.name())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   378
    context['entity'] = entity
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   379
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   380
    # get all mentors for this organization
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   381
    fields = {'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   382
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   383
    mentors = mentor_logic.logic.getForFields(fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   384
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   385
    choices = [(mentor.link_id,'%s (%s)' %(mentor.name(), mentor.link_id))
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   386
                  for mentor in mentors]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   387
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   388
    # create the form that org admins will use to reassign a mentor
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   389
    dynafields = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   390
        {'name': 'mentor_id',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   391
         'base': forms.ChoiceField,
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   392
         'label': 'Primary Mentor',
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   393
         'required': True,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   394
         'passthrough': ['required', 'choices', 'label'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   395
         'choices': choices,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   396
        },]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   397
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   398
    dynaproperties = params_helper.getDynaFields(dynafields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   399
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   400
    mentor_edit_form = dynaform.newDynaForm(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   401
        dynabase = params['dynabase'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   402
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   403
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   404
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   405
    params['mentor_edit_form'] = mentor_edit_form
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   406
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   407
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   408
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   409
    # we want to show the names of the additional mentors in the context
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   410
    # therefore they need to be resolved to entities first
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   411
    additional_mentors_context = []
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   412
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   413
    for mentor_key in additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   414
      mentor_entity = mentor_logic.logic.getFromKeyName(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   415
          mentor_key.id_or_name())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   416
      additional_mentors_context.append(mentor_entity)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   417
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   418
    context['additional_mentors'] = additional_mentors_context
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   419
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   420
    # all mentors who are not already an additional mentor or
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   421
    # the primary mentor are allowed to become an additional mentor
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   422
    possible_additional_mentors = [m for m in mentors if 
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   423
        (m.key() not in additional_mentors) 
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   424
        and (m.key() != entity.mentor.key())]
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   425
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   426
    # create the information to be shown on the additional mentor form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   427
    additional_mentor_choices = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   428
        (mentor.link_id,'%s (%s)' %(mentor.name(), mentor.link_id))
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   429
        for mentor in possible_additional_mentors]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   430
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   431
    dynafields = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   432
        {'name': 'mentor_id',
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   433
         'base': forms.ChoiceField,
2279
e31414fd3b2a Changed Additional Mentors to Co-Mentors in the manage view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2278
diff changeset
   434
         'label': 'Co-Mentor',
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   435
         'required': True,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   436
         'passthrough': ['required', 'choices', 'label'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   437
         'choices': additional_mentor_choices,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   438
        },]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   439
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   440
    dynaproperties = params_helper.getDynaFields(dynafields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   441
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   442
    additional_mentor_form = dynaform.newDynaForm(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   443
        dynabase = params['dynabase'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   444
        dynaproperties = dynaproperties,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   445
    )
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   446
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   447
    params['additional_mentor_form'] = additional_mentor_form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   448
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   449
    context['evaluation_list'] = self._getEvaluationLists(request, params,
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   450
                                                          entity)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   451
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   452
    if request.POST:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   453
      return self.managePost(request, template, context, params, entity,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   454
                             **kwargs)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   455
    else: #request.GET
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   456
      return self.manageGet(request, template, context, params, entity,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   457
                            **kwargs)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   458
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   459
  def _getEvaluationLists(self, request, params, entity):
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   460
    """Returns List Object containing the list to be shown on the Student 
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   461
    Project's manage page.
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   462
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   463
    This list contains all Surveys that have at least one record and will also 
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   464
    contain information about the presence (or absence) of a accompanying 
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   465
    record for the given Student Project.
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   466
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   467
    Args:
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   468
      request: Django HTTP Request Object
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   469
      params: the params dict for this View
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   470
      entity: a StudentProject entity for which the Surveys(Records) should be
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   471
              retrieved
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   472
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   473
    Returns:
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   474
      A List Object as specified by this method.
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   475
    """
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   476
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   477
    from soc.views.helper import list_info
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   478
    from soc.views.models.grading_project_survey import view as \
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   479
        grading_survey_view
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   480
    from soc.views.models.project_survey import view as project_survey_view
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   481
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   482
    fields = {'scope_path': entity.program.key().id_or_name()}
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   483
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   484
    # get the GradingProjectSurvey list
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   485
    gps_params = grading_survey_view.getParams().copy()
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   486
    gps_params['list_key_order'] = None
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   487
    gps_params['list_heading'] = gps_params['manage_student_project_heading']
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   488
    gps_params['list_row'] = gps_params['manage_student_project_row']
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   489
    gps_params['list_info'] = (
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   490
        list_info.getProjectSurveyInfoForProject(entity, gps_params), None)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   491
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   492
    # list all surveys for this Project's Program
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   493
    fields['scope_path'] = entity.program.key().id_or_name()
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   494
    gps_params['list_description'] = \
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   495
        'List of all Mentor Evaluations for this Project'
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   496
    gps_params['list_action'] = None
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   497
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   498
    gps_list = lists.getListContent(
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   499
        request, gps_params, fields, idx=0)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   500
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   501
    # get the ProjectSurvey list
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   502
    ps_params = project_survey_view.getParams().copy()
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   503
    ps_params['list_key_order'] = None
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   504
    ps_params['list_heading'] = ps_params['manage_student_project_heading']
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   505
    ps_params['list_row'] = ps_params['manage_student_project_row']
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   506
    ps_params['list_info'] = (
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   507
        list_info.getProjectSurveyInfoForProject(entity, ps_params), None)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   508
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   509
    ps_params['list_description'] = \
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   510
        'List of all Student Evaluations for this Project'
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   511
    ps_params['list_action'] = None
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   512
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   513
    # list all surveys for this Project's Program
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   514
    fields['scope_path'] = entity.program.key().id_or_name()
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   515
    ps_list = lists.getListContent(
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   516
        request, ps_params, fields, idx=1)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   517
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   518
    # store both lists in the content
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   519
    content = [gps_list, ps_list]
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   520
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   521
    for list in content:
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   522
      # remove all the surveys that have no records attached
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   523
      list['data'] = [i for i in list['data'] if
2689
18d8486fd411 Renamed hasAtLeastOneRecord to hasRecord.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2688
diff changeset
   524
                      list['logic'].hasRecord(i)]
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   525
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   526
    # return the List Object with the filtered list content
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   527
    return soc.logic.lists.Lists(content)
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   528
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   529
  def manageGet(self, request, template, context, params, entity, **kwargs):
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   530
    """Handles the GET request for the project's manage page.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   531
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   532
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   533
        template: the template used for this view
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   534
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   535
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   536
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   537
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   538
    # populate form with the current mentor
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   539
    initial = {'mentor_id': entity.mentor.link_id}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   540
    context['mentor_edit_form'] = params['mentor_edit_form'](initial=initial)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   541
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   542
    context['additional_mentor_form'] = params['additional_mentor_form']()
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   543
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   544
    return responses.respond(request, template, context)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   545
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   546
  def managePost(self, request, template, context, params, entity, **kwargs):
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   547
    """Handles the POST request for the project's manage page.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   548
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   549
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   550
        template: the template used for this view
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   551
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   552
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   553
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   554
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   555
    post_dict = request.POST
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   556
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   557
    if 'set_mentor' in post_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   558
      form = params['mentor_edit_form'](post_dict)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   559
      return self._manageSetMentor(request, template, context, params, entity,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   560
                                   form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   561
    elif 'add_additional_mentor' in post_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   562
      form = params['additional_mentor_form'](post_dict)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   563
      return self._manageAddAdditionalMentor(request, template, context,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   564
                                             params, entity, form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   565
    else:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   566
      # unexpected error return the normal page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   567
      logging.warning('Unexpected POST data found')
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   568
      return self.manageGet(request, template, context, params, entity)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   569
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   570
  def _manageSetMentor(self, request, template, context, params, entity, form):
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   571
    """Handles the POST request for changing a Projects's mentor.
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   572
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   573
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   574
        template: the template used for this view
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   575
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   576
        form: instance of the form used to set the mentor
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   577
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   578
    """
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   579
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   580
    if not form.is_valid():
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   581
      context['mentor_edit_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   582
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   583
      # add an a fresh additional mentors form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   584
      context['additional_mentor_form'] = params['additional_mentor_form']()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   585
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   586
      return responses.respond(request, template, context)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   587
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   588
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   589
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   590
    # get the mentor from the form
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   591
    fields = {'link_id': fields['mentor_id'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   592
              'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   593
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   594
    mentor = mentor_logic.logic.getForFields(fields, unique=True)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   595
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   596
    # update the project with the assigned mentor
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   597
    fields = {'mentor': mentor}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   598
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   599
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   600
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
   601
    # pylint: disable-msg=E1103
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   602
    if additional_mentors and mentor.key() in additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   603
      # remove the mentor that is now becoming the primary mentor
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   604
      additional_mentors.remove(mentor.key())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   605
      fields['additional_mentors'] = additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   606
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   607
    # update the project with the new mentor and possible 
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   608
    # new set of additional mentors
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   609
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   610
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   611
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   612
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   613
    return http.HttpResponseRedirect(redirect)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   614
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   615
  def _manageAddAdditionalMentor(self, request, template, 
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   616
                                 context, params, entity, form):
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   617
    """Handles the POST request for changing a Projects's additional mentors.
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   618
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   619
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   620
        template: the template used for this view
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   621
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   622
        form: instance of the form used to add an additional mentor
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   623
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   624
    """
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   625
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   626
    if not form.is_valid():
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   627
      context['additional_mentor_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   628
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   629
      # add a fresh edit mentor form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   630
      initial = {'mentor_id': entity.mentor.link_id}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   631
      context['mentor_edit_form'] = params['mentor_edit_form'](initial=initial)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   632
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   633
      return responses.respond(request, template, context)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   634
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   635
    _, fields = forms_helper.collectCleanedFields(form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   636
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   637
    # get the mentor from the form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   638
    fields = {'link_id': fields['mentor_id'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   639
              'scope': entity.scope,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   640
              'status': 'active'}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   641
    mentor = mentor_logic.logic.getForFields(fields, unique=True)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   642
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   643
    # add this mentor to the additional mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   644
    if not entity.additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   645
      additional_mentors = [mentor.key()]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   646
    else:
2640
da8aa1ff6943 Fixed an error occuring when assigning more then one secondary mentors.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2637
diff changeset
   647
      additional_mentors = entity.additional_mentors
da8aa1ff6943 Fixed an error occuring when assigning more then one secondary mentors.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2637
diff changeset
   648
      additional_mentors.append(mentor.key())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   649
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   650
    fields = {'additional_mentors': additional_mentors}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   651
    project_logic.updateEntityProperties(entity, fields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   652
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   653
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   654
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   655
    return http.HttpResponseRedirect(redirect)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   656
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   657
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   658
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   659
  def manageOverview(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   660
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   661
    """View that allows Organization Admins to see an overview of 
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   662
       their Organization's Student Projects.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   663
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   664
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   665
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   666
2685
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   667
    from soc.views.helper import list_info
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   668
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   669
    # make sure the organization exists
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   670
    org_entity = org_logic.getFromKeyNameOr404(kwargs['scope_path'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   671
    fields = {'scope': org_entity}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   672
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   673
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   674
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   675
    responses.useJavaScript(context, params['js_uses_all'])
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   676
    context['page_name'] = '%s %s' % (page_name, org_entity.name)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   677
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   678
    list_params = params.copy()
2685
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   679
    list_params['list_heading'] = params['manage_overview_heading']
506cda0463e8 Added columns to the manage project page that show the amount of evaluations.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2640
diff changeset
   680
    list_params['list_row'] = params['manage_overview_row']
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   681
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   682
    #list all active projects
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
   683
    fields['status'] = 'accepted'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   684
    active_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   685
    active_params['list_description'] = \
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   686
        'List of all active %(name_plural)s' % list_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   687
    active_params['list_action'] = (redirects.getManageRedirect, list_params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   688
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   689
    active_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   690
        request, active_params, fields, idx=0)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   691
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   692
    active_list = list_info.setStudentProjectSurveyInfo(active_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   693
                                                        org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   694
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   695
    # list all failed projects
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
   696
    fields['status'] = 'failed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   697
    failed_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   698
    failed_params['list_description'] = ('List of all failed %(name_plural)s, '
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   699
        'these cannot be managed.') % list_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   700
    failed_params['list_action'] = (redirects.getPublicRedirect, list_params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   701
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   702
    failed_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   703
        request, failed_params, fields, idx=1, need_content=True)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   704
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   705
    failed_list = list_info.setStudentProjectSurveyInfo(failed_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   706
                                                        org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   707
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   708
    # list all completed projects
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
   709
    fields['status'] = 'completed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   710
    completed_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   711
    completed_params['list_description'] = ('List of %(name_plural)s that have '
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   712
        'successfully completed the program, '
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   713
        'these cannot be managed.' % list_params)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   714
    completed_params['list_action'] = (redirects.getPublicRedirect, list_params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   715
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   716
    completed_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   717
        request, completed_params, fields, idx=2, need_content=True)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   718
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   719
    completed_list = list_info.setStudentProjectSurveyInfo(completed_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   720
                                                           org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   721
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   722
    # always show the list with active projects
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   723
    content = [active_list]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   724
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   725
    if failed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   726
      # do not show empty failed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   727
      content.append(failed_list)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   728
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   729
    if completed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   730
      # do not show empty completed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   731
      content.append(completed_list)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   732
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   733
    # call the _list method from base to display the list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   734
    return self._list(request, list_params, content,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   735
                      context['page_name'], context)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   736
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   737
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   738
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   739
  def stEdit(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   740
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   741
    """View that allows students to edit information about their project.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   742
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   743
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   744
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   745
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   746
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   747
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   748
    except out_of_band.Error, error:
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   749
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   750
          error, request, template=params['error_public'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   751
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   752
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   753
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   754
    responses.useJavaScript(context, params['js_uses_all'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   755
    context['page_name'] = page_name
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   756
    # cancel should go to the public view
2330
068540d91bde Now clicking cancel button returns user to previous page. Fixes issue 569.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2281
diff changeset
   757
    params['cancel_redirect'] = redirects.getPublicRedirect(entity, params)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   758
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   759
    if request.POST:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   760
      return self.stEditPost(request, context, params, entity, **kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   761
    else: #request.GET
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   762
      return self.stEditGet(request, context, params, entity, **kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   763
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   764
  def stEditGet(self, request, context, params, entity, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   765
    """Handles the GET request for the student's edit page.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   766
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   767
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   768
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   769
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   770
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   771
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   772
    # populate form with the existing entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   773
    form = params['student_edit_form'](instance=entity)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   774
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   775
    return self._constructResponse(request, entity, context, form, params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   776
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   777
  def stEditPost(self, request, context, params, entity, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   778
    """Handles the POST request for the student's edit page.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   779
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   780
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   781
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   782
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   783
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   784
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   785
    form = params['student_edit_form'](request.POST)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   786
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   787
    if not form.is_valid():
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   788
      return self._constructResponse(request, entity, context, form, params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   789
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   790
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   791
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   792
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   793
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   794
    return self.stEditGet(request, context, params, entity, **kwargs)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   795
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   796
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   797
view = View()
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   798
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   799
accept_project = decorators.view(view.acceptProject)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   800
admin = decorators.view(view.admin)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   801
create = decorators.view(view.create)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   802
delete = decorators.view(view.delete)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   803
edit = decorators.view(view.edit)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   804
list = decorators.view(view.list)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   805
manage = decorators.view(view.manage)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   806
manage_overview = decorators.view(view.manageOverview)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   807
public = decorators.view(view.public)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   808
st_edit = decorators.view(view.stEdit)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   809
export = decorators.view(view.export)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   810
pick = decorators.view(view.pick)
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   811
withdraw = decorators.view(view.withdraw)
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   812
withdraw_project = decorators.view(view.withdrawProject)