From 3107cd08065767ae09ae17d8c6dd41b057d20e83 Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Tue, 1 Aug 2023 22:42:53 +0000 Subject: [PATCH] add order to jobs --- fet2020/members/forms.py | 9 ++++++++- fet2020/members/models.py | 6 +++++- fet2020/members/views.py | 5 ++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index 22ecfbec..4d937141 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -6,9 +6,16 @@ from .models import Job, JobGroup, JobMember, Member class JobInlineForm(forms.ModelForm): class Meta: - fields = ["name"] + fields = [ + "name", + "order", + ] model = Job + labels = { + "order": "Reihenfolge", + } + class ActiveMemberForm(forms.ModelForm): class Meta: diff --git a/fet2020/members/models.py b/fet2020/members/models.py index 83869e75..cb864ede 100644 --- a/fet2020/members/models.py +++ b/fet2020/members/models.py @@ -3,8 +3,10 @@ import logging from django.contrib.auth.models import User from django.core.validators import ValidationError, validate_email from django.db import models +from django.db.models import F from django.urls import reverse from django.utils.text import slugify + from easy_thumbnails.fields import ThumbnailerImageField from .managers import ( @@ -139,6 +141,8 @@ class Job(models.Model): shortterm = models.CharField(max_length=128, unique=True, blank=True) slug = models.SlugField(unique=True, null=True, blank=True) + order = models.PositiveSmallIntegerField(null=True, blank=True) + job_group = models.ForeignKey( JobGroup, on_delete=models.CASCADE, @@ -149,7 +153,7 @@ class Job(models.Model): objects = models.Manager() class Meta: - ordering = ["name"] + ordering = (F("order").asc(nulls_last=True), "name") verbose_name = "Tätigkeit" verbose_name_plural = "Tätigkeiten" diff --git a/fet2020/members/views.py b/fet2020/members/views.py index 11915fd0..7bd0b4e3 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -1,5 +1,6 @@ import logging +from django.db.models import F from django.http import Http404 from django.shortcuts import render @@ -25,7 +26,9 @@ def jobs(request, slug=None): logger.info("Wrong job '{}'".format(slug)) raise Http404("wrong job") - job_members = JobMember.active_member.get_all(slug=slug) + 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 = {