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