diff --git a/maraudes/admin.py b/maraudes/admin.py index 85c357d..ce96178 100644 --- a/maraudes/admin.py +++ b/maraudes/admin.py @@ -1,9 +1,8 @@ from django.contrib import admin -from .models import * +from .models import Lieu, Rencontre, Maraude, Planning from .notes import Observation - # Basic registration admin.site.register(Lieu) diff --git a/maraudes/forms.py b/maraudes/forms.py index bf4d13c..c65be1a 100644 --- a/maraudes/forms.py +++ b/maraudes/forms.py @@ -1,11 +1,12 @@ +import calendar from django import forms from django.utils.translation import gettext from django.utils import timezone from django_select2.forms import Select2Widget from notes.forms import UserNoteForm, SimpleNoteForm -from notes.models import Sujet, GENRE_CHOICES -from .models import * -from .notes import * +from notes.models import Note, Sujet, GENRE_CHOICES +from .models import Maraude, Rencontre +from .notes import Observation, Appel, Signalement MONTHS = [ @@ -69,6 +70,12 @@ class MonthSelectForm(forms.Form): self.fields['year'].initial = year +class NoteForm(UserNoteForm): + class Meta(UserNoteForm.Meta): + model = Note + fields = ['sujet', 'text'] + + class AppelForm(UserNoteForm): class Meta(UserNoteForm.Meta): model = Appel diff --git a/maraudes/models.py b/maraudes/models.py index d0a91f8..4f5970a 100644 --- a/maraudes/models.py +++ b/maraudes/models.py @@ -128,9 +128,6 @@ class Maraude(models.Model): class Meta: verbose_name = "Maraude" ordering = ['date'] - permissions = ( - ('view_maraudes', "Accès à l'application 'maraudes'"), - ) def __str__(self): return '%(dayname)s %(day)i %(month)s' % { @@ -141,9 +138,7 @@ class Maraude(models.Model): def est_terminee(self): """ Indique si la maraude est considérée comme terminée """ - if self.heure_fin is not None: - return True - return False + return self.heure_fin is not None est_terminee.admin_order_field = 'date' est_terminee.boolean = True est_terminee.short_description = 'Terminée ?' diff --git a/maraudes/notes.py b/maraudes/notes.py index be38acc..1ebc0b0 100644 --- a/maraudes/notes.py +++ b/maraudes/notes.py @@ -1,16 +1,15 @@ from django.db import models from notes.models import Note - # Extends 'notes' module - class Observation(Note): """ Note dans le cadre d'une rencontre """ - rencontre = models.ForeignKey('maraudes.Rencontre', - models.CASCADE, - related_name="observations") + rencontre = models.ForeignKey( + 'maraudes.Rencontre', + models.CASCADE, + related_name="observations") # Note attributes proxies def note_author(self): return self.rencontre.maraude.referent @@ -21,7 +20,7 @@ class Observation(Note): def note_labels(self): return [self.rencontre.lieu, self.rencontre.heure_debut] - def note_bg_colors(self): return "info", "info" + def note_bg_colors(self): return "info", "dark" class Appel(Note): @@ -37,7 +36,9 @@ class Appel(Note): class Signalement(Note): - source = models.ForeignKey("utilisateurs.Organisme", on_delete=models.CASCADE) + source = models.ForeignKey( + "utilisateurs.Organisme", + on_delete=models.CASCADE) def note_labels(self): return [self.source, self.created_by] diff --git a/maraudes/templates/maraudes/index.html b/maraudes/templates/maraudes/index.html index afb35e6..528e296 100644 --- a/maraudes/templates/maraudes/index.html +++ b/maraudes/templates/maraudes/index.html @@ -93,7 +93,9 @@
-
Note
+
+ {% include "notes/form_note_inner.html" with form=note_form %} +
{% include "notes/form_appel_inner.html" with form=appel_form %}
diff --git a/maraudes/urls.py b/maraudes/urls.py index d33d765..1fef096 100644 --- a/maraudes/urls.py +++ b/maraudes/urls.py @@ -1,16 +1,16 @@ # Maraudes URLconf -from django.conf.urls import url +from django.urls import path from . import views app_name = "maraudes" urlpatterns = [ - url(r'^$', views.IndexView.as_view(), name="index"), - url(r'^compte-rendu$', views.redirect_to_current_compterendu, name="cr-link"), - url(r'^planning/$', views.PlanningView.as_view(), name="planning"), - url(r'^lieu/create/$', views.LieuCreateView.as_view(), name="lieu-create"), - url(r'^(?P[0-9]+)/create/$', views.CompteRenduCreateView.as_view(), name="create"), - url(r'^(?P[0-9]+)/finalize/$', views.FinalizeView.as_view(), name="finalize"), + path('', views.IndexView.as_view(), name="index"), + path('compte-rendu', views.redirect_to_current_compterendu, name="cr-link"), + path('planning/', views.PlanningView.as_view(), name="planning"), + path('lieu/create/', views.LieuCreateView.as_view(), name="lieu-create"), + path('/create/', views.CompteRenduCreateView.as_view(), name="create"), + path('/finalize/', views.FinalizeView.as_view(), name="finalize"), ] diff --git a/maraudes/views.py b/maraudes/views.py index a3495cd..2afeab9 100644 --- a/maraudes/views.py +++ b/maraudes/views.py @@ -17,7 +17,7 @@ from .notes import Signalement from .forms import (RencontreForm, ObservationInlineFormSet, MaraudeHiddenDateForm, MonthSelectForm, - AppelForm, SignalementForm, + NoteForm, AppelForm, SignalementForm, SendMailForm) from notes.mixins import NoteFormMixin @@ -64,6 +64,7 @@ class IndexView(NoteFormMixin, MaraudeurMixin, generic.TemplateView): # NoteFormMixin forms = { + 'note': NoteForm, 'appel': AppelForm, 'signalement': SignalementForm, } diff --git a/notes/templates/notes/form_appel_inner.html b/notes/templates/notes/form_appel_inner.html index 03adf80..d2b2e9b 100644 --- a/notes/templates/notes/form_appel_inner.html +++ b/notes/templates/notes/form_appel_inner.html @@ -6,7 +6,10 @@ {% bootstrap_field form.created_time size=sz form_group_class=grp_cls layout=layout %} {% endwith %}
- {% bootstrap_field form.entrant size=sz%} +
+ + +

{% bootstrap_field form.sujet show_label=False %} {% bootstrap_field form.text show_label=False %} diff --git a/notes/templates/notes/form_note_inner.html b/notes/templates/notes/form_note_inner.html new file mode 100644 index 0000000..c6b548a --- /dev/null +++ b/notes/templates/notes/form_note_inner.html @@ -0,0 +1,10 @@ +{% load bootstrap4 %} +
{% csrf_token %} + {% bootstrap_field form.sujet show_label=False %} + {% bootstrap_field form.text show_label=False %} +
+ {% bootstrap_button "Ajouter la note" button_type="submit" button_class="btn-primary btn-sm btn-block" %} +
+
+{{ form.media.js }}{{ form.media.css }} + diff --git a/urls.py b/urls.py index 467f10b..6d43fd3 100644 --- a/urls.py +++ b/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import url, include +from django.urls import path, include from django.contrib import admin from website import urls as website_urls urlpatterns = [ - url(r'^admin/', admin.site.urls), - url(r'^', include(website_urls)), + path('admin/', admin.site.urls), + path('', include(website_urls)), ] diff --git a/utilisateurs/models.py b/utilisateurs/models.py index 80edb36..0b0c611 100644 --- a/utilisateurs/models.py +++ b/utilisateurs/models.py @@ -15,7 +15,8 @@ else: try: assert(isinstance(settings.MARAUDEURS.get('organisme'), dict)) except: - raise ImproperlyConfigured("'organisme' key of MARAUDEURS settings is not a dict !") + raise ImproperlyConfigured( + "'organisme' key of MARAUDEURS settings is not a dict !") def get_email_suffix(organisme): @@ -25,7 +26,6 @@ def get_email_suffix(organisme): return organisme.email.split("@")[1] - class Organisme(models.Model): """ Organisme : Association, Entreprise, Service public, ...""" @@ -43,10 +43,10 @@ class Organisme(models.Model): class Professionnel(User): """ Professionnel d'un organisme """ - organisme = models.ForeignKey(Organisme, - models.CASCADE, - related_name="professionnels", - ) + organisme = models.ForeignKey( + Organisme, + on_delete=models.CASCADE, + related_name="professionnels") def make_username(self): """ Build the username for this Professionel instance. Must be overriden."""