app/soc/models/program.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sun, 01 Feb 2009 17:14:42 +0000
changeset 1157 76e2ed09661c
parent 1107 a878188e225c
child 1260 594c6b500378
permissions -rw-r--r--
Added status property to the user model. This is to accommodate the ability to exclude users from using the website. Note that since the access modules is currently undergoing some reconstruction changing the status will not actually effect the User yet. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
771
0b1beae179f5 Typo and style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 769
diff changeset
    17
"""This module contains the Program Model.
0b1beae179f5 Typo and style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 769
diff changeset
    18
"""
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    21
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
]
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
649
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    25
from google.appengine.ext import db
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    26
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    27
from django.utils.translation import ugettext
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
1053
3b9552cf748a Rename the confusing Tossed Model class to PresenceWithToS.
Todd Larsen <tlarsen@google.com>
parents: 1052
diff changeset
    29
import soc.models.presence_with_tos
766
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
    30
import soc.models.timeline
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
1053
3b9552cf748a Rename the confusing Tossed Model class to PresenceWithToS.
Todd Larsen <tlarsen@google.com>
parents: 1052
diff changeset
    33
class Program(soc.models.presence_with_tos.PresenceWithToS):
667
f96095df1433 Some more import sorting fixes and docstring typos in program modules and soc.views.helper.redirects module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 649
diff changeset
    34
  """The Program model, representing a Program ran by a Sponsor.
643
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
  """
b57d538a9dd3 Added programs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
649
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    37
  #: Required field storing name of the group.
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    38
  name = db.StringProperty(required=True,
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    39
      verbose_name=ugettext('Name'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    40
  name.help_text = ugettext('Complete, formal name of the program.')
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    41
  name.example_text = ugettext(
849
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    42
      '<small><i>e.g.</i></small> <tt>Google Summer of Code 2009</tt>')
649
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    43
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    44
  #: Required field storing short name of the group.
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    45
  #: It can be used for displaying group as sidebar menu item.
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    46
  short_name = db.StringProperty(required=True,
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    47
      verbose_name=ugettext('Short name'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    48
  short_name.help_text = ugettext('Short name used for sidebar menu')
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    49
  short_name.example_text = ugettext(
849
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    50
      '<small><i>e.g.</i></small> <tt>GSoC 2009</tt>')
649
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    51
688
125cad9596da Changed generic_name to group_label in models/program.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 667
diff changeset
    52
  #: Optional field used to relate it to other programs
125cad9596da Changed generic_name to group_label in models/program.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 667
diff changeset
    53
  #: For example, GSoC would be a group label for GSoC2008/GSoC2009
125cad9596da Changed generic_name to group_label in models/program.py.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 667
diff changeset
    54
  group_label = db.StringProperty(
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    55
      verbose_name=ugettext('Group label'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    56
  group_label.help_text = ugettext(
740
caa143c799a7 Added some example_text to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 688
diff changeset
    57
      'Optional name used to relate this program to others.')
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    58
  group_label.example_text = ugettext(
849
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    59
      '<small><i>e.g.</i></small> <tt>GSoC</tt>')
649
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    60
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    61
  #: Required field storing description of the group.
95a41542e693 Finish Program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 643
diff changeset
    62
  description = db.TextProperty(required=True,
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    63
      verbose_name=ugettext('Description'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    64
  description.example_text = ugettext(
849
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    65
      '<small><i>for example:</i></small><br>'
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    66
      '<tt><b>GSoC 2009</b> is the <i>Google Summer of Code</i>,'
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    67
      ' but in <u>2009</u>!</tt><br><br>'
c193ac0ef593 Support HTML tags in form field example_text column.
Todd Larsen <tlarsen@google.com>
parents: 771
diff changeset
    68
      '<small><i>(rich text formatting is supported)</i></small>')
769
a0ee643fe832 Added an elementary workflow choosing method to program creation.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 766
diff changeset
    69
  
911
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    70
  #: Required field storing application/tasks limit of the program.
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    71
  apps_tasks_limit = db.IntegerProperty(required=True,
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    72
      verbose_name=ugettext('Application/Tasks Limit'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    73
  apps_tasks_limit.example_text = ugettext(
911
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    74
      '<small><i>e.g.</i></small> '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    75
      '<tt><b>20</b> is the student applications limit for <i>Google Summer '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    76
      'of Code</i>, but <b>1</b> is the tasks limit that the student can work '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    77
      'on at the same time during <i>GHOP</i></tt>')
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    78
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    79
  #: Required field storing slots limit of the program.
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    80
  slots = db.IntegerProperty(required=True,
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    81
      verbose_name=ugettext('Slots'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    82
  slots.example_text = ugettext(
911
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    83
      '<small><i>e.g.</i></small> '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    84
      '<tt><b>500</b> might be an amount of slots for <i>Google Summer '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    85
      'of Code</i>, which indicates how many students can be accepted '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    86
      'to the program.<br>For <i>GHOP</i> this indicates how '
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    87
      'many tasks can be completed.</tt>')
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    88
769
a0ee643fe832 Added an elementary workflow choosing method to program creation.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 766
diff changeset
    89
  #: Required field storing the type of workflow this program has
a0ee643fe832 Added an elementary workflow choosing method to program creation.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 766
diff changeset
    90
  workflow = db.StringProperty(required=True,
a0ee643fe832 Added an elementary workflow choosing method to program creation.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 766
diff changeset
    91
      choices=['gsoc', 'ghop'],
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    92
      verbose_name= ugettext('Workflow type'))
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
    93
  workflow.example_text = ugettext(
911
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    94
      '<tt><b>Project-based</b> for GSoC workflow type,<br>' 
efce8ee13b19 Add slots and student applications/tasks limit integer properties to the Program model.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 849
diff changeset
    95
      '<b>Task-based</b> for GHOP workflow type.</tt>')
766
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
    96
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
    97
  #: Required 1:1 relationship indicating the Program the Timeline
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
    98
  #: belongs to.
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
    99
  timeline = db.ReferenceProperty(reference_class=soc.models.timeline.Timeline,
046b4b51eabf Made Program reference Timeline
Sverre Rabbelier <srabbelier@gmail.com>
parents: 740
diff changeset
   100
                                 required=True, collection_name="program",
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 911
diff changeset
   101
                                 verbose_name=ugettext('Timeline'))
1051
c532dd9def48 Create a new Tossed layer in the MVC
Sverre Rabbelier <srabbelier@gmail.com>
parents: 970
diff changeset
   102
1107
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   103
  #: Status of the program
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   104
  #: Invisible: Program Stealth-Mode Visible to Hosts and Devs only
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   105
  #: Visible: Visible to everyone.
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   106
  #: Inactive: Not visible in sidebar but can be reached for date retention
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   107
  #: Invalid: Not visible or editable by anyone
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   108
  status = db.StringProperty(required=True, default='invisible',
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   109
      verbose_name=ugettext('Program Status'),
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   110
      choices=['invisible', 'visible', 'inactive', 'invalid'])
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   111
  status.example_text = ugettext(
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   112
      '<tt>Invisible: Program Stealth-Mode Visible to Hosts and Devs only.<br/>'
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   113
      'Visible: Visible to everyone.<br/>'
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   114
      'Inactive: Not visible in sidebar, not editable.<br/>'
a878188e225c Added status to program.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1057
diff changeset
   115
      'Invalid: Not visible or editable by anyone.</tt>')
1052
cd6d6034b6e9 Added a 'allocations_visible' property to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1051
diff changeset
   116
1057
75f72ea26883 Fix typos in comments and help text in soc.models.program module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1053
diff changeset
   117
  #: Whether the slots allocations are visible
1052
cd6d6034b6e9 Added a 'allocations_visible' property to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1051
diff changeset
   118
  allocations_visible = db.BooleanProperty(default=False,
cd6d6034b6e9 Added a 'allocations_visible' property to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1051
diff changeset
   119
      verbose_name=ugettext('Slot allocations visible'))
cd6d6034b6e9 Added a 'allocations_visible' property to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1051
diff changeset
   120
  allocations_visible.help_text = ugettext(
cd6d6034b6e9 Added a 'allocations_visible' property to program
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1051
diff changeset
   121
      'Field used to indicate if the slot allocations should be visible.')