3 # Copyright 2009 the Melange authors.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 """This module contains the GHOP specific Program Model.
21 '"Madhusudan.C.S" <madhusudancs@gmail.com>',
25 from google
.appengine
.ext
import db
27 from django
.utils
.translation
import ugettext
29 import soc
.models
.program
32 class GHOPProgram(soc
.models
.program
.Program
):
33 """GHOP Program model extends the basic Program model.
36 #: Property that contains the minimum age of a student allowed to
38 student_min_age
= db
.IntegerProperty(
39 required
=True, verbose_name
=ugettext('Student minimum age'))
40 student_min_age
.help_text
= ugettext(
41 'Minimum age of the student to sign-up in years.')
43 #: Property that contains the date as of which above student
44 #: minimum age requirement holds. This is a DateTimeProperty because
45 #: programs might run in a different timezone then the Appengine Server
47 student_min_age_as_of
= db
.DateTimeProperty(
48 required
=True, verbose_name
=ugettext('Minimum age as of'))
49 student_min_age_as_of
.help_text
= ugettext(
50 'Date as of which the student minimum age requirement holds.')
52 #: Required property containing the number of Tasks Students can work
53 #: on simultaneously. For GHOP it is 1
54 nr_simultaneous_tasks
= db
.IntegerProperty(
55 required
=True, default
=1,
56 verbose_name
=ugettext('Simultaneous tasks'))
57 nr_simultaneous_tasks
.help_text
= ugettext(
58 'Number of tasks students can work on simultaneously in the program.')
60 #: Property containing the number of winners per Organization
61 nr_winners
= db
.IntegerProperty(
62 required
=True, default
=0,
63 verbose_name
=ugettext('Winners per organization'))
64 nr_winners
.help_text
= ugettext(
65 'Number of winners an organization can announce.')
67 #: Property containing the number of runner ups per Organization
68 nr_runnerups
= db
.IntegerProperty(
69 required
=True, default
=0,
70 verbose_name
=ugettext('Runner-ups per organization'))
71 nr_runnerups
.help_text
= ugettext(
72 'Number of runner-ups an organization can announce.')
74 #: A list of difficulty levels that can be assigned for each Task created
75 task_difficulties
= db
.StringListProperty(
76 required
=True, default
=[''],
77 verbose_name
=ugettext('Difficulty levels'))
78 task_difficulties
.help_text
= ugettext(
79 'List all the difficulty levels that can be assigned to a task.')
81 #: A list of task types that a Task can belong to
82 task_types
= db
.StringListProperty(
83 required
=True, default
=['Any'],
84 verbose_name
=ugettext('Task Types'))
85 task_types
.help_text
= ugettext(
86 'List all the types a task can be in.')