95 lines
2.4 KiB
Python
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)
|