From fcf63d8bf9d2e5a0687e65156a5f34c7b5dc844a Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Mon, 27 Jan 2025 01:02:42 +0100 Subject: [PATCH] ruff formatting --- fet2020/authentications/authentications.py | 2 -- fet2020/authentications/backends.py | 21 ++++++----- fet2020/authentications/forms.py | 1 - fet2020/core/admin.py | 2 +- fet2020/fet2020/middleware.py | 3 +- fet2020/fet2020/settings.py | 25 +++++-------- fet2020/fet2020/utils.py | 6 +--- fet2020/finance/admin.py | 12 +++---- fet2020/finance/forms.py | 22 ++++++++---- fet2020/finance/models.py | 9 +++-- fet2020/finance/utils.py | 10 +++--- fet2020/finance/views.py | 8 ++--- fet2020/gallery/models.py | 10 ++++-- fet2020/gallery/utils.py | 3 +- fet2020/gallery/views.py | 2 +- fet2020/intern/admin.py | 6 ++-- fet2020/intern/models.py | 20 ++++++++--- fet2020/intern/views.py | 14 ++++---- fet2020/members/admin.py | 10 +++--- fet2020/members/forms.py | 3 +- fet2020/members/managers.py | 8 +++-- fet2020/members/templatetags/job_groups.py | 3 +- fet2020/members/views.py | 3 +- fet2020/posts/admin.py | 22 ++++++------ fet2020/posts/forms.py | 8 +++-- fet2020/posts/managers.py | 24 +++++-------- fet2020/posts/models.py | 41 +++++++++++----------- fet2020/posts/search_indexes.py | 4 +-- fet2020/posts/views.py | 8 ++--- fet2020/search/forms.py | 12 +++---- 30 files changed, 168 insertions(+), 154 deletions(-) diff --git a/fet2020/authentications/authentications.py b/fet2020/authentications/authentications.py index 959cdcce..977181ca 100644 --- a/fet2020/authentications/authentications.py +++ b/fet2020/authentications/authentications.py @@ -4,8 +4,6 @@ from ldap3 import HASHED_SALTED_SHA, MODIFY_REPLACE, Connection, Server from ldap3.core.exceptions import LDAPBindError from ldap3.utils.hashed import hashed -from members.models import Member - logger = logging.getLogger(__name__) host = "ldap://juri.fet.htu.tuwien.ac.at" port = 389 diff --git a/fet2020/authentications/backends.py b/fet2020/authentications/backends.py index e7d14b3c..24dd0d9f 100644 --- a/fet2020/authentications/backends.py +++ b/fet2020/authentications/backends.py @@ -1,8 +1,7 @@ import logging -from django.contrib.auth.models import Group, User from django.contrib.auth.backends import ModelBackend - +from django.contrib.auth.models import Group, User from ldap3 import Connection, Server from ldap3.core.exceptions import LDAPBindError @@ -30,9 +29,9 @@ class LdapBackend(ModelBackend): except Exception as e: logger.info("Auth exception from username '%s'. Error: %s", username, e) return False - + return True - + def _check_fet_member(self, username: str, password: str) -> bool: server = Server(host, port=port) userdn = f"uid={username},ou=user,dc=fet,dc=htu,dc=tuwien,dc=ac,dc=at" @@ -111,10 +110,10 @@ class LdapBackend(ModelBackend): def authenticate(self, request, username=None, password=None): if username is None or password is None: return - + # Set username to lower because fet2020 can only work with lowercase letters. username = username.lower() - + if not self._check_ldap_user(username, password): return @@ -125,10 +124,10 @@ class LdapBackend(ModelBackend): user = User.objects.get(username) except User.DoesNotExist: user = User.objects.create_user(username) - finally: - if not self.user_can_authenticate(user): - logger.info("User '%s' is inactive.", user.get_username()) - return + + if not self.user_can_authenticate(user): + logger.info("User '%s' is inactive.", user.get_username()) + return # Add user to all groups for elem in Group.objects.all(): @@ -147,7 +146,7 @@ class DebugBackend(ModelBackend): if (user := super().authenticate(request, username, password, **kwargs)) is None: logger.info("User '%s' can't login. The user may not be a superuser.", username) return None - + # Try to get the member. If it not exists, then create a new member. try: member = Member.objects.get(mailaccount=user.email) diff --git a/fet2020/authentications/forms.py b/fet2020/authentications/forms.py index a2d43bd8..5ef850ef 100644 --- a/fet2020/authentications/forms.py +++ b/fet2020/authentications/forms.py @@ -1,7 +1,6 @@ import logging from django.contrib.auth.forms import PasswordChangeForm -from django.core.exceptions import ValidationError from .authentications import change_password diff --git a/fet2020/core/admin.py b/fet2020/core/admin.py index 669391c3..1e64fa95 100644 --- a/fet2020/core/admin.py +++ b/fet2020/core/admin.py @@ -21,7 +21,7 @@ class CustomFlatPageAdmin(FlatPageAdmin): "url", "title", "content", - ) + ), }, ), ( diff --git a/fet2020/fet2020/middleware.py b/fet2020/fet2020/middleware.py index ab43b7f6..ea77bc58 100644 --- a/fet2020/fet2020/middleware.py +++ b/fet2020/fet2020/middleware.py @@ -6,7 +6,8 @@ class FETHeaderMiddleware(RemoteUserMiddleware): def process_request(self, request): request.META[self.header] = request.META.get( - self.header, request.headers.get(self.header, None) + self.header, + request.headers.get(self.header, None), ) super().process_request(request) diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index d40d3288..b49b249c 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -24,8 +24,8 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # DEBUGGING -DEBUG = (env("DEBUG").lower() == "true") -LDAP = (env("LDAP").lower() == "true") +DEBUG = env("DEBUG").lower() == "true" +LDAP = env("LDAP").lower() == "true" # MODELS @@ -84,7 +84,7 @@ if DEBUG: "default": { "ENGINE": "django.db.backends.sqlite3", "NAME": os.path.join(BASE_DIR, "db.sqlite3"), - } + }, } else: DATABASES = { @@ -95,7 +95,7 @@ else: "PASSWORD": env("MYSQL_PASSWORD"), "HOST": env("MYSQL_HOST"), "PORT": env("MYSQL_PORT"), - } + }, } @@ -107,20 +107,14 @@ EMAIL_USE_TLS = True # STATIC FILES -if DEBUG: - STATIC_URL = "static/" -else: - STATIC_URL = "assets/" +STATIC_URL = "static/" if DEBUG else "assets/" # Use for collectstatic/production folder. # --- Saving directory for production folder. -STATIC_ROOT = "assets/" +STATIC_ROOT = "assets/" # --- Get files from following directory for production folder. -STATICFILES_DIRS = [ - os.path.join(BASE_DIR, "gallery/static"), - os.path.join(BASE_DIR, "static"), -] +STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # FILE UPLOADS @@ -198,10 +192,7 @@ CSRF_TRUSTED_ORIGINS = [ "https://" + env("HOST_NAME"), ] -if DEBUG: - SECRET_KEY = "r37-i7l)vrduzz2-gira+z#u!p!di9#f+%s*5-bb($hg)55@ns" -else: - SECRET_KEY = env("SECRET_KEY") +SECRET_KEY = "r37-i7l)vrduzz2-gira+z#u!p!di9#f+%s*5-bb($hg)55@ns" if DEBUG else env("SECRET_KEY") # TEMPLATES diff --git a/fet2020/fet2020/utils.py b/fet2020/fet2020/utils.py index a5018ecf..36b6da90 100644 --- a/fet2020/fet2020/utils.py +++ b/fet2020/fet2020/utils.py @@ -11,11 +11,7 @@ def add_log_action(request, form, app_label, model, add=True): obj = form.save() content_type = ContentType.objects.get(app_label=app_label, model=model) change_message = construct_change_message(form, None, add) - - if add: - action_flag = ADDITION - else: - action_flag = CHANGE + action_flag = ADDITION if add else CHANGE LogEntry.objects.log_action( user_id=request.user.pk, diff --git a/fet2020/finance/admin.py b/fet2020/finance/admin.py index 6e234064..82af7512 100644 --- a/fet2020/finance/admin.py +++ b/fet2020/finance/admin.py @@ -216,7 +216,7 @@ class BillAdmin(admin.ModelAdmin): "fields": ( "bill_creator", "resolution", - ) + ), }, ), ( @@ -227,7 +227,7 @@ class BillAdmin(admin.ModelAdmin): "bankdata", ("get_bankdata_name", "get_bankdata_iban", "get_bankdata_bic"), "get_qrcode", - ) + ), }, ), ( @@ -241,7 +241,7 @@ class BillAdmin(admin.ModelAdmin): "amount", "only_digital", "file_field", - ) + ), }, ), ( @@ -251,7 +251,7 @@ class BillAdmin(admin.ModelAdmin): "comment", "wiref", "status", - ) + ), }, ), ) @@ -403,7 +403,7 @@ class ResolutionAdmin(admin.ModelAdmin): "date", "option", "is_visible", - ) + ), }, ), ( @@ -413,7 +413,7 @@ class ResolutionAdmin(admin.ModelAdmin): "budget", "total", "budget_remaining", - ) + ), }, ), ( diff --git a/fet2020/finance/forms.py b/fet2020/finance/forms.py index 8613aca1..3ace9c9d 100644 --- a/fet2020/finance/forms.py +++ b/fet2020/finance/forms.py @@ -29,7 +29,7 @@ def get_cleaned_data(cleaned_data): if resolution != "": try: cleaned_data["resolution"] = Resolution.objects.get( - Q(id=resolution) | Q(name=resolution) + Q(id=resolution) | Q(name=resolution), ) except Exception: raise ValidationError({"resolution_text": "Es gibt keinen Beschluss mit dieser ID."}) @@ -68,7 +68,10 @@ class BillCreateForm(forms.ModelForm): # Resolution resolution_text = forms.CharField( - required=False, label="Beschlussnummer", initial="", max_length=128 + required=False, + label="Beschlussnummer", + initial="", + max_length=128, ) class Meta: @@ -122,7 +125,7 @@ class BillCreateForm(forms.ModelForm): self.fields["payer"].autofocus = True bank_data = BankData.objects.filter( - Q(bankdata_creator=member) & Q(is_disabled=False) + Q(bankdata_creator=member) & Q(is_disabled=False), ).first() if bank_data is not None: self.fields["name_text"].initial = bank_data.name @@ -147,12 +150,17 @@ class BillUpdateForm(forms.ModelForm): # only digital bill only_digital_new = forms.BooleanField( - required=False, label="Ich habe eine neue digitale Rechnung.", initial=False + required=False, + label="Ich habe eine neue digitale Rechnung.", + initial=False, ) # Resolution resolution_text = forms.CharField( - required=False, label="Beschlussnummer", initial="", max_length=128 + required=False, + label="Beschlussnummer", + initial="", + max_length=128, ) class Meta: @@ -399,7 +407,9 @@ class BillAdminForm(forms.ModelForm): self.fields["bill_creator"].widget.can_delete_related = False # Delete wiref id from list if there are already 10 bills in wiref form. - qs = self.fields["wiref"].queryset.annotate(num_bills=Count("bill")).filter(num_bills__lt=10) + qs = ( + self.fields["wiref"].queryset.annotate(num_bills=Count("bill")).filter(num_bills__lt=10) + ) # delete wiref id from if status is not opened. qs = qs.filter(status=Wiref.Status.OPENED) diff --git a/fet2020/finance/models.py b/fet2020/finance/models.py index 741acf7f..7c91403a 100644 --- a/fet2020/finance/models.py +++ b/fet2020/finance/models.py @@ -53,7 +53,10 @@ class Resolution(models.Model): voting_text = models.TextField(verbose_name="Abstimmungstext") budget = models.DecimalField( - max_digits=7, decimal_places=2, default=0.00, verbose_name="Budget (EUR)" + max_digits=7, + decimal_places=2, + default=0.00, + verbose_name="Budget (EUR)", ) class Meta: @@ -155,7 +158,9 @@ class Bill(models.Model): REPRESENTATION = "R", "Bundesvertretung" affiliation = models.CharField( - max_length=1, choices=Affiliation.choices, verbose_name="Abrechnungsbudget" + max_length=1, + choices=Affiliation.choices, + verbose_name="Abrechnungsbudget", ) class Payer(models.TextChoices): diff --git a/fet2020/finance/utils.py b/fet2020/finance/utils.py index 35fab641..afc0ff29 100644 --- a/fet2020/finance/utils.py +++ b/fet2020/finance/utils.py @@ -17,7 +17,7 @@ def generate_pdf(wiref): # Get data for pdf data = {} - data_invoice = {} # Own dict for fixing text to multiline + data_invoice = {} # Own dict for fixing text to multiline for count, elem in enumerate(bills): data.update( { @@ -25,12 +25,12 @@ def generate_pdf(wiref): f"VerwendungszweckRow{count + 1}": elem.purpose, # Replace decimal separator from '.' to ',' f"BetragRow{count + 1}": str(elem.amount).replace(".", ","), - } + }, ) data_invoice.update( { f"RechnungsaustellerinRow{count + 1}": elem.invoice, - } + }, ) # Get budget year @@ -51,7 +51,7 @@ def generate_pdf(wiref): "Budgetjahr": budget_year, # Replace decimal separator from '.' to ',' "Summe": str(total).replace(".", ","), - } + }, ) # Write data in pdf @@ -64,7 +64,7 @@ def generate_pdf(wiref): writer.pages[0], data, ) - + # Add invoices and fix text to multiline writer.update_page_form_field_values( writer.pages[0], diff --git a/fet2020/finance/views.py b/fet2020/finance/views.py index 0fefff43..4c9c3a8e 100644 --- a/fet2020/finance/views.py +++ b/fet2020/finance/views.py @@ -34,7 +34,7 @@ def set_bankdata(creator, name, iban, bic, saving): if saving is True: # Disable old bank data. qs = BankData.objects.filter( - ~Q(id=obj.id) & Q(bankdata_creator=obj.bankdata_creator) & Q(is_disabled=False) + ~Q(id=obj.id) & Q(bankdata_creator=obj.bankdata_creator) & Q(is_disabled=False), ) qs.update(is_disabled=True) @@ -114,11 +114,7 @@ class BillUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): # Call bill if it's only yours. def test_func(self): - if self.get_object().bill_creator.username == self.request.user.username: - return True - - # Call handle_no_permissions method. - return False + return self.get_object().bill_creator.username == self.request.user.username def handle_no_permission(self): return redirect("finance:bill_list") diff --git a/fet2020/gallery/models.py b/fet2020/gallery/models.py index 552ea0ca..09faac43 100644 --- a/fet2020/gallery/models.py +++ b/fet2020/gallery/models.py @@ -14,12 +14,18 @@ class Album(models.Model): thumbnail = models.CharField(verbose_name="Thumbnail", max_length=200, null=True, blank=True) 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, ) event_place = models.CharField(max_length=200, blank=True) photographer = models.CharField( - verbose_name="Fotograph(en)", max_length=200, null=True, blank=True + verbose_name="Fotograph(en)", + max_length=200, + null=True, + blank=True, ) DRAFT = "10" diff --git a/fet2020/gallery/utils.py b/fet2020/gallery/utils.py index 952b932c..4f19b34b 100644 --- a/fet2020/gallery/utils.py +++ b/fet2020/gallery/utils.py @@ -34,7 +34,8 @@ def get_image_list(folder_name): img_dict = { "title": img, "image_url": os.path.join( - settings.MEDIA_URL + gallery_path, folder_name + "/" + img + settings.MEDIA_URL + gallery_path, + folder_name + "/" + img, ), "thumb_url": thumb_url, } diff --git a/fet2020/gallery/views.py b/fet2020/gallery/views.py index 61a4e974..92d38ee4 100644 --- a/fet2020/gallery/views.py +++ b/fet2020/gallery/views.py @@ -27,7 +27,7 @@ def index(request): slug=slugify(folder), folder_name=folder, event_date=None, - ) + ), ) else: # show only PUBLIC albums. diff --git a/fet2020/intern/admin.py b/fet2020/intern/admin.py index e31aeed2..fe19fad8 100644 --- a/fet2020/intern/admin.py +++ b/fet2020/intern/admin.py @@ -68,7 +68,7 @@ class TopicGroupAdmin(admin.ModelAdmin): "slug", "order", "short_description", - ) + ), }, ), ) @@ -118,7 +118,7 @@ class TopicAdmin(admin.ModelAdmin): "topic_group", "archive", "description", - ) + ), }, ), ) @@ -163,7 +163,7 @@ class AttachmentAdmin(admin.ModelAdmin): "title", "topic", "description", - ) + ), }, ), ) diff --git a/fet2020/intern/models.py b/fet2020/intern/models.py index 7d29aa3f..9c25b66b 100644 --- a/fet2020/intern/models.py +++ b/fet2020/intern/models.py @@ -23,7 +23,10 @@ class TopicGroup(models.Model): short_description = models.TextField(null=True, blank=True) order = models.PositiveSmallIntegerField( - verbose_name="Reihenfolge", unique=True, null=True, blank=True + verbose_name="Reihenfolge", + unique=True, + null=True, + blank=True, ) objects = models.Manager() @@ -53,7 +56,9 @@ class Topic(models.Model): description = models.TextField(blank=True, null=True) topic_group = models.ForeignKey( - TopicGroup, on_delete=models.CASCADE, verbose_name="Themenbereich" + TopicGroup, + on_delete=models.CASCADE, + verbose_name="Themenbereich", ) objects = models.Manager() @@ -65,7 +70,8 @@ class Topic(models.Model): constraints = [ UniqueConstraint(fields=["slug", "topic_group"], name="unique_intern_slug_topic_group"), UniqueConstraint( - fields=["title", "topic_group"], name="unique_intern_title_topic_group" + fields=["title", "topic_group"], + name="unique_intern_title_topic_group", ), ] @@ -126,7 +132,9 @@ class Etherpad(models.Model): date = models.DateField(default=date.today, verbose_name="Datum") attachment = models.ForeignKey( - Attachment, on_delete=models.CASCADE, verbose_name="Anhang Ordner" + Attachment, + on_delete=models.CASCADE, + verbose_name="Anhang Ordner", ) objects = models.Manager() @@ -178,7 +186,9 @@ class FileUpload(models.Model): date = models.DateField(default=date.today, verbose_name="Datum") attachment = models.ForeignKey( - Attachment, on_delete=models.CASCADE, verbose_name="Anhang Ordner" + Attachment, + on_delete=models.CASCADE, + verbose_name="Anhang Ordner", ) objects = models.Manager() diff --git a/fet2020/intern/views.py b/fet2020/intern/views.py index ae720d0d..9b8f9bfc 100644 --- a/fet2020/intern/views.py +++ b/fet2020/intern/views.py @@ -27,7 +27,9 @@ logger = logging.getLogger(__name__) @authenticated_user def index(request): topic = Topic.objects.filter(archive=False).order_by( - F("topic_group__order").asc(nulls_last=True), "topic_group", "title" + F("topic_group__order").asc(nulls_last=True), + "topic_group", + "title", ) empty_topic_groups = TopicGroup.objects.filter(topic=None) archive_topic = Topic.objects.filter(archive=True) @@ -107,7 +109,7 @@ class AttachmentCreateView(LoginRequiredMixin, CreateView): topic_group_slug = self.kwargs.get("topic_group_slug") topic_slug = self.kwargs.get("slug") context["topic"] = Topic.objects.get( - Q(topic_group__slug=topic_group_slug) & Q(slug=topic_slug) + Q(topic_group__slug=topic_group_slug) & Q(slug=topic_slug), ) return context @@ -143,7 +145,7 @@ class AttachmentDetailView(LoginRequiredMixin, DetailView): topic_group_slug = self.kwargs.get("topic_group_slug") topic_slug = self.kwargs.get("topic_slug") return Attachment.objects.filter( - Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug), ) @@ -166,7 +168,7 @@ class AttachmentUpdateView(LoginRequiredMixin, UpdateView): topic_group_slug = self.kwargs.get("topic_group_slug") topic_slug = self.kwargs.get("topic_slug") return Attachment.objects.filter( - Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug), ) @@ -186,7 +188,7 @@ class EtherpadCreateView(LoginRequiredMixin, CreateView): topic_slug = self.kwargs.get("topic_slug") slug = self.kwargs.get("slug") attachment = Attachment.objects.get( - Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug) + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug), ) context["attachment"] = attachment return context @@ -211,7 +213,7 @@ class FileUploadCreateView(LoginRequiredMixin, CreateView): topic_slug = self.kwargs.get("topic_slug") slug = self.kwargs.get("slug") attachment = Attachment.objects.get( - Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug) + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) & Q(slug=slug), ) context["attachment"] = attachment return context diff --git a/fet2020/members/admin.py b/fet2020/members/admin.py index 2aa732d0..51b86c9d 100644 --- a/fet2020/members/admin.py +++ b/fet2020/members/admin.py @@ -86,7 +86,7 @@ class MemberAdmin(admin.ModelAdmin): "birthday", "phone", "address", - ) + ), }, ), ) @@ -137,7 +137,7 @@ class JobAdmin(admin.ModelAdmin): "fields": ( "name", "job_group", - ) + ), }, ), ( @@ -146,7 +146,7 @@ class JobAdmin(admin.ModelAdmin): "fields": ( "shortterm", "slug", - ) + ), }, ), ) @@ -193,7 +193,7 @@ class JobGroupAdmin(admin.ModelAdmin): "fields": ( "name", "description", - ) + ), }, ), ( @@ -202,7 +202,7 @@ class JobGroupAdmin(admin.ModelAdmin): "fields": ( "shortterm", "slug", - ) + ), }, ), ) diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index a3aa0fa4..74acecdd 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -46,8 +46,7 @@ class MemberForm(forms.ModelForm): help_texts = { "image": ( - "Mindestdimension: 150*150 px, maximale Größe: 10MB, erlaubtes Format: " - "Bildformate." + "Mindestdimension: 150*150 px, maximale Größe: 10MB, erlaubtes Format: Bildformate." ), "mailaccount": "Die Mailadresse mit '@fet.at' angeben.", } diff --git a/fet2020/members/managers.py b/fet2020/members/managers.py index 010158a6..a20479af 100644 --- a/fet2020/members/managers.py +++ b/fet2020/members/managers.py @@ -24,7 +24,7 @@ class ActiveJobMemberManager(models.Manager): ) return qs.filter( - Q(member__role="A") & (Q(job_end__gt=date_today) | Q(job_end__isnull=True)) + Q(member__role="A") & (Q(job_end__gt=date_today) | Q(job_end__isnull=True)), ) @@ -44,7 +44,7 @@ class InactiveJobMemberManager(models.Manager): return qs.filter( Q(member__role="P") - | (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)), ) @@ -56,7 +56,9 @@ class JobMemberManager(models.Manager): def get_all_jobs_sorted(self): qs = self.get_queryset().order_by( - F("job_end").desc(nulls_first=True), "-job_start", "job__name" + F("job_end").desc(nulls_first=True), + "-job_start", + "job__name", ) return qs diff --git a/fet2020/members/templatetags/job_groups.py b/fet2020/members/templatetags/job_groups.py index 19b43b72..ae778a94 100644 --- a/fet2020/members/templatetags/job_groups.py +++ b/fet2020/members/templatetags/job_groups.py @@ -19,7 +19,8 @@ def get_jobs_sidebar(slug): job_groups.remove(elem) job_members = JobMember.active_member.get_all(slug=slug).order_by( - F("job__order").asc(nulls_last=True), "job__name" + F("job__order").asc(nulls_last=True), + "job__name", ) active_job_group = JobGroup.objects.filter(slug=slug).first() diff --git a/fet2020/members/views.py b/fet2020/members/views.py index 5803c8bd..95dec284 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -27,7 +27,8 @@ def jobs(request, slug=None): raise Http404("wrong job") job_members = JobMember.active_member.get_all(slug=slug).order_by( - F("job__order").asc(nulls_last=True), "job__name" + F("job__order").asc(nulls_last=True), + "job__name", ) active_job_group = JobGroup.objects.filter(slug=slug).first() diff --git a/fet2020/posts/admin.py b/fet2020/posts/admin.py index 52a17f68..2975b5cc 100644 --- a/fet2020/posts/admin.py +++ b/fet2020/posts/admin.py @@ -88,7 +88,7 @@ class PostAdmin(admin.ModelAdmin): "all": [ "jquery-ui/jquery-ui.min.css", "jquery-ui/ui-lightness/theme.css", - ] + ], } js = [ "jquery-ui/jquery-ui.min.js", @@ -108,7 +108,7 @@ class NewsAdmin(PostAdmin): "title", "subtitle", "tags", - ) + ), }, ), ( @@ -117,7 +117,7 @@ class NewsAdmin(PostAdmin): "fields": ( "status", "is_pinned", - ) + ), }, ), ( @@ -126,7 +126,7 @@ class NewsAdmin(PostAdmin): "fields": ( "image", "body", - ) + ), }, ), ( @@ -136,7 +136,7 @@ class NewsAdmin(PostAdmin): "slug", "author", "public_date", - ) + ), }, ), ) @@ -161,7 +161,7 @@ class EventAdmin(PostAdmin): "title", "subtitle", "tags", - ) + ), }, ), ( @@ -170,7 +170,7 @@ class EventAdmin(PostAdmin): "fields": ( "status", "is_pinned", - ) + ), }, ), ( @@ -180,7 +180,7 @@ class EventAdmin(PostAdmin): "event_start", "event_end", "event_place", - ) + ), }, ), ( @@ -189,7 +189,7 @@ class EventAdmin(PostAdmin): "fields": ( "image", "body", - ) + ), }, ), ( @@ -199,7 +199,7 @@ class EventAdmin(PostAdmin): "slug", "author", "public_date", - ) + ), }, ), ) @@ -223,7 +223,7 @@ class FetMeetingAdmin(EventAdmin): "event_end", "event_place", "tags", - ) + ), }, ), ) diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 0e87b5ea..8499d28e 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -149,10 +149,14 @@ class PostSearchForm(forms.Form): month = forms.ChoiceField(label="Monat", choices=month_choices, required=False) compact_view = forms.BooleanField( - label="Kompakte Ansicht", required=False, widget=CheckboxInput + label="Kompakte Ansicht", + required=False, + widget=CheckboxInput, ) fet_meeting_only = forms.BooleanField( - label="nur FET Sitzungen", required=False, widget=CheckboxInput + label="nur FET Sitzungen", + required=False, + widget=CheckboxInput, ) def __init__(self, *args, **kwargs): diff --git a/fet2020/posts/managers.py b/fet2020/posts/managers.py index 5c649ae1..c8665846 100644 --- a/fet2020/posts/managers.py +++ b/fet2020/posts/managers.py @@ -10,20 +10,14 @@ class PublishedManager(models.Manager): """ publish all posts with status 'PUBLIC' """ - if public: - qs = self.get_queryset().filter(status="20") - else: - qs = self.get_queryset() + qs = self.get_queryset().filter(status="20") if public else self.get_queryset() return qs def published_all(self, public=True): """ publish all posts with status 'PUBLIC' and 'ONLY_INTERN' """ - if public: - qs = self.get_queryset().filter(~Q(status="10")) - else: - qs = self.get_queryset() + qs = self.get_queryset().filter(~Q(status="10")) if public else self.get_queryset() return qs @@ -35,7 +29,7 @@ class PostManager(PublishedManager, models.Manager): When(post_type="N", then="public_date"), When(post_type="E", then="event_start__date"), When(post_type="F", then="event_start__date"), - ) + ), ) return qs.order_by("-date", "-id") @@ -74,7 +68,7 @@ class ArticleManager(PublishedManager, models.Manager): date=Case( When(post_type="N", then="public_date"), When(post_type="E", then="event_start__date"), - ) + ), ) return qs.order_by("-date", "-id") @@ -104,7 +98,7 @@ class ArticleManager(PublishedManager, models.Manager): .filter(is_pinned=True) .filter( (Q(post_type="N") & Q(public_date__gt=post_date)) - | (Q(post_type="E") & Q(event_end__date__gt=event_date)) + | (Q(post_type="E") & Q(event_end__date__gt=event_date)), ) .first() ) @@ -120,7 +114,7 @@ class NewsManager(PublishedManager, models.Manager): qs = qs.annotate( date=Case( When(post_type="N", then="public_date"), - ) + ), ) return qs.order_by("-date") @@ -136,7 +130,7 @@ class AllEventManager(PublishedManager, models.Manager): date=Case( When(post_type="E", then="event_start__date"), When(post_type="F", then="event_start__date"), - ) + ), ) return qs.order_by("-date") @@ -157,7 +151,7 @@ class EventManager(PublishedManager, models.Manager): qs = qs.annotate( date=Case( When(post_type="E", then="event_start__date"), - ) + ), ) return qs.order_by("-date") @@ -182,7 +176,7 @@ class FetMeetingManager(PublishedManager, models.Manager): qs = qs.annotate( date=Case( When(post_type="F", then="event_start__date"), - ) + ), ) return qs.order_by("-date") diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 92216211..d225ddf2 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -86,7 +86,10 @@ class Post(models.Model): author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True) public_date = models.DateField( - verbose_name="Veröffentlichung", null=True, blank=True, default=timezone.now + verbose_name="Veröffentlichung", + null=True, + blank=True, + default=timezone.now, ) __choices = [("N", _("News")), ("E", _("Event")), ("F", _("FetMeeting"))] @@ -137,9 +140,6 @@ class Post(models.Model): self.title, ) - def get_absolute_url(self): - return reverse("posts:post", kwargs={"slug": self.slug}) - def save(self, *args, **kwargs): # save the post with some defaults if not self.public_date: @@ -150,6 +150,9 @@ class Post(models.Model): super().save(*args, **kwargs) + def get_absolute_url(self): + return reverse("posts:post", kwargs={"slug": self.slug}) + @property def agenda_html(self) -> str | None: "Agenda HTML from Etherpad Pad" @@ -188,7 +191,9 @@ class Post(models.Model): ep_set_html(self.protocol_key, value) request_logger.info( - "Set protocol etherpad. Post: %s. Key: %s", self.slug, self.protocol_key + "Set protocol etherpad. Post: %s. Key: %s", + self.slug, + self.protocol_key, ) return value @@ -302,10 +307,7 @@ class Post(models.Model): @property def published(self): - if self.status == self.Status.PUBLIC: - return True - - return False + return self.status == self.Status.PUBLIC class News(Post): @@ -328,16 +330,16 @@ class Event(Post): only_events = EventManager() all_events = AllEventManager() - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.post_type = "E" - class Meta: proxy = True verbose_name = "Event" verbose_name_plural = "Events" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.post_type = "E" + def save(self, *args, **kwargs): if not self.post_type: self.post_type = "E" @@ -355,16 +357,16 @@ class Event(Post): class FetMeeting(Event): objects = FetMeetingManager() - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.post_type = "F" - class Meta: proxy = True verbose_name = "Fet Sitzung" verbose_name_plural = "Fet Sitzungen" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.post_type = "F" + def save(self, *args, **kwargs): self.title = "Fachschaftssitzung" if not self.slug: @@ -398,9 +400,8 @@ class FetMeeting(Event): def __get_slug(self) -> str: slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung") - if Post.objects.filter(slug=slug).exists(): - if Post.objects.get(slug=slug).id != self.id: - raise ValidationError("Es existiert bereits eine Sitzung mit demselben Datum.") + if Post.objects.filter(slug=slug).exists() and Post.objects.get(slug=slug).id != self.id: + raise ValidationError("Es existiert bereits eine Sitzung mit demselben Datum.") return slug diff --git a/fet2020/posts/search_indexes.py b/fet2020/posts/search_indexes.py index aab838c7..7c04f575 100644 --- a/fet2020/posts/search_indexes.py +++ b/fet2020/posts/search_indexes.py @@ -22,9 +22,7 @@ class PostIndex(indexes.SearchIndex, indexes.Indexable): def prepare_date(self, obj): if obj.post_type == "N": return obj.public_date - elif obj.post_type == "E": - return obj.event_start.date() - elif obj.post_type == "F": + elif obj.post_type == "E" or obj.post_type == "F": return obj.event_start.date() def prepare_agenda(self, obj): diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 8a33b322..d8a5b225 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -146,13 +146,13 @@ class PostDetailView(DetailView): Helper function for getting previous post """ posts = Post.objects.date_sorted_list(self.public_only).filter( - post_type=self.object.post_type + post_type=self.object.post_type, ) qs = posts.filter( # Get posts which are in the future. Q(date__lt=self.object.date) # Get posts which have the same date but id is lower. - | (Q(date__lte=self.object.date) & Q(id__lt=self.object.id)) + | (Q(date__lte=self.object.date) & Q(id__lt=self.object.id)), ) if not qs: # If there are any prev posts, then take the latest one. @@ -173,7 +173,7 @@ class PostDetailView(DetailView): # Get posts which are in the past. Q(date__gt=self.object.date) # Get posts which have the same date but id is greater. - | (Q(date__gte=self.object.date) & Q(id__gt=self.object.id)) + | (Q(date__gte=self.object.date) & Q(id__gt=self.object.id)), ) if not qs: # If there are any next posts, then take the first one. @@ -314,7 +314,7 @@ def show_pdf(request, html, filename): response = HttpResponse(pdf, content_type="application/pdf") - content = "inline; filename=%s" % filename + content = f"inline; filename={filename}" response["Content-Disposition"] = content return response diff --git a/fet2020/search/forms.py b/fet2020/search/forms.py index 9fdbc7bc..5e926792 100644 --- a/fet2020/search/forms.py +++ b/fet2020/search/forms.py @@ -22,7 +22,7 @@ class FetUserSearchForm(SearchForm): sqs_gallery = self.searchqueryset.models(Album) sqs_gallery = sqs_gallery.filter( SQ(title__icontains=self.cleaned_data["q"]) - | SQ(description__icontains=self.cleaned_data["q"]) + | SQ(description__icontains=self.cleaned_data["q"]), ) sqs_intern = self.searchqueryset.models(Etherpad) @@ -31,7 +31,7 @@ class FetUserSearchForm(SearchForm): sqs_member = self.searchqueryset.models(Member) sqs_member = sqs_member.filter( SQ(firstname__icontains=self.cleaned_data["q"]) - | SQ(surname__icontains=self.cleaned_data["q"]) + | SQ(surname__icontains=self.cleaned_data["q"]), ) sqs_post = self.searchqueryset.models(Post) @@ -39,7 +39,7 @@ class FetUserSearchForm(SearchForm): SQ(title__icontains=self.cleaned_data["q"]) | SQ(body__icontains=self.cleaned_data["q"]) | SQ(agenda__icontains=self.cleaned_data["q"]) - | SQ(protocol__icontains=self.cleaned_data["q"]) + | SQ(protocol__icontains=self.cleaned_data["q"]), ) tmp_results = deque([]) @@ -82,20 +82,20 @@ class NonUserSearchForm(SearchForm): sqs_gallery = self.searchqueryset.models(Album).filter(status="20") sqs_gallery = sqs_gallery.filter( SQ(title__icontains=self.cleaned_data["q"]) - | SQ(description__icontains=self.cleaned_data["q"]) + | SQ(description__icontains=self.cleaned_data["q"]), ) sqs_member = self.searchqueryset.models(Member) sqs_member = sqs_member.filter( SQ(firstname__icontains=self.cleaned_data["q"]) - | SQ(surname__icontains=self.cleaned_data["q"]) + | SQ(surname__icontains=self.cleaned_data["q"]), ) sqs_post = self.searchqueryset.models(Post).filter(status="20") sqs_post = sqs_post.filter( SQ(title__icontains=self.cleaned_data["q"]) | SQ(body__icontains=self.cleaned_data["q"]) - | SQ(agenda__icontains=self.cleaned_data["q"]) + | SQ(agenda__icontains=self.cleaned_data["q"]), ) tmp_results = deque([])