diff --git a/apps/note/signals.py b/apps/note/signals.py index 37737a45d7fe671dda9ce214af24820b6292872e..115ddab9d7887c3bac34f6f25bb8b43bd2f0bbe2 100644 --- a/apps/note/signals.py +++ b/apps/note/signals.py @@ -17,7 +17,7 @@ def save_user_note(instance, raw, **_kwargs): instance.note.save() -def save_club_note(instance, created, raw, **_kwargs): +def save_club_note(instance, raw, **_kwargs): """ Hook to create and save a note when a club is updated """ @@ -25,7 +25,6 @@ def save_club_note(instance, created, raw, **_kwargs): # When provisionning data, do not try to autocreate return - if created: - from .models import NoteClub - NoteClub.objects.create(club=instance) + from .models import NoteClub + NoteClub.objects.get_or_create(club=instance) instance.note.save() diff --git a/apps/wei/urls.py b/apps/wei/urls.py index f8981ed823892a01ec8bca2ab168febd0385ed0d..bce87e1f3694410230f1d310f787117bb175ea13 100644 --- a/apps/wei/urls.py +++ b/apps/wei/urls.py @@ -3,12 +3,13 @@ from django.urls import path -from .views import WEIListView, WEIDetailView, WEIUpdateView +from .views import WEIListView, WEICreateView, WEIDetailView, WEIUpdateView app_name = 'wei' urlpatterns = [ path('list/', WEIListView.as_view(), name="wei_list"), + path('create/', WEICreateView.as_view(), name="wei_create"), path('detail/<int:pk>/', WEIDetailView.as_view(), name="wei_detail"), path('update/<int:pk>/', WEIUpdateView.as_view(), name="wei_update"), ] diff --git a/apps/wei/views.py b/apps/wei/views.py index 0ead8b941add840e442b8fc85e1f0f34f8716ce0..59059d4c49ed90b40e427d6f516505cc57d83e39 100644 --- a/apps/wei/views.py +++ b/apps/wei/views.py @@ -7,11 +7,11 @@ from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.models import User from django.db.models import Q from django.urls import reverse_lazy -from django.views.generic import DetailView, UpdateView +from django.views.generic import DetailView, UpdateView, CreateView from django_tables2 import SingleTableView -from member.models import Membership +from member.models import Membership, Club from member.tables import MembershipTable -from note.models import Transaction +from note.models import Transaction, NoteClub from note.tables import HistoryTable from permission.backends import PermissionBackend from permission.views import ProtectQuerysetMixin @@ -29,6 +29,26 @@ class WEIListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView): table_class = WEITable +class WEICreateView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView): + """ + Create WEI + """ + model = WEIClub + form_class = WEIForm + + def form_valid(self, form): + form.instance.requires_membership = True + form.instance.parent_club = Club.objects.get(name="Kfet") + ret = super().form_valid(form) + NoteClub.objects.create(club=form.instance) + return ret + + def get_success_url(self): + self.object.refresh_from_db() + return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.pk}) + + + class WEIDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): """ View WEI information diff --git a/templates/wei/weiclub_list.html b/templates/wei/weiclub_list.html index 89591beb410f8dc9a5ebd2feb7185389b44ae3e2..fd8e0dd9a6880cbdf8836b89ac36528bb733f0d2 100644 --- a/templates/wei/weiclub_list.html +++ b/templates/wei/weiclub_list.html @@ -9,7 +9,7 @@ </h4> <input class="form-control mx-auto w-25" type="text" onkeyup="search_field_moved()" id="search_field"/> <hr> - <a class="btn btn-primary text-center my-4" href="{% url 'member:club_create' %}">{% trans "Create WEI" %}</a> + <a class="btn btn-primary text-center my-4" href="{% url 'wei:wei_create' %}">{% trans "Create WEI" %}</a> </div> </div> <div class="row justify-content-center">