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)