diff --git a/backend/donations/views/ngo_account/causes.py b/backend/donations/views/ngo_account/causes.py index 4b726b51..cc4866ba 100644 --- a/backend/donations/views/ngo_account/causes.py +++ b/backend/donations/views/ngo_account/causes.py @@ -30,12 +30,23 @@ def get_context_data(self, **kwargs): ngo: Ngo = context["ngo"] + cause: Cause | None = self.get_cause(ngo=ngo, cause_id=kwargs.get("cause_id")) + context["cause"] = cause + if cause: + context["absolute_cause_url"] = self.get_absolute_cause_url(cause_slug=cause.slug) + context["info_banner_items"] = self.get_ngo_cause_banner_list_items(ngo) context["visibility_choices"] = CauseVisibilityChoices.as_str_pretty() context["ngo_has_tax_account"] = ngo.has_online_tax_account return context + def get_absolute_cause_url(self, cause_slug: str) -> str: + return self.request.build_absolute_uri(reverse("twopercent", kwargs={"cause_slug": cause_slug})) + + def get_cause(self, *, ngo: Ngo, cause_id: int | None) -> Cause | None: + raise NotImplementedError + def get_ngo_cause_banner_list_items(self, ngo: Ngo) -> list[str]: banner_list_items = [ _("Organization name: ") + ngo.name, @@ -176,6 +187,9 @@ def get_context_data(self, **kwargs): return context + def get_cause(self, *, ngo: Ngo, cause_id: int | None) -> Cause | None: + return None + @method_decorator(login_required(login_url=reverse_lazy("login"))) def get(self, request, *args, **kwargs): user: User = request.user @@ -208,7 +222,7 @@ def get_context_data(self, **kwargs): page_title = _("Edit cause") - context["cause"] = self.get_cause(cause_id=kwargs["cause_id"], ngo=context["ngo"]) + context["cause"] = self.get_cause(ngo=context["ngo"], cause_id=kwargs["cause_id"]) context["django_form"] = CauseForm(instance=context["cause"], for_main_cause=self.is_main_cause) context["page_title"] = f'{page_title}: "{context["cause"].name}"' @@ -224,11 +238,8 @@ def get_context_data(self, **kwargs): return context - def get_cause(self, cause_id: int, ngo: Ngo) -> Cause: - if not ngo: - raise Http404 - - if not cause_id: + def get_cause(self, *, ngo: Ngo, cause_id: int | None) -> Cause | None: + if not (ngo and cause_id): raise Http404 cause = Cause.objects.filter(pk=cause_id, ngo=ngo).first() diff --git a/backend/donations/views/ngo_account/my_organization.py b/backend/donations/views/ngo_account/my_organization.py index b1b0e3c5..646a7798 100644 --- a/backend/donations/views/ngo_account/my_organization.py +++ b/backend/donations/views/ngo_account/my_organization.py @@ -2,6 +2,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.core.exceptions import PermissionDenied +from django.http import Http404 from django.shortcuts import redirect, render from django.urls import reverse, reverse_lazy from django.utils.decorators import method_decorator @@ -164,7 +165,6 @@ def __init__(self, *args, **kwargs): def get_context_data(self, **kwargs): context = super().get_context_data(is_main_cause=True, **kwargs) - context["cause"] = self.get_main_cause(context.get("ngo")) context["is_main_cause"] = self.is_main_cause context["django_form"] = CauseForm(instance=context["cause"], for_main_cause=self.is_main_cause) @@ -179,7 +179,10 @@ def get_context_data(self, **kwargs): context["active_tab"] = self.tab_title return context - def get_main_cause(self, ngo: Ngo) -> Cause: + def get_cause(self, *, ngo: Ngo, cause_id: int | None) -> Cause | None: + if not ngo: + raise Http404 + return Cause.objects.filter(ngo=ngo, is_main=True).first() @method_decorator(login_required(login_url=reverse_lazy("login"))) diff --git a/backend/templates/v2/components/copy-to-clipboard/icon_and_text.html b/backend/templates/v2/components/copy-to-clipboard/icon_and_text.html new file mode 100644 index 00000000..8db56f1a --- /dev/null +++ b/backend/templates/v2/components/copy-to-clipboard/icon_and_text.html @@ -0,0 +1,31 @@ +{% extends "components/copy-to-clipboard/base.html" %} + +{% load i18n %} + + +{% block clickable_content %} + + + + {% if button_text %} + {{ button_text }} + {% else %} + {{ block.super }} + {% endif %} + + +{% endblock %} diff --git a/backend/templates/v2/ngo-account/components/form-title.html b/backend/templates/v2/ngo-account/components/form-title.html index 0310e846..dcdea0bd 100644 --- a/backend/templates/v2/ngo-account/components/form-title.html +++ b/backend/templates/v2/ngo-account/components/form-title.html @@ -8,6 +8,8 @@