sorting admin fields and set shortterm to unique
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from .forms import JobForm, JobGroupForm, MemberForm
|
||||
from .forms import JobForm, JobGroupForm, JobInlineForm, MemberForm
|
||||
from .models import Job, JobGroup, JobMember, Member
|
||||
|
||||
|
||||
@@ -47,13 +47,16 @@ class InactiveMemberInline(JobMemberInline):
|
||||
|
||||
|
||||
class JobInline(admin.TabularInline):
|
||||
form = JobInlineForm
|
||||
model = Job
|
||||
extra = 0
|
||||
show_change_link = True
|
||||
|
||||
|
||||
class MemberAdmin(admin.ModelAdmin):
|
||||
form = MemberForm
|
||||
model = Member
|
||||
|
||||
fieldsets = (
|
||||
(
|
||||
None,
|
||||
@@ -79,11 +82,9 @@ class MemberAdmin(admin.ModelAdmin):
|
||||
inlines = (JobOverviewInline,)
|
||||
|
||||
list_display = ["nickname", "firstname", "surname", "mailaccount", "role"]
|
||||
ordering = [
|
||||
"firstname",
|
||||
]
|
||||
search_fields = ["firstname", "surname", "nickname", "mailaccount"]
|
||||
list_filter = [MemberRoleFilter]
|
||||
ordering = ["firstname"]
|
||||
search_fields = ["firstname", "surname", "nickname", "mailaccount"]
|
||||
|
||||
def add_view(self, request, form_url="", extra_context=None):
|
||||
extra_context = extra_context or {}
|
||||
@@ -112,18 +113,33 @@ class MemberAdmin(admin.ModelAdmin):
|
||||
class JobAdmin(admin.ModelAdmin):
|
||||
form = JobForm
|
||||
model = Job
|
||||
inlines = (ActiveMemberInline, InactiveMemberInline)
|
||||
|
||||
list_display = [
|
||||
list_display = ["name", "job_group"]
|
||||
ordering = ["name"]
|
||||
search_fields = ["name"]
|
||||
|
||||
fieldsets = (
|
||||
(
|
||||
None,
|
||||
{
|
||||
"fields": (
|
||||
"name",
|
||||
"job_group",
|
||||
]
|
||||
ordering = [
|
||||
"name",
|
||||
]
|
||||
search_fields = [
|
||||
"name",
|
||||
]
|
||||
)
|
||||
},
|
||||
),
|
||||
(
|
||||
"Permalink",
|
||||
{
|
||||
"fields": (
|
||||
"shortterm",
|
||||
"slug",
|
||||
)
|
||||
}
|
||||
),
|
||||
)
|
||||
inlines = (ActiveMemberInline, InactiveMemberInline)
|
||||
readonly_fields = ["slug"]
|
||||
|
||||
def add_view(self, request, form_url="", extra_context=None):
|
||||
extra_context = extra_context or {}
|
||||
@@ -152,18 +168,34 @@ class JobAdmin(admin.ModelAdmin):
|
||||
class JobGroupAdmin(admin.ModelAdmin):
|
||||
form = JobGroupForm
|
||||
model = JobGroup
|
||||
inlines = (JobInline,)
|
||||
|
||||
list_display = [
|
||||
list_display = ["name", "is_pinned"]
|
||||
ordering = ["name"]
|
||||
search_fields = ["name"]
|
||||
|
||||
fieldsets = (
|
||||
(
|
||||
None,
|
||||
{
|
||||
"fields": (
|
||||
"name",
|
||||
"description",
|
||||
"is_pinned",
|
||||
]
|
||||
ordering = [
|
||||
"name",
|
||||
]
|
||||
search_fields = [
|
||||
"name",
|
||||
]
|
||||
)
|
||||
},
|
||||
),
|
||||
(
|
||||
"Permalink",
|
||||
{
|
||||
"fields": (
|
||||
"shortterm",
|
||||
"slug",
|
||||
)
|
||||
}
|
||||
),
|
||||
)
|
||||
inlines = (JobInline,)
|
||||
readonly_fields = ["slug"]
|
||||
|
||||
def add_view(self, request, form_url="", extra_context=None):
|
||||
extra_context = extra_context or {}
|
||||
|
||||
@@ -6,24 +6,24 @@ from django.utils.translation import gettext_lazy as _
|
||||
from .models import Member, Job, JobGroup
|
||||
|
||||
|
||||
class JobInlineForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Job
|
||||
fields = ["name"]
|
||||
|
||||
|
||||
class MemberForm(forms.ModelForm):
|
||||
class Meta:
|
||||
fields = "__all__"
|
||||
model = Member
|
||||
fields = [
|
||||
"firstname",
|
||||
"surname",
|
||||
"nickname",
|
||||
"username",
|
||||
"mailaccount",
|
||||
"role",
|
||||
"description",
|
||||
"image",
|
||||
"birthday",
|
||||
"phone",
|
||||
"address",
|
||||
]
|
||||
|
||||
widgets = {"description": CKEditorUploadingWidget(config_name="default")}
|
||||
help_texts = {
|
||||
"image": _(
|
||||
"Mindestdimension: 150*150 px, maximale Größe: 10MB, "
|
||||
"erlaubtes Format: Bildformate."
|
||||
),
|
||||
"mailaccount": _("Die Mailadresse mit '@fet.at' angeben."),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"description": _("Beschreibung zu der Person"),
|
||||
@@ -33,24 +33,13 @@ class MemberForm(forms.ModelForm):
|
||||
"address": _("Wohnadresse"),
|
||||
}
|
||||
|
||||
help_texts = {
|
||||
"image": _(
|
||||
"Mindestdimension: 150*150 px, maximale Größe: 10MB, "
|
||||
"erlaubtes Format: Bildformat"
|
||||
),
|
||||
"mailaccount": _("Die Mailadresse mit '@fet.at' angeben."),
|
||||
}
|
||||
widgets = {"description": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
|
||||
class JobForm(forms.ModelForm):
|
||||
class Meta:
|
||||
fields = "__all__"
|
||||
model = Job
|
||||
fields = [
|
||||
"name",
|
||||
"shortterm",
|
||||
"slug",
|
||||
"job_group",
|
||||
]
|
||||
|
||||
labels = {
|
||||
"shortterm": _("Kürzel der Tätigkeit"),
|
||||
@@ -61,16 +50,8 @@ class JobForm(forms.ModelForm):
|
||||
|
||||
class JobGroupForm(forms.ModelForm):
|
||||
class Meta:
|
||||
fields = "__all__"
|
||||
model = JobGroup
|
||||
fields = [
|
||||
"name",
|
||||
"shortterm",
|
||||
"slug",
|
||||
"description",
|
||||
"is_pinned",
|
||||
]
|
||||
|
||||
widgets = {"description": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
labels = {
|
||||
"shortterm": _("Kürzel des Tätigkeitsbereichs"),
|
||||
@@ -81,3 +62,5 @@ class JobGroupForm(forms.ModelForm):
|
||||
"damit es sofort ersichtlich ist."
|
||||
),
|
||||
}
|
||||
|
||||
widgets = {"description": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
@@ -111,7 +111,7 @@ class Member(models.Model):
|
||||
class JobGroup(models.Model):
|
||||
name = models.CharField(max_length=128)
|
||||
|
||||
shortterm = models.CharField(max_length=128)
|
||||
shortterm = models.CharField(max_length=128, unique=True, blank=True)
|
||||
slug = models.SlugField(unique=True, null=True, blank=True)
|
||||
|
||||
description = models.TextField(null=True, blank=True)
|
||||
@@ -133,17 +133,16 @@ class JobGroup(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse("jobs", kwargs={"slug": self.slug})
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
def clean(self):
|
||||
if not self.shortterm:
|
||||
self.shortterm = slugify(self.name)
|
||||
self.slug = slugify(self.shortterm)
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class Job(models.Model):
|
||||
name = models.CharField(max_length=128)
|
||||
|
||||
shortterm = models.CharField(max_length=128)
|
||||
shortterm = models.CharField(max_length=128, unique=True, blank=True)
|
||||
slug = models.SlugField(unique=True, null=True, blank=True)
|
||||
|
||||
job_group = models.ForeignKey(
|
||||
@@ -165,12 +164,11 @@ class Job(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse("jobs", kwargs={"slug": self.job_group.slug}) + "#" + self.slug
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
def clean(self):
|
||||
if not self.shortterm:
|
||||
self.shortterm = slugify(self.name)
|
||||
self.slug = slugify(self.shortterm)
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class JobMember(models.Model):
|
||||
member = models.ForeignKey(
|
||||
|
||||
Reference in New Issue
Block a user