Kod źródłowy modułu poradnia.events.forms
from atom.ext.crispy_forms.forms import FormHorizontalMixin, SingleButtonMixin
from atom.forms import AuthorMixin
from django import forms
from django.urls import reverse
from poradnia.letters.forms import PartialMixin
from poradnia.users.models import User
from .models import Event
[dokumentacja]
class EventForm(
PartialMixin, AuthorMixin, FormHorizontalMixin, SingleButtonMixin, forms.ModelForm
):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user")
self.case = kwargs.pop("case")
super().__init__(*args, **kwargs)
self.helper.form_action = reverse(
"events:add", kwargs={"case_pk": self.case.pk}
)
if kwargs.get("instance", False):
self.helper.form_action = kwargs["instance"].get_edit_url()
[dokumentacja]
def save(self, commit=True, *args, **kwargs):
obj = super().save(commit=False, *args, **kwargs)
created = obj.pk is None
obj.case = self.case
obj.save()
verb = "created" if created else "updated"
obj.send_notification(
actor=self.user,
user_qs=(
User.objects.filter(is_staff=True).distinct()
& self.case.get_users_with_perms()
),
verb=verb,
)
return obj
class Meta:
# Set this form to use the User model.
model = Event
fields = ("deadline", "completed", "public", "time", "text")
widgets = {"time": forms.DateTimeInput(attrs={"autocomplete": "off"})}