Compare commits
14 Commits
72570e25c2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b4e42c119 | ||
|
|
a1cbd66da6 | ||
|
|
4d8a7a68f4 | ||
|
|
acc8375d2b | ||
|
|
dac53d2d06 | ||
|
|
7613f3a547 | ||
|
|
bba8ac4703 | ||
| 28d3d99754 | |||
| 78c2860cca | |||
| 2024466a48 | |||
|
|
54c344d262 | ||
|
|
047dfcb147 | ||
|
|
1e71779c6d | ||
|
|
d01dde658f |
14
.env.default
Normal file
14
.env.default
Normal file
@@ -0,0 +1,14 @@
|
||||
HOSTNAME="fet.at" # Hostname that will be used to filter requests
|
||||
DEBUG="false" # Debug flag ( disables ldap integration )
|
||||
LDAP="True" # Ldap flag ( enables connection with fet ldap )
|
||||
#SECRET_KEY="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # Secret key for the Website encryption
|
||||
ETHERPAD_GROUP="g.snlbqn7S6ksRbom3" # The Etherpad Group to use
|
||||
|
||||
EMAIL_HOST_USER="verleih@fet.at" # The user to be used for rental Emails
|
||||
#EMAIL_HOST_PASSWORD="password" # The password for the smtp account for the rental Email
|
||||
|
||||
#ETHERPAD_DB_USER="user" # User for the Eterpad MySql Database
|
||||
#ETHERPAD_DB_PASSWORD="password" # Password for the Etherpad MySql Database
|
||||
|
||||
#DJANGO_MYSQL_USER="user" # The MySql User used for Database
|
||||
#DJANGO_MYSQL_PASSWORD"="password" # The Password for the MySql Database
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
.env/*
|
||||
.env*
|
||||
*.pyc
|
||||
*_design1
|
||||
fet2020/.env/*
|
||||
@@ -19,4 +19,4 @@ flowbite
|
||||
gallery/*
|
||||
tailwind
|
||||
whoosh_index
|
||||
databases/django
|
||||
databases
|
||||
|
||||
Binary file not shown.
@@ -9,7 +9,7 @@ services:
|
||||
depends_on:
|
||||
- django-homepage
|
||||
volumes:
|
||||
- ./files:/usr/src/app/files
|
||||
- ./fet2020/files:/usr/src/app/files
|
||||
- ./gallery:/usr/src/app/files/uploads/gallery
|
||||
- ./assets:/usr/src/app/assets:ro
|
||||
networks:
|
||||
@@ -18,15 +18,15 @@ services:
|
||||
container_name: django-container
|
||||
image: django-image:latest
|
||||
environment:
|
||||
HOST_NAME: "fet.at"
|
||||
DEBUG: "False"
|
||||
LDAP: "True"
|
||||
SECRET_KEY: "sae34sADfrFr89E!Gl#f!34hdjGR#!jopi4qFEr#4R56rT56zT2#wE1!feGp"
|
||||
MYSQL_USER: "user"
|
||||
MYSQL_PASSWORD: "hgu"
|
||||
ETHERPAD_GROUP: "g.snlbqn7S6ksRbom3"
|
||||
EMAIL_HOST_USER: "verleih@fet.at"
|
||||
EMAIL_HOST_PASSWORD: ""
|
||||
HOST_NAME: ${HOSTNAME}
|
||||
DEBUG: ${DEBUG}
|
||||
LDAP: ${LDAP}
|
||||
SECRET_KEY: ${SECRET_KEY}
|
||||
MYSQL_USER: ${DJANGO_MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${DJANGO_MYSQL_PASSWORD}
|
||||
ETHERPAD_GROUP: ${ETHERPAD_GROUP}
|
||||
EMAIL_HOST_USER: ${EMAIL_HOST_USER}
|
||||
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD}
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
@@ -35,7 +35,7 @@ services:
|
||||
volumes:
|
||||
- ./fet2020:/usr/src/app
|
||||
- ./gallery:/usr/src/app/files/uploads/gallery:shared
|
||||
- files-volume:/usr/src/app/files
|
||||
- ./fet2020/files:/usr/src/app/files
|
||||
- ./assets:/usr/src/app/assets:ro
|
||||
networks:
|
||||
- fet-network
|
||||
@@ -47,7 +47,7 @@ services:
|
||||
retries: 20
|
||||
etherpad:
|
||||
container_name: etherpad-container
|
||||
image: etherpad/etherpad:1.8.17
|
||||
image: etherpad/etherpad:2.5.2
|
||||
# ports:
|
||||
# - 9001:9001
|
||||
environment:
|
||||
@@ -55,10 +55,11 @@ services:
|
||||
DB_HOST: etherpadsql
|
||||
DB_PORT: 3306
|
||||
DB_NAME: etherpaddb
|
||||
DB_USER: user
|
||||
DB_PASS: "hgu"
|
||||
DB_CHARSET: utf8
|
||||
DB_USER: ${ETHERPAD_DB_USER}
|
||||
DB_PASS: ${ETHERPAD_DB_PASSWORD}
|
||||
DB_CHARSET: "utf8mb4"
|
||||
TRUST_PROXY: false
|
||||
AUTHENTICATION_METHOD: "apikey"
|
||||
depends_on:
|
||||
etherpadsql:
|
||||
condition: "service_healthy"
|
||||
@@ -78,8 +79,8 @@ services:
|
||||
image: mariadb:10.7
|
||||
environment:
|
||||
MYSQL_DATABASE: fet2020db
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: hgu
|
||||
MYSQL_USER: ${DJANGO_MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${DJANGO_MYSQL_PASSWORD}
|
||||
MYSQL_COLLATION: utf8_general_ci
|
||||
MYSQL_CHARSET: utf8
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||
@@ -97,8 +98,8 @@ services:
|
||||
image: mariadb:10.7
|
||||
environment:
|
||||
MYSQL_DATABASE: etherpaddb
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: "hgu"
|
||||
MYSQL_USER: ${ETHERPAD_DB_USER}
|
||||
MYSQL_PASSWORD: ${ETHERPAD_DB_PASSWORD}
|
||||
MYSQL_COLLATION: utf8_general_ci
|
||||
MYSQL_CHARSET: utf8
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||
|
||||
Binary file not shown.
@@ -1,275 +1,275 @@
|
||||
from ckeditor_uploader.widgets import CKEditorUploadingWidget
|
||||
from django import forms
|
||||
from django.forms.widgets import CheckboxInput
|
||||
from django.utils.dates import MONTHS
|
||||
from taggit.models import Tag
|
||||
|
||||
from .models import Event, FetMeeting, News, Post
|
||||
|
||||
|
||||
class PostForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = [
|
||||
"title",
|
||||
"subtitle",
|
||||
"tags",
|
||||
"image",
|
||||
"body",
|
||||
"slug",
|
||||
"author",
|
||||
"public_date",
|
||||
]
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
class Media:
|
||||
js = (
|
||||
"js/auto_slug.js", # automatic slag completion via ajax
|
||||
"js/tag_completion.js", # to get a list for tag autocompletion via ajax
|
||||
)
|
||||
|
||||
|
||||
class NewsForm(PostForm):
|
||||
class Meta:
|
||||
model = News
|
||||
fields = "__all__"
|
||||
|
||||
help_texts = {
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: ...",
|
||||
"is_pinned": (
|
||||
"Der Post soll als erster auf der Startseite angeheftet werden und sich "
|
||||
"automatisch einen Monat nach der Veröffentlichung wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"subtitle": "Untertitel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
"slug": "Permalink",
|
||||
"author": "Autor",
|
||||
"public_date": "Veröffentlichung",
|
||||
"is_pinned": "Post anheften",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
author_qs = self.fields["author"].queryset.order_by("username")
|
||||
self.fields["author"].queryset = author_qs
|
||||
|
||||
|
||||
class EventForm(PostForm):
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = "__all__"
|
||||
|
||||
help_texts = {
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: Bildformate",
|
||||
"is_pinned": (
|
||||
"Dieses Event soll als erstes auf der Startseite angeheftet werden und sich "
|
||||
"automatisch einen Monat nach der Veröffentlichung wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"subtitle": "Untertitel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
"event_start": "Start des Events",
|
||||
"event_end": "Ende des Events",
|
||||
"event_place": "Ort des Events",
|
||||
"slug": "Permalink",
|
||||
"author": "Autor",
|
||||
"public_date": "Veröffentlichung",
|
||||
"is_pinned": "Event anheften",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
author_qs = self.fields["author"].queryset.order_by("username")
|
||||
self.fields["author"].queryset = author_qs
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
if "event_place" in self.fields:
|
||||
self.fields["event_place"].required = True
|
||||
|
||||
|
||||
class FetMeetingForm(PostForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place", "tags"]
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
|
||||
tags = []
|
||||
tags.append(Tag())
|
||||
tags[0].name = "fachschaft"
|
||||
self.fields["tags"].initial = tags
|
||||
|
||||
|
||||
class PostSearchForm(forms.Form):
|
||||
year_choices = [("", "Alle")]
|
||||
month_choices = [("", "Alle")] + list(MONTHS.items())
|
||||
|
||||
year = forms.ChoiceField(label="Jahr", choices=year_choices, required=False)
|
||||
month = forms.ChoiceField(label="Monat", choices=month_choices, required=False)
|
||||
|
||||
compact_view = forms.BooleanField(
|
||||
label="Kompakte Ansicht",
|
||||
required=False,
|
||||
widget=CheckboxInput,
|
||||
)
|
||||
fet_meeting_only = forms.BooleanField(
|
||||
label="nur FET Sitzungen",
|
||||
required=False,
|
||||
widget=CheckboxInput,
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
try:
|
||||
first_post = Post.objects.get_queryset().last()
|
||||
last_post = Post.objects.get_queryset().first()
|
||||
if first_post and last_post:
|
||||
years = range(last_post.date.year, first_post.date.year - 1, -1)
|
||||
year_choices = [("", "Alle")] + [(i, i) for i in years]
|
||||
self.fields["year"].choices = year_choices
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
class NewsUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = News
|
||||
|
||||
fields = [
|
||||
"title",
|
||||
"status",
|
||||
"body",
|
||||
]
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["title"].autofocus = True
|
||||
|
||||
|
||||
class EventUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = [
|
||||
"title",
|
||||
"status",
|
||||
"event_start",
|
||||
"event_end",
|
||||
"event_place",
|
||||
]
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"event_start": "Start des Events",
|
||||
"event_end": "Ende des Events",
|
||||
"event_place": "Ort des Events",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
if "event_place" in self.fields:
|
||||
self.fields["event_place"].required = True
|
||||
|
||||
|
||||
class FetMeetingCreateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place"]
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
}
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
|
||||
|
||||
class FetMeetingUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place"]
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
from ckeditor_uploader.widgets import CKEditorUploadingWidget
|
||||
from django import forms
|
||||
from django.forms.widgets import CheckboxInput
|
||||
from django.utils.dates import MONTHS
|
||||
from taggit.models import Tag
|
||||
|
||||
from .models import Event, FetMeeting, News, Post
|
||||
|
||||
|
||||
class PostForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = [
|
||||
"title",
|
||||
"subtitle",
|
||||
"tags",
|
||||
"image",
|
||||
"body",
|
||||
"slug",
|
||||
"author",
|
||||
"public_date",
|
||||
]
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
class Media:
|
||||
js = (
|
||||
"js/auto_slug.js", # automatic slag completion via ajax
|
||||
"js/tag_completion.js", # to get a list for tag autocompletion via ajax
|
||||
)
|
||||
|
||||
|
||||
class NewsForm(PostForm):
|
||||
class Meta:
|
||||
model = News
|
||||
fields = "__all__"
|
||||
|
||||
help_texts = {
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: ...",
|
||||
"is_pinned": (
|
||||
"Der Post soll als erster auf der Startseite angeheftet werden und sich "
|
||||
"automatisch einen Monat nach der Veröffentlichung wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"subtitle": "Untertitel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
"slug": "Permalink",
|
||||
"author": "Autor",
|
||||
"public_date": "Veröffentlichung",
|
||||
"is_pinned": "Post anheften",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
author_qs = self.fields["author"].queryset.order_by("username")
|
||||
self.fields["author"].queryset = author_qs
|
||||
|
||||
|
||||
class EventForm(PostForm):
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = "__all__"
|
||||
|
||||
help_texts = {
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: Bildformate",
|
||||
"is_pinned": (
|
||||
"Dieses Event soll als erstes auf der Startseite angeheftet werden und sich "
|
||||
"automatisch ein Tag nach dem Eventende wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"subtitle": "Untertitel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
"event_start": "Start des Events",
|
||||
"event_end": "Ende des Events",
|
||||
"event_place": "Ort des Events",
|
||||
"slug": "Permalink",
|
||||
"author": "Autor",
|
||||
"public_date": "Veröffentlichung",
|
||||
"is_pinned": "Event anheften",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
author_qs = self.fields["author"].queryset.order_by("username")
|
||||
self.fields["author"].queryset = author_qs
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
if "event_place" in self.fields:
|
||||
self.fields["event_place"].required = True
|
||||
|
||||
|
||||
class FetMeetingForm(PostForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place", "tags"]
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
|
||||
tags = []
|
||||
tags.append(Tag())
|
||||
tags[0].name = "fachschaft"
|
||||
self.fields["tags"].initial = tags
|
||||
|
||||
|
||||
class PostSearchForm(forms.Form):
|
||||
year_choices = [("", "Alle")]
|
||||
month_choices = [("", "Alle")] + list(MONTHS.items())
|
||||
|
||||
year = forms.ChoiceField(label="Jahr", choices=year_choices, required=False)
|
||||
month = forms.ChoiceField(label="Monat", choices=month_choices, required=False)
|
||||
|
||||
compact_view = forms.BooleanField(
|
||||
label="Kompakte Ansicht",
|
||||
required=False,
|
||||
widget=CheckboxInput,
|
||||
)
|
||||
fet_meeting_only = forms.BooleanField(
|
||||
label="nur FET Sitzungen",
|
||||
required=False,
|
||||
widget=CheckboxInput,
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
try:
|
||||
first_post = Post.objects.get_queryset().last()
|
||||
last_post = Post.objects.get_queryset().first()
|
||||
if first_post and last_post:
|
||||
years = range(last_post.date.year, first_post.date.year - 1, -1)
|
||||
year_choices = [("", "Alle")] + [(i, i) for i in years]
|
||||
self.fields["year"].choices = year_choices
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
class NewsUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = News
|
||||
|
||||
fields = [
|
||||
"title",
|
||||
"status",
|
||||
"body",
|
||||
]
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"image": "Hintergrundbild",
|
||||
"body": "Text",
|
||||
}
|
||||
|
||||
widgets = {"body": CKEditorUploadingWidget(config_name="default")}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["title"].autofocus = True
|
||||
|
||||
|
||||
class EventUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Event
|
||||
fields = [
|
||||
"title",
|
||||
"status",
|
||||
"event_start",
|
||||
"event_end",
|
||||
"event_place",
|
||||
]
|
||||
|
||||
labels = {
|
||||
"title": "Titel",
|
||||
"event_start": "Start des Events",
|
||||
"event_end": "Ende des Events",
|
||||
"event_place": "Ort des Events",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
if "event_place" in self.fields:
|
||||
self.fields["event_place"].required = True
|
||||
|
||||
|
||||
class FetMeetingCreateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place"]
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
}
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
|
||||
|
||||
class FetMeetingUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = FetMeeting
|
||||
fields = ["event_start", "event_end", "event_place"]
|
||||
|
||||
labels = {
|
||||
"event_start": "Start der Sitzung",
|
||||
"event_end": "Ende der Sitzung",
|
||||
"event_place": "Ort der Sitzung",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs) # to get the self.fields set
|
||||
|
||||
self.fields["event_start"].required = True
|
||||
self.fields["event_start"].autofocus = True
|
||||
|
||||
self.fields["event_end"].required = False
|
||||
|
||||
self.fields["event_place"].initial = "FET"
|
||||
|
||||
Reference in New Issue
Block a user