update and simplify members

This commit is contained in:
2022-01-20 12:19:43 +00:00
parent 6112bb2623
commit aed985f549
11 changed files with 156 additions and 183 deletions

View File

@@ -39,7 +39,7 @@ def __get_job_groups():
def index(request):
pinned_job_groups, unpinned_job_groups = __get_job_groups()
members = deque(Member.all_members.all())
members = Member.all_members.all()
fs_info = CustomFlatPage.objects.filter(title__iexact="fachschaft").first()
@@ -50,7 +50,7 @@ def index(request):
"fs_info": fs_info,
}
return render(request, "members/index.html", context)
return render(request, "members/members.html", context)
def jobs_view(request, slug=None):
@@ -65,15 +65,17 @@ def jobs_view(request, slug=None):
raise Http404("wrong job")
job_members = JobMember.active_member.get_all_by_slug(slug=slug)
active_job_group = JobGroup.objects.filter(slug=slug).first()
context = {
"pinned_job_groups": pinned_job_groups,
"unpinned_job_groups": unpinned_job_groups,
"description": description,
"job_members": job_members,
"active_job_group": active_job_group,
}
return render(request, "members/index.html", context)
return render(request, "members/jobs.html", context)
def members_view(request, filter=None):
@@ -96,7 +98,7 @@ def members_view(request, filter=None):
"fs_info": fs_info,
}
return render(request, "members/index.html", context)
return render(request, "members/members.html", context)
def profile_view(request, member_id=None):
@@ -107,8 +109,8 @@ def profile_view(request, member_id=None):
logger.info("Wrong member id '{}'".format(member_id))
raise Http404("no member")
active_jobs = deque(JobMember.members.get_active_jobs(member_id))
inactive_jobs = deque(JobMember.members.get_inactive_jobs(member_id))
active_jobs = JobMember.members.get_active_jobs(member_id)
inactive_jobs = JobMember.members.get_inactive_jobs(member_id)
context = {
"pinned_job_groups": pinned_job_groups,

View File

@@ -41,39 +41,11 @@
</div>
<ul class="sideBarNav">
{% for job in pinned_job_groups %}
<li class="{% if job.slug in request.path %}active{% endif %}">
<a href="{% url 'jobs' job.slug %}">{{ job.name }}</a>
</li>
{% if job.slug in job_members.0.job.job_group.slug %}
{% regroup job_members by job.name as all_jobmem_list %}
<ul id="scrollspy-subNav">
{% 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 %}
{% include 'members/partials/_jobs_side_bar.html' %}
{% endfor %}
{% for job in unpinned_job_groups %}
<li class="{% if job.slug in request.path %}active{% endif %}">
<a href="{% url 'jobs' job.slug %}">{{ job.name }}</a>
</li>
{% if job.slug in job_members.0.job.job_group.slug %}
{% regroup job_members by job.name as all_jobmem_list %}
<ul id="scrollspy-subNav">
{% 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 %}
{% include 'members/partials/_jobs_side_bar.html' %}
{% endfor %}
<hr class="">
@@ -87,27 +59,13 @@
</li>
{% if request.user.is_authenticated %}
{% if pinned_job_groups%}
{% for job in pinned_job_groups %}
{% if job.slug in request.path %}
{% if active_job_group %}
<li class="internalLI">
<a href="{% url 'admin:members_jobgroup_change' job.id %}">
<i class="fa-regular fa-pen-to-square mr-1"></i>{{ job.name|softhyphen|safe }} bearbeiten
<a href="{% url 'admin:members_jobgroup_change' active_job_group.id %}">
<i class="fa-regular fa-pen-to-square mr-1"></i>{{ active_job_group.name|softhyphen|safe }} bearbeiten
</a>
</li>
{% endif %}
{% endfor %}
{% elif unpinned_job_groups %}
{% for job in unpinned_job_groups %}
{% if job.slug in request.path %}
<li class="internalLI">
<a href="{% url 'admin:members_jobgroup_change' job.id %}">
<i class="fa-regular fa-pen-to-square mr-1"></i>{{ job.name|softhyphen|safe }} bearbeiten
</a>
</li>
{% endif %}
{% endfor %}
{% endif %}
{% if fs_info %}
<li class="internalLI">
@@ -143,39 +101,23 @@
</aside>
<section class="flex-grow max-w-prose my-8 sm:my-0">
{% if description %}
<div class="db-page-content">
{{ description|safe }}
</div>
{% endif %}
{% if member %}
<!-- show details of a member -->
{% block members_content %}
{% block member_content %}
{% endblock %}
{% endif %}
{% if members %}
<!-- show all, active or pension members -->
{% if fs_info %}
<div class="db-page-content">
{{ fs_info.content|safe }}
</div>
{% block members_content %}
{% endblock %}
{% endif %}
<article class="members-article">
<div class="members-listing">
{% for member in members %}
{% include 'members/partials/_member.html' %}
{% endfor %}
</div>
</article>
{% endif %}
<div>
{% if job_members %}
<!-- show job lists in a job group -->
{% include 'members/jobs_list.html' %}
</div>
{% block jobs_content %}
{% endblock %}
{% endif %}
</section>
</div>
</main>

View File

@@ -0,0 +1,37 @@
{% extends 'members/index.html' %}
{% block jobs_content %}
<div class="db-page-content">
<h2>{{ active_job_group.name }}</h2>
{% if description %}
{{ description|safe }}
{% endif %}
</div>
<div>
{% regroup job_members by job.name as all_jobmem_list %}
{% for jobmem in all_jobmem_list %}
<article id="{{ jobmem.list.0.job.slug }}" class="members-article">
<a href="#{{ jobmem.list.0.job.slug }}" class="title">
<i class="far fa-link"></i>
<h3 class="members-section-title">{{ jobmem.grouper }}</h3>
</a>
<div class="members-listing">
{% for jm in jobmem.list %}
<figure>
<a href="{{ jm.member.get_absolute_url }}">
<img loading="lazy" src="{{ jm.member.image.thumb.url }}" alt="Portraitfoto von {{ jm.member.firstname }}" class="w-36 h-36 bg-white">
<figcaption>
<h4 class="member-name">{{ jm.member.firstname }} {{ jm.member.surname }}</h4>
<p class="member-role">{{ jm.get_job_role_display }}</p>
<p class="member-date">Seit {{ jm.job_start|date:"d. M. Y" }}</p>
</figcaption>
</a>
</figure>
{% endfor %}
</div>
</article>
{% endfor %}
</div>
{% endblock %}

View File

@@ -1,17 +0,0 @@
{% regroup job_members by job.name as all_jobmem_list %}
{% for jobmem in all_jobmem_list %}
<article id="{{ jobmem.list.0.job.slug }}" class="members-article">
<a href="#{{ jobmem.list.0.job.slug }}" class="title">
<i class="far fa-link"></i>
<h3 class="members-section-title">{{ jobmem.grouper }}</h3>
</a>
<div class="members-listing">
{% for jm in jobmem.list %}
{% with member=jm.member %}
{% include 'members/partials/_job_membership_grid.html' %}
{% endwith %}
{% endfor %}
</div>
</article>
{% endfor %}

View File

@@ -1,4 +1,5 @@
{% extends 'members/index.html' %}
{% load softhyphen_tags %}
{% block extraheader %}
<meta content="{{member.image.url}}" property="og:image">
@@ -7,6 +8,58 @@
<meta content="profile" property="og:type">
{% endblock %}
{% block members_content %}
{% include 'members/partials/_member_details.html' %}
{% block member_content %}
<section class="flex-grow max-w-prose my-8 sm:my-0 text-justify text-gray-800 dark:text-gray-300">
<!-- Alternativtext auf jede Person anpassen: Name im alt="" dynamisch erzeugen -->
<img loading="lazy" src="{{ member.image.portrait.url }}" alt="Portraitfoto von {{ member.firstname }} {{ member.surname }}" class="md:float-left w-36 mr-2 mb-2">
<div x-data="{ expandList: false }">
<h2 class="mb-2 text-lg text-gray-900 dark:text-gray-100 text-left">{{ member.firstname }} {{ member.surname }}</h2>
<div class="mb-2">
Spitzname: {{ member.nickname }}<br>
Mailaccount: {{ member.mailaccount }}<br>
</div>
<div class="mb-2">
{{ member.description|softhyphen|safe }}
</div>
{% if active_jobs or inactive_jobs %}
<h3 class="group mt-4 mb-2 text-lg text-gray-900 dark:text-gray-100">Ehrenamtliche Tätigkeiten:
{% if inactive_jobs %}
<button class="inline float-right text-sm px-2 py-1 text-gray-600 dark:text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-400 border rounded border-gray-500 dark:border-gray-500 md:border-gray-400 dark:md:border-gray-600 group-hover:border-gray-500 dark:group-hover:border-gray-500"
@click="expandList = ! expandList"
>
<span x-show="!expandList">Mehr</span><span x-show="expandList">Weniger</span><span class="hidden md:inline"> anzeigen</span>
<i class="fa-fw fa-solid fa-angle-left transition transform -ml-1"
:class="expandList ? '-rotate-90' : ''"
></i>
</button>
{% endif %}
</h3>
<ul class="flex flex-col gap-1">
{% for jobm in active_jobs %}
<li class="flex flex-row flex-wrap">
<span>{{ jobm.job.name }}:</span>
<span class="ml-2 text-gray-600 dark:text-gray-400">{{ jobm.job_start|date }} -</span>
</li>
{% endfor %}
</ul>
<ul class="flex flex-col gap-1 mt-1"
x-show="expandList"
x-transition:enter="transition duration-100 ease-in"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition duration-100 ease-out"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
>
{% for jobm in inactive_jobs %}
<li class="flex flex-row flex-wrap">
<span>{{ jobm.job.name }}:</span>
<span class="ml-2 text-gray-600 dark:text-gray-400">{{ jobm.job_start|date }} - {{ jobm.job_end|date }}</span>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</section>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends 'members/index.html' %}
{% block members_content %}
{% if fs_info %}
<div class="db-page-content">
{{ fs_info.content|safe }}
</div>
{% endif %}
<article class="members-article">
<div class="members-listing">
{% for member in members %}
<figure>
<a href="{{ member.get_absolute_url }}">
<img loading="lazy" src="{{ member.image.thumb.url }}" alt="Portraitfoto von {{ member.firstname }}" class="w-36 h-36 bg-white">
<figcaption>
<h3>{{ member.firstname }} {{ member.surname }}</h3>
</figcaption>
</a>
</figure>
{% endfor %}
</div>
</article>
{% endblock %}

View File

@@ -1,8 +0,0 @@
<div class="grid-x align-bottom">
{% for member in members %}
<div class="cell large-2 medium-3 small-6 padding-right-1" style="text-align: center">
<h2>{{member.firstname}} {{member.surname}}</h2>
{% include 'members/partials/_member.html' %}
</div>
{% endfor %}
</div>

View File

@@ -1,10 +0,0 @@
<figure>
<a href="{{ member.get_absolute_url }}">
<img loading="lazy" src="{{ member.image.thumb.url }}" alt="Portraitfoto von {{ member.firstname }}" class="w-36 h-36 bg-white">
<figcaption>
<h4 class="member-name">{{ member.firstname }} {{ member.surname }}</h4>
<p class="member-role">{{ jm.get_job_role_display }}</p>
<p class="member-date">Seit {{ jm.job_start|date:"d. M. Y" }}</p>
</figcaption>
</a>
</figure>

View File

@@ -0,0 +1,15 @@
<li class="{% if job.slug in request.path %}active{% endif %}">
<a href="{% url '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 id="scrollspy-subNav">
{% 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 %}

View File

@@ -1,8 +0,0 @@
<figure>
<a href="{{ member.get_absolute_url }}">
<img loading="lazy" src="{{ member.image.thumb.url }}" alt="Portraitfoto von {{ member.firstname }}" class="w-36 h-36 bg-white">
<figcaption>
<h3>{{ member.firstname }} {{ member.surname }}</h3>
</figcaption>
</a>
</figure>

View File

@@ -1,57 +0,0 @@
{# This template shows one member and all the details (that are ment for public) including a list of current jobs #}
{% load softhyphen_tags %}
{% load static %}
<section class="flex-grow max-w-prose my-8 sm:my-0 text-justify text-gray-800 dark:text-gray-300">
<!-- Alternativtext auf jede Person anpassen: Name im alt="" dynamisch erzeugen -->
<img loading="lazy" src="{{ member.image.portrait.url }}" alt="Portraitfoto von {{ member.firstname }} {{ member.surname }}" class="md:float-left w-36 mr-2 mb-2">
<div x-data="{ expandList: false }">
<h2 class="mb-2 text-lg text-gray-900 dark:text-gray-100 text-left">{{ member.firstname }} {{ member.surname }}</h2>
<div class="mb-2">
Spitzname: {{ member.nickname }} <br>
Mailaccount: {{ member.mailaccount }} <br>
</div>
<div class="mb-2">
{{ member.description|softhyphen|safe }}
</div>
{% if active_jobs or inactive_jobs %}
<h3 class="group mt-4 mb-2 text-lg text-gray-900">Ehrenamtliche Tätigkeiten:
{% if inactive_jobs %}
<button class="inline float-right text-sm px-2 py-1 text-gray-600 md:text-gray-500 group-hover:text-gray-600 border rounded border-gray-500 md:border-gray-400 group-hover:border-gray-500"
@click="expandList = ! expandList"
>
<span x-show="!expandList">Mehr</span><span x-show="expandList">Weniger</span><span class="hidden md:inline"> anzeigen</span>
<i class="fa-fw fa-solid fa-angle-left transition transform -ml-1"
:class="expandList ? '-rotate-90' : ''"
></i>
</button>
{% endif %}
</h3>
<ul class="flex flex-col gap-1">
{% for jobm in active_jobs %}
<li class="flex flex-row flex-wrap">
<span>{{ jobm.job.name }}:</span>
<span class="ml-2 text-gray-600 dark:text-gray-400">{{ jobm.job_start|date }} -</span>
</li>
{% endfor %}
</ul>
<ul class="flex flex-col gap-1 mt-1"
x-show="expandList"
x-transition:enter="transition duration-100 ease-in"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition duration-100 ease-out"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
>
{% for jobm in inactive_jobs %}
<li class="flex flex-row flex-wrap">
<span>{{ jobm.job.name }}:</span>
<span class="ml-2 text-gray-600 dark:text-gray-400">{{ jobm.job_start|date }} - {{ jobm.job_end|date }}</span>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</section>