diff --git a/.ruff.toml b/.ruff.toml index 465cba5a20d0c0811f0910eba42dc53d7c445823..a6ddc49a23a8912a023ae89b8e5cae9ffc9e6465 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -1,7 +1,7 @@ line-length = 160 extend-exclude = ["venv", ".tox", "migrations"] -extend-select = ["C4", "DTZ", "E", "F", "G", "I002", "INT", "LOG", "PTH", "T20", "TID", "W"] +extend-select = ["C4", "DTZ", "E", "F", "G", "I002", "INT", "PTH", "RUF005", "T20", "TID", "W"] ignore = ["TID252", "TD002"] [format] diff --git a/src/api/views/maps.py b/src/api/views/maps.py index 3aa7ab07053484523621321c8eb792a68c4bcfab..06ff9e3ba75727cc2c135f651fbe07d8558bcb38 100644 --- a/src/api/views/maps.py +++ b/src/api/views/maps.py @@ -68,7 +68,7 @@ class AssembliesExportView(ConferenceSlugMixin, APIView, metaclass=abc.ABCMeta): geometry_field = None def get_queryset(self): - exportable_states = Assembly.PLACED_STATES + [Assembly.State.HIDDEN] + exportable_states = [*Assembly.PLACED_STATES, Assembly.State.HIDDEN] return Assembly.objects.filter(conference=self.conference, state_assembly__in=exportable_states) def get_geometry_field(self, obj): diff --git a/src/backoffice/forms.py b/src/backoffice/forms.py index d063645581968b97d8ea8f26be13a8cd362e7d83..abb9a1749a7135cec7128cf0372c82227d4f6d8b 100644 --- a/src/backoffice/forms.py +++ b/src/backoffice/forms.py @@ -257,7 +257,7 @@ class AssemblyCreateRoomForm(forms.Form): class AssemblyCreateRoomGenericForm(AssemblyCreateRoomForm): room_type = forms.ChoiceField( - choices=[c for c in Room.RoomType.choices if c[0] not in Room.BACKEND_ROOMTYPES + [Room.RoomType.PROJECT]], + choices=[c for c in Room.RoomType.choices if c[0] not in [*Room.BACKEND_ROOMTYPES, Room.RoomType.PROJECT]], disabled=True, ) capacity = forms.IntegerField(min_value=0) diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py index 0d73b38301cb2e3d56c9cf10dbab010fd85fdf38..1f4e70af9c298c4599fa0c4eadf03f7c99e33837 100644 --- a/src/backoffice/views/assemblyteam.py +++ b/src/backoffice/views/assemblyteam.py @@ -298,7 +298,7 @@ class AssembliesListsView(AssembliesListMixin, View): qs_fields = ['slug', 'name', self.status_field, 'hierarchy', 'parent__slug', 'description', 'registration_details'] if self.active_page == 'assemblies': qs_fields.append('internal_comment') - qs = self.get_queryset().only(*(qs_fields + ['registration_data'])) # query qs_fields + additional data + qs = self.get_queryset().only(*([*qs_fields, 'registration_data'])) # query qs_fields + additional data variant_name = 'registration details' variant_fields = [_(f'Assembly__{fld}') for fld in qs_fields] # noqa: INT001 diff --git a/src/core/admin.py b/src/core/admin.py index 71cb40d3d70f4b4adc35a17a07d70272ed240432..87870bdce5a0b768a5b2d4939ba03c4db97bb5fb 100644 --- a/src/core/admin.py +++ b/src/core/admin.py @@ -430,7 +430,7 @@ class BadgeTokenAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): if obj: # editing an existing object - return self.readonly_fields + ['badge'] + return [*self.readonly_fields, 'badge'] return self.readonly_fields diff --git a/src/core/management/commands/suggestion_tick.py b/src/core/management/commands/suggestion_tick.py index ddb0c60c37148cc6f9e49bc5ace1f8fe03352848..87336d54dc5fe26ace59c0a47812fb4cba4a3e6c 100644 --- a/src/core/management/commands/suggestion_tick.py +++ b/src/core/management/commands/suggestion_tick.py @@ -31,7 +31,7 @@ class Command(BaseCommand): SELECT a.id, lk.likes FROM core_assembly AS a INNER JOIN core_assemblylikecount AS lk ON a.id = lk.assembly1_id AND a.id=lk.assembly2_id WHERE a.conference_id = %s AND state IN ({','.join(['%s'] * len(Assembly.PUBLIC_STATES))}) - ''', [conf.pk] + Assembly.PUBLIC_STATES) + ''', [conf.pk, *Assembly.PUBLIC_STATES]) for row in cursor.fetchall(): if row[1] == 0: cursor.execute("UPDATE core_assemblylikecount SET like_ratio=0 WHERE assembly1_id=%s", [row[0]]) diff --git a/src/core/markdown.py b/src/core/markdown.py index 894a28cf6fd230214cb7f632d882cf6ec27ec1bf..2b4fb2bfcd4a8dbe8f6a79688af9fd2a5054492d 100644 --- a/src/core/markdown.py +++ b/src/core/markdown.py @@ -225,11 +225,11 @@ def render_markdown_ex(conf: 'conference.Conference', markup: str, if sanitize_html: cleaner = bleach.Cleaner( - tags=[ + tags=[*[ 'br', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'dl', 'table', 'thead', 'tbody', 'th', 'td', 'tr', 'hr', 'p', 'pre', 'img', 'code', 'div', 'span' - ] + list(bleach.sanitizer.ALLOWED_TAGS), + ], *list(bleach.sanitizer.ALLOWED_TAGS)], attributes={ '*': ['class', 'id'], 'img': ['src', 'alt'], diff --git a/src/hub/settings/default.py b/src/hub/settings/default.py index fb965094417e55f50681a900081825174828f17d..79b08af9dbd0fb0812a275b70dd117a0f1edb5ae 100644 --- a/src/hub/settings/default.py +++ b/src/hub/settings/default.py @@ -117,20 +117,23 @@ if IS_API or IS_BACKOFFICE: # include frontend (plainui) project if IS_FRONTEND: - TEMPLATES = [{ - 'BACKEND': 'django.template.backends.jinja2.Jinja2', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - 'environment': 'plainui.jinja2.environment', + TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.jinja2.Jinja2', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + 'environment': 'plainui.jinja2.environment', + }, }, - }] + TEMPLATES # noqa F405 + *TEMPLATES, # noqa F405 + ] # TODO: make up a proper redirect mechanism LOGIN_URL = '/2021/login' # this overwrites previous LOGIN_URL assignment(s) on purpose diff --git a/src/hub/settings/dev.py b/src/hub/settings/dev.py index 49784e045764c71f7d6a34cf4c73ed1b6b25da69..258a2a0baf5679c4fa2c173fd71ec69e5f26d7cc 100644 --- a/src/hub/settings/dev.py +++ b/src/hub/settings/dev.py @@ -84,7 +84,7 @@ except ImportError: try: import django_extensions # noqa: F401 - INSTALLED_APPS = ['django_extensions'] + INSTALLED_APPS # noqa: F405 + INSTALLED_APPS = ['django_extensions', *INSTALLED_APPS] # noqa: F405 except ImportError: pass