From e657f2f45cfdd05d7731bf134cbb9e67d48d00ea Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Thu, 16 Dec 2021 22:38:32 +0100 Subject: [PATCH] Use class-based view --- aleksis/core/urls.py | 2 +- aleksis/core/views.py | 41 +++++++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/aleksis/core/urls.py b/aleksis/core/urls.py index 35fa106c1..753d95085 100644 --- a/aleksis/core/urls.py +++ b/aleksis/core/urls.py @@ -63,7 +63,7 @@ urlpatterns = [ path("person/<int:id_>/", views.person, name="person_by_id"), path("person/<int:pk>/edit/", views.EditPersonView.as_view(), name="edit_person_by_id"), path("person/<int:id_>/delete/", views.delete_person, name="delete_person_by_id"), - path("person/<int:id_>/invite/", views.invite_person_by_id, name="invite_person_by_id"), + path("person/<int:id_>/invite/", views.InvitePersonByID.as_view(), name="invite_person_by_id"), path("groups", views.groups, name="groups"), path("groups/additional_fields", views.additional_fields, name="additional_fields"), path("groups/child_groups/", views.groups_child_groups, name="groups_child_groups"), diff --git a/aleksis/core/views.py b/aleksis/core/views.py index 8e7bc9a1d..69c1f565a 100644 --- a/aleksis/core/views.py +++ b/aleksis/core/views.py @@ -1410,27 +1410,32 @@ class AccountRegisterView(SignupView): return kwargs -def invite_person_by_id(request: HttpRequest, id_: int) -> HttpResponse: - context = {} +class InvitePersonByID(View): + """Custom view to invite person by it.""" - person = Person.objects.get(id=id_) + success_url = reverse_lazy("persons") - if not PersonInvitation.objects.filter(email=person.email).exists(): - length = get_site_preferences()["auth__invite_code_length"] - packet_size = get_site_preferences()["auth__invite_code_packet_size"] - key = generate_random_code(length, packet_size) - invite = PersonInvitation.objects.create(person=person, key=key) - if person.email: - invite.email = person.email - invite.inviter = request.user - invite.save() - - invite.send_invitation(request) - messages.success(request, _("Person was invited successfully.")) - else: - messages.success(request, _("Person was already invited.")) + def get(self, request, *args, **kwargs): + self.object = self.get_object() + success_url = reverze_lazy("person_by_id", self.object.pk) + person = self.object + + if not PersonInvitation.objects.filter(email=person.email).exists(): + length = get_site_preferences()["auth__invite_code_length"] + packet_size = get_site_preferences()["auth__invite_code_packet_size"] + key = generate_random_code(length, packet_size) + invite = PersonInvitation.objects.create(person=person, key=key) + if person.email: + invite.email = person.email + invite.inviter = self.request.user + invite.save() + + invite.send_invitation(self.request) + messages.success(self.request, _("Person was invited successfully.")) + else: + messages.success(self.request, _("Person was already invited.")) - return redirect("person_by_id", person.pk) + return HttpResponseRedirect(success_url) class LoginView(AllAuthLoginView): -- GitLab