2 from django.contrib.auth.models import User |
2 from django.contrib.auth.models import User |
3 |
3 |
4 import tagging |
4 import tagging |
5 from tagging.fields import TagField |
5 from tagging.fields import TagField |
6 |
6 |
|
7 |
7 TASK_STATUS_CHOICES = ( |
8 TASK_STATUS_CHOICES = ( |
8 ("UP", "Unpublished"), |
9 ("Unpublished", "Unpublished"), |
9 ("OP", "Open"), |
10 ("Open", "Open"), |
10 ("LO", "Locked"), |
11 ("Locked", "Locked"), |
11 ("WR", "Working"), |
12 ("Working", "Working"), |
12 ("CD", "Closed"), |
13 ("Closed", "Closed"), |
13 ("DL", "Deleted"), |
14 ("Deleted", "Deleted"), |
14 ("CM", "Completed")) |
15 ("Completed", "Completed")) |
15 |
16 |
16 TB_STATUS_CHOICES = ( |
17 TB_STATUS_CHOICES = ( |
17 ("UP", "Unpublished"), |
18 ("Unpublished", "Unpublished"), |
18 ("OP", "Open"), |
19 ("Open", "Open"), |
19 ("WR", "All tasks have users selected"), |
20 ("All tasks have users selected", "All tasks have users selected"), |
20 ("CM", "Completed")) |
21 ("Completed", "Completed")) |
21 |
22 |
22 UPLOADS_DIR = "./pytask/static/uploads" |
23 UPLOADS_DIR = "/pytask/static/uploads" |
|
24 |
23 |
25 |
24 class Task(models.Model): |
26 class Task(models.Model): |
25 title = models.CharField(max_length = 100, verbose_name = u"Title", |
|
26 help_text = u"Keep it simple and below 100 chars.") |
|
27 desc = models.TextField(verbose_name = u"Description") |
|
28 |
27 |
29 status = models.CharField(max_length = 2, choices = TASK_STATUS_CHOICES, default = "UP") |
28 title = models.CharField( |
30 tags_field = TagField(verbose_name = u"Tags", |
29 max_length=100, verbose_name=u"Title", |
31 help_text = u"Give tags seperated by commas") |
30 help_text=u"Keep it simple and below 100 chars.") |
|
31 |
|
32 desc = models.TextField(verbose_name=u"Description") |
|
33 |
|
34 status = models.CharField(max_length=255, |
|
35 choices=TASK_STATUS_CHOICES, |
|
36 default="Unpublished") |
|
37 |
|
38 tags_field = TagField(verbose_name=u"Tags", |
|
39 help_text=u"Give tags seperated by commas") |
32 |
40 |
33 pynts = models.PositiveSmallIntegerField(help_text = u"No.of pynts a user \ |
41 pynts = models.PositiveSmallIntegerField( |
34 gets on completing the task") |
42 help_text=u"No.of pynts a user gets on completing the task") |
|
43 |
35 created_by = models.ForeignKey(User, |
44 created_by = models.ForeignKey(User, |
36 related_name = "created_tasks") |
45 related_name="created_tasks") |
37 approved_by = models.ForeignKey(User, blank = True, null = True, |
|
38 related_name = "approved_tasks") |
|
39 reviewers = models.ManyToManyField(User, blank = True, null = True, |
|
40 related_name = "reviewing_tasks") |
|
41 |
46 |
42 claimed_users = models.ManyToManyField(User, blank = True, null = True, |
47 approved_by = models.ForeignKey(User, blank=True, null=True, |
43 related_name = "claimed_tasks") |
48 related_name="approved_tasks") |
44 selected_users = models.ManyToManyField(User, blank = True, null = True, |
49 |
45 related_name = "selected_tasks") |
50 reviewers = models.ManyToManyField(User, blank=True, null=True, |
46 |
51 related_name="reviewing_tasks") |
|
52 |
|
53 claimed_users = models.ManyToManyField(User, blank=True, null=True, |
|
54 related_name="claimed_tasks") |
|
55 |
|
56 selected_users = models.ManyToManyField(User, blank=True, null=True, |
|
57 related_name="selected_tasks") |
|
58 |
47 creation_datetime = models.DateTimeField() |
59 creation_datetime = models.DateTimeField() |
48 approval_datetime = models.DateTimeField(blank = True, null = True) |
60 |
49 |
61 approval_datetime = models.DateTimeField(blank=True, null=True) |
|
62 |
50 def __unicode__(self): |
63 def __unicode__(self): |
51 return unicode(self.title) |
64 return unicode(self.title) |
52 |
65 |
|
66 |
53 class TaskComment(models.Model): |
67 class TaskComment(models.Model): |
54 |
68 |
55 task = models.ForeignKey('Task', related_name = "comments") |
69 task = models.ForeignKey('Task', related_name="comments") |
56 |
70 |
57 data = models.TextField(verbose_name='Comment') |
71 data = models.TextField(verbose_name='Comment') |
|
72 |
58 commented_by = models.ForeignKey(User, |
73 commented_by = models.ForeignKey(User, |
59 related_name = "commented_taskcomments") |
74 related_name="commented_taskcomments") |
60 deleted_by = models.ForeignKey(User, null = True, blank = True, |
75 |
61 related_name = "deleted_taskcomments") |
76 deleted_by = models.ForeignKey(User, null=True, blank=True, |
|
77 related_name="deleted_taskcomments") |
|
78 |
62 comment_datetime = models.DateTimeField() |
79 comment_datetime = models.DateTimeField() |
|
80 |
63 is_deleted = models.BooleanField(default=False) |
81 is_deleted = models.BooleanField(default=False) |
64 |
82 |
65 def __unicode__(self): |
83 def __unicode__(self): |
66 return unicode(self.task.title) |
84 return unicode(self.task.title) |
67 |
85 |
|
86 |
68 class TaskClaim(models.Model): |
87 class TaskClaim(models.Model): |
69 task = models.ForeignKey('Task', related_name = "claims") |
88 |
|
89 task = models.ForeignKey('Task', related_name="claims") |
70 |
90 |
71 claimed_by = models.ForeignKey(User, |
91 claimed_by = models.ForeignKey(User, |
72 related_name = "claimed_claims") |
92 related_name="claimed_claims") |
73 proposal = models.TextField() |
93 proposal = models.TextField() |
74 |
94 |
75 claim_datetime = models.DateTimeField() |
95 claim_datetime = models.DateTimeField() |
76 |
96 |
77 def __unicode__(self): |
97 def __unicode__(self): |
78 return unicode(self.task.title) |
98 return unicode(self.task.title) |
79 |
99 |
|
100 |
80 class WorkReport(models.Model): |
101 class WorkReport(models.Model): |
81 task = models.ForeignKey(Task, related_name = "reports") |
102 |
82 submitted_by = models.ForeignKey(User, null = True, blank = True, |
103 task = models.ForeignKey(Task, related_name="reports") |
83 related_name = "submitted_reports") |
104 |
84 approved_by = models.ForeignKey(User, null = True, blank = True, |
105 submitted_by = models.ForeignKey(User, null=True, blank=True, |
85 related_name = "approved_reports") |
106 related_name="submitted_reports") |
|
107 |
|
108 approved_by = models.ForeignKey(User, null=True, blank=True, |
|
109 related_name="approved_reports") |
86 |
110 |
87 data = models.TextField(verbose_name="Report") |
111 data = models.TextField(verbose_name="Report") |
|
112 |
88 summary = models.CharField(max_length=100, verbose_name="Summary", |
113 summary = models.CharField(max_length=100, verbose_name="Summary", |
89 help_text="A one line summary") |
114 help_text="A one line summary") |
90 attachment = models.FileField(upload_to = UPLOADS_DIR) |
115 |
|
116 attachment = models.FileField(upload_to=UPLOADS_DIR) |
91 |
117 |
92 revision = models.PositiveIntegerField(default=0) |
118 revision = models.PositiveIntegerField(default=0) |
|
119 |
93 submitted_at = models.DateTimeField() |
120 submitted_at = models.DateTimeField() |
94 |
121 |
|
122 |
95 class ReportComment(models.Model): |
123 class ReportComment(models.Model): |
96 report = models.ForeignKey('WorkReport', related_name = "%(class)s_report") |
124 |
|
125 report = models.ForeignKey('WorkReport', related_name="%(class)s_report") |
97 |
126 |
98 data = models.TextField() |
127 data = models.TextField() |
|
128 |
99 commented_by = models.ForeignKey(User, |
129 commented_by = models.ForeignKey(User, |
100 related_name = "commented_reportcomments") |
130 related_name="commented_reportcomments") |
101 deleted_by = models.ForeignKey(User, null = True, blank = True, |
131 |
102 related_name = "deleted_reportcomments") |
132 deleted_by = models.ForeignKey(User, null=True, blank=True, |
|
133 related_name="deleted_reportcomments") |
|
134 |
103 comment_datetime = models.DateTimeField() |
135 comment_datetime = models.DateTimeField() |
|
136 |
104 is_deleted = models.BooleanField(default=False) |
137 is_deleted = models.BooleanField(default=False) |
105 |
138 |
|
139 |
106 class PyntRequest(models.Model): |
140 class PyntRequest(models.Model): |
107 task = models.ForeignKey(Task, related_name = "pynt_requests") |
141 task = models.ForeignKey(Task, related_name="pynt_requests") |
|
142 |
108 pynts = models.PositiveIntegerField(default=0, help_text="No.of pynts") |
143 pynts = models.PositiveIntegerField(default=0, help_text="No.of pynts") |
109 |
144 |
110 requested_by = models.ForeignKey(User, |
145 requested_by = models.ForeignKey(User, |
111 related_name = "requested_by_pynts") |
146 related_name="requested_by_pynts") |
|
147 |
112 requested_for = models.ForeignKey(User, |
148 requested_for = models.ForeignKey(User, |
113 related_name = "requested_for_pynts") |
149 related_name="requested_for_pynts") |
114 |
150 |
115 responded_by = models.ForeignKey(User, null = True, blank = True, |
151 responded_by = models.ForeignKey(User, null=True, blank=True, |
116 related_name = "responded_requests") |
152 related_name="responded_requests") |
117 |
153 |
118 is_accepted = models.BooleanField(default=False) |
154 is_accepted = models.BooleanField(default=False) |
|
155 |
119 remarks = models.CharField(max_length=100, blank=True, |
156 remarks = models.CharField(max_length=100, blank=True, |
120 help_text="Reason in case of rejection") |
157 help_text="Reason in case of rejection") |
121 |
158 |
122 request_datetime = models.DateTimeField() |
159 request_datetime = models.DateTimeField() |
|
160 |
123 is_responded = models.BooleanField(default=False) |
161 is_responded = models.BooleanField(default=False) |
|
162 |
124 |
163 |
125 class TextBook(models.Model): |
164 class TextBook(models.Model): |
126 |
165 |
127 name = models.CharField(max_length = 100) |
166 name = models.CharField(max_length=100) |
|
167 |
128 chapters = models.ManyToManyField(Task, related_name="textbooks") |
168 chapters = models.ManyToManyField(Task, related_name="textbooks") |
|
169 |
129 tags_field = TagField(verbose_name="Tags") |
170 tags_field = TagField(verbose_name="Tags") |
130 |
171 |
131 created_by = models.ForeignKey(User, related_name = "created_textbooks") |
172 created_by = models.ForeignKey(User, related_name="created_textbooks") |
132 approved_by = models.ForeignKey(User, null = True, blank = True, |
|
133 related_name = "approved_textbooks") |
|
134 |
173 |
135 status = models.CharField(max_length = 2, choices = TB_STATUS_CHOICES, default = "UP") |
174 approved_by = models.ForeignKey(User, null=True, blank=True, |
|
175 related_name="approved_textbooks") |
|
176 |
|
177 status = models.CharField(max_length=255, |
|
178 choices=TB_STATUS_CHOICES, |
|
179 default="Unpublished") |
|
180 |
136 creation_datetime = models.DateTimeField() |
181 creation_datetime = models.DateTimeField() |
137 approval_datetime = models.DateTimeField(blank = True, null = True) |
182 |
|
183 approval_datetime = models.DateTimeField(blank=True, null=True) |
|
184 |
138 |
185 |
139 tagging.register(Task) |
186 tagging.register(Task) |
140 tagging.register(TextBook) |
187 tagging.register(TextBook) |