app/soc/views/models/student_project.py
author Lennard de Rijk <ljvderijk@gmail.com>
Tue, 28 Jul 2009 11:23:11 +0200
changeset 2685 506cda0463e8
parent 2640 da8aa1ff6943
child 2688 dfe0439a0711
permissions -rw-r--r--
Added columns to the manage project page that show the amount of evaluations. The total possible amount of evaluations that is shown is based on surveys which have at least one Record.
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
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
from soc.logic import cleaning
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
from soc.logic import dicts
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    33
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
    34
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
    35
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
    36
from soc.logic.models import student as student_logic
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    37
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
    38
from soc.views import out_of_band
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
from soc.views.helper import access
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
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
    41
from soc.views.helper import dynaform
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    42
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
    43
from soc.views.helper import lists
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    44
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
    45
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
    46
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
    47
from soc.views.helper import widgets
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    48
from soc.views.models import base
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    49
from soc.views.models import organization as org_view
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
import soc.logic.models.student_project
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
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
class View(base.View):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
  """View methods for the Student Project model.
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
  """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
  def __init__(self, params=None):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    59
    """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
    60
    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
    61
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    62
    Params:
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    63
      params: a dict with params for this View
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    64
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
    rights = access.Checker(params)
2241
5e5b7f5d9a89 Allow anyone to see student projects
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2183
diff changeset
    67
    rights['any_access'] = ['allow']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    68
    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
    69
    rights['edit'] = ['checkIsDeveloper']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
    rights['delete'] = ['checkIsDeveloper']
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    71
    rights['show'] = ['allow']
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
    rights['list'] = ['checkIsDeveloper']
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    73
    rights['manage'] = [('checkHasActiveRoleForScope',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    74
                         org_admin_logic),
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
    75
        ('checkStudentProjectHasStatus', [['accepted']])]
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    76
    rights['manage_overview'] = [('checkHasActiveRoleForScope',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    77
                         org_admin_logic)]
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
    78
    # 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
    79
    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
    80
        ('checkStudentProjectHasStatus',
2573
f09f317769c4 Changed the StudentProject model to handle a dynamic amount of GradeRecords.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2360
diff changeset
    81
            [['accepted', 'completed']])
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
    82
        ]
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    83
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    84
    new_params = {}
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    85
    new_params['logic'] = soc.logic.models.student_project.logic
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    86
    new_params['rights'] = rights
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    87
    new_params['name'] = "Student Project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    88
    new_params['url_name'] = "student_project"
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    89
    new_params['sidebar_grouping'] = 'Students'
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    90
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    91
    new_params['scope_view'] = org_view
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    92
    new_params['scope_redirect'] = redirects.getCreateRedirect
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    93
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    94
    new_params['no_create_with_key_fields'] = True
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['extra_dynaexclude'] = ['program', 'status', 'link_id',
2183
4e036dcc79ba Added additional_mentors property to StudentProject.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2177
diff changeset
    97
                                       'mentor', 'additional_mentors',
2637
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
    98
                                       'student', 'passed_evaluations',
0ae090b18a5e Excluded the new StudentProject failed_evaluations property from Forms.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2573
diff changeset
    99
                                       'failed_evaluations']
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   100
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   101
    new_params['create_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   102
        'scope_path': forms.CharField(widget=forms.HiddenInput,
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   103
            required=True),
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   104
        '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
   105
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   106
        'student_id': forms.CharField(label='Student Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   107
            required=True),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   108
        'mentor_id': forms.CharField(label='Mentor Link ID',
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   109
            required=True),
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   110
        '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
   111
        '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
   112
        'clean_student': cleaning.clean_link_id('student'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   113
        'clean_mentor': cleaning.clean_link_id('mentor'),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   114
        '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
   115
        '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
   116
        'clean': cleaning.validate_student_project('scope_path',
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   117
            'mentor_id', 'student_id')
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
        }
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   119
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   120
    new_params['edit_extra_dynaproperties'] = {
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   121
        'link_id': forms.CharField(widget=forms.HiddenInput),
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   122
        }
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   123
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   124
    patterns = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   125
        (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
   126
        '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
   127
        '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
   128
        (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
   129
        '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
   130
        'Manage %(name)s'),
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   131
        (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
   132
        '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
   133
        'Edit my %(name)s'),
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   134
    ]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   135
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   136
    new_params['extra_django_patterns'] = patterns
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   137
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   138
    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
   139
    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
   140
    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
   141
        '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
   142
    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
   143
        '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
   144
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   145
    params = dicts.merge(params, new_params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   146
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   147
    super(View, self).__init__(params=params)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   148
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   149
    # 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
   150
    dynaproperties = {
2125
c24e8423cd1a Added public info as TinyMCE to the edit pages.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2122
diff changeset
   151
        '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
   152
            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
   153
        '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
   154
        '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
   155
        '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
   156
        '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
   157
        }
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
    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
   160
        dynabase = self._params['dynabase'],
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   161
        dynamodel = self._params['logic'].getModel(),
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   162
        dynaexclude = self._params['create_dynaexclude'],
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   163
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   164
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   165
2177
e2c193e1f631 Do not rely on dicts.merge to change target
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2154
diff changeset
   166
    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
   167
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   168
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   169
  def _editGet(self, request, entity, form):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   170
    """See base.View._editGet().
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   171
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   172
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   173
    form.fields['link_id'].initial = entity.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   174
    form.fields['student_id'].initial = entity.student.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   175
    form.fields['mentor_id'].initial = entity.mentor.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   176
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   177
    return super(View, self)._editGet(request, entity, form)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   178
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   179
  def _editPost(self, request, entity, fields):
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   180
    """See base.View._editPost().
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   181
    """
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   182
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   183
    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
   184
      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
   185
    else:
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   186
      fields['link_id'] = entity.link_id
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   187
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   188
    # fill in the scope via call to super
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   189
    super(View, self)._editPost(request, entity, fields)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   190
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   191
    # 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
   192
    if entity:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   193
      organization = entity.scope
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   194
    else:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   195
      organization = fields['scope']
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   196
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   197
    fields['program'] = organization.scope
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   198
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   199
    filter = {'scope': fields['program'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   200
              'link_id': fields['student_id']}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   201
    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
   202
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   203
    filter = {'scope': organization,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   204
              'link_id': fields['mentor_id'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   205
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   206
    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
   207
2280
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   208
  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
   209
    """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
   210
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   211
    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
   212
    """
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   213
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   214
    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
   215
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   216
    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
   217
      context['additional_mentors'] = []
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   218
    else:
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   219
      mentor_names = []
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   220
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   221
      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
   222
        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
   223
            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
   224
        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
   225
157f6b8de010 Show all Co-Mentors on the Student Project public page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2279
diff changeset
   226
      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
   227
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   228
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   229
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   230
  def manage(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   231
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   232
    """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
   233
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   234
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   235
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   236
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   237
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   238
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   239
    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
   240
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   241
          error, request, template=params['error_public'])
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   242
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   243
    get_dict = request.GET
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   244
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   245
    if 'remove' in get_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   246
      # get the mentor to remove
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   247
      fields = {'link_id': get_dict['remove'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   248
                'scope': entity.scope}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   249
      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
   250
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   251
      additional_mentors = entity.additional_mentors
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
   252
      # pylint: disable-msg=E1103
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   253
      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
   254
        # remove the mentor from the additional mentors list
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   255
        additional_mentors.remove(mentor.key())
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   256
        fields = {'additional_mentors': additional_mentors}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   257
        project_logic.updateEntityProperties(entity, fields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   258
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   259
      # redirect to the same page without GET arguments
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   260
      redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   261
      return http.HttpResponseRedirect(redirect)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   262
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   263
    template = params['manage_template']
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   264
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   265
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   266
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   267
    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
   268
    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
   269
                                                entity.student.name())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   270
    context['entity'] = entity
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   271
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   272
    # get all mentors for this organization
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   273
    fields = {'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   274
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   275
    mentors = mentor_logic.logic.getForFields(fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   276
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   277
    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
   278
                  for mentor in mentors]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   279
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   280
    # 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
   281
    dynafields = [
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   282
        {'name': 'mentor_id',
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   283
         'base': forms.ChoiceField,
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   284
         'label': 'Primary Mentor',
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   285
         'required': True,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   286
         'passthrough': ['required', 'choices', 'label'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   287
         'choices': choices,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   288
        },]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   289
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   290
    dynaproperties = params_helper.getDynaFields(dynafields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   291
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   292
    mentor_edit_form = dynaform.newDynaForm(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   293
        dynabase = params['dynabase'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   294
        dynaproperties = dynaproperties,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   295
    )
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   296
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   297
    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
   298
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   299
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   300
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   301
    # 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
   302
    # 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
   303
    additional_mentors_context = []
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   304
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   305
    for mentor_key in additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   306
      mentor_entity = mentor_logic.logic.getFromKeyName(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   307
          mentor_key.id_or_name())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   308
      additional_mentors_context.append(mentor_entity)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   309
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   310
    context['additional_mentors'] = additional_mentors_context
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   311
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   312
    # 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
   313
    # 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
   314
    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
   315
        (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
   316
        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
   317
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   318
    # 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
   319
    additional_mentor_choices = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   320
        (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
   321
        for mentor in possible_additional_mentors]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   322
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   323
    dynafields = [
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   324
        {'name': 'mentor_id',
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   325
         '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
   326
         'label': 'Co-Mentor',
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   327
         'required': True,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   328
         'passthrough': ['required', 'choices', 'label'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   329
         'choices': additional_mentor_choices,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   330
        },]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   331
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   332
    dynaproperties = params_helper.getDynaFields(dynafields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   333
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   334
    additional_mentor_form = dynaform.newDynaForm(
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   335
        dynabase = params['dynabase'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   336
        dynaproperties = dynaproperties,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   337
    )
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   338
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   339
    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
   340
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   341
    if request.POST:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   342
      return self.managePost(request, template, context, params, entity,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   343
                             **kwargs)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   344
    else: #request.GET
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   345
      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
   346
                            **kwargs)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   347
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   348
  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
   349
    """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
   350
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   351
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   352
        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
   353
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   354
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   355
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   356
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   357
    # populate form with the current mentor
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   358
    initial = {'mentor_id': entity.mentor.link_id}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   359
    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
   360
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   361
    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
   362
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   363
    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
   364
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   365
  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
   366
    """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
   367
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   368
    Args:
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   369
        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
   370
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   371
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   372
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   373
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   374
    post_dict = request.POST
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   375
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   376
    if 'set_mentor' in post_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   377
      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
   378
      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
   379
                                   form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   380
    elif 'add_additional_mentor' in post_dict:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   381
      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
   382
      return self._manageAddAdditionalMentor(request, template, context,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   383
                                             params, entity, form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   384
    else:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   385
      # unexpected error return the normal page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   386
      logging.warning('Unexpected POST data found')
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   387
      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
   388
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   389
  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
   390
    """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
   391
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   392
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   393
        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
   394
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   395
        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
   396
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   397
    """
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   398
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   399
    if not form.is_valid():
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   400
      context['mentor_edit_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   401
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   402
      # 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
   403
      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
   404
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   405
      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
   406
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
   407
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   408
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   409
    # get the mentor from the form
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   410
    fields = {'link_id': fields['mentor_id'],
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   411
              'scope': entity.scope,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   412
              'status': 'active'}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   413
    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
   414
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   415
    # 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
   416
    fields = {'mentor': mentor}
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   417
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   418
    additional_mentors = entity.additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   419
2360
e389d26949db Style and pylint fixes in Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2330
diff changeset
   420
    # pylint: disable-msg=E1103
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   421
    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
   422
      # 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
   423
      additional_mentors.remove(mentor.key())
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   424
      fields['additional_mentors'] = additional_mentors
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   425
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   426
    # 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
   427
    # new set of additional mentors
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   428
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   429
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   430
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   431
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   432
    return http.HttpResponseRedirect(redirect)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   433
2281
a702d92a57a6 Style fixes in app.soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2280
diff changeset
   434
  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
   435
                                 context, params, entity, form):
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   436
    """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
   437
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   438
    Args:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   439
        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
   440
        entity: the student project entity
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   441
        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
   442
        rest: see base.View.public()
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   443
    """
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   444
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   445
    if not form.is_valid():
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   446
      context['additional_mentor_form'] = form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   447
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   448
      # add a fresh edit mentor form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   449
      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
   450
      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
   451
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   452
      return responses.respond(request, template, context)
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
    _, fields = forms_helper.collectCleanedFields(form)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   455
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   456
    # get the mentor from the form
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   457
    fields = {'link_id': fields['mentor_id'],
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   458
              'scope': entity.scope,
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   459
              'status': 'active'}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   460
    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
   461
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   462
    # 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
   463
    if not entity.additional_mentors:
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   464
      additional_mentors = [mentor.key()]
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   465
    else:
2640
da8aa1ff6943 Fixed an error occuring when assigning more then one secondary mentors.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2637
diff changeset
   466
      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
   467
      additional_mentors.append(mentor.key())
2278
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   468
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   469
    fields = {'additional_mentors': additional_mentors}
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   470
    project_logic.updateEntityProperties(entity, fields)
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   471
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   472
    # redirect to the same page
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   473
    redirect = request.path
c4d40ab98f71 Added functionality to set additional mentors for a Student Project.
Lennard de Rijk
parents: 2241
diff changeset
   474
    return http.HttpResponseRedirect(redirect)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   475
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   476
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   477
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   478
  def manageOverview(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   479
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   480
    """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
   481
       their Organization's Student Projects.
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   482
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   483
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   484
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   485
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
   486
    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
   487
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   488
    # make sure the organization exists
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   489
    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
   490
    fields = {'scope': org_entity}
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   491
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   492
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   493
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   494
    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
   495
    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
   496
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   497
    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
   498
    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
   499
    list_params['list_row'] = 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
   500
    list_params['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
   501
        list_info.getStudentProjectSurveyInfo(org_entity.scope), None)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   502
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   503
    #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
   504
    fields['status'] = 'accepted'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   505
    active_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   506
    active_params['list_description'] = \
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   507
        '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
   508
    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
   509
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   510
    active_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   511
        request, active_params, fields, idx=0)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   512
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   513
    # 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
   514
    fields['status'] = 'failed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   515
    failed_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   516
    failed_params['list_description'] = ('List of all failed %(name_plural)s, '
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   517
        'these cannot be managed.') % list_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   518
    failed_params['list_action'] = (redirects.getPublicRedirect, list_params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   519
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   520
    failed_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   521
        request, failed_params, fields, idx=1, need_content=True)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   522
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   523
    #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
   524
    fields['status'] = 'completed'
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   525
    completed_params = list_params.copy()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   526
    completed_params['list_description'] = ('List of %(name_plural)s that have '
2117
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   527
        'successfully completed the program, '
f1a1a75cdb00 Add missing imports, remove unsused imports, fix too long lines and some other style fixes in soc.views.models.student_project module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2115
diff changeset
   528
        'these cannot be managed.' % list_params)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   529
    completed_params['list_action'] = (redirects.getPublicRedirect, list_params)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   530
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   531
    completed_list = lists.getListContent(
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   532
        request, completed_params, fields, idx=2, need_content=True)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   533
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   534
    # 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
   535
    content = [active_list]
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   536
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   537
    if failed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   538
      # do not show empty failed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   539
      content.append(failed_list)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   540
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   541
    if completed_list != None:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   542
      # do not show empty completed list
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   543
      content.append(completed_list)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   544
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   545
    # 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
   546
    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
   547
                      context['page_name'], context)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   548
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   549
  @decorators.merge_params
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   550
  @decorators.check_access
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   551
  def stEdit(self, request, access_type,
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   552
             page_name=None, params=None, **kwargs):
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   553
    """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
   554
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   555
    For params see base.View().public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   556
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   557
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   558
    try:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   559
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   560
    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
   561
      return responses.errorResponse(
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   562
          error, request, template=params['error_public'])
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
    # get the context for this webpage
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   565
    context = responses.getUniversalContext(request)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   566
    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
   567
    context['page_name'] = page_name
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   568
    # 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
   569
    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
   570
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   571
    if request.POST:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   572
      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
   573
    else: #request.GET
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   574
      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
   575
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   576
  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
   577
    """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
   578
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   579
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   580
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   581
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   582
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   583
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   584
    # populate form with the existing entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   585
    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
   586
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   587
    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
   588
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   589
  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
   590
    """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
   591
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   592
    Args:
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   593
        entity: the student project entity
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   594
        rest: see base.View.public()
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   595
    """
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   596
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   597
    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
   598
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   599
    if not form.is_valid():
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   600
      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
   601
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
   602
    _, fields = forms_helper.collectCleanedFields(form)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   603
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   604
    project_logic.updateEntityProperties(entity, fields)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   605
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   606
    return self.stEditGet(request, context, params, entity, **kwargs)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   607
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   608
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   609
view = View()
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   610
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   611
admin = decorators.view(view.admin)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   612
create = decorators.view(view.create)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   613
delete = decorators.view(view.delete)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   614
edit = decorators.view(view.edit)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   615
list = decorators.view(view.list)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   616
manage = decorators.view(view.manage)
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   617
manage_overview = decorators.view(view.manageOverview)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   618
public = decorators.view(view.public)
2115
fafd021def7e Major update to the views concerning StudentProjects.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2076
diff changeset
   619
st_edit = decorators.view(view.stEdit)
1936
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   620
export = decorators.view(view.export)
ea886e0aedc4 Added basic student project view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   621
pick = decorators.view(view.pick)