app/soc/views/models/student_project.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 24 Oct 2009 16:23:31 -0700
changeset 3043 187c1709756b
parent 2974 93ec6da82bc5
permissions -rw-r--r--
GSoC Views
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),
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
    77
        ('checkStudentProjectHasStatus', [['accepted', 'failed', 'completed',
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
    78
                                           'withdrawn']])]
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    79
    rights['manage_overview'] = [('checkHasActiveRoleForScope',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    80
                         org_admin_logic)]
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
    81
    # 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
    82
    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
    83
        ('checkStudentProjectHasStatus',
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
    84
            [['accepted', 'completed']])
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    85
        ]
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
    86
    rights['withdraw'] = ['checkIsHostForProgram']
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    87
    rights['withdraw_project'] = ['checkIsHostForStudentProject',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    88
        ('checkStudentProjectHasStatus',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    89
            [['accepted', 'completed']])
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    90
        ]
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    91
    rights['accept_project'] = ['checkIsHostForStudentProject',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    92
        ('checkStudentProjectHasStatus',
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    93
            [['withdrawn']])
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
    94
        ]
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    95
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    96
    new_params = {}
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    97
    new_params['logic'] = soc.logic.models.student_project.logic
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    98
    new_params['rights'] = rights
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    99
    new_params['name'] = "Student Project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   100
    new_params['url_name'] = "student_project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   101
    new_params['sidebar_grouping'] = 'Students'
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   102
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   103
    new_params['scope_view'] = org_view
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   104
    new_params['scope_redirect'] = redirects.getCreateRedirect
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   105
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   106
    new_params['no_create_with_key_fields'] = True
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   107
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   108
    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
   109
                                       'mentor', 'additional_mentors',
2637
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
   110
                                       'student', 'passed_evaluations',
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
   111
                                       'failed_evaluations']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   112
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   113
    new_params['create_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   114
        'scope_path': forms.CharField(widget=forms.HiddenInput,
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   115
            required=True),
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   116
        '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
   117
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
        'student_id': forms.CharField(label='Student Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   119
            required=True),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   120
        'mentor_id': forms.CharField(label='Mentor Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   121
            required=True),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   122
        '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
   123
        '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
   124
        'clean_student': cleaning.clean_link_id('student'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   125
        'clean_mentor': cleaning.clean_link_id('mentor'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   126
        '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
   127
        '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
   128
        'clean': cleaning.validate_student_project('scope_path',
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   129
            'mentor_id', 'student_id')
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
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   132
    new_params['edit_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   133
        'link_id': forms.CharField(widget=forms.HiddenInput),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   134
        }
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   135
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   136
    patterns = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   137
        (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
   138
        '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
   139
        '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
   140
        (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
   141
        '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
   142
        'Manage %(name)s'),
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   143
        (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
   144
        '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
   145
        'Edit my %(name)s'),
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   146
        (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
   147
        'soc.views.models.%(module_name)s.withdraw',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   148
        'Withdraw %(name_plural)s'),
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   149
        (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
   150
        'soc.views.models.%(module_name)s.withdraw_project',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   151
        'Withdraw a %(name)s'),
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   152
        (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
   153
        'soc.views.models.%(module_name)s.accept_project',
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   154
        'Accept a %(name)s'),
2115
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
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   157
    new_params['extra_django_patterns'] = patterns
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   158
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   159
    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
   160
    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
   161
    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
   162
        '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
   163
    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
   164
        '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
   165
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   166
    params = dicts.merge(params, new_params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   167
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   168
    super(View, self).__init__(params=params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   169
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   170
    # 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
   171
    dynaproperties = {
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   172
        '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
   173
            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
   174
        '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
   175
        '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
   176
        '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
   177
        '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
   178
        }
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   179
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   180
    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
   181
        dynabase = self._params['dynabase'],
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   182
        dynamodel = self._params['logic'].getModel(),
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   183
        dynaexclude = self._params['create_dynaexclude'],
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   184
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   185
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   186
2177
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   187
    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
   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,
2970
605e3c3a55e9 Fix indentions in student_project view module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2856
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
2715
afd5368af75c Added some helpful text to the Student Project Withdraw view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2711
diff changeset
   266
    ap_params['list_action'] = (redirects.getWithdrawProjectRedirect,
afd5368af75c Added some helpful text to the Student Project Withdraw view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2711
diff changeset
   267
                                ap_params)
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   268
    ap_params['list_description'] = ugettext(
2717
fdde098394a7 Fixed typo in access module comment and StudentProject list description.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2715
diff changeset
   269
        "An overview of accepted and completed Projects. "
2715
afd5368af75c Added some helpful text to the Student Project Withdraw view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2711
diff changeset
   270
        "Click on a project to withdraw it.")
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   271
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   272
    ap_list = lists.getListContent(
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   273
        request, ap_params, fields, idx=0)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   274
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   275
    fields['status'] = ['withdrawn']
2705
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 = params.copy() # withdrawn projects
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   278
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   279
    wp_params['list_action'] = (redirects.getAcceptProjectRedirect, wp_params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   280
    wp_params['list_description'] = ugettext(
2717
fdde098394a7 Fixed typo in access module comment and StudentProject list description.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2715
diff changeset
   281
        "An overview of withdrawn Projects. "
2715
afd5368af75c Added some helpful text to the Student Project Withdraw view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2711
diff changeset
   282
        "Click on a project to undo the withdrawal.")
2705
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
    wp_list = lists.getListContent(
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   285
        request, wp_params, fields, idx=1)
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
    # fill contents with all the needed lists
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   288
    contents = [ap_list, wp_list]
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
    # 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
   291
    return self._list(request, params, contents, page_name)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   292
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   293
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   294
  @decorators.check_access
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   295
  def withdrawProject(self, request, access_type,
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   296
                      page_name=None, params=None, **kwargs):
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   297
    """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
   298
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   299
    For params see base.View().public()
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   300
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   301
    """
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
    logic = params['logic']
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   304
    entity = logic.getFromKeyFieldsOr404(kwargs)
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
    fields = {
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   307
        'status': 'withdrawn',
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
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   310
    logic.updateEntityProperties(entity, fields)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   311
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   312
    url = redirects.getWithdrawRedirect(entity.program, params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   313
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   314
    return http.HttpResponseRedirect(url)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   315
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   316
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   317
  @decorators.check_access
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   318
  def acceptProject(self, request, access_type,
2970
605e3c3a55e9 Fix indentions in student_project view module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2856
diff changeset
   319
                    page_name=None, params=None, **kwargs):
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   320
    """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
   321
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   322
    For params see base.View().public()
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   323
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   324
    """
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
    logic = params['logic']
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   327
    entity = logic.getFromKeyFieldsOr404(kwargs)
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
    fields = {
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   330
        'status': 'accepted',
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
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   333
    logic.updateEntityProperties(entity, fields)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   334
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   335
    url = redirects.getWithdrawRedirect(entity.program, params)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   336
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   337
    return http.HttpResponseRedirect(url)
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   338
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   339
  @decorators.merge_params
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   340
  @decorators.check_access
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   341
  def manage(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   342
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   343
    """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
   344
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   345
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   346
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   347
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   348
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   349
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   350
    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
   351
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   352
          error, request, template=params['error_public'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   353
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   354
    template = params['manage_template']
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   355
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   356
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   357
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   358
    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
   359
    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
   360
                                                entity.student.name())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   361
    context['entity'] = entity
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   362
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   363
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   364
    if entity.status == 'accepted':
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   365
      # only accepted project can have their mentors managed
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   366
      self._enableMentorManagement(entity, params, context)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   367
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   368
    context['evaluation_list'] = self._getEvaluationLists(request, params,
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   369
                                                          entity)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   370
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   371
    if request.POST:
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   372
      return self.managePost(request, template, context, params, entity,
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   373
                             **kwargs)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   374
    else: #request.GET
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   375
      return self.manageGet(request, template, context, params, entity,
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   376
                            **kwargs)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   377
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   378
  def _enableMentorManagement(self, entity, params, context):
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   379
    """Sets the data required to manage mentors for a StudentProject.
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   380
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   381
    Args:
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   382
      entity: StudentProject entity to manage
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   383
      params: params dict for the manage view
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   384
      context: context for the manage view
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   385
    """
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   386
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   387
    # get all mentors for this organization
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   388
    fields = {'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   389
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   390
    mentors = mentor_logic.logic.getForFields(fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   391
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   392
    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
   393
                  for mentor in mentors]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   394
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   395
    # 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
   396
    dynafields = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   397
        {'name': 'mentor_id',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   398
         'base': forms.ChoiceField,
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   399
         'label': 'Primary Mentor',
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   400
         'required': True,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   401
         'passthrough': ['required', 'choices', 'label'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   402
         'choices': choices,
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
    dynaproperties = params_helper.getDynaFields(dynafields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   406
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   407
    mentor_edit_form = dynaform.newDynaForm(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   408
        dynabase = params['dynabase'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   409
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   410
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   411
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   412
    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
   413
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   414
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   415
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   416
    # 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
   417
    # 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
   418
    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
    for mentor_key in additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   421
      mentor_entity = mentor_logic.logic.getFromKeyName(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   422
          mentor_key.id_or_name())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   423
      additional_mentors_context.append(mentor_entity)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   424
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   425
    context['additional_mentors'] = additional_mentors_context
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   426
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   427
    # 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
   428
    # 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
   429
    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
   430
        (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
   431
        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
   432
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   433
    # 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
   434
    additional_mentor_choices = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   435
        (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
   436
        for mentor in possible_additional_mentors]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   437
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   438
    dynafields = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   439
        {'name': 'mentor_id',
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   440
         '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
   441
         'label': 'Co-Mentor',
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   442
         'required': True,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   443
         'passthrough': ['required', 'choices', 'label'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   444
         'choices': additional_mentor_choices,
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
    dynaproperties = params_helper.getDynaFields(dynafields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   448
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   449
    additional_mentor_form = dynaform.newDynaForm(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   450
        dynabase = params['dynabase'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   451
        dynaproperties = dynaproperties,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   452
    )
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   453
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   454
    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
   455
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   456
  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
   457
    """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
   458
    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
   459
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   460
    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
   461
    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
   462
    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
   463
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   464
    Args:
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   465
      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
   466
      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
   467
      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
   468
              retrieved
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   469
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   470
    Returns:
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   471
      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
   472
    """
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   473
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   474
    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
   475
    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
   476
        grading_survey_view
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.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
   478
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   479
    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
   480
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   481
    # 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
   482
    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
   483
    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
   484
    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
   485
    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
   486
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   487
    # 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
   488
    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
   489
    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
   490
        '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
   491
    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
   492
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   493
    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
   494
        request, gps_params, fields, idx=0)
2730
d1cfed8da027 Redone the list_info function for the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2717
diff changeset
   495
    list_info.setProjectSurveyInfoForProject(gps_list, entity, gps_params)
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   496
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   497
    # 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
   498
    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
   499
    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
   500
    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
   501
    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
   502
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_description'] = \
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   504
        '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
   505
    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
   506
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   507
    # 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
   508
    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
   509
    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
   510
        request, ps_params, fields, idx=1)
2730
d1cfed8da027 Redone the list_info function for the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2717
diff changeset
   511
    list_info.setProjectSurveyInfoForProject(ps_list, entity, ps_params)
2688
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   512
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   513
    # 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
   514
    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
   515
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   516
    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
   517
      # 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
   518
      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
   519
                      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
   520
dfe0439a0711 Added list of Surveys to the Project's manage page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2685
diff changeset
   521
    # 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
   522
    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
   523
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   524
  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
   525
    """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
   526
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   527
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   528
        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
   529
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   530
        rest: see base.View.public()
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
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   533
    get_dict = request.GET
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   534
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   535
    if 'remove' in get_dict and entity.status == 'accepted':
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   536
      # get the mentor to remove
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   537
      fields = {'link_id': get_dict['remove'],
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   538
                'scope': entity.scope}
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   539
      mentor = mentor_logic.logic.getForFields(fields, unique=True)
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   540
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   541
      additional_mentors = entity.additional_mentors
2974
93ec6da82bc5 Fix whitespace in pylint disable-msg comment in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2970
diff changeset
   542
      # pylint: disable-msg=E1103
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   543
      if additional_mentors and mentor.key() in additional_mentors:
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   544
        # remove the mentor from the additional mentors list
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   545
        additional_mentors.remove(mentor.key())
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   546
        fields = {'additional_mentors': additional_mentors}
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   547
        project_logic.updateEntityProperties(entity, fields)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   548
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   549
      # redirect to the same page without GET arguments
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   550
      redirect = request.path
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   551
      return http.HttpResponseRedirect(redirect)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   552
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   553
    if entity.status == 'accepted':
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   554
      # populate forms with the current mentors set
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   555
      initial = {'mentor_id': entity.mentor.link_id}
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   556
      context['mentor_edit_form'] = params['mentor_edit_form'](initial=initial)
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   557
      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
   558
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   559
    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
   560
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   561
  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
   562
    """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
   563
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   564
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   565
        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
   566
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   567
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   568
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   569
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   570
    post_dict = request.POST
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   571
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   572
    if 'set_mentor' in post_dict and entity.status == 'accepted':
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   573
      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
   574
      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
   575
                                   form)
2743
b9a146acb9bb Enable the project management page to be visited for project in other statusses.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2730
diff changeset
   576
    elif 'add_additional_mentor' in post_dict and entity.status == 'accepted':
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   577
      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
   578
      return self._manageAddAdditionalMentor(request, template, context,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   579
                                             params, entity, form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   580
    else:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   581
      # unexpected error return the normal page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   582
      logging.warning('Unexpected POST data found')
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   583
      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
   584
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   585
  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
   586
    """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
   587
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   588
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   589
        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
   590
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   591
        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
   592
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   593
    """
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   594
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   595
    if not form.is_valid():
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   596
      context['mentor_edit_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   597
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   598
      # 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
   599
      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
   600
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   601
      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
   602
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
   603
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   604
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   605
    # get the mentor from the form
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   606
    fields = {'link_id': fields['mentor_id'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   607
              'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   608
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   609
    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
   610
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   611
    # 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
   612
    fields = {'mentor': mentor}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   613
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   614
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   615
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
   616
    # pylint: disable-msg=E1103
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   617
    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
   618
      # 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
   619
      additional_mentors.remove(mentor.key())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   620
      fields['additional_mentors'] = additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   621
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   622
    # 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
   623
    # new set of additional mentors
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   624
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   625
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   626
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   627
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   628
    return http.HttpResponseRedirect(redirect)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   629
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   630
  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
   631
                                 context, params, entity, form):
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   632
    """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
   633
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   634
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   635
        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
   636
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   637
        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
   638
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   639
    """
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   640
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   641
    if not form.is_valid():
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   642
      context['additional_mentor_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   643
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   644
      # add a fresh edit mentor form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   645
      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
   646
      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
   647
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   648
      return responses.respond(request, template, context)
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 = forms_helper.collectCleanedFields(form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   651
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   652
    # get the mentor from the form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   653
    fields = {'link_id': fields['mentor_id'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   654
              'scope': entity.scope,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   655
              'status': 'active'}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   656
    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
   657
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   658
    # 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
   659
    if not entity.additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   660
      additional_mentors = [mentor.key()]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   661
    else:
2640
da8aa1ff6943 Fixed an error occuring when assigning more then one secondary mentors.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2637
diff changeset
   662
      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
   663
      additional_mentors.append(mentor.key())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   664
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   665
    fields = {'additional_mentors': additional_mentors}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   666
    project_logic.updateEntityProperties(entity, fields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   667
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   668
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   669
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   670
    return http.HttpResponseRedirect(redirect)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   671
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   672
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   673
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   674
  def manageOverview(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   675
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   676
    """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
   677
       their Organization's Student Projects.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   678
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   679
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   680
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   681
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
   682
    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
   683
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   684
    # make sure the organization exists
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   685
    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
   686
    fields = {'scope': org_entity}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   687
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   688
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   689
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   690
    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
   691
    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
   692
2856
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   693
    prefetch = ['student', 'mentor']
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   694
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   695
    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
   696
    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
   697
    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
   698
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   699
    #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
   700
    fields['status'] = 'accepted'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   701
    active_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   702
    active_params['list_description'] = \
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   703
        '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
   704
    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
   705
2856
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   706
    active_list = lists.getListContent(request, active_params, fields, idx=0,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   707
                                       prefetch=prefetch)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   708
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   709
    active_list = list_info.setStudentProjectSurveyInfo(active_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   710
                                                        org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   711
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   712
    # 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
   713
    fields['status'] = 'failed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   714
    failed_params = list_params.copy()
2746
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   715
    failed_params['list_description'] = ('List of all %(name_plural)s who ' 
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   716
                                         'failed the program.') % list_params
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   717
    failed_params['list_action'] = (redirects.getManageRedirect, list_params)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   718
2856
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   719
    failed_list = lists.getListContent(request, failed_params, fields, idx=1,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   720
                                       need_content=True, prefetch=prefetch)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   721
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   722
    failed_list = list_info.setStudentProjectSurveyInfo(failed_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   723
                                                        org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   724
2693
7bda04a2b6c3 Style fixes in StudentProject View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2691
diff changeset
   725
    # 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
   726
    fields['status'] = 'completed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   727
    completed_params = list_params.copy()
2746
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   728
    completed_params['list_description'] = (
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   729
        'List of %(name_plural)s that have successfully completed the '
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   730
        'program.' % list_params)
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   731
    completed_params['list_action'] = (redirects.getManageRedirect, list_params)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   732
2856
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   733
    completed_list = lists.getListContent(request, completed_params, fields,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   734
                                          idx=2, need_content=True,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   735
                                          prefetch=prefetch)
2691
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   736
    # set the needed info
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   737
    completed_list = list_info.setStudentProjectSurveyInfo(completed_list,
f8e0a007d99b Pre-storing the information for setStudentProjectSurveyInfo.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2689
diff changeset
   738
                                                           org_entity.scope)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   739
2746
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   740
    # list all withdrawn projects
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   741
    fields['status'] = 'withdrawn'
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   742
    withdrawn_params = list_params.copy()
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   743
    withdrawn_params['list_description'] = (
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   744
        'List of %(name_plural)s that have withdrawn from the program.' %(
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   745
            list_params))
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   746
    withdrawn_params['list_action'] = (redirects.getManageRedirect, list_params)
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   747
2856
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   748
    withdrawn_list = lists.getListContent(request, withdrawn_params, fields,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   749
                                          idx=3, need_content=True,
f446e019825c Prefetch referenced fields in project listing
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2746
diff changeset
   750
                                          prefetch=prefetch)
2746
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   751
    # set the needed info
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   752
    withdrawn_list = list_info.setStudentProjectSurveyInfo(withdrawn_list,
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   753
                                                           org_entity.scope)
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   754
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   755
    # 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
   756
    content = [active_list]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   757
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   758
    if failed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   759
      # do not show empty failed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   760
      content.append(failed_list)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   761
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   762
    if completed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   763
      # do not show empty completed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   764
      content.append(completed_list)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   765
2746
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   766
    if withdrawn_list != None:
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   767
      # do not show empty withdrawn list
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   768
      content.append(withdrawn_list)
ca3b1a86bce8 Redirect to the manage page for failed, completed and withdrawn projects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2743
diff changeset
   769
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   770
    # 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
   771
    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
   772
                      context['page_name'], context)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   773
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   774
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   775
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   776
  def stEdit(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   777
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   778
    """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
   779
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   780
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   781
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   782
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   783
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   784
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   785
    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
   786
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   787
          error, request, template=params['error_public'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   788
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   789
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   790
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   791
    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
   792
    context['page_name'] = page_name
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   793
    # 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
   794
    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
   795
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   796
    if request.POST:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   797
      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
   798
    else: #request.GET
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   799
      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
   800
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   801
  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
   802
    """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
   803
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   804
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   805
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   806
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   807
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   808
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   809
    # populate form with the existing entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   810
    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
   811
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   812
    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
   813
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   814
  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
   815
    """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
   816
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   817
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   818
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   819
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   820
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   821
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   822
    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
   823
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   824
    if not form.is_valid():
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   825
      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
   826
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
   827
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   828
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   829
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   830
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   831
    return self.stEditGet(request, context, params, entity, **kwargs)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   832
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   833
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   834
view = View()
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   835
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   836
accept_project = decorators.view(view.acceptProject)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   837
admin = decorators.view(view.admin)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   838
create = decorators.view(view.create)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   839
delete = decorators.view(view.delete)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   840
edit = decorators.view(view.edit)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   841
list = decorators.view(view.list)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   842
manage = decorators.view(view.manage)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   843
manage_overview = decorators.view(view.manageOverview)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   844
public = decorators.view(view.public)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   845
st_edit = decorators.view(view.stEdit)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   846
export = decorators.view(view.export)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   847
pick = decorators.view(view.pick)
2705
0b38d59d958f Allow hosts to withdraw student projects
Sverre Rabbelier <sverre@rabbelier.nl>
parents: 2693
diff changeset
   848
withdraw = decorators.view(view.withdraw)
2711
4df8c11c36cb addressed comments by Lennard
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2707
diff changeset
   849
withdraw_project = decorators.view(view.withdrawProject)