diff --git a/notes/forms.py b/notes/forms.py index 8bede4f..5497808 100644 --- a/notes/forms.py +++ b/notes/forms.py @@ -2,7 +2,6 @@ from .models import Note from utilisateurs.models import Professionnel from django import forms -from django.utils import timezone from django_select2.forms import Select2Widget from django.forms import Textarea @@ -33,7 +32,8 @@ class SimpleNoteForm(forms.ModelForm): class UserNoteForm(NoteForm): """ Form that sets 'created_by' with current user id. - This requires 'request' object at initialization + + It requires 'request' object at initialization """ class Meta(NoteForm.Meta): fields = ['sujet', 'text', 'created_date', 'created_time'] diff --git a/notes/mixins.py b/notes/mixins.py index 717c6c2..d669ba7 100644 --- a/notes/mixins.py +++ b/notes/mixins.py @@ -1,5 +1,4 @@ -from django.views.generic.edit import FormMixin, ProcessFormView -from django.shortcuts import redirect +from django.views.generic.edit import FormMixin from .forms import * @@ -7,24 +6,37 @@ class NoteFormMixin(FormMixin): form_class = None - def get_form(self): + forms = None + + def get_form(self, prefix, form_class=None): # Should add test to ensure this instance class is # has SingleObjectMixin set with Sujet model ?? kwargs = self.get_form_kwargs() - return self.form_class( + kwargs['prefix'] = prefix + if not form_class: + form_class = self.forms[prefix] + try: + form = form_class( + **kwargs + ) + except TypeError: #Forms that requires request + form = form_class( self.request, **kwargs ) + return form def post(self, request, **kwargs): - form = self.get_form() - if form.is_valid(): - form.save() - return self.form_valid(form) + for prefix in self.forms.keys(): + form = self.get_form(prefix) + if form.is_valid(): + form.save() + return self.form_valid(form) return self.form_invalid(form) def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context['note_form'] = self.get_form() + context = super(FormMixin, self).get_context_data(**kwargs) + for prefix in self.forms.keys(): + context['%s_form' % prefix] = self.get_form(prefix) return context diff --git a/notes/models.py b/notes/models.py index 206473c..03ca167 100644 --- a/notes/models.py +++ b/notes/models.py @@ -49,11 +49,11 @@ class Note(models.Model): def note_date(self): """ Default 'created_date' value. Child may override this method. """ - return timezone.now().date() + return timezone.localtime(timezone.now()).date() def note_time(self): """ Default 'created_time' value. Child may override this method. """ - return timezone.now().time() + return timezone.localtime(timezone.now()).time() def note_bg_colors(self): """ Returns (header background color, labels color). diff --git a/suivi/forms.py b/suivi/forms.py index fbdf7a2..79a7b85 100644 --- a/suivi/forms.py +++ b/suivi/forms.py @@ -1,10 +1,40 @@ from .notes import * from notes.forms import * - -from django.utils import timezone +from sujets.models import Sujet, GENRE_CHOICES +from django import forms class AppelForm(UserNoteForm): - class Meta(UserNoteForm.Meta): model = Appel fields = ['sujet', 'text', 'entrant', 'created_date', 'created_time'] + +class SignalementForm(UserNoteForm): + + nom = forms.CharField(64, required=False) + prenom = forms.CharField(64, required=False) + age = forms.IntegerField(required=False) + genre = forms.ChoiceField(choices=GENRE_CHOICES) + + class Meta(UserNoteForm.Meta): + model = Signalement + fields = ['text', 'source', 'created_date', 'created_time'] + + def clean(self): + super().clean() + if not self.cleaned_data['nom'] and not self.cleaned_data['prenom']: + self.add_error('nom', '') + self.add_error('prenom', '') + raise forms.ValidationError("Entrez au moins un nom ou prénom") + + def save(self, commit=True): + sujet = Sujet.objects.create( + nom=self.cleaned_data['nom'], + prenom=self.cleaned_data['prenom'], + genre=self.cleaned_data['genre'], + age=self.cleaned_data['age'] + ) + instance = super().save(commit=False) + instance.sujet = sujet + if commit: + instance.save() + return instance diff --git a/suivi/notes.py b/suivi/notes.py index aadb702..3f12eb2 100644 --- a/suivi/notes.py +++ b/suivi/notes.py @@ -11,10 +11,10 @@ class Appel(Note): class Signalement(Note): - source = models.CharField('Source', max_length=128) + source = models.ForeignKey("utilisateurs.Organisme") - def note_labels(self): return [self.source] - def note_bg_colors(self): return ('warning', 'alert') + def note_labels(self): return [self.source, self.created_by] + def note_bg_colors(self): return ('warning', 'info') diff --git a/suivi/templates/suivi/appel_form.html b/suivi/templates/suivi/appel_form.html index d8be95a..3c5c7e6 100644 --- a/suivi/templates/suivi/appel_form.html +++ b/suivi/templates/suivi/appel_form.html @@ -1,4 +1,3 @@ -

Enregistrer un appel

diff --git a/suivi/templates/suivi/appel_form_inner.html b/suivi/templates/suivi/appel_form_inner.html index 2457b84..be181fb 100644 --- a/suivi/templates/suivi/appel_form_inner.html +++ b/suivi/templates/suivi/appel_form_inner.html @@ -1,4 +1,5 @@ {% load bootstrap3 %} +{{ form.media.js }}{{ form.media.css }}
{% csrf_token %} {% with "inline" as layout %}
diff --git a/suivi/templates/suivi/index.html b/suivi/templates/suivi/index.html index 8dfb330..fc9b8b6 100644 --- a/suivi/templates/suivi/index.html +++ b/suivi/templates/suivi/index.html @@ -1,5 +1,7 @@ -
- {% include "suivi/appel_form.html" %} +
+ {% include "suivi/signalement_form.html" with form=signalement_form %} +
+
+ {% include "suivi/appel_form.html" with form=appel_form %}
- diff --git a/suivi/templates/suivi/menu_sujets.html b/suivi/templates/suivi/menu_sujets.html index 5151bda..c758dd0 100644 --- a/suivi/templates/suivi/menu_sujets.html +++ b/suivi/templates/suivi/menu_sujets.html @@ -1,9 +1,14 @@ {% load bootstrap3 %} -
  • + Liste des sujets + {% bootstrap_icon "list" %} +
  • +{% if user.is_superuser %}{% load bootstrap3 %} +