Files
fet2020/fet2020/members/views.py

95 lines
2.4 KiB
Python

from collections import deque
import logging
from django.http import Http404
from django.shortcuts import render
from .models import Member, JobMember, JobGroup
logger = logging.getLogger(__name__)
def __get_job_groups():
job_groups = deque(JobGroup.objects.all())
# remove job group if there is no longer an active member
for elem in job_groups.copy():
job_members = JobMember.active_member.get_all(slug=elem.slug)
if not job_members:
job_groups.remove(elem)
return job_groups
def index(request):
job_groups = __get_job_groups()
members = Member.all_members.filter(role=Member.MemberRole.ACTIVE)
context = {
"job_groups": job_groups,
"members": members,
}
return render(request, "members/members.html", context)
def jobs(request, slug=None):
job_groups = __get_job_groups()
try:
description = JobGroup.objects.filter(slug=slug).values().first()["description"]
except Exception:
logger.info("Wrong job '{}'".format(slug))
raise Http404("wrong job")
job_members = JobMember.active_member.get_all(slug=slug)
active_job_group = JobGroup.objects.filter(slug=slug).first()
context = {
"job_groups": job_groups,
"description": description,
"job_members": job_members,
"active_job_group": active_job_group,
}
return render(request, "members/jobs.html", context)
def members(request, role=None):
job_groups = __get_job_groups()
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 = {
"job_groups": job_groups,
"members": members,
}
return render(request, "members/members.html", context)
def profile(request, member_id=None):
job_groups = __get_job_groups()
member = Member.all_members.filter(id=member_id).first()
if not member:
logger.info("Wrong member id '{}'".format(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 = {
"job_groups": job_groups,
"member": member,
"active_jobs": active_jobs,
"inactive_jobs": inactive_jobs,
}
return render(request, "members/member.html", context)