2021-02-28 22:00:11 +00:00
|
|
|
from django.contrib.auth.decorators import login_required
|
2023-01-02 22:06:00 +00:00
|
|
|
from django.contrib.auth.decorators import permission_required
|
2023-01-03 16:00:07 +00:00
|
|
|
from django.utils.translation import gettext_lazy as _
|
2023-01-02 22:06:00 +00:00
|
|
|
from zen_queries import render
|
2021-02-28 22:00:11 +00:00
|
|
|
|
2023-01-03 16:00:07 +00:00
|
|
|
from .permissions import ADMINISTRATE_MEMBERS
|
2023-01-03 20:36:34 +00:00
|
|
|
from .selectors import get_member
|
|
|
|
from .selectors import get_members
|
2023-01-02 22:06:00 +00:00
|
|
|
from .selectors import get_memberships
|
2023-01-14 22:33:58 +00:00
|
|
|
from .selectors import get_subscription_periods
|
2023-01-03 16:00:07 +00:00
|
|
|
from utils.view_utils import render_list
|
2023-01-03 20:36:34 +00:00
|
|
|
from utils.view_utils import RowAction
|
2021-02-28 22:00:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
def membership_overview(request):
|
2023-01-02 22:06:00 +00:00
|
|
|
memberships = get_memberships(user=request.user)
|
2021-02-28 22:00:11 +00:00
|
|
|
current_membership = memberships.current()
|
|
|
|
previous_memberships = memberships.previous()
|
|
|
|
|
2023-01-02 21:13:25 +00:00
|
|
|
current_period = current_membership.period.period if current_membership else None
|
|
|
|
|
2023-01-21 15:20:50 +00:00
|
|
|
context = {
|
2022-08-09 12:39:02 +00:00
|
|
|
"current_membership": current_membership,
|
2023-01-02 21:13:25 +00:00
|
|
|
"current_period": current_period,
|
2022-08-09 12:39:02 +00:00
|
|
|
"previous_memberships": previous_memberships,
|
|
|
|
}
|
2021-02-28 22:00:11 +00:00
|
|
|
|
2023-01-02 21:13:25 +00:00
|
|
|
return render(
|
|
|
|
request=request,
|
2023-01-02 22:06:00 +00:00
|
|
|
template_name="membership/membership_overview.html",
|
|
|
|
context=context,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
2023-01-03 16:00:07 +00:00
|
|
|
@permission_required(ADMINISTRATE_MEMBERS.path)
|
|
|
|
def members_admin(request):
|
2023-01-03 20:36:34 +00:00
|
|
|
users = get_members()
|
2023-01-02 22:06:00 +00:00
|
|
|
|
2023-01-03 16:00:07 +00:00
|
|
|
return render_list(
|
2023-01-02 22:06:00 +00:00
|
|
|
request=request,
|
2023-01-12 16:31:34 +00:00
|
|
|
paginate_by=20,
|
2023-01-03 16:00:07 +00:00
|
|
|
objects=users,
|
|
|
|
columns=[
|
|
|
|
("username", _("Username")),
|
|
|
|
("first_name", _("First name")),
|
|
|
|
("last_name", _("Last name")),
|
|
|
|
("email", _("Email")),
|
2023-01-03 20:36:34 +00:00
|
|
|
("active_membership", _("Active membership")),
|
2023-01-03 16:00:07 +00:00
|
|
|
],
|
2023-01-03 20:36:34 +00:00
|
|
|
row_actions=[
|
|
|
|
RowAction(
|
|
|
|
label=_("View"),
|
|
|
|
url_name="admin-members-detail",
|
|
|
|
url_kwargs={"member_id": "id"},
|
2023-01-11 20:55:58 +00:00
|
|
|
),
|
2023-01-03 20:36:34 +00:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
@permission_required(ADMINISTRATE_MEMBERS.path)
|
|
|
|
def members_admin_detail(request, member_id):
|
|
|
|
member = get_member(member_id=member_id)
|
2023-01-14 22:33:58 +00:00
|
|
|
subscription_periods = get_subscription_periods(member=member)
|
2023-01-03 20:36:34 +00:00
|
|
|
|
2023-01-21 15:20:50 +00:00
|
|
|
context = {
|
2023-01-14 22:33:58 +00:00
|
|
|
"member": member,
|
|
|
|
"subscription_periods": subscription_periods,
|
|
|
|
}
|
2023-01-03 20:36:34 +00:00
|
|
|
|
|
|
|
return render(
|
|
|
|
request=request,
|
|
|
|
template_name="membership/members_admin_detail.html",
|
|
|
|
context=context,
|
2023-01-02 21:13:25 +00:00
|
|
|
)
|