Change all the queries to Textbook model to Tasks.
Since Textbook model is deprecated now, implemented the changes
in the views to query respected queries and make corresponding
changes in the views.
from django import forms
from pytask.taskapp.models import Task, WorkReport, TaskComment, TaskClaim, \
TextBook
class CreateTaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ['title', 'desc', 'tags_field', 'pynts']
def clean_title(self):
data = self.cleaned_data['title'].strip()
if not data:
raise forms.ValidationError("This field is required")
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("This field is required")
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
class TaskCommentForm(forms.ModelForm):
class Meta:
model = TaskComment
fields = ['data']
def clean_data(self):
data = self.cleaned_data['data'].strip()
if not data:
raise forms.ValidationError("Please add some content")
return data
class ClaimTaskForm(forms.ModelForm):
class Meta:
model = TaskClaim
fields = ["proposal"]
def clean_proposal(self):
data = self.cleaned_data['proposal'].strip()
if not data:
raise forms.ValidationError('Enter something as a proposal')
return data
def ChoiceForm(choices, data=None, label="choice"):
""" return a form object with appropriate choices """
class myform(forms.Form):
choice = forms.ChoiceField(choices=choices, required=True, label=label)
form = myform(data) if data else myform()
return form
class CreateTextbookForm(forms.ModelForm):
class Meta:
model = TextBook
fields = ['name', 'chapters', 'tags_field']
class EditTextbookForm(forms.ModelForm):
class Meta:
model = TextBook
fields = ['name', 'chapters', 'tags_field']
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 = ['data', 'summary', 'attachment']