mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	List pre-registrations (TODO: filter)
This commit is contained in:
		@@ -154,6 +154,8 @@ class WEIRegistration(models.Model):
 | 
				
			|||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    health_issues = models.TextField(
 | 
					    health_issues = models.TextField(
 | 
				
			||||||
 | 
					        blank=True,
 | 
				
			||||||
 | 
					        default="",
 | 
				
			||||||
        verbose_name=_("health issues"),
 | 
					        verbose_name=_("health issues"),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,13 +3,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import django_tables2 as tables
 | 
					import django_tables2 as tables
 | 
				
			||||||
from django.urls import reverse_lazy
 | 
					from django.urls import reverse_lazy
 | 
				
			||||||
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
 | 
					from django_tables2 import A
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import WEIClub
 | 
					from .models import WEIClub, WEIRegistration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WEITable(tables.Table):
 | 
					class WEITable(tables.Table):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    List all clubs.
 | 
					    List all WEI.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        attrs = {
 | 
					        attrs = {
 | 
				
			||||||
@@ -23,3 +25,61 @@ class WEITable(tables.Table):
 | 
				
			|||||||
            'id': lambda record: "row-" + str(record.pk),
 | 
					            'id': lambda record: "row-" + str(record.pk),
 | 
				
			||||||
            'data-href': lambda record: reverse_lazy('wei:wei_detail', args=(record.pk,))
 | 
					            'data-href': lambda record: reverse_lazy('wei:wei_detail', args=(record.pk,))
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WEIRegistrationTable(tables.Table):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    List all WEI registrations.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    user = tables.LinkColumn(
 | 
				
			||||||
 | 
					        'member:user_detail',
 | 
				
			||||||
 | 
					        args=[A('user.pk')],
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    edit = tables.LinkColumn(
 | 
				
			||||||
 | 
					        'wei:wei_detail',
 | 
				
			||||||
 | 
					        args=[A('pk')],
 | 
				
			||||||
 | 
					        verbose_name=_("Edit"),
 | 
				
			||||||
 | 
					        text=_("Edit"),
 | 
				
			||||||
 | 
					        attrs={
 | 
				
			||||||
 | 
					            'a': {
 | 
				
			||||||
 | 
					                'class': 'btn btn-warning'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    validate = tables.LinkColumn(
 | 
				
			||||||
 | 
					        'wei:wei_detail',
 | 
				
			||||||
 | 
					        args=[A('pk')],
 | 
				
			||||||
 | 
					        verbose_name=_("Validate"),
 | 
				
			||||||
 | 
					        text=_("Validate"),
 | 
				
			||||||
 | 
					        attrs={
 | 
				
			||||||
 | 
					            'a': {
 | 
				
			||||||
 | 
					                'class': 'btn btn-success'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    delete = tables.LinkColumn(
 | 
				
			||||||
 | 
					        'wei:wei_detail',
 | 
				
			||||||
 | 
					        args=[A('pk')],
 | 
				
			||||||
 | 
					        verbose_name=_("delete"),
 | 
				
			||||||
 | 
					        text=_("Delete"),
 | 
				
			||||||
 | 
					        attrs={
 | 
				
			||||||
 | 
					            'a': {
 | 
				
			||||||
 | 
					                'class': 'btn btn-danger'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        attrs = {
 | 
				
			||||||
 | 
					            'class': 'table table-condensed table-striped table-hover'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        model = WEIRegistration
 | 
				
			||||||
 | 
					        template_name = 'django_tables2/bootstrap4.html'
 | 
				
			||||||
 | 
					        fields = ('user',)
 | 
				
			||||||
 | 
					        row_attrs = {
 | 
				
			||||||
 | 
					            'class': 'table-row',
 | 
				
			||||||
 | 
					            'id': lambda record: "row-" + str(record.pk),
 | 
				
			||||||
 | 
					            'data-href': lambda record: record.pk
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,9 @@ from note.tables import HistoryTable
 | 
				
			|||||||
from permission.backends import PermissionBackend
 | 
					from permission.backends import PermissionBackend
 | 
				
			||||||
from permission.views import ProtectQuerysetMixin
 | 
					from permission.views import ProtectQuerysetMixin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import WEIClub, WEIRegistration
 | 
					from .models import WEIClub, WEIRegistration, WEIMembership
 | 
				
			||||||
from .forms import WEIForm, WEIRegistrationForm
 | 
					from .forms import WEIForm, WEIRegistrationForm
 | 
				
			||||||
from .tables import WEITable
 | 
					from .tables import WEITable, WEIRegistrationTable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WEIListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
 | 
					class WEIListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
 | 
				
			||||||
@@ -67,15 +67,30 @@ class WEIDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
 | 
				
			|||||||
        history_table = HistoryTable(club_transactions, prefix="history-")
 | 
					        history_table = HistoryTable(club_transactions, prefix="history-")
 | 
				
			||||||
        history_table.paginate(per_page=20, page=self.request.GET.get('history-page', 1))
 | 
					        history_table.paginate(per_page=20, page=self.request.GET.get('history-page', 1))
 | 
				
			||||||
        context['history_list'] = history_table
 | 
					        context['history_list'] = history_table
 | 
				
			||||||
        club_member = Membership.objects.filter(
 | 
					
 | 
				
			||||||
 | 
					        club_member = WEIMembership.objects.filter(
 | 
				
			||||||
            club=club,
 | 
					            club=club,
 | 
				
			||||||
            date_end__gte=datetime.today(),
 | 
					            date_end__gte=datetime.today(),
 | 
				
			||||||
        ).filter(PermissionBackend.filter_queryset(self.request.user, Membership, "view"))
 | 
					        ).filter(PermissionBackend.filter_queryset(self.request.user, WEIMembership, "view"))
 | 
				
			||||||
 | 
					 | 
				
			||||||
        membership_table = MembershipTable(data=club_member, prefix="membership-")
 | 
					        membership_table = MembershipTable(data=club_member, prefix="membership-")
 | 
				
			||||||
        membership_table.paginate(per_page=20, page=self.request.GET.get('membership-page', 1))
 | 
					        membership_table.paginate(per_page=20, page=self.request.GET.get('membership-page', 1))
 | 
				
			||||||
        context['member_list'] = membership_table
 | 
					        context['member_list'] = membership_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        WEIRegistrationTable.base_columns["delete"].visible = False
 | 
				
			||||||
 | 
					        WEIRegistrationTable.base_columns["validate"].visible = False
 | 
				
			||||||
 | 
					        all_registrations = WEIRegistration.objects.filter(
 | 
				
			||||||
 | 
					            PermissionBackend.filter_queryset(self.request.user, WEIRegistration, "view"))
 | 
				
			||||||
 | 
					        all_registrations_table = WEIRegistrationTable(data=all_registrations, prefix="all-registration-")
 | 
				
			||||||
 | 
					        all_registrations_table.paginate(per_page=20, page=self.request.GET.get('membership-page', 1))
 | 
				
			||||||
 | 
					        context['all_registrations'] = all_registrations_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        WEIRegistrationTable.base_columns["delete"].visible = True
 | 
				
			||||||
 | 
					        WEIRegistrationTable.base_columns["validate"].visible = True
 | 
				
			||||||
 | 
					        pre_registrations = all_registrations.filter(membership=None)
 | 
				
			||||||
 | 
					        pre_registrations_table = WEIRegistrationTable(data=pre_registrations, prefix="pre-registration-")
 | 
				
			||||||
 | 
					        pre_registrations_table.paginate(per_page=20, page=self.request.GET.get('membership-page', 1))
 | 
				
			||||||
 | 
					        context['pre_registrations'] = pre_registrations_table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Check if the user has the right to create a membership, to display the button.
 | 
					        # Check if the user has the right to create a membership, to display the button.
 | 
				
			||||||
        empty_membership = Membership(
 | 
					        empty_membership = Membership(
 | 
				
			||||||
            club=club,
 | 
					            club=club,
 | 
				
			||||||
@@ -115,9 +130,9 @@ class WEIRegisterView(ProtectQuerysetMixin, LoginRequiredMixin, CreateView):
 | 
				
			|||||||
        return form
 | 
					        return form
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def form_valid(self, form):
 | 
					    def form_valid(self, form):
 | 
				
			||||||
        ret = super().form_valid(form)
 | 
					        form.instance.wei = WEIClub.objects.get(pk=self.kwargs["wei_pk"])
 | 
				
			||||||
        return ret
 | 
					        return super().form_valid(form)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_success_url(self):
 | 
					    def get_success_url(self):
 | 
				
			||||||
        self.object.refresh_from_db()
 | 
					        self.object.refresh_from_db()
 | 
				
			||||||
        return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.pk})
 | 
					        return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.wei.pk})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,6 +57,8 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<hr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% if member_list.data %}
 | 
					{% if member_list.data %}
 | 
				
			||||||
    <div class="card">
 | 
					    <div class="card">
 | 
				
			||||||
        <div class="card-header position-relative" id="clubListHeading">
 | 
					        <div class="card-header position-relative" id="clubListHeading">
 | 
				
			||||||
@@ -81,4 +83,34 @@
 | 
				
			|||||||
            {% render_table history_list %}
 | 
					            {% render_table history_list %}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <hr>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if pre_registrations.data %}
 | 
				
			||||||
 | 
					    <div class="card">
 | 
				
			||||||
 | 
					        <div class="card-header position-relative" id="historyListHeading">
 | 
				
			||||||
 | 
					            <a class="btn btn-link stretched-link font-weight-bold">
 | 
				
			||||||
 | 
					                <i class="fa fa-user-plus"></i> {% trans "Unvalidated registrations" %}
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div id="history_list">
 | 
				
			||||||
 | 
					            {% render_table pre_registrations %}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <hr>
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% if all_registrations.data or True %}
 | 
				
			||||||
 | 
					    <div class="card">
 | 
				
			||||||
 | 
					        <div class="card-header position-relative" id="historyListHeading">
 | 
				
			||||||
 | 
					            <a class="btn btn-link stretched-link font-weight-bold">
 | 
				
			||||||
 | 
					                <i class="fa fa-user-plus"></i> {% trans "All registrations" %}
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div id="history_list">
 | 
				
			||||||
 | 
					            {% render_table all_registrations %}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user