36 |
36 |
37 #: Required field storing name of the group. |
37 #: Required field storing name of the group. |
38 name = db.StringProperty(required=True, |
38 name = db.StringProperty(required=True, |
39 verbose_name=ugettext_lazy('Name')) |
39 verbose_name=ugettext_lazy('Name')) |
40 name.help_text = ugettext_lazy('Complete, formal name of the program.') |
40 name.help_text = ugettext_lazy('Complete, formal name of the program.') |
41 name.example_text = ugettext_lazy('Google Summer of Code 2009') |
41 name.example_text = ugettext_lazy( |
|
42 '<small><i>e.g.</i></small> <tt>Google Summer of Code 2009</tt>') |
42 |
43 |
43 #: Required field storing short name of the group. |
44 #: Required field storing short name of the group. |
44 #: It can be used for displaying group as sidebar menu item. |
45 #: It can be used for displaying group as sidebar menu item. |
45 short_name = db.StringProperty(required=True, |
46 short_name = db.StringProperty(required=True, |
46 verbose_name=ugettext_lazy('Short name')) |
47 verbose_name=ugettext_lazy('Short name')) |
47 short_name.help_text = ugettext_lazy('Short name used for sidebar menu') |
48 short_name.help_text = ugettext_lazy('Short name used for sidebar menu') |
48 short_name.example_text = ugettext_lazy('GSoC 2009') |
49 short_name.example_text = ugettext_lazy( |
|
50 '<small><i>e.g.</i></small> <tt>GSoC 2009</tt>') |
49 |
51 |
50 #: Optional field used to relate it to other programs |
52 #: Optional field used to relate it to other programs |
51 #: For example, GSoC would be a group label for GSoC2008/GSoC2009 |
53 #: For example, GSoC would be a group label for GSoC2008/GSoC2009 |
52 group_label = db.StringProperty( |
54 group_label = db.StringProperty( |
53 verbose_name=ugettext_lazy('Group label')) |
55 verbose_name=ugettext_lazy('Group label')) |
54 group_label.help_text = ugettext_lazy( |
56 group_label.help_text = ugettext_lazy( |
55 'Optional name used to relate this program to others.') |
57 'Optional name used to relate this program to others.') |
56 group_label.example_text = ugettext_lazy('GSoC') |
58 group_label.example_text = ugettext_lazy( |
|
59 '<small><i>e.g.</i></small> <tt>GSoC</tt>') |
57 |
60 |
58 #: Required field storing description of the group. |
61 #: Required field storing description of the group. |
59 description = db.TextProperty(required=True, |
62 description = db.TextProperty(required=True, |
60 verbose_name=ugettext_lazy('Description')) |
63 verbose_name=ugettext_lazy('Description')) |
61 description.example_text = ugettext_lazy('This is the program for GSoC 2009') |
64 description.example_text = ugettext_lazy( |
|
65 '<small><i>for example:</i></small><br>' |
|
66 '<tt><b>GSoC 2009</b> is the <i>Google Summer of Code</i>,' |
|
67 ' but in <u>2009</u>!</tt><br><br>' |
|
68 '<small><i>(rich text formatting is supported)</i></small>') |
62 |
69 |
63 #: Required field storing the type of workflow this program has |
70 #: Required field storing the type of workflow this program has |
64 workflow = db.StringProperty(required=True, |
71 workflow = db.StringProperty(required=True, |
65 choices=['gsoc', 'ghop'], |
72 choices=['gsoc', 'ghop'], |
66 verbose_name= ugettext_lazy('Workflow type')) |
73 verbose_name= ugettext_lazy('Workflow type')) |
67 workflow.example_text = ugettext_lazy('Project-based for GSoC workflow type, ' |
74 workflow.example_text = ugettext_lazy( |
68 'task-based for GHOP workflow type') |
75 '<b><tt>Project-based</tt></b> for GSoC workflow type,<br>' |
|
76 ' <b><tt>Task-based</tt></b> for GHOP workflow type.') |
69 |
77 |
70 #: Required 1:1 relationship indicating the Program the Timeline |
78 #: Required 1:1 relationship indicating the Program the Timeline |
71 #: belongs to. |
79 #: belongs to. |
72 timeline = db.ReferenceProperty(reference_class=soc.models.timeline.Timeline, |
80 timeline = db.ReferenceProperty(reference_class=soc.models.timeline.Timeline, |
73 required=True, collection_name="program", |
81 required=True, collection_name="program", |