diff --git a/aleksis/core/apps.py b/aleksis/core/apps.py index 1dcb1b1a450100a1eb8c375a2db47baf387d0807..b9b591bc5cf20157f43efca8dbff65a32fe4718e 100644 --- a/aleksis/core/apps.py +++ b/aleksis/core/apps.py @@ -1,6 +1,7 @@ from typing import Any, List, Optional, Tuple import django.apps +from django.contrib.auth import get_user_model from django.http import HttpRequest from dynamic_preferences.registries import preference_models @@ -15,6 +16,9 @@ from .util.core_helpers import has_person from .util.sass_helpers import clean_scss +User = get_user_model() + + class CoreConfig(AppConfig): name = "aleksis.core" verbose_name = "AlekSIS — The Free School Information System" @@ -23,7 +27,7 @@ class CoreConfig(AppConfig): "Repository": "https://edugit.org/AlekSIS/official/AlekSIS/", } licence = "EUPL-1.2+" - copyright = ( + copyright_info = ( ([2017, 2018, 2019, 2020], "Jonathan Weth", "wethjo@katharineum.de"), ([2017, 2018, 2019], "Frank Poetzsch-Heffter", "p-h@katharineum.de"), ([2018, 2019, 2020], "Julian Leucker", "leuckeju@katharineum.de"), diff --git a/aleksis/core/mixins.py b/aleksis/core/mixins.py index d0b44263b1ccdcb73fcba55ee7e7aff36d44d5bd..7d1bd2c294d0f4adbcdf6218088809cf404b9f54 100644 --- a/aleksis/core/mixins.py +++ b/aleksis/core/mixins.py @@ -16,7 +16,7 @@ from material.base import Layout, LayoutNode from rules.contrib.admin import ObjectPermissionsModelAdmin -@reversion.register() +@reversion.register class ExtensibleModel(models.Model): """Base model for all objects in AlekSIS apps. @@ -141,7 +141,7 @@ class ExtensibleModel(models.Model): cls.add_to_class(name, obj) @classmethod - def property(cls, func: Callable[[], Any], name: Optional[str] = None) -> None: + def property_(cls, func: Callable[[], Any], name: Optional[str] = None) -> None: """Add the passed callable as a property.""" cls._safe_add(property(func), func.__name__) diff --git a/aleksis/core/models.py b/aleksis/core/models.py index c45f77d464278ad8b8df5ef6c0a3ef2f7670d375..0af29fe21504b263e0661b6eef1db78894e12e23 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -276,7 +276,7 @@ class Group(ExtensibleModel): blank=True, ) - type = models.ForeignKey( + group_type = models.ForeignKey( "GroupType", on_delete=models.SET_NULL, related_name="type", @@ -469,6 +469,7 @@ class Announcement(ExtensibleModel): def get_recipients_for_model(self, obj: Union[models.Model]) -> Sequence[models.Model]: """Get all recipients. + Get all recipients for this announcement with a special content type (provided through model) """ diff --git a/aleksis/core/util/apps.py b/aleksis/core/util/apps.py index d086ff3053e66da379164f6899eaaff635db7fec..23ddf368dbd88fba71a0f3d4859276c73337fc28 100644 --- a/aleksis/core/util/apps.py +++ b/aleksis/core/util/apps.py @@ -125,10 +125,10 @@ class AppConfig(django.apps.AppConfig): @classmethod def get_copyright(cls) -> Sequence[Tuple[str, str, str]]: """Get copyright information tuples for application package.""" - copyrights = getattr(cls, "copyright", tuple()) + copyrights = getattr(cls, "copyright_info", tuple()) copyrights_processed = [] - for copyright in copyrights: + for copyright_info in copyrights: copyrights_processed.append( ( # Sort copyright years and combine year ranges for display diff --git a/aleksis/core/util/core_helpers.py b/aleksis/core/util/core_helpers.py index 67c9daae584fbdbe84294b8439d7cfb20481aa01..9f5ba8b101fdd99a2cbaaca10ccfd660d0399c23 100644 --- a/aleksis/core/util/core_helpers.py +++ b/aleksis/core/util/core_helpers.py @@ -1,3 +1,4 @@ +from ast import literal_eval import os import pkgutil from datetime import datetime, timedelta @@ -228,6 +229,6 @@ def objectgetter_optional( if id_ is not None: return get_object_or_404(model, pk=id_) else: - return eval(default) if default_eval else default + return literal_eval(default) if default_eval else default return get_object diff --git a/aleksis/core/views.py b/aleksis/core/views.py index 350e6fc346e8ce2a94b4abfcdc9230fd3d69c002..c10f20894de42d1d8726acccebce58d5d59b953b 100644 --- a/aleksis/core/views.py +++ b/aleksis/core/views.py @@ -191,11 +191,11 @@ def groups_child_groups(request: HttpRequest) -> HttpResponse: context = {} # Apply filter - filter = GroupFilter(request.GET, queryset=Group.objects.all()) - context["filter"] = filter + filter_ = GroupFilter(request.GET, queryset=Group.objects.all()) + context["filter"] = filter_ # Paginate - paginator = Paginator(filter.qs, 1) + paginator = Paginator(filter_.qs, 1) page_number = request.POST.get("page", request.POST.get("old_page")) if page_number: diff --git a/tox.ini b/tox.ini index 2668cbcf546d843f4b70b7185dc535ea8c61296e..36687847e9b2dd82018c8363190e80ca20304e28 100644 --- a/tox.ini +++ b/tox.ini @@ -48,7 +48,7 @@ commands = [flake8] max_line_length = 100 exclude = migrations,tests -ignore = BLK100,E203,E231,W503,D100,D101,D102,D103,D104,D105,D106,D107 +ignore = BLK100,E203,E231,W503,D100,D101,D102,D103,D104,D105,D106,D107,RST215,RST214,F841,S106 [isort] line_length = 100