1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-24 03:08:47 +02:00

Merge branch 'explicit>implicit' into 'master'

Explicit>implicit

See merge request bde/nk20!75
This commit is contained in:
Pierre-antoine Comby
2020-04-09 22:41:04 +02:00
3 changed files with 43 additions and 38 deletions

View File

@ -104,6 +104,12 @@ class Activity(models.Model):
class Entry(models.Model):
"""
Register the entry of someone:
- a member with a :model:`note.NoteUser`
- or a :model:`activity.Guest`
In the case of a Guest Entry, the inviter note is also save.
"""
activity = models.ForeignKey(
Activity,
on_delete=models.PROTECT,
@ -133,8 +139,7 @@ class Entry(models.Model):
verbose_name = _("entry")
verbose_name_plural = _("entries")
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
def save(self, *args,**kwargs):
qs = Entry.objects.filter(~Q(pk=self.pk), activity=self.activity, note=self.note, guest=self.guest)
if qs.exists():
@ -148,7 +153,7 @@ class Entry(models.Model):
if self.note.balance < 0:
raise ValidationError(_("The balance is negative."))
ret = super().save(force_insert, force_update, using, update_fields)
ret = super().save(*args,**kwargs)
if insert and self.guest:
GuestTransaction.objects.create(

View File

@ -40,15 +40,15 @@ class ActivityListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView
return super().get_queryset().reverse()
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
context = super().get_context_data(**kwargs)
ctx['title'] = _("Activities")
context['title'] = _("Activities")
upcoming_activities = Activity.objects.filter(date_end__gt=datetime.now())
ctx['upcoming'] = ActivityTable(data=upcoming_activities
context['upcoming'] = ActivityTable(data=upcoming_activities
.filter(PermissionBackend.filter_queryset(self.request.user, Activity, "view")))
return ctx
return context
class ActivityDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
@ -56,15 +56,15 @@ class ActivityDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
context_object_name = "activity"
def get_context_data(self, **kwargs):
ctx = super().get_context_data()
context = super().get_context_data()
table = GuestTable(data=Guest.objects.filter(activity=self.object)
.filter(PermissionBackend.filter_queryset(self.request.user, Guest, "view")))
ctx["guests"] = table
context["guests"] = table
ctx["activity_started"] = datetime.now(timezone.utc) > self.object.date_start
context["activity_started"] = datetime.now(timezone.utc) > self.object.date_start
return ctx
return context
class ActivityUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
@ -99,11 +99,11 @@ class ActivityEntryView(LoginRequiredMixin, TemplateView):
template_name = "activity/activity_entry.html"
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
context = super().get_context_data(**kwargs)
activity = Activity.objects.filter(PermissionBackend.filter_queryset(self.request.user, Activity, "view"))\
.get(pk=self.kwargs["pk"])
ctx["activity"] = activity
context["activity"] = activity
matched = []
@ -146,16 +146,16 @@ class ActivityEntryView(LoginRequiredMixin, TemplateView):
matched.append(note)
table = EntryTable(data=matched)
ctx["table"] = table
context["table"] = table
ctx["entries"] = Entry.objects.filter(activity=activity)
context["entries"] = Entry.objects.filter(activity=activity)
ctx["title"] = _('Entry for activity "{}"').format(activity.name)
ctx["noteuser_ctype"] = ContentType.objects.get_for_model(NoteUser).pk
ctx["notespecial_ctype"] = ContentType.objects.get_for_model(NoteSpecial).pk
ctx["activities_open"] = Activity.objects.filter(open=True).filter(
context["title"] = _('Entry for activity "{}"').format(activity.name)
context["noteuser_ctype"] = ContentType.objects.get_for_model(NoteUser).pk
context["notespecial_ctype"] = ContentType.objects.get_for_model(NoteSpecial).pk
context["activities_open"] = Activity.objects.filter(open=True).filter(
PermissionBackend.filter_queryset(self.request.user, Activity, "view")).filter(
PermissionBackend.filter_queryset(self.request.user, Activity, "change")).all()
return ctx
return context