75 lines
1.9 KiB
Python
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)
|