Files
fet2020/fet2020/members/views.py
2025-01-27 01:02:42 +01:00

75 lines
1.9 KiB
Python

import logging
from django.db.models import F
from django.http import Http404
from django.shortcuts import render
from .models import JobGroup, JobMember, Member
logger = logging.getLogger(__name__)
def index(request):
members = Member.all_members.filter(role=Member.MemberRole.ACTIVE)
context = {
"members": members,
}
return render(request, "members/members.html", context)
def jobs(request, slug=None):
try:
description = JobGroup.objects.filter(slug=slug).values().first()["description"]
except Exception:
logger.info("Wrong job '%s'", slug)
raise Http404("wrong job")
job_members = JobMember.active_member.get_all(slug=slug).order_by(
F("job__order").asc(nulls_last=True),
"job__name",
)
active_job_group = JobGroup.objects.filter(slug=slug).first()
context = {
"description": description,
"job_members": job_members,
"active_job_group": active_job_group,
}
return render(request, "members/jobs.html", context)
def members(request, role=None):
for elem in Member.MemberRole:
if role == elem.label.lower():
members = Member.all_members.filter(role=elem.value)
break
else:
members = Member.all_members.all()
context = {
"members": members,
}
return render(request, "members/members.html", context)
def profile(request, member_id=None):
member = Member.all_members.filter(id=member_id).first()
if not member:
logger.info("Wrong member id '%s'", member_id)
raise Http404("no member")
active_jobs = JobMember.members.get_active_jobs(member_id)
inactive_jobs = JobMember.members.get_inactive_jobs(member_id)
context = {
"member": member,
"active_jobs": active_jobs,
"inactive_jobs": inactive_jobs,
}
return render(request, "members/member.html", context)