job sidebar as a templatetag
This commit is contained in:
0
fet2020/members/templatetags/__init__.py
Normal file
0
fet2020/members/templatetags/__init__.py
Normal file
20
fet2020/members/templatetags/job_groups.py
Normal file
20
fet2020/members/templatetags/job_groups.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
from collections import deque
|
||||||
|
|
||||||
|
from django import template
|
||||||
|
|
||||||
|
from members.models import JobMember, JobGroup
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
|
@register.inclusion_tag("members/partials/jobs_sidebar.html")
|
||||||
|
def get_jobs_sidebar():
|
||||||
|
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": job_groups}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
from collections import deque
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
@@ -9,24 +8,10 @@ from .models import Member, JobMember, JobGroup
|
|||||||
logger = logging.getLogger(__name__)
|
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):
|
def index(request):
|
||||||
job_groups = __get_job_groups()
|
|
||||||
members = Member.all_members.filter(role=Member.MemberRole.ACTIVE)
|
members = Member.all_members.filter(role=Member.MemberRole.ACTIVE)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_groups": job_groups,
|
|
||||||
"members": members,
|
"members": members,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,8 +19,6 @@ def index(request):
|
|||||||
|
|
||||||
|
|
||||||
def jobs(request, slug=None):
|
def jobs(request, slug=None):
|
||||||
job_groups = __get_job_groups()
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
description = JobGroup.objects.filter(slug=slug).values().first()["description"]
|
description = JobGroup.objects.filter(slug=slug).values().first()["description"]
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -46,7 +29,6 @@ def jobs(request, slug=None):
|
|||||||
active_job_group = JobGroup.objects.filter(slug=slug).first()
|
active_job_group = JobGroup.objects.filter(slug=slug).first()
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_groups": job_groups,
|
|
||||||
"description": description,
|
"description": description,
|
||||||
"job_members": job_members,
|
"job_members": job_members,
|
||||||
"active_job_group": active_job_group,
|
"active_job_group": active_job_group,
|
||||||
@@ -56,8 +38,6 @@ def jobs(request, slug=None):
|
|||||||
|
|
||||||
|
|
||||||
def members(request, role=None):
|
def members(request, role=None):
|
||||||
job_groups = __get_job_groups()
|
|
||||||
|
|
||||||
for elem in Member.MemberRole:
|
for elem in Member.MemberRole:
|
||||||
if role == elem.label.lower():
|
if role == elem.label.lower():
|
||||||
members = Member.all_members.filter(role=elem.value)
|
members = Member.all_members.filter(role=elem.value)
|
||||||
@@ -66,7 +46,6 @@ def members(request, role=None):
|
|||||||
members = Member.all_members.all()
|
members = Member.all_members.all()
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_groups": job_groups,
|
|
||||||
"members": members,
|
"members": members,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,8 +53,6 @@ def members(request, role=None):
|
|||||||
|
|
||||||
|
|
||||||
def profile(request, member_id=None):
|
def profile(request, member_id=None):
|
||||||
job_groups = __get_job_groups()
|
|
||||||
|
|
||||||
member = Member.all_members.filter(id=member_id).first()
|
member = Member.all_members.filter(id=member_id).first()
|
||||||
if not member:
|
if not member:
|
||||||
logger.info("Wrong member id '{}'".format(member_id))
|
logger.info("Wrong member id '{}'".format(member_id))
|
||||||
@@ -85,7 +62,6 @@ def profile(request, member_id=None):
|
|||||||
inactive_jobs = JobMember.members.get_inactive_jobs(member_id)
|
inactive_jobs = JobMember.members.get_inactive_jobs(member_id)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_groups": job_groups,
|
|
||||||
"member": member,
|
"member": member,
|
||||||
"active_jobs": active_jobs,
|
"active_jobs": active_jobs,
|
||||||
"inactive_jobs": inactive_jobs,
|
"inactive_jobs": inactive_jobs,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% load flatpages %}
|
{% load flatpages %}
|
||||||
|
{% load job_groups %}
|
||||||
{% load softhyphen_tags %}
|
{% load softhyphen_tags %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
|
||||||
@@ -41,9 +42,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="sideBarNav">
|
<ul class="sideBarNav">
|
||||||
{% for job in job_groups %}
|
{% get_jobs_sidebar %}
|
||||||
{% include 'members/partials/_jobs_side_bar.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<hr class="">
|
<hr class="">
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
<li class="{% if job.slug in request.path %}active{% endif %}">
|
|
||||||
<a href="{% url 'members:jobs' job.slug %}">{{ job.name }}</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
{% if job.slug == active_job_group.slug %}
|
|
||||||
{% regroup job_members by job.name as all_jobmem_list %}
|
|
||||||
|
|
||||||
<ul class="scrollSpyNav">
|
|
||||||
{% for jobmem in all_jobmem_list %}
|
|
||||||
<li class="{% if jobmem.grouper %}active{% endif %}">
|
|
||||||
<a href="#{{ jobmem.list.0.job.slug }}">{{ jobmem.grouper }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
17
fet2020/templates/members/partials/jobs_sidebar.html
Normal file
17
fet2020/templates/members/partials/jobs_sidebar.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{% for job in job_groups %}
|
||||||
|
<li class="{% if job.slug in request.path %}active{% endif %}">
|
||||||
|
<a href="{% url 'members:jobs' job.slug %}">{{ job.name }}</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{% if job.slug == active_job_group.slug %}
|
||||||
|
{% regroup job_members by job.name as all_jobmem_list %}
|
||||||
|
|
||||||
|
<ul class="scrollSpyNav">
|
||||||
|
{% for jobmem in all_jobmem_list %}
|
||||||
|
<li class="{% if jobmem.grouper %}active{% endif %}">
|
||||||
|
<a href="#{{ jobmem.list.0.job.slug }}">{{ jobmem.grouper }}</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
Reference in New Issue
Block a user