diff --git a/maraudes/forms.py b/maraudes/forms.py index 42c5903..e2578b4 100644 --- a/maraudes/forms.py +++ b/maraudes/forms.py @@ -1,9 +1,9 @@ from django import forms from django.forms import inlineformset_factory -from notes.forms import SimpleNoteForm +from notes.forms import * # Models -from .models import Maraude, Rencontre -from .notes import Observation, Signalement +from .models import * +from .notes import * class MaraudeAutoDateForm(forms.ModelForm): diff --git a/maraudes/notes.py b/maraudes/notes.py index bc1220d..33a3d03 100644 --- a/maraudes/notes.py +++ b/maraudes/notes.py @@ -10,8 +10,8 @@ class Observation(Note): objects = managers.ObservationManager() rencontre = models.ForeignKey( 'maraudes.Rencontre', - related_name="observations", - on_delete=models.CASCADE + models.CASCADE, + related_name="observations" ) # Note attributes proxies @@ -28,3 +28,6 @@ class Signalement(Note): def note_labels(self): return [self.source] def note_bg_colors(self): return ('warning', 'alert') + + + diff --git a/maraudes/views.py b/maraudes/views.py index 2a1fbe5..5646e50 100644 --- a/maraudes/views.py +++ b/maraudes/views.py @@ -56,7 +56,7 @@ class IndexView(DerniereMaraudeMixin, generic.TemplateView): title = "Maraude - Tableau de bord" header = "La Maraude" header_small = "Tableau de bord" - + # TemplateView template_name = "maraudes/index.html" def get_context_data(self, *args, **kwargs): diff --git a/notes/forms.py b/notes/forms.py index e983e60..8bede4f 100644 --- a/notes/forms.py +++ b/notes/forms.py @@ -39,10 +39,7 @@ class UserNoteForm(NoteForm): fields = ['sujet', 'text', 'created_date', 'created_time'] def __init__(self, request, **kwargs): - args = [] - if request.POST: - args += (request.POST, request.FILES) - super().__init__(*args, **kwargs) + super().__init__(**kwargs) try: self.author = Professionnel.objects.get(pk=request.user.pk) except Professionnel.DoesNotExist: @@ -50,28 +47,15 @@ class UserNoteForm(NoteForm): raise RuntimeError(msg) def save(self, commit=True): + print('save UserNote', self) instance = super().save(commit=False) instance.created_by = self.author if commit: instance.save() return instance -class UserAutoDateNoteForm(UserNoteForm): - """ Form that automatically sets 'date' and 'time' to save time """ - +class AutoNoteForm(UserNoteForm): class Meta(UserNoteForm.Meta): - fields = ['sujet', 'text'] - - def save(self, commit=True): - instance = super().save(commit=False) - instance.created_date = timezone.now().date() - instance.created_time = timezone.now().time() - if commit: - instance.save() - return instance - -class AutoNoteForm(UserAutoDateNoteForm): - class Meta(UserAutoDateNoteForm.Meta): fields = ['text'] def __init__(self, request, **kwargs): diff --git a/notes/mixins.py b/notes/mixins.py index 1622a39..717c6c2 100644 --- a/notes/mixins.py +++ b/notes/mixins.py @@ -3,30 +3,28 @@ from django.shortcuts import redirect from .forms import * -class SujetNoteFormMixin(object): +class NoteFormMixin(FormMixin): - form_class = AutoNoteForm + form_class = None - def get_form(self, request, **kwargs): + def get_form(self): # Should add test to ensure this instance class is # has SingleObjectMixin set with Sujet model ?? + kwargs = self.get_form_kwargs() return self.form_class( self.request, - sujet=self.get_object() + **kwargs ) - def dispatch(self, request, **kwargs): - self.form = self.get_form(request) - return super().dispatch(request, **kwargs) - def post(self, request, **kwargs): - if self.form.is_valid(): - self.form.save() - return redirect(self.get_success_url()) - return self.get(request, **kwargs) + form = self.get_form() + 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.form + context['note_form'] = self.get_form() return context diff --git a/notes/models.py b/notes/models.py index 64a3851..206473c 100644 --- a/notes/models.py +++ b/notes/models.py @@ -23,7 +23,7 @@ class Note(models.Model): related_name="notes", on_delete=models.CASCADE ) - text = models.TextField() + text = models.TextField("Texte") created_by = models.ForeignKey( 'utilisateurs.Professionnel', blank=True, diff --git a/suivi/notes.py b/suivi/notes.py new file mode 100644 index 0000000..f677591 --- /dev/null +++ b/suivi/notes.py @@ -0,0 +1,13 @@ +from django.db import models +from notes.models import Note + +class Appel(Note): + + entrant = models.BooleanField( "Appel entrant ?") + + def save(self, **kwargs): + print('save', self) + return super().save(**kwargs) + + def note_labels(self): return ["Reçu" if self.entrant else "Émis", self.created_by] + def note_bg_colors(self): return ("warning", "info") diff --git a/suivi/templates/suivi/index.html b/suivi/templates/suivi/index.html index b28b04f..8dfb330 100644 --- a/suivi/templates/suivi/index.html +++ b/suivi/templates/suivi/index.html @@ -1,3 +1,5 @@ - +
+ {% include "suivi/appel_form.html" %} +
diff --git a/suivi/views.py b/suivi/views.py index d7bab5c..4bc6c16 100644 --- a/suivi/views.py +++ b/suivi/views.py @@ -1,12 +1,12 @@ from django.shortcuts import render, reverse - from django.views import generic -from website import decorators as website from sujets.models import Sujet - +from .forms import * +from notes.mixins import NoteFormMixin +from notes.forms import AutoNoteForm # Create your views here. - +from website import decorators as website webpage = website.webpage( ajax=False, permissions=['sujets.view_sujets'], @@ -16,23 +16,37 @@ webpage = website.webpage( @webpage -class IndexView(generic.TemplateView): +class IndexView(NoteFormMixin, generic.TemplateView): class PageInfo: title = "Suivi des bénéficiaires" header = "Suivi" header_small = "Tableau de bord" - #TemplateView + #NoteFormMixin + form_class = AppelForm + success_url = "/suivi/" + #FormView template_name = "suivi/index.html" + def get_initial(self): + return {'created_date': timezone.now().date(), + 'created_time': timezone.now().time()} + -from notes.mixins import SujetNoteFormMixin @webpage -class SuiviSujetView(SujetNoteFormMixin, generic.DetailView): +class SuiviSujetView(NoteFormMixin, generic.DetailView): class PageInfo: title = "Sujet - {{sujet}}" header = "{{sujet}}" header_small = "suivi" + #NoteFormMixin + form_class = AutoNoteForm + def get_success_url(self): + return reverse('suivi:details', kwargs={'pk': self.get_object().pk}) + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['sujet'] = self.get_object() + return kwargs #DetailView model = Sujet template_name = "suivi/details.html" @@ -40,8 +54,6 @@ class SuiviSujetView(SujetNoteFormMixin, generic.DetailView): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.insert_menu("sujets/menu_sujet.html") - def get_success_url(self): - return reverse('suivi:details', kwargs={'pk': self.get_object().pk}) def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['notes'] = self.object.notes.by_date(reverse=True) diff --git a/sujets/forms.py b/sujets/forms.py new file mode 100644 index 0000000..8851e6e --- /dev/null +++ b/sujets/forms.py @@ -0,0 +1,8 @@ +from django.forms import ModelForm + +from .models import Sujet + +class SujetCreateForm(ModelForm): + class Meta: + model = Sujet + fields = ['nom', 'surnom', 'prenom', 'genre', 'premiere_rencontre'] diff --git a/sujets/templates/sujets/menu_sujet.html b/sujets/templates/sujets/menu_sujet.html new file mode 100644 index 0000000..f352e96 --- /dev/null +++ b/sujets/templates/sujets/menu_sujet.html @@ -0,0 +1,6 @@ +{% if user.is_superuser %}{% load bootstrap3 %} +