1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
from django import forms
from pytask.taskapp.models import Task, WorkReport
class TaskCreateForm(forms.ModelForm):
class Meta:
model = Task
fields = ['title', 'desc', 'tags_field', 'pynts']
#publish = forms.BooleanField(required=False)
def clean_title(self):
data = self.cleaned_data['title'].strip()
try:
Task.objects.exclude(status="DL").get(title__iexact=data)
raise forms.ValidationError("Another task with same title exists")
except Task.DoesNotExist:
return data
def clean_desc(self):
data = self.cleaned_data['desc'].strip()
if not data:
raise forms.ValidationError("Enter some description for the task")
return data
class EditTaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ['title', 'desc', 'tags_field', 'pynts']
def clean_desc(self):
data = self.cleaned_data['desc'].strip()
if not data:
raise forms.ValidationError("Enter some description for the task")
return data
def clean_title(self):
data = self.cleaned_data['title'].strip()
try:
prev_task = Task.objects.exclude(status="DL").get(title__iexact=data)
if prev_task.id != self.instance.id:
raise forms.ValidationError("Another task with same title exists")
else:
return data
except Task.DoesNotExist:
return data
def AddReviewerForm(choices,instance=None):
""" return a form object with appropriate choices """
class myform(forms.Form):
reviewer = forms.ChoiceField(choices=choices, required=True)
form = myform(instance) if instance else myform()
return form
class ClaimTaskForm(forms.Form):
message = forms.CharField(label="Proposal")
def clean_message(self):
data = self.cleaned_data['message'].strip()
if not data:
raise forms.ValidationError('Enter something as a proposal')
return data
def ChoiceForm(choices, instance=None):
""" return a form object with appropriate choices """
class myform(forms.Form):
choice = forms.ChoiceField(choices=choices, required=True)
form = myform(instance) if instance else myform()
return form
def AddTaskForm(task_choices, is_plain=False):
""" if is_plain is true, it means the task has no subs/deps.
so we also give a radio button to choose between subs and dependencies.
else we only give choices.
"""
class myForm(forms.Form):
if is_plain:
type_choices = [('S','Subtasks'),('D','Dependencies')]
type = forms.ChoiceField(type_choices, widget=forms.RadioSelect)
task = forms.ChoiceField(choices=task_choices)
return myForm()
def AssignPyntForm(choices, instance=None):
class myForm(forms.Form):
user = forms.ChoiceField(choices=choices, required=True)
pynts = forms.IntegerField(min_value=0, required=True, help_text="Choose wisely since it cannot be undone.")
return myForm(instance) if instance else myForm()
def RemoveUserForm(choices, instance=None):
class myForm(forms.Form):
user = forms.ChoiceField(choices=choices, required=True)
reason = forms.CharField(min_length=1, required=True)
return myForm(instance) if instance else myForm()
class WorkReportForm(forms.ModelForm):
class Meta:
model = WorkReport
fields = ['remarks', 'attachment']
|