black formatting
This commit is contained in:
@@ -30,9 +30,7 @@ class JobPosting(models.Model):
|
|||||||
validators=[FileExtensionValidator(["pdf"])],
|
validators=[FileExtensionValidator(["pdf"])],
|
||||||
)
|
)
|
||||||
|
|
||||||
publish_date = models.DateField(
|
publish_date = models.DateField(verbose_name="Veröffentlichung", default=timezone.now)
|
||||||
verbose_name="Veröffentlichung", default=timezone.now
|
|
||||||
)
|
|
||||||
|
|
||||||
all_job_postings = models.Manager()
|
all_job_postings = models.Manager()
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ from .models import JobPosting
|
|||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
job_postings_cutoff = timezone.now().date() - timedelta(30) # 30days from now
|
job_postings_cutoff = timezone.now().date() - timedelta(30) # 30days from now
|
||||||
job_postings = JobPosting.all_job_postings.filter(
|
job_postings = JobPosting.all_job_postings.filter(publish_date__gt=job_postings_cutoff)
|
||||||
publish_date__gt=job_postings_cutoff
|
|
||||||
)
|
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_postings": job_postings.order_by("-publish_date"),
|
"job_postings": job_postings.order_by("-publish_date"),
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ urlpatterns = [
|
|||||||
RedirectView.as_view(url="https://www.instagram.com/fet_tuwien/"),
|
RedirectView.as_view(url="https://www.instagram.com/fet_tuwien/"),
|
||||||
name="instagram",
|
name="instagram",
|
||||||
),
|
),
|
||||||
path(
|
path("telegram/", RedirectView.as_view(url="https://t.me/FETInfo"), name="telegram"),
|
||||||
"telegram/", RedirectView.as_view(url="https://t.me/FETInfo"), name="telegram"
|
|
||||||
),
|
|
||||||
path(
|
path(
|
||||||
"sitemap.xml",
|
"sitemap.xml",
|
||||||
sitemap,
|
sitemap,
|
||||||
|
|||||||
@@ -252,9 +252,7 @@ class BillUpdateForm(forms.ModelForm):
|
|||||||
self.fields["saving"].required = False
|
self.fields["saving"].required = False
|
||||||
|
|
||||||
# only digital bill field
|
# only digital bill field
|
||||||
self.fields[
|
self.fields["only_digital_new"].label = "Ich habe eine neue digitale Rechnung."
|
||||||
"only_digital_new"
|
|
||||||
].label = "Ich habe eine neue digitale Rechnung."
|
|
||||||
self.fields["only_digital_new"].required = False
|
self.fields["only_digital_new"].required = False
|
||||||
|
|
||||||
# Resolution fields
|
# Resolution fields
|
||||||
@@ -443,11 +441,7 @@ class BillAdminForm(forms.ModelForm):
|
|||||||
self.fields["bill_creator"].widget.can_delete_related = False
|
self.fields["bill_creator"].widget.can_delete_related = False
|
||||||
|
|
||||||
# delete wiref id from list if there are already 8 bills in wiref form.
|
# delete wiref id from list if there are already 8 bills in wiref form.
|
||||||
qs = (
|
qs = self.fields["wiref"].queryset.annotate(num_bills=Count("bill")).filter(num_bills__lt=8)
|
||||||
self.fields["wiref"]
|
|
||||||
.queryset.annotate(num_bills=Count("bill"))
|
|
||||||
.filter(num_bills__lt=8)
|
|
||||||
)
|
|
||||||
|
|
||||||
# delete wiref id from if status is not opened.
|
# delete wiref id from if status is not opened.
|
||||||
qs = qs.filter(status=Wiref.Status.OPENED)
|
qs = qs.filter(status=Wiref.Status.OPENED)
|
||||||
|
|||||||
@@ -34,9 +34,7 @@ class BankData(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class Resolution(models.Model):
|
class Resolution(models.Model):
|
||||||
id = models.CharField(
|
id = models.CharField(primary_key=True, max_length=128, verbose_name="Beschlussnummer")
|
||||||
primary_key=True, max_length=128, verbose_name="Beschlussnummer"
|
|
||||||
)
|
|
||||||
name = models.CharField(max_length=128, verbose_name="Bezeichnung")
|
name = models.CharField(max_length=128, verbose_name="Bezeichnung")
|
||||||
|
|
||||||
is_visible = models.BooleanField(default=False, verbose_name="sichtbar")
|
is_visible = models.BooleanField(default=False, verbose_name="sichtbar")
|
||||||
@@ -47,9 +45,7 @@ class Resolution(models.Model):
|
|||||||
FINANCE = "F", "Finanzbeschluss"
|
FINANCE = "F", "Finanzbeschluss"
|
||||||
FSREF = "R", "FsRef-Beschluss"
|
FSREF = "R", "FsRef-Beschluss"
|
||||||
|
|
||||||
option = models.CharField(
|
option = models.CharField(max_length=1, choices=Option.choices, verbose_name="Beschluss")
|
||||||
max_length=1, choices=Option.choices, verbose_name="Beschluss"
|
|
||||||
)
|
|
||||||
|
|
||||||
date = models.DateField(verbose_name="Datum")
|
date = models.DateField(verbose_name="Datum")
|
||||||
voting = models.CharField(max_length=15, verbose_name="Abstimmungsverhalten")
|
voting = models.CharField(max_length=15, verbose_name="Abstimmungsverhalten")
|
||||||
@@ -142,9 +138,7 @@ class Bill(models.Model):
|
|||||||
|
|
||||||
date = models.DateField()
|
date = models.DateField()
|
||||||
invoice = models.TextField()
|
invoice = models.TextField()
|
||||||
amount = models.DecimalField(
|
amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Betrag (EUR)")
|
||||||
max_digits=7, decimal_places=2, verbose_name="Betrag (EUR)"
|
|
||||||
)
|
|
||||||
purpose = models.CharField(max_length=140, verbose_name="Verwendungszweck")
|
purpose = models.CharField(max_length=140, verbose_name="Verwendungszweck")
|
||||||
|
|
||||||
class Affiliation(models.TextChoices):
|
class Affiliation(models.TextChoices):
|
||||||
|
|||||||
@@ -22,9 +22,7 @@ urlpatterns = [
|
|||||||
BillCreateDoneView.as_view(),
|
BillCreateDoneView.as_view(),
|
||||||
name="bill_create_done",
|
name="bill_create_done",
|
||||||
),
|
),
|
||||||
path(
|
path("create-resolution/", ResolutionCreateView.as_view(), name="resolution_create"),
|
||||||
"create-resolution/", ResolutionCreateView.as_view(), name="resolution_create"
|
|
||||||
),
|
|
||||||
path("resolutions/", ResolutionListView.as_view(), name="resolution_list"),
|
path("resolutions/", ResolutionListView.as_view(), name="resolution_list"),
|
||||||
path(
|
path(
|
||||||
"resolutions/<str:id>/",
|
"resolutions/<str:id>/",
|
||||||
|
|||||||
@@ -46,9 +46,7 @@ class BillCreateView(LoginRequiredMixin, CreateView):
|
|||||||
|
|
||||||
# Disable old bank data.
|
# Disable old bank data.
|
||||||
qs = BankData.objects.filter(
|
qs = BankData.objects.filter(
|
||||||
~Q(id=obj.id)
|
~Q(id=obj.id) & Q(bankdata_creator=obj.bankdata_creator) & Q(is_disabled=False)
|
||||||
& Q(bankdata_creator=obj.bankdata_creator)
|
|
||||||
& Q(is_disabled=False)
|
|
||||||
)
|
)
|
||||||
qs.update(is_disabled=True)
|
qs.update(is_disabled=True)
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,7 @@ class Album(models.Model):
|
|||||||
slug = models.SlugField(unique=True, null=True, blank=True)
|
slug = models.SlugField(unique=True, null=True, blank=True)
|
||||||
|
|
||||||
folder_name = models.CharField(verbose_name="Ordner Name", max_length=200)
|
folder_name = models.CharField(verbose_name="Ordner Name", max_length=200)
|
||||||
thumbnail = models.CharField(
|
thumbnail = models.CharField(verbose_name="Thumbnail", max_length=200, null=True, blank=True)
|
||||||
verbose_name="Thumbnail", max_length=200, null=True, blank=True
|
|
||||||
)
|
|
||||||
|
|
||||||
event_date = models.DateField(
|
event_date = models.DateField(
|
||||||
verbose_name="Event Datum", null=True, blank=True, default=timezone.now
|
verbose_name="Event Datum", null=True, blank=True, default=timezone.now
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ def get_image_list(folder_name):
|
|||||||
if ext.lower() not in valid_images:
|
if ext.lower() not in valid_images:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
thumb_path = os.path.join(
|
thumb_path = os.path.join(settings.MEDIA_ROOT + gallery_thumb_path, folder_name)
|
||||||
settings.MEDIA_ROOT + gallery_thumb_path, folder_name
|
|
||||||
)
|
|
||||||
thumb_file_path = os.path.join(thumb_path, f"thumb_{img}")
|
thumb_file_path = os.path.join(thumb_path, f"thumb_{img}")
|
||||||
if os.path.exists(thumb_file_path):
|
if os.path.exists(thumb_file_path):
|
||||||
thumb_url = os.path.join(
|
thumb_url = os.path.join(
|
||||||
|
|||||||
@@ -31,9 +31,7 @@ def index(request):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# show only PUBLIC albums.
|
# show only PUBLIC albums.
|
||||||
albums = deque(
|
albums = deque(Album.objects.filter(status=Album.PUBLIC).order_by("-event_date"))
|
||||||
Album.objects.filter(status=Album.PUBLIC).order_by("-event_date")
|
|
||||||
)
|
|
||||||
|
|
||||||
for album in list(albums):
|
for album in list(albums):
|
||||||
img_list = album.get_images()
|
img_list = album.get_images()
|
||||||
|
|||||||
@@ -63,9 +63,7 @@ class Topic(models.Model):
|
|||||||
verbose_name_plural = "Themen"
|
verbose_name_plural = "Themen"
|
||||||
|
|
||||||
constraints = [
|
constraints = [
|
||||||
UniqueConstraint(
|
UniqueConstraint(fields=["slug", "topic_group"], name="unique_intern_slug_topic_group"),
|
||||||
fields=["slug", "topic_group"], name="unique_intern_slug_topic_group"
|
|
||||||
),
|
|
||||||
UniqueConstraint(
|
UniqueConstraint(
|
||||||
fields=["title", "topic_group"], name="unique_intern_title_topic_group"
|
fields=["title", "topic_group"], name="unique_intern_title_topic_group"
|
||||||
),
|
),
|
||||||
@@ -102,9 +100,7 @@ class Attachment(models.Model):
|
|||||||
|
|
||||||
constraints = [
|
constraints = [
|
||||||
UniqueConstraint(fields=["slug", "topic"], name="unique_intern_slug_topic"),
|
UniqueConstraint(fields=["slug", "topic"], name="unique_intern_slug_topic"),
|
||||||
UniqueConstraint(
|
UniqueConstraint(fields=["title", "topic"], name="unique_intern_title_topic"),
|
||||||
fields=["title", "topic"], name="unique_intern_title_topic"
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -125,9 +121,7 @@ class Attachment(models.Model):
|
|||||||
class Etherpad(models.Model):
|
class Etherpad(models.Model):
|
||||||
title = models.CharField(max_length=128, verbose_name="Titel")
|
title = models.CharField(max_length=128, verbose_name="Titel")
|
||||||
|
|
||||||
slug_id = models.CharField(
|
slug_id = models.CharField(default=create_random_id, editable=False, max_length=8, unique=True)
|
||||||
default=create_random_id, editable=False, max_length=8, unique=True
|
|
||||||
)
|
|
||||||
etherpad_key = models.CharField(blank=True, max_length=50)
|
etherpad_key = models.CharField(blank=True, max_length=50)
|
||||||
date = models.DateField(default=date.today, verbose_name="Datum")
|
date = models.DateField(default=date.today, verbose_name="Datum")
|
||||||
|
|
||||||
@@ -142,9 +136,7 @@ class Etherpad(models.Model):
|
|||||||
verbose_name_plural = "Etherpads"
|
verbose_name_plural = "Etherpads"
|
||||||
|
|
||||||
constraints = [
|
constraints = [
|
||||||
UniqueConstraint(
|
UniqueConstraint(fields=["title", "date", "attachment"], name="unique_intern_etherpad"),
|
||||||
fields=["title", "date", "attachment"], name="unique_intern_etherpad"
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -182,9 +174,7 @@ class Etherpad(models.Model):
|
|||||||
|
|
||||||
class FileUpload(models.Model):
|
class FileUpload(models.Model):
|
||||||
title = models.CharField(blank=True, max_length=128, verbose_name="Titel")
|
title = models.CharField(blank=True, max_length=128, verbose_name="Titel")
|
||||||
file_field = models.FileField(
|
file_field = models.FileField(upload_to="uploads/intern/files/", verbose_name="Dokument")
|
||||||
upload_to="uploads/intern/files/", verbose_name="Dokument"
|
|
||||||
)
|
|
||||||
date = models.DateField(default=date.today, verbose_name="Datum")
|
date = models.DateField(default=date.today, verbose_name="Datum")
|
||||||
|
|
||||||
attachment = models.ForeignKey(
|
attachment = models.ForeignKey(
|
||||||
|
|||||||
@@ -186,9 +186,7 @@ class EtherpadCreateView(LoginRequiredMixin, CreateView):
|
|||||||
topic_slug = self.kwargs.get("topic_slug")
|
topic_slug = self.kwargs.get("topic_slug")
|
||||||
slug = self.kwargs.get("slug")
|
slug = self.kwargs.get("slug")
|
||||||
attachment = Attachment.objects.get(
|
attachment = Attachment.objects.get(
|
||||||
Q(topic__topic_group__slug=topic_group_slug)
|
Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug)
|
||||||
& Q(topic__slug=topic_slug)
|
|
||||||
& Q(slug=slug)
|
|
||||||
)
|
)
|
||||||
context["attachment"] = attachment
|
context["attachment"] = attachment
|
||||||
return context
|
return context
|
||||||
@@ -213,9 +211,7 @@ class FileUploadCreateView(LoginRequiredMixin, CreateView):
|
|||||||
topic_slug = self.kwargs.get("topic_slug")
|
topic_slug = self.kwargs.get("topic_slug")
|
||||||
slug = self.kwargs.get("slug")
|
slug = self.kwargs.get("slug")
|
||||||
attachment = Attachment.objects.get(
|
attachment = Attachment.objects.get(
|
||||||
Q(topic__topic_group__slug=topic_group_slug)
|
Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug)
|
||||||
& Q(topic__slug=topic_slug)
|
|
||||||
& Q(slug=slug)
|
|
||||||
)
|
)
|
||||||
context["attachment"] = attachment
|
context["attachment"] = attachment
|
||||||
return context
|
return context
|
||||||
|
|||||||
@@ -24,11 +24,7 @@ class ActiveMemberForm(forms.ModelForm):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
member_qs = (
|
member_qs = self.fields["member"].queryset.filter(role="A").order_by("firstname", "surname")
|
||||||
self.fields["member"]
|
|
||||||
.queryset.filter(role="A")
|
|
||||||
.order_by("firstname", "surname")
|
|
||||||
)
|
|
||||||
self.fields["member"].queryset = member_qs
|
self.fields["member"].queryset = member_qs
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,11 +40,7 @@ class InactiveJobMemberManager(models.Manager):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
date_today = timezone.now().date()
|
date_today = timezone.now().date()
|
||||||
qs = (
|
qs = super().get_queryset().order_by("member__firstname", "member__surname", "-job_start")
|
||||||
super()
|
|
||||||
.get_queryset()
|
|
||||||
.order_by("member__firstname", "member__surname", "-job_start")
|
|
||||||
)
|
|
||||||
|
|
||||||
return qs.filter(
|
return qs.filter(
|
||||||
Q(member__role="P")
|
Q(member__role="P")
|
||||||
@@ -66,25 +62,15 @@ class JobMemberManager(models.Manager):
|
|||||||
|
|
||||||
def get_active_jobs(self, member_id):
|
def get_active_jobs(self, member_id):
|
||||||
date_today = timezone.now().date()
|
date_today = timezone.now().date()
|
||||||
qs = (
|
qs = self.get_queryset().filter(member__id=member_id).order_by("-job_start", "job__name")
|
||||||
self.get_queryset()
|
|
||||||
.filter(member__id=member_id)
|
|
||||||
.order_by("-job_start", "job__name")
|
|
||||||
)
|
|
||||||
|
|
||||||
return qs.filter(Q(job_end__gt=date_today) | Q(job_end__isnull=True))
|
return qs.filter(Q(job_end__gt=date_today) | Q(job_end__isnull=True))
|
||||||
|
|
||||||
def get_inactive_jobs(self, member_id):
|
def get_inactive_jobs(self, member_id):
|
||||||
date_today = timezone.now().date()
|
date_today = timezone.now().date()
|
||||||
qs = (
|
qs = self.get_queryset().filter(member__id=member_id).order_by("-job_start", "job__name")
|
||||||
self.get_queryset()
|
|
||||||
.filter(member__id=member_id)
|
|
||||||
.order_by("-job_start", "job__name")
|
|
||||||
)
|
|
||||||
|
|
||||||
return qs.filter(
|
return qs.filter(Q(job_end__lt=date_today + timedelta(days=1)) & Q(job_end__isnull=False))
|
||||||
Q(job_end__lt=date_today + timedelta(days=1)) & Q(job_end__isnull=False)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class MemberManager(models.Manager):
|
class MemberManager(models.Manager):
|
||||||
|
|||||||
@@ -194,11 +194,7 @@ class Job(models.Model):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return (
|
return reverse("members:jobs", kwargs={"slug": self.job_group.slug}) + "#" + self.slug
|
||||||
reverse("members:jobs", kwargs={"slug": self.job_group.slug})
|
|
||||||
+ "#"
|
|
||||||
+ self.slug
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if not self.shortterm:
|
if not self.shortterm:
|
||||||
@@ -229,9 +225,7 @@ class JobMember(models.Model):
|
|||||||
MEMBER = ("50", "Mitglied")
|
MEMBER = ("50", "Mitglied")
|
||||||
SUBSTITUTE_MEMBER = ("60", "Ersatzmitglied")
|
SUBSTITUTE_MEMBER = ("60", "Ersatzmitglied")
|
||||||
|
|
||||||
job_role = models.CharField(
|
job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER)
|
||||||
max_length=2, choices=JobRole.choices, default=JobRole.MEMBER
|
|
||||||
)
|
|
||||||
|
|
||||||
objects = models.Manager()
|
objects = models.Manager()
|
||||||
members = JobMemberManager()
|
members = JobMemberManager()
|
||||||
|
|||||||
@@ -27,9 +27,7 @@ class JobGroupSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
|
|
||||||
class JobSerializer(serializers.HyperlinkedModelSerializer):
|
class JobSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
# job_group = JobGroupSerializer()
|
# job_group = JobGroupSerializer()
|
||||||
job_group = serializers.SlugRelatedField(
|
job_group = serializers.SlugRelatedField(slug_field="slug", queryset=JobGroup.objects)
|
||||||
slug_field="slug", queryset=JobGroup.objects
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Job
|
model = Job
|
||||||
@@ -40,9 +38,7 @@ class JobMemberSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
# member = MemberSerializer()
|
# member = MemberSerializer()
|
||||||
# job = JobSerializer()
|
# job = JobSerializer()
|
||||||
job = serializers.SlugRelatedField(slug_field="slug", queryset=Job.objects)
|
job = serializers.SlugRelatedField(slug_field="slug", queryset=Job.objects)
|
||||||
member = serializers.SlugRelatedField(
|
member = serializers.SlugRelatedField(slug_field="mailaccount", queryset=Member.objects)
|
||||||
slug_field="mailaccount", queryset=Member.objects
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobMember
|
model = JobMember
|
||||||
|
|||||||
@@ -88,9 +88,7 @@ class MemberFormTestCase(TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.assertFalse(form.is_valid())
|
self.assertFalse(form.is_valid())
|
||||||
self.assertEqual(
|
self.assertEqual(form.errors.as_data()["__all__"][0].message, "Es fehlt das Profilbild.")
|
||||||
form.errors.as_data()["__all__"][0].message, "Es fehlt das Profilbild."
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_form_wrong_mailaccount(self):
|
def test_form_wrong_mailaccount(self):
|
||||||
image = SimpleUploadedFile(
|
image = SimpleUploadedFile(
|
||||||
|
|||||||
@@ -40,9 +40,7 @@ class NewsForm(PostForm):
|
|||||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||||
),
|
),
|
||||||
"image": "Verwendbare Formate: ...",
|
"image": "Verwendbare Formate: ...",
|
||||||
"is_pinned": (
|
"is_pinned": ("Dieser Post soll an die Startseite als erster Post angeheftet werden."),
|
||||||
"Dieser Post soll an die Startseite als erster Post angeheftet werden."
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
@@ -74,9 +72,7 @@ class EventForm(PostForm):
|
|||||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||||
),
|
),
|
||||||
"image": "Verwendbare Formate: Bildformate",
|
"image": "Verwendbare Formate: Bildformate",
|
||||||
"is_pinned": (
|
"is_pinned": ("Dieses Event soll an die Startseite als erster Post angeheftet werden."),
|
||||||
"Dieses Event soll an die Startseite als erster Post angeheftet werden."
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
|
|||||||
@@ -109,9 +109,7 @@ class Post(models.Model):
|
|||||||
is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False)
|
is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False)
|
||||||
|
|
||||||
# addional infos for events
|
# addional infos for events
|
||||||
event_start = models.DateTimeField(
|
event_start = models.DateTimeField(verbose_name="Event Start", null=True, blank=True)
|
||||||
verbose_name="Event Start", null=True, blank=True
|
|
||||||
)
|
|
||||||
event_end = models.DateTimeField(verbose_name="Event Ende", null=True, blank=True)
|
event_end = models.DateTimeField(verbose_name="Event Ende", null=True, blank=True)
|
||||||
event_place = models.CharField(max_length=200, null=True, blank=True)
|
event_place = models.CharField(max_length=200, null=True, blank=True)
|
||||||
|
|
||||||
@@ -178,9 +176,7 @@ class Post(models.Model):
|
|||||||
|
|
||||||
ep_set_html(self.agenda_key, value)
|
ep_set_html(self.agenda_key, value)
|
||||||
|
|
||||||
request_logger.info(
|
request_logger.info("set etherpad for post %s id: %s", self.slug, self.agenda_key)
|
||||||
"set etherpad for post %s id: %s", self.slug, self.agenda_key
|
|
||||||
)
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@protocol_html.setter
|
@protocol_html.setter
|
||||||
@@ -192,9 +188,7 @@ class Post(models.Model):
|
|||||||
|
|
||||||
ep_set_html(self.protocol_key, value)
|
ep_set_html(self.protocol_key, value)
|
||||||
|
|
||||||
request_logger.info(
|
request_logger.info("set etherpad for post %s id: %s", self.slug, self.protocol_key)
|
||||||
"set etherpad for post %s id: %s", self.slug, self.protocol_key
|
|
||||||
)
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
_agenda_filename = None
|
_agenda_filename = None
|
||||||
@@ -305,9 +299,7 @@ class Post(models.Model):
|
|||||||
if self.event_end and self.event_end < self.event_start:
|
if self.event_end and self.event_end < self.event_start:
|
||||||
raise ValidationError(_("Das Ende des Events liegt vor dem Beginn."))
|
raise ValidationError(_("Das Ende des Events liegt vor dem Beginn."))
|
||||||
if self.event_start and self.post_type not in ["E", "F"]:
|
if self.event_start and self.post_type not in ["E", "F"]:
|
||||||
raise ValidationError(
|
raise ValidationError(_("Für diesen Post Typ ist kein Event Start zulässig"))
|
||||||
_("Für diesen Post Typ ist kein Event Start zulässig")
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def published(self):
|
def published(self):
|
||||||
@@ -408,9 +400,7 @@ class FetMeeting(Event):
|
|||||||
|
|
||||||
if Post.objects.filter(slug=slug).exists():
|
if Post.objects.filter(slug=slug).exists():
|
||||||
if Post.objects.get(slug=slug).id != self.id:
|
if Post.objects.get(slug=slug).id != self.id:
|
||||||
raise ValidationError(
|
raise ValidationError(_("Es existiert bereits eine Sitzung mit demselben Datum."))
|
||||||
_("Es existiert bereits eine Sitzung mit demselben Datum.")
|
|
||||||
)
|
|
||||||
|
|
||||||
return slug
|
return slug
|
||||||
|
|
||||||
@@ -422,9 +412,7 @@ class FetMeeting(Event):
|
|||||||
|
|
||||||
class FileUpload(models.Model):
|
class FileUpload(models.Model):
|
||||||
title = models.CharField(verbose_name="Titel", max_length=200)
|
title = models.CharField(verbose_name="Titel", max_length=200)
|
||||||
file_field = models.FileField(
|
file_field = models.FileField(verbose_name="Dokument", upload_to="uploads/posts/files/")
|
||||||
verbose_name="Dokument", upload_to="uploads/posts/files/"
|
|
||||||
)
|
|
||||||
post = models.ForeignKey(Post, on_delete=models.CASCADE)
|
post = models.ForeignKey(Post, on_delete=models.CASCADE)
|
||||||
|
|
||||||
objects = models.Manager()
|
objects = models.Manager()
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class PostSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
"has_agenda",
|
"has_agenda",
|
||||||
"has_protocol",
|
"has_protocol",
|
||||||
"tag_string",
|
"tag_string",
|
||||||
"imageurl"
|
"imageurl",
|
||||||
# 'author',
|
# 'author',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -81,9 +81,7 @@ def calendar(request):
|
|||||||
"events": events,
|
"events": events,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render(
|
return render(request, "posts/fet_calendar.ics", context, content_type="text/calendar")
|
||||||
request, "posts/fet_calendar.ics", context, content_type="text/calendar"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def tags(request, tag=""):
|
def tags(request, tag=""):
|
||||||
@@ -303,9 +301,7 @@ def show_pdf_protocol(request, id):
|
|||||||
|
|
||||||
|
|
||||||
def show_pdf(request, html, filename):
|
def show_pdf(request, html, filename):
|
||||||
rendered = render_to_string(
|
rendered = render_to_string(settings.BASE_DIR + "/templates/posts/pdf/template.html")
|
||||||
settings.BASE_DIR + "/templates/posts/pdf/template.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
# get body-content from pdf template
|
# get body-content from pdf template
|
||||||
rendered = rendered.split("<html>")[1]
|
rendered = rendered.split("<html>")[1]
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ class SearchObject:
|
|||||||
self.url = res.get("_source", {}).get("url", "")
|
self.url = res.get("_source", {}).get("url", "")
|
||||||
self.text = res.get("_source", {}).get("text", "")
|
self.text = res.get("_source", {}).get("text", "")
|
||||||
self.raw = res.get("_source", {}).get("raw", "")
|
self.raw = res.get("_source", {}).get("raw", "")
|
||||||
self.highlight = res.get("highlight", {}).get("title", [""]) + res.get(
|
self.highlight = res.get("highlight", {}).get("title", [""]) + res.get("highlight", {}).get(
|
||||||
"highlight", {}
|
"text", [""]
|
||||||
).get("text", [""])
|
)
|
||||||
|
|
||||||
|
|
||||||
def es_sorting():
|
def es_sorting():
|
||||||
|
|||||||
Reference in New Issue
Block a user