Add feature flag for bulk member upload: update MemberLoadView, templates, and settings to use mass_upload flag with django-waffle.

This commit is contained in:
2026-04-12 12:18:24 +02:00
parent b71bc2afc0
commit 4e4fe62f11
3 changed files with 11 additions and 4 deletions

View File

@@ -156,3 +156,5 @@ PHONENUMBER_DEFAULT_FORMAT = "INTERNATIONAL"
PHONENUMBER_DEFAULT_REGION = config("CM_CLUB_COUNTRY_CODE", default="BE", cast=str) PHONENUMBER_DEFAULT_REGION = config("CM_CLUB_COUNTRY_CODE", default="BE", cast=str)
TAILWIND_APP_NAME = "theme" TAILWIND_APP_NAME = "theme"
WAFFLE_CREATE_MISSING_FLAGS = True

View File

@@ -10,6 +10,7 @@ from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, DeleteView, FormView, UpdateView from django.views.generic import CreateView, DeleteView, FormView, UpdateView
from django_filters.views import FilterView from django_filters.views import FilterView
from rules.contrib.views import PermissionRequiredMixin from rules.contrib.views import PermissionRequiredMixin
from waffle.mixins import WaffleFlagMixin
from members.filters import MemberFilter from members.filters import MemberFilter
from members.forms import MassUploadForm, MemberForm from members.forms import MassUploadForm, MemberForm
@@ -114,7 +115,7 @@ class MemberDeleteView(HTMXViewMixin, PermissionRequiredMixin, SuccessMessageMix
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
class MemberLoadView(PermissionRequiredMixin, HTMXViewMixin, SuccessMessageMixin, FormView): class MemberLoadView(PermissionRequiredMixin, HTMXViewMixin, SuccessMessageMixin, WaffleFlagMixin, FormView):
form_class = MassUploadForm form_class = MassUploadForm
permission_required = "members.add_member" permission_required = "members.add_member"
permission_denied_message = _("You do not have permission to view this page.") permission_denied_message = _("You do not have permission to view this page.")
@@ -123,6 +124,7 @@ class MemberLoadView(PermissionRequiredMixin, HTMXViewMixin, SuccessMessageMixin
partial_name = "members/member_load.html#content" partial_name = "members/member_load.html#content"
menu_highlight = "members" menu_highlight = "members"
template_name = "members/member_load.html" template_name = "members/member_load.html"
waffle_flag = "mass_upload"
def handle_no_permission(self) -> HttpResponseRedirect: def handle_no_permission(self) -> HttpResponseRedirect:
messages.error(self.request, self.get_permission_denied_message()) messages.error(self.request, self.get_permission_denied_message())

View File

@@ -4,6 +4,7 @@
{% load form_field %} {% load form_field %}
{% load avatar %} {% load avatar %}
{% load pagination %} {% load pagination %}
{% load waffle_tags %}
{% block content %} {% block content %}
{% partialdef content inline %} {% partialdef content inline %}
@@ -59,9 +60,11 @@
</div> </div>
<div class="add"> <div class="add">
<a class="btn btn-accent btn-sm grow hidden lg:flex" href="{% url "backend:members:load" %}" hx-get="{% url "backend:members:load" %}" hx-target="#content"> {% flag "mass_upload" %}
<i class="fa-solid fa-file-upload"></i>{% translate "Load members from file" %} <a class="btn btn-accent btn-sm grow hidden lg:flex" href="{% url "backend:members:load" %}" hx-get="{% url "backend:members:load" %}" hx-target="#content">
</a> <i class="fa-solid fa-file-upload"></i>{% translate "Load members from file" %}
</a>
{% endflag %}
<a class="btn btn-neutral btn-outline btn-sm grow" href="{% url "backend:members:add" %}" hx-get="{% url "backend:members:add" %}" hx-target="#content"> <a class="btn btn-neutral btn-outline btn-sm grow" href="{% url "backend:members:add" %}" hx-get="{% url "backend:members:add" %}" hx-target="#content">
<i class="fa-solid fa-plus"></i>{% translate "Add member" %} <i class="fa-solid fa-plus"></i>{% translate "Add member" %}