app/soc/modules/ghop/views/helper/access.py
author Daniel Hans <Daniel.M.Hans@gmail.com>
Fri, 30 Oct 2009 23:59:47 +0100
changeset 3070 afd98e17a2b2
parent 3066 45e2c3e70761
child 3088 08b9f4de6675
permissions -rw-r--r--
Minor (mostly stylish and whitespace) fixes in GHOP access.py module. Also missing authors added to some files.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
#
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
#
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
#
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
#
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
"""Access control helper.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
See soc.views.helper.access module.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
"""
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
__authors__ = [
2922
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    23
    '"Madhusudan.C.S" <madhusudancs@gmail.com>',
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
    24
    '"Daniel Hans" <daniel.m.hans@gmail.com>',
2922
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    25
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
  ]
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
from django.utils.translation import ugettext
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
from soc.logic.helper import timeline as timeline_helper
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
    32
from soc.logic.models import host as host_logic
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
from soc.logic.models import user as user_logic
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
from soc.views import out_of_band
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
from soc.views.helper import access
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
from soc.modules.ghop.logic.models import mentor as ghop_mentor_logic
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
from soc.modules.ghop.logic.models import org_admin as ghop_org_admin_logic
2922
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    39
from soc.modules.ghop.logic.models import program as ghop_program_logic
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
from soc.modules.ghop.logic.models import task as ghop_task_logic
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
DEF_CANT_EDIT_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    44
    'This task cannot be edited since it has been claimed at least '
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    45
    'once before.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    46
2922
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    47
DEF_CANT_REGISTER = ugettext(
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    48
    'You have not completed your first task to register as a student. ')
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
    49
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    50
DEF_MAX_TASKS_REACHED_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    51
    'You have reached the maximum number of Tasks allowed '
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
    'for your organization for this program.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    54
DEF_NEED_ROLE_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    55
    'You do not have the required role.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    56
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    57
DEF_NO_ACTIVE_ENTITY_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    58
    'There is no such active entity.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    59
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    60
DEF_NO_PUB_TASK_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    61
    'There is no such published task.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    62
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    63
DEF_PAGE_INACTIVE_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    64
    'This page is inactive at this time.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    65
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    66
DEF_SIGN_UP_AS_OA_MENTOR_MSG = ugettext(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    67
    'You first need to sign up as an Org Admin or a Mentor.')
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    68
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    69
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    70
class GHOPChecker(access.Checker):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    71
  """See soc.views.helper.access.Checker.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    72
  """
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    73
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    74
  @access.allowDeveloper
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    75
  @access.denySidebar
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
    76
  def checkCanOrgAdminOrMentorEdit(self, django_args,
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    77
                                   key_location, check_limit):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    78
    """Checks if the mentors can create task for this program,
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    79
    and obeys the task quota limit assigned for their org when check_limit is
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    80
    True.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    81
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    82
    Args:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    83
      django_args: a dictionary with django's arguments
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    84
      key_location: the key for django_args in which the key_name
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    85
                    from the mentor is stored
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
    86
      check_limit: iff true checks if the organization reached the
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    87
                   task quota limit for the given program.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    88
    """
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    89
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    90
    self.checkIsUser(django_args)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    91
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    92
    user_account = user_logic.logic.getForCurrentAccount()
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    93
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    94
    filter = {
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    95
        'user': user_account,
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    96
        'scope_path': django_args[key_location],
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    97
        'status': 'active'
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    98
        }
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    99
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   100
    role_entity = ghop_org_admin_logic.logic.getForFields(filter, unique=True)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   101
    if not role_entity:
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   102
      role_entity = ghop_mentor_logic.logic.getForFields(filter, unique=True)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   103
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   104
    if not role_entity:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   105
      raise out_of_band.AccessViolation(
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   106
          message_fmt=DEF_SIGN_UP_AS_OA_MENTOR_MSG)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   107
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   108
    program_entity = role_entity.program
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   109
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   110
    if not timeline_helper.isActivePeriod(program_entity.timeline, 'program'):
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   111
      raise out_of_band.AccessViolation(message_fmt=DEF_PAGE_INACTIVE_MSG)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   112
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   113
    org_entity = role_entity.scope
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   114
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   115
    if check_limit:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   116
      # count all tasks from this organization
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   117
      fields = {'scope': org_entity}
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   118
      task_query = ghop_task_logic.logic.getQueryForFields(fields)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   119
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   120
      if task_query.count() >= org_entity.task_quota_limit:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   121
        # too many tasks access denied
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   122
        raise out_of_band.AccessViolation(
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   123
            message_fmt=DEF_MAX_TASKS_REACHED_MSG)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   124
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   125
    if 'link_id' in django_args:
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   126
      task_entity = ghop_task_logic.logic.getFromKeyFieldsOr404(django_args)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   127
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   128
      if task_entity.status not in ['Unapproved', 'Unpublished', 'Open']:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   129
        # task is claimed at least once
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   130
        raise out_of_band.AccessViolation(message_fmt=DEF_CANT_EDIT_MSG)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   131
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   132
    return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   133
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   134
  @access.allowDeveloper
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   135
  @access.denySidebar
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   136
  def checkRoleAndStatusForTask(self, django_args, allowed_roles,
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   137
                                role_status, task_status):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   138
    """Checks if the current user has access to the given task.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   139
2841
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   140
    This method checks if the current user is in one of the allowed_roles
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   141
    and has specified role_status, If yes, allows him to access the Task page.
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   142
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   143
    Args:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   144
      django_args: a dictionary with django's arguments
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   145
      allowed_roles: list with names for the roles allowed to pass access check
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   146
      role_status: list with states allowed for the role
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   147
      task_status: a list with states allowed for the task
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   148
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   149
     Raises:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   150
       AccessViolationResponse:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   151
         - If there is no task found
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   152
         - If the task is not in one of the required states.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   153
         - If the user does not have any of the required roles
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   154
    """
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   155
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   156
    self.checkIsUser(django_args)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   157
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   158
    if 'link_id' in django_args:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   159
      # bail out with 404 if no task is found
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   160
      task_entity = ghop_task_logic.logic.getFromKeyFieldsOr404(django_args)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   161
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   162
      if not task_entity.status in task_status:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   163
        # this task can not be accessed at the moment
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   164
        raise out_of_band.AccessViolation(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   165
            message_fmt=DEF_NO_ACTIVE_ENTITY_MSG)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   166
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   167
    user_entity = self.user
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   168
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   169
    filter = {
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   170
        'user': user_entity,
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   171
        'scope_path': django_args['scope_path'],
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   172
        'status': role_status
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   173
        }
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   174
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   175
    if 'host' in allowed_roles:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   176
      # check if the current user is a host for this proposal's program
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   177
      if host_logic.logic.getForFields(filter, unique=True):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   178
        return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   179
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   180
    if 'ghop/org_admin' in allowed_roles:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   181
      # check if the current user is an admin for this task's org
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   182
      if ghop_org_admin_logic.logic.getForFields(filter, unique=True):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   183
        return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   184
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   185
    if 'ghop/mentor' in allowed_roles:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   186
      # check if the current user is a mentor for this task's org
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   187
      if ghop_mentor_logic.logic.getForFields(filter, unique=True):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   188
        return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   189
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   190
    if 'public' in allowed_roles:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   191
      return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   192
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   193
    # no roles found, access denied
3070
afd98e17a2b2 Minor (mostly stylish and whitespace) fixes in GHOP access.py module.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents: 3066
diff changeset
   194
    raise out_of_band.AccessViolation(message_fmt=DEF_NEED_ROLE_MSG)
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   195
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   196
  def checkStatusForTask(self, django_args):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   197
    """Checks if the current user has access to the given task.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   198
2841
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   199
    This method checks if the current user is either an GHOP Org Admin or a
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   200
    Mentor and is active, if yes it allows them to view the task page at any
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   201
    task state. If the user is none of the above, it checks the status of the
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   202
    task, and if it is in one of the valid published states it allows access
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   203
    to view the task page.
2289f97d6216 Updated the docstrings for GHOP access methods.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2840
diff changeset
   204
2840
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   205
    Args:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   206
      django_args: a dictionary with django's arguments
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   207
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   208
     Raises:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   209
       AccessViolationResponse:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   210
         - If there is no task found
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   211
         - If the task is not in one of the required states.
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   212
    """
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   213
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   214
    try:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   215
      self.checkIsUser(django_args)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   216
      user_entity = self.user
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   217
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   218
      filter = {
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   219
          'user': user_entity,
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   220
          'status': 'active',
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   221
          'scope_path': django_args['scope_path'],
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   222
          }
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   223
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   224
      if ghop_org_admin_logic.logic.getForFields(filter, unique=True):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   225
        return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   226
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   227
      if ghop_mentor_logic.logic.getForFields(filter, unique=True):
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   228
        return
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   229
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   230
    except out_of_band.Error:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   231
      pass
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   232
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   233
    # bail out with 404 if no task is found
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   234
    task_entity = ghop_task_logic.logic.getFromKeyFieldsOr404(django_args)
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   235
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   236
    if task_entity.status  in ['Unapproved', 'Unpublished', 'Invalid']:
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   237
      # this proposal can not be task at the moment
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   238
      raise out_of_band.AccessViolation(
41f7938a35b0 Added access checks for GHOP Module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   239
          message_fmt=DEF_NO_PUB_TASK_MSG)
2922
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   240
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   241
  def checkCanApply(self, django_args):
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   242
    """Checks if the user has the completed at least one task to register as
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   243
    a student.
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   244
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   245
    Args:
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   246
      django_args: a dictionary with django's arguments
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   247
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   248
     Raises:
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   249
       AccessViolationResponse:
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   250
         - If student has not completed even a single task
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   251
    """
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   252
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   253
    self.checkIsUser(django_args)
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   254
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   255
    program_entity = ghop_program_logic.logic.getFromKeyNameOr404(
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   256
        django_args['scope_path'])
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   257
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   258
    filter = {
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   259
        'user': self.user,
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   260
        'program': program_entity,
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   261
        'status': 'AwaitingRegistration',
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   262
        }
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   263
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   264
    if ghop_task_logic.logic.getForFields(filter, unique=True):
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   265
      return
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   266
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   267
    # no completed tasks found, access denied
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   268
    raise out_of_band.AccessViolation(
6e373954bbf6 Added GHOPStudent view and access checks.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2841
diff changeset
   269
        message_fmt=DEF_CANT_REGISTER)