| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- '''
- @author: olivier.massot, 2018
- '''
- from django import forms
- from django.contrib.auth.forms import UserCreationForm
- from django.contrib.auth.models import User
- from django.forms.fields import DateField, ChoiceField, MultipleChoiceField
- from martor.fields import MartorFormField
- from main.models import Story, Epic, Comment, Sprint
- class RegisterForm(UserCreationForm):
-
- class Meta:
- model = User
- fields = ('username', 'first_name', 'last_name', 'email')
-
- def save(self, commit=True):
- user = super(RegisterForm, self).save(commit=False)
- user.first_name = self.cleaned_data["first_name"]
- user.last_name = self.cleaned_data["last_name"]
- user.email = self.cleaned_data["email"]
- if commit:
- user.save()
- class ProfileForm(forms.ModelForm):
- class Meta:
- model = User
- fields = ('username', 'first_name', 'last_name', 'email')
- class EpicForm(forms.ModelForm):
-
- description = MartorFormField(label="Description")
-
- class Meta:
- model = Epic
- fields = ('project', 'name', 'size', 'value', 'description')
-
- def __init__(self, *args, **kwargs):
- super(EpicForm, self).__init__(*args, **kwargs)
- self.fields['description'].required = False
-
- class StoryForm(forms.ModelForm):
-
- description = MartorFormField(label="Description")
- epic = ChoiceField(choices=[(epic.id, epic.name) for epic in Epic.objects.filter(closed=False).order_by('-value')],
- widget=forms.Select(attrs={'class':'filtered-dropdown'}))
- class Meta:
- model = Story
- widgets = {'author': forms.HiddenInput()}
- fields = ('epic', 'author', 'name', 'weight', 'time_spent', 'story_type', 'description', 'assignees', 'sprints')
-
- def __init__(self, *args, **kwargs):
-
- super(StoryForm, self).__init__(*args, **kwargs)
- self.fields['description'].required = False
- self.fields['assignees'].required = False
- self.fields['sprints'].required = False
- self.fields['weight'].required = False
- self.fields['time_spent'].required = False
- self.fields['story_type'].required = False
-
- def clean(self):
- cleaned_data = super().clean()
- cleaned_data["epic"] = Epic.objects.get(pk=int(cleaned_data["epic"]))
- return cleaned_data
-
- def save(self, *args, **kwargs):
- if self.cleaned_data['weight'] == '':
- self.cleaned_data['weight'] = None
- return super(StoryForm, self).save(*args, **kwargs)
-
- class CommentForm(forms.ModelForm):
- class Meta:
- model = Comment
- widgets = {'content_type': forms.HiddenInput(), 'object_id': forms.HiddenInput()}
- fields = ('content','content_type', 'object_id')
- content = MartorFormField(label="Commentaire")
- def __init__(self, *args, **kwargs):
- super(CommentForm, self).__init__(*args, **kwargs)
- if not self.prefix:
- self.prefix = str(self.instance.id) if self.instance and self.instance.id else "new"
-
- class NewSprintForm(forms.ModelForm):
- class Meta:
- model = Sprint
- widgets = {'number': forms.HiddenInput()}
- fields = ('date_start','date_end','number')
-
- date_start = DateField(label='Date de début', widget=forms.TextInput(attrs={'class':'datepicker'}))
- date_end = DateField(label='Date de fin', widget=forms.TextInput(attrs={'class':'datepicker'}))
- def clean(self):
- cleaned_data = super().clean()
-
- if not cleaned_data.get("date_end") > cleaned_data.get("date_start"):
- raise forms.ValidationError("La date de fin doit être postérieure à la date de début.")
- if not cleaned_data.get("date_start") >= Sprint.current().date_end:
- raise forms.ValidationError("La date de début doit être postérieure à la date de fin du sprint en cours.")
- class SprintForm(forms.ModelForm):
- class Meta:
- model = Sprint
- fields = ('retro','improvements')
- retro = MartorFormField(label="Rétrospective")
- improvements = MartorFormField(label="Améliorations")
|