diff --git a/src/.ruff.toml b/src/.ruff.toml index 1e623c4d3b61818a5b80c2f2fc2f6e98be6b8e68..d274a7fb49d219749a1c0e46c5c03511cb79cbb1 100644 --- a/src/.ruff.toml +++ b/src/.ruff.toml @@ -35,7 +35,6 @@ ignore = [ "SIM102", "SIM108", "TD002", - "TID252", "ERA001", # Disabled due to format conflicts # see https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules diff --git a/src/api/urls.py b/src/api/urls.py index 8b618b9743729cffacb04f7193e364b5eb4cd352..82e9218b9d691bd243db1016b76d24640bedd5fa 100644 --- a/src/api/urls.py +++ b/src/api/urls.py @@ -4,7 +4,7 @@ from rest_framework.urlpatterns import format_suffix_patterns from django.conf import settings from django.urls import path -from .views import api_root, assemblies, badges, bbb, conferencemember, conferences, events, maps, messages, metanav, rooms, schedule, users, workadventure +from api.views import api_root, assemblies, badges, bbb, conferencemember, conferences, events, maps, messages, metanav, rooms, schedule, users, workadventure app_name = 'api' urlpatterns = [ diff --git a/src/api/urls_metrics.py b/src/api/urls_metrics.py index e4e2ecadac4698ecff39fee05ac85255166390f5..4d54c32a4932f926779b1082b83d63d83f911a84 100644 --- a/src/api/urls_metrics.py +++ b/src/api/urls_metrics.py @@ -1,6 +1,6 @@ from django.urls import path -from .views import metrics +from api.views import metrics app_name = 'api' diff --git a/src/api/views/assemblies.py b/src/api/views/assemblies.py index 98c5ec518cc2b33574ec45cdc7cc8b15bf999c61..d880d10a3a9a360538d7db2de7c84c6eeee6b66f 100644 --- a/src/api/views/assemblies.py +++ b/src/api/views/assemblies.py @@ -4,8 +4,8 @@ from core.models.assemblies import Assembly from core.models.events import Event from core.models.rooms import Room -from ..serializers import AssemblySerializer, EventSerializer, RoomSerializer -from .mixins import ConferenceSlugAssemblyMixin, ConferenceSlugMixin +from api.serializers import AssemblySerializer, EventSerializer, RoomSerializer +from api.views.mixins import ConferenceSlugAssemblyMixin, ConferenceSlugMixin class ConferenceAssemblyList(ConferenceSlugMixin, generics.ListAPIView): diff --git a/src/api/views/conferencemember.py b/src/api/views/conferencemember.py index 22eda299ab1cedea653e08b979c5c8c7d810fd26..795ea8136a6b837b0af8a299a3df92f47be6f6d1 100644 --- a/src/api/views/conferencemember.py +++ b/src/api/views/conferencemember.py @@ -9,8 +9,8 @@ from django.conf import settings from core.models.conference import ConferenceMember from core.sso import SSO -from ..permissions import IsConferenceService, IsSuperUser -from .mixins import ConferenceSlugMixin +from api.permissions import IsConferenceService, IsSuperUser +from api.views.mixins import ConferenceSlugMixin logger = logging.getLogger(__name__) diff --git a/src/api/views/conferences.py b/src/api/views/conferences.py index 917181cbac6aec92661eebb2115d6e0a09cf527f..35ce795262375dc7ca86c77d5a6356fbaf88704d 100644 --- a/src/api/views/conferences.py +++ b/src/api/views/conferences.py @@ -2,8 +2,8 @@ from rest_framework import generics from core.models.conference import Conference, ConferenceTrack -from ..serializers import ConferenceSerializer, ConferenceTrackSerializer -from .mixins import ConferenceSlugMixin +from api.serializers import ConferenceSerializer, ConferenceTrackSerializer +from api.views.mixins import ConferenceSlugMixin class ConferenceList(generics.ListAPIView): diff --git a/src/api/views/events.py b/src/api/views/events.py index dccc9dd8ee1b305a599b6fb831013b0bc75714b9..94596144ef73ea8544aa5da78a9a1f7252a36d13 100644 --- a/src/api/views/events.py +++ b/src/api/views/events.py @@ -6,8 +6,8 @@ from django.shortcuts import get_object_or_404 from core.models.events import Event -from ..serializers import EventSerializer -from .mixins import ConferenceSlugMixin +from api.serializers import EventSerializer +from api.views.mixins import ConferenceSlugMixin class EventList(ConferenceSlugMixin, generics.ListAPIView): diff --git a/src/api/views/maps.py b/src/api/views/maps.py index 030f68178fedeb857781b1095cad66919d99bfe9..2b2824ff33ba3eb666bd8d76d9fb9bd477ae2a0d 100644 --- a/src/api/views/maps.py +++ b/src/api/views/maps.py @@ -10,8 +10,8 @@ from core.models.assemblies import Assembly from core.models.conference import ConferenceExportCache from core.models.map import MapPOI -from ..permissions import IsConferenceService, IsSuperUser -from .mixins import ConferenceSlugMixin +from api.permissions import IsConferenceService, IsSuperUser +from api.views.mixins import ConferenceSlugMixin _cts = {} # cache of CoordTransforms (if needed) diff --git a/src/api/views/messages.py b/src/api/views/messages.py index 01a3ecf3266d9f84dc9f302736355978944ee579..cecabad365d1706cb7e39c30554665b41a136932 100644 --- a/src/api/views/messages.py +++ b/src/api/views/messages.py @@ -4,14 +4,14 @@ from django.db.models import Q from core.models.messages import DirectMessage -from ..serializers import ( +from api.serializers import ( DirectMessageSendSerializer, DirectMessageSerializerReceived, DirectMessageSerializerReceivedShort, DirectMessageSerializerSent, DirectMessageSerializerSentShort, ) -from .mixins import ConferenceSlugMixin +from api.views.mixins import ConferenceSlugMixin class DirectMessagesReceived(ConferenceSlugMixin, generics.ListAPIView): diff --git a/src/api/views/rooms.py b/src/api/views/rooms.py index b55800b3871d1b73c8d5310de18e46195c3d45ae..716e8795e55ec091a9b6322e0da51deab81d6445 100644 --- a/src/api/views/rooms.py +++ b/src/api/views/rooms.py @@ -4,8 +4,8 @@ from rest_framework import generics from core.models.rooms import Room -from ..serializers import RoomSerializer -from .mixins import ConferenceSlugMixin +from api.serializers import RoomSerializer +from api.views.mixins import ConferenceSlugMixin logger = logging.getLogger(__name__) diff --git a/src/api/views/schedule.py b/src/api/views/schedule.py index d9c2c433d19ec4fcf9886839942d900244fd8676..b728ff43977d803200de257ab8ea958ee3642aa4 100644 --- a/src/api/views/schedule.py +++ b/src/api/views/schedule.py @@ -16,9 +16,9 @@ from core.models.events import Event from core.models.rooms import Room from core.schedules.base import filter_additional_data, schedule_time_to_timedelta -from ..permissions import IsApiUserOrReadOnly -from ..schedule import Schedule, ScheduleEncoder -from .mixins import ConferenceSlugMixin +from api.permissions import IsApiUserOrReadOnly +from api.schedule import Schedule, ScheduleEncoder +from api.views.mixins import ConferenceSlugMixin logger = logging.getLogger(__name__) diff --git a/src/api/views/users.py b/src/api/views/users.py index 6f52f687be6869feeb1d68874906b213da9bb363..371269fc96912613a7b18e92e41b891c5a40ac89 100644 --- a/src/api/views/users.py +++ b/src/api/views/users.py @@ -14,7 +14,7 @@ from core.choices import UserBadgeVisibility from core.models.badges import Badge, UserBadge from core.models.users import PlatformUser, UserTimelineEntry -from ..serializers import UserTimelineEntrySerializer +from api.serializers import UserTimelineEntrySerializer @api_view(['GET']) diff --git a/src/api/views/workadventure.py b/src/api/views/workadventure.py index dae2b66c43bfb56eacb36a7b55b5ef30ba9d5e55..4cc556758e114dd6822c9550e632c5115431ddd5 100644 --- a/src/api/views/workadventure.py +++ b/src/api/views/workadventure.py @@ -19,8 +19,8 @@ from core.models.badges import BadgeToken from core.models.rooms import Room from core.models.workadventure import WorkadventureSession -from ..permissions import IsConferenceService, IsSuperUser -from .mixins import ConferenceSlugMixin +from api.permissions import IsConferenceService, IsSuperUser +from api.views.mixins import ConferenceSlugMixin logger = logging.getLogger(__name__) diff --git a/src/backoffice/views/assemblies.py b/src/backoffice/views/assemblies.py index bae1782e3d2ec3300503a5cc088ed2bc034c9499..44fc93eceba29b9c60a4b2d5d429c9242a6b9bc6 100644 --- a/src/backoffice/views/assemblies.py +++ b/src/backoffice/views/assemblies.py @@ -28,7 +28,7 @@ from core.models.tags import ConferenceTag from core.models.users import PlatformUser from core.models.voucher import Voucher -from ..forms import ( +from backoffice.forms import ( AssemblyAddApplicationForm, AssemblyAddMemberForm, AssemblyCreateForm, @@ -43,6 +43,7 @@ from ..forms import ( EditAssemblyRoomHangarForm, EditAssemblyRoomWorkAdventureForm, ) + from .mixins import AssemblyMixin, ConferenceLoginRequiredMixin logger = logging.getLogger(__name__) diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py index 2be313cf94632415f30a5adc0076864515b1af20..abd09724dda6f90ef404c26743a5c68f6f09faca 100644 --- a/src/backoffice/views/assemblyteam.py +++ b/src/backoffice/views/assemblyteam.py @@ -21,7 +21,8 @@ from core.models.assemblies import Assembly, AssemblyMember from core.models.conference import ConferenceExportCache from core.models.users import UserCommunicationChannel -from ..templatetags.c3assemblies import get_language_item +from backoffice.templatetags.c3assemblies import get_language_item + from .mixins import AssemblyMixin, ConferenceLoginRequiredMixin logger = logging.getLogger(__name__) diff --git a/src/backoffice/views/map.py b/src/backoffice/views/map.py index dc635ba4aa2a2448eda87542e6b798d0a0793e88..b30b9dd6b4509a3adbb7bd4788fac5b694be87ae 100644 --- a/src/backoffice/views/map.py +++ b/src/backoffice/views/map.py @@ -10,8 +10,8 @@ from django.views.generic.edit import CreateView, ModelFormMixin, UpdateView from core.models.map import MapFloor, MapPOI -from ..forms import POIForm -from .mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item +from backoffice.forms import POIForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item logger = logging.getLogger(__name__) diff --git a/src/backoffice/views/misc.py b/src/backoffice/views/misc.py index 18c785b9f084909f56759ede7465c1e325ebf913..3ccbe69d9f88f8fef1249747e0039340f0fdbe8f 100644 --- a/src/backoffice/views/misc.py +++ b/src/backoffice/views/misc.py @@ -4,8 +4,8 @@ from django.views.generic.edit import FormView from core.models import Assembly, Conference -from ..forms import ConferenceForm -from .mixins import ConferenceLoginRequiredMixin +from backoffice.forms import ConferenceForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin class ConferenceSelectionView(ConferenceLoginRequiredMixin, FormView): diff --git a/src/backoffice/views/profile.py b/src/backoffice/views/profile.py index 224d50fed264f47d78a44caf560b34ef53a14ec7..765ea3ee95cec954a61642c365052a13a203d2a7 100644 --- a/src/backoffice/views/profile.py +++ b/src/backoffice/views/profile.py @@ -3,8 +3,8 @@ from django.shortcuts import redirect from django.utils.translation import gettext_lazy as _ from django.views.generic import FormView -from ..forms import ProfileForm -from .mixins import ConferenceLoginRequiredMixin +from backoffice.forms import ProfileForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin class ProfileView(ConferenceLoginRequiredMixin, FormView): diff --git a/src/backoffice/views/schedules.py b/src/backoffice/views/schedules.py index 9b140857417f06dfbcea6e0d03baaaa915a0e45b..b4ffa0b2311124f5867551824970ba9f418c9986 100644 --- a/src/backoffice/views/schedules.py +++ b/src/backoffice/views/schedules.py @@ -9,8 +9,8 @@ from django.views.generic.detail import SingleObjectMixin from core.models import ScheduleSource, ScheduleSourceImport from core.schedules import ScheduleTypeManager -from ..forms import ScheduleSourceCreateForm -from .mixins import ConferenceLoginRequiredMixin +from backoffice.forms import ScheduleSourceCreateForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin class ScheduleAdminMixin(ConferenceLoginRequiredMixin): diff --git a/src/backoffice/views/wiki.py b/src/backoffice/views/wiki.py index ca6ec52a72dac40654fd435bc9d2c6c5b55d4dd0..c4326412ee8d0182a7562938429a273b28d28c65 100644 --- a/src/backoffice/views/wiki.py +++ b/src/backoffice/views/wiki.py @@ -16,8 +16,8 @@ from django.views.generic.edit import DeleteView, UpdateView from core.models import Conference, Lock, StaticPage, StaticPageNamespace, StaticPageRevision -from ..forms import StaticPageEditForm -from .mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item +from backoffice.forms import StaticPageEditForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item class WikiAdminMixin(ConferenceLoginRequiredMixin): diff --git a/src/backoffice/views/workadventure.py b/src/backoffice/views/workadventure.py index 51753a4132fd3a8cc50bf65e89e9bb30652073ee..985857aa72d0001685cb9da8e76c1599b72e3bab 100644 --- a/src/backoffice/views/workadventure.py +++ b/src/backoffice/views/workadventure.py @@ -19,8 +19,8 @@ from core.models import Assembly, ConferenceMember, PlatformUser from core.models.rooms import Room from core.models.workadventure import WorkadventureSession, WorkadventureTexture -from ..forms import CreateWorkadventureTextureForm -from .mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item +from backoffice.forms import CreateWorkadventureTextureForm +from backoffice.views.mixins import ConferenceLoginRequiredMixin, guess_active_sidebar_item logger = logging.getLogger(__name__) MAX_ROWS = 42 diff --git a/src/core/management/commands/assembly_contact_mails.py b/src/core/management/commands/assembly_contact_mails.py index 4caf3905b00d7898b3c109c8d21f77a356ad0632..f7c4755eb6f007e55c1d2e806ca84297a90bee51 100644 --- a/src/core/management/commands/assembly_contact_mails.py +++ b/src/core/management/commands/assembly_contact_mails.py @@ -1,8 +1,8 @@ from django.core.management.base import BaseCommand -from ...models.assemblies import AssemblyMember -from ...models.conference import Conference -from ...models.users import UserCommunicationChannel +from core.models.assemblies import AssemblyMember +from core.models.conference import Conference +from core.models.users import UserCommunicationChannel class Command(BaseCommand): diff --git a/src/core/management/commands/housekeeping.py b/src/core/management/commands/housekeeping.py index 8e7ab72ca3bd17dda15bcee4d15bc135819d8fcd..a81d4bf19ab3f08fb83fd20a2218902be2e03670 100644 --- a/src/core/management/commands/housekeeping.py +++ b/src/core/management/commands/housekeeping.py @@ -4,11 +4,11 @@ from django.core.management.base import BaseCommand, CommandError from django.db.models import Max from django.utils import timezone -from ...models import StaticPageNamespace -from ...models.conference import Conference, ConferenceExportCache -from ...models.messages import DirectMessage -from ...models.schedules import ScheduleSource, ScheduleSourceImport -from ...models.voucher import Voucher +from core.models.conference import Conference, ConferenceExportCache +from core.models.messages import DirectMessage +from core.models.pages import StaticPageNamespace +from core.models.schedules import ScheduleSource, ScheduleSourceImport +from core.models.voucher import Voucher class Command(BaseCommand): diff --git a/src/core/management/commands/import_mapservice_resultfile.py b/src/core/management/commands/import_mapservice_resultfile.py index 4c99565217eb42e1c7c8677a26cd0f5cc563f248..241054f0e1a95a9ea7bd1a9530f97de983d18ca2 100644 --- a/src/core/management/commands/import_mapservice_resultfile.py +++ b/src/core/management/commands/import_mapservice_resultfile.py @@ -3,9 +3,9 @@ import json from django.core.management.base import BaseCommand -from api.views.workadventure import MapServiceView +from core.models.conference import Conference -from ...models import Conference +from api.views.workadventure import MapServiceView class Command(BaseCommand): diff --git a/src/core/management/commands/sanitize_database.py b/src/core/management/commands/sanitize_database.py index df3c22063b91c5de33f86f08739ab44d99f7af2d..0b56489e4ad3ec4ccf8b78426d1ab96aab279d57 100644 --- a/src/core/management/commands/sanitize_database.py +++ b/src/core/management/commands/sanitize_database.py @@ -4,26 +4,21 @@ from django.conf import settings from django.core.management.base import BaseCommand from django.db.models import Max -from ...models import ( - Assembly, - AssemblyLogEntry, - AssemblyMember, +from core.models.assemblies import Assembly, AssemblyLogEntry, AssemblyMember +from core.models.badges import UserBadge +from core.models.conference import ( ConferenceMember, - ConferenceMemberTicket, - ConferenceTag, ConferenceTrack, - DirectMessage, - Event, - PlatformUser, - ScheduleSource, - ScheduleSourceImport, - StaticPage, - TagItem, - UserBadge, - UserCommunicationChannel, - UserDereferrerAllowlist, - WorkadventureSession, ) +from core.models.dereferrer import UserDereferrerAllowlist +from core.models.events import Event +from core.models.messages import DirectMessage +from core.models.pages import StaticPage +from core.models.schedules import ScheduleSource, ScheduleSourceImport +from core.models.tags import ConferenceTag, TagItem +from core.models.ticket import ConferenceMemberTicket +from core.models.users import PlatformUser, UserCommunicationChannel +from core.models.workadventure import WorkadventureSession class Command(BaseCommand): diff --git a/src/core/management/commands/schedule_join_rooms.py b/src/core/management/commands/schedule_join_rooms.py index a9d4b9cd6f3d77f8e017b53350c1b48cefe5552e..7aa3c2546027dc3fec765f55b03dbfe1cee1ce4b 100644 --- a/src/core/management/commands/schedule_join_rooms.py +++ b/src/core/management/commands/schedule_join_rooms.py @@ -1,7 +1,7 @@ from django.core.management.base import BaseCommand, CommandError from django.db import transaction -from ...models import Event, Room, RoomLink, ScheduleSourceMapping +from core.models import Event, Room, RoomLink, ScheduleSourceMapping class Command(BaseCommand): diff --git a/src/core/management/commands/serviceusers.py b/src/core/management/commands/serviceusers.py index 2d857bf11f74dfb7cd160da73997ccd7eb038c23..d298295db2e8548ea8a50cbba12f8c3c2f6e72e1 100644 --- a/src/core/management/commands/serviceusers.py +++ b/src/core/management/commands/serviceusers.py @@ -2,7 +2,7 @@ from rest_framework.authtoken.models import Token from django.core.management.base import BaseCommand -from ...models.users import PlatformUser +from core.models.users import PlatformUser class Command(BaseCommand): diff --git a/src/core/management/commands/stats.py b/src/core/management/commands/stats.py index 08368fe7126796826f7f4a95de37cce8fa0c0acc..7eb4aca693fed9c2bbffbcb6c32cf9c2538cd79e 100644 --- a/src/core/management/commands/stats.py +++ b/src/core/management/commands/stats.py @@ -1,6 +1,6 @@ from django.core.management.base import BaseCommand -from ...models import Assembly, Badge, Conference, Event, Room, UserBadge +from core.models import Assembly, Badge, Conference, Event, Room, UserBadge class Command(BaseCommand): diff --git a/src/core/management/commands/test_schedule_import.py b/src/core/management/commands/test_schedule_import.py index 839f672d1bbb29069bbbb275b4e91ffc815e1486..8108cf4abe05fda1bbe57061241932e14541c953 100644 --- a/src/core/management/commands/test_schedule_import.py +++ b/src/core/management/commands/test_schedule_import.py @@ -6,7 +6,7 @@ from django.core.exceptions import SuspiciousOperation from django.core.management.base import BaseCommand from django.db import transaction -from ...models.conference import Conference +from core.models.conference import Conference class Command(BaseCommand): diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py index 3ac1a0f64091c0614b7e320282e3a963494824af..1ec7d59b9a9048444795f225b8cda60807e48789 100644 --- a/src/core/models/assemblies.py +++ b/src/core/models/assemblies.py @@ -19,18 +19,16 @@ from django.utils.safestring import mark_safe from django.utils.translation import gettext from django.utils.translation import gettext_lazy as _ +from core.fields import ConferenceReference +from core.markdown import compile_translated_markdown_fields, render_markdown, store_relationships from core.models.base_managers import ConferenceManagerMixin -from core.models.tags import TagItem +from core.models.conference import Conference, ConferenceMember +from core.models.map import MapFloor +from core.models.tags import TaggedItemMixin, TagItem +from core.models.users import PlatformUser +from core.utils import render_markdown_as_text from core.validators import FileSizeValidator, ImageDimensionValidator -from ..fields import ConferenceReference -from ..markdown import compile_translated_markdown_fields, render_markdown, store_relationships -from ..utils import render_markdown_as_text -from .conference import Conference, ConferenceMember -from .map import MapFloor -from .tags import TaggedItemMixin -from .users import PlatformUser - class AssemblyManager(ConferenceManagerMixin['Assembly']): staff_permissions = ['assembly_team'] diff --git a/src/core/models/badges.py b/src/core/models/badges.py index 07e949411f6f6c18ecc71e7ee565237d638b058e..9cc1f957d862136661027659086ef4742e3180d3 100644 --- a/src/core/models/badges.py +++ b/src/core/models/badges.py @@ -19,16 +19,15 @@ from django.utils import timezone from django.utils.translation import gettext_lazy as _ from core.choices import UserBadgeVisibility +from core.fields import ConferenceReference from core.markdown import compile_translated_markdown_fields, store_relationships +from core.models.assemblies import Assembly from core.models.base_managers import ConferenceManagerMixin from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser +from core.utils import generate_token from core.validators import ImageDimensionValidator -from ..fields import ConferenceReference -from ..utils import generate_token -from .assemblies import Assembly -from .users import PlatformUser - logger = logging.getLogger(__name__) TOKEN_VALIDATOR = RegexValidator(r'^[0-9a-z]*$', _('BadgeToken__validator_info__lower_alpha_num')) diff --git a/src/core/models/conference.py b/src/core/models/conference.py index ee4e2a4a5fd30f1f4542f7d431b27cf18ceb80ab..f604e69bc59a3a580d1b017482b6b523361bbb75 100644 --- a/src/core/models/conference.py +++ b/src/core/models/conference.py @@ -25,10 +25,9 @@ from django.utils.translation import get_language from django.utils.translation import gettext_lazy as _ from core.choices import UserBadgeVisibility - -from ..fields import ConferenceReference -from ..utils import render_markdown_as_text -from .users import PlatformUser +from core.fields import ConferenceReference +from core.models.users import PlatformUser +from core.utils import render_markdown_as_text logger = logging.getLogger(__name__) @@ -157,7 +156,7 @@ class ConferenceMember(models.Model): return f'{self.user.username}@{self.conference.slug}' def save(self, *args, update_fields=None, **kwargs) -> None: - from ..markdown import compile_translated_markdown_fields, store_relationships + from core.markdown import compile_translated_markdown_fields, store_relationships if update_fields is None or 'description' in update_fields: render_results = compile_translated_markdown_fields(self, self.conference, 'description') @@ -547,7 +546,7 @@ class Conference(models.Model): if not self.mail_footer: return None - from ..markdown import render_markdown + from core.markdown import render_markdown return format_html( '<div id="footer" style="margin-top: 1em; border-top: 2px solid #999; color: #999; font-size: 80%;">{0}</div>', @@ -708,7 +707,7 @@ class ConferenceExportCache(models.Model): return False def save(self, *args, **kwargs): - from ..utils import int_to_custom_string + from core.utils import int_to_custom_string if self.last_generated is not None: self.etag = int_to_custom_string(int(self.last_generated.timestamp() * 1000)) @@ -853,7 +852,7 @@ class ConferenceNavigationItem(models.Model): ) def resolve_url(self): - from ..utils import resolve_internal_url + from core.utils import resolve_internal_url return resolve_internal_url(self.url, fallback_as_is=True) diff --git a/src/core/models/map.py b/src/core/models/map.py index a88ab66ae90ef4da76cf8d69d84708d1f2dbedf6..d0f9f7444543843fcf7d8a4e84a8b964879d43fe 100644 --- a/src/core/models/map.py +++ b/src/core/models/map.py @@ -7,8 +7,8 @@ from django.core.exceptions import ValidationError from django.db import models from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..markdown import compile_translated_markdown_fields, store_relationships +from core.fields import ConferenceReference +from core.markdown import compile_translated_markdown_fields, store_relationships logger = logging.getLogger(__name__) diff --git a/src/core/models/messages.py b/src/core/models/messages.py index 08315dce1b48ebe5c536ab0b3ad1b01c45d1447f..edcb87f3e5aa5710bcf96db1c2a42a334ae71da7 100644 --- a/src/core/models/messages.py +++ b/src/core/models/messages.py @@ -7,8 +7,8 @@ from django.urls import NoReverseMatch, reverse from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..markdown import render_markdown +from core.fields import ConferenceReference +from core.markdown import render_markdown class DirectMessage(models.Model): diff --git a/src/core/models/metanavi.py b/src/core/models/metanavi.py index bf48236bb12d86a2343161f13284f0a63969d35d..b03b6b7c46086488923b53b384d7bdaca2593636 100644 --- a/src/core/models/metanavi.py +++ b/src/core/models/metanavi.py @@ -6,7 +6,7 @@ from django.db import models from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference +from core.fields import ConferenceReference class MetaNavItemManager(models.Manager): diff --git a/src/core/models/pages.py b/src/core/models/pages.py index 9d0db7549cb24d6285341a261b9943b212f39b28..6577a977bd561dd7b120ce4875d26b06a0dcd8f7 100644 --- a/src/core/models/pages.py +++ b/src/core/models/pages.py @@ -17,12 +17,11 @@ from django.utils.functional import cached_property from django.utils.html import strip_tags from django.utils.translation import gettext_lazy as _ +from core.fields import ConferenceReference from core.markdown import render_markdown_ex, store_relationships - -from ..fields import ConferenceReference -from ..utils import GitRepo -from .conference import Conference -from .users import PlatformUser +from core.models.conference import Conference +from core.models.users import PlatformUser +from core.utils import GitRepo class StaticPageNamespace(models.Model): diff --git a/src/core/models/projects.py b/src/core/models/projects.py index e2b808b8c9c8e0519582d5a36165a9c3b65e453a..b7c97768934263542be468c69285d0792de11108 100644 --- a/src/core/models/projects.py +++ b/src/core/models/projects.py @@ -9,16 +9,15 @@ from django.db.models import QuerySet from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ +from core.fields import ConferenceReference +from core.markdown import compile_translated_markdown_fields, store_relationships +from core.models.assemblies import Assembly from core.models.base_managers import ConferenceManagerMixin +from core.models.conference import ConferenceMember from core.models.tags import TaggedItemMixin from core.models.users import PlatformUser from core.validators import FileSizeValidator, ImageDimensionValidator -from ..fields import ConferenceReference -from ..markdown import compile_translated_markdown_fields, store_relationships -from ..models.conference import ConferenceMember -from .assemblies import Assembly - class ProjectManager(ConferenceManagerMixin['Project']): assembly_filter = 'assembly' diff --git a/src/core/models/schedules.py b/src/core/models/schedules.py index 271700e8d1771b604c348414e1fc0e2a2c17169d..1b24dc6d3c526be3b95be44701971a68f1be1eac 100644 --- a/src/core/models/schedules.py +++ b/src/core/models/schedules.py @@ -9,13 +9,13 @@ from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..schedules import ScheduleTypeManager -from ..utils import mail2uuid, mask_url, str2bool -from .assemblies import Assembly -from .events import Event, EventAttachment -from .rooms import Room -from .users import PlatformUser +from core.fields import ConferenceReference +from core.models.assemblies import Assembly +from core.models.events import Event, EventAttachment +from core.models.rooms import Room +from core.models.users import PlatformUser +from core.schedules import ScheduleTypeManager +from core.utils import mail2uuid, mask_url, str2bool if TYPE_CHECKING: pass diff --git a/src/core/models/tags.py b/src/core/models/tags.py index d08324e978147f7ded6692ba8f0a119b0f7f4664..630e5512f6180a189962b010cd718fe48ee904f4 100644 --- a/src/core/models/tags.py +++ b/src/core/models/tags.py @@ -9,10 +9,9 @@ from django.db.models import QuerySet from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ +from core.fields import ConferenceReference from core.models.conference import Conference, ConferenceMember -from ..fields import ConferenceReference - class ConferenceTag(models.Model): class Meta: diff --git a/src/core/models/ticket.py b/src/core/models/ticket.py index e8804d537400a27e0d17865ea51c51e2a3c450ea..6b412164873d1a38cf2cddf81600dbed91c4e40e 100644 --- a/src/core/models/ticket.py +++ b/src/core/models/ticket.py @@ -7,9 +7,9 @@ from django.db import models from django.db.utils import IntegrityError from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from .conference import Conference -from .users import PlatformUser +from core.fields import ConferenceReference +from core.models.conference import Conference +from core.models.users import PlatformUser logger = logging.getLogger(__name__) diff --git a/src/core/models/users.py b/src/core/models/users.py index d3f600c12ca384f5ad2f9aa84cc95e440a58d93e..b6b580e58d8d2ce51654d9fa5d171a955dbd4d90 100644 --- a/src/core/models/users.py +++ b/src/core/models/users.py @@ -26,9 +26,9 @@ from django.utils.text import slugify from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..utils import download_from_url -from ..validators import ImageDimensionValidator +from core.fields import ConferenceReference +from core.utils import download_from_url +from core.validators import ImageDimensionValidator if TYPE_CHECKING: from core.models import Assembly, Conference, ConferenceMember diff --git a/src/core/models/voucher.py b/src/core/models/voucher.py index 835d04b33f02077adc0797ad99bf99a919d16caf..b6f437a5091627b4d4738aff6e01d9d45bd846a3 100644 --- a/src/core/models/voucher.py +++ b/src/core/models/voucher.py @@ -9,11 +9,11 @@ from django.utils import timezone from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..markdown import render_markdown -from .assemblies import Assembly -from .conference import Conference -from .users import PlatformUser +from core.fields import ConferenceReference +from core.markdown import render_markdown +from core.models.assemblies import Assembly +from core.models.conference import Conference +from core.models.users import PlatformUser class VoucherManager(models.Manager): diff --git a/src/core/models/workadventure.py b/src/core/models/workadventure.py index 5c9fc1d7aa218fcfadf5cdfa0e4e665e34a303db..f96769d71dd2309e7cf1ae0b41b55ced70fe6f09 100644 --- a/src/core/models/workadventure.py +++ b/src/core/models/workadventure.py @@ -10,11 +10,11 @@ from django.db.models import Q from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from ..fields import ConferenceReference -from ..utils import generate_token -from .assemblies import Assembly -from .conference import Conference, ConferenceMember, PlatformUser -from .rooms import Room +from core.fields import ConferenceReference +from core.models.assemblies import Assembly +from core.models.conference import Conference, ConferenceMember, PlatformUser +from core.models.rooms import Room +from core.utils import generate_token class WorkadventureSession(models.Model): diff --git a/src/core/tests/assemblies.py b/src/core/tests/assemblies.py index be70aabad8f3ac39e86666e1e272694b3a65aaa6..3150f0ef24c39295ac73c28555c7798bfd3f9e9f 100644 --- a/src/core/tests/assemblies.py +++ b/src/core/tests/assemblies.py @@ -2,9 +2,9 @@ from django.contrib.auth.models import Group, Permission from django.core import mail from django.test import TestCase, override_settings -from ..models.assemblies import Assembly, AssemblyMember -from ..models.conference import Conference, ConferenceMember -from ..models.users import PlatformUser, UserCommunicationChannel +from core.models.assemblies import Assembly, AssemblyMember +from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser, UserCommunicationChannel class AssembliesTestsMixin(TestCase): diff --git a/src/core/tests/badges.py b/src/core/tests/badges.py index f0f40ec9cbe0c662aa1789a7f460d32793ab6890..59ebfddb81edf264b5cd4e9c185851a17244e0e7 100644 --- a/src/core/tests/badges.py +++ b/src/core/tests/badges.py @@ -2,11 +2,10 @@ from django.core.exceptions import ValidationError from django.test import TestCase from core.choices import UserBadgeVisibility - -from ..models.assemblies import Assembly -from ..models.badges import Badge, UserBadge -from ..models.conference import Conference, ConferenceMember -from ..models.users import PlatformUser +from core.models.assemblies import Assembly +from core.models.badges import Badge, UserBadge +from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser class BadgeTests(TestCase): diff --git a/src/core/tests/conference.py b/src/core/tests/conference.py index 8e6a327f9fc6d6e99262d56bc4ae8985980d1eaf..3ed7df0ec677b36116043bf74eec19f1fc60b494 100644 --- a/src/core/tests/conference.py +++ b/src/core/tests/conference.py @@ -4,7 +4,7 @@ from unittest.mock import patch from django.test import TestCase from django.utils import timezone -from ..models.conference import Conference, ConferenceDay +from core.models.conference import Conference, ConferenceDay class ConferenceTests(TestCase): diff --git a/src/core/tests/exportcache.py b/src/core/tests/exportcache.py index 090d9e82ee0795dc080a81c00e4352d2253b7c87..72e57d7e46465b636be9dc6a0995b81b8985be14 100644 --- a/src/core/tests/exportcache.py +++ b/src/core/tests/exportcache.py @@ -4,8 +4,8 @@ from django.test import TestCase, override_settings from django.utils import timezone from django.utils.timezone import now -from ..models.assemblies import Assembly -from ..models.conference import Conference, ConferenceExportCache +from core.models.assemblies import Assembly +from core.models.conference import Conference, ConferenceExportCache class ScheduleTests(TestCase): diff --git a/src/core/tests/markdown.py b/src/core/tests/markdown.py index e4cb46a8bf3f90ca10130f62ee6c1762b3d658bd..d30892ab8ce3ecd58025077a29198c312c93ca9f 100644 --- a/src/core/tests/markdown.py +++ b/src/core/tests/markdown.py @@ -7,10 +7,9 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import reverse +from core.markdown import render_markdown, render_markdown_ex from core.models import Conference, ConferenceTag, PlatformUser, StaticPage -from ..markdown import render_markdown, render_markdown_ex - TEST_CONF_ID = uuid.uuid4() diff --git a/src/core/tests/schedules.py b/src/core/tests/schedules.py index a53bfff0e9c44514d82a0dfc01b219ab957c332f..1fea3d274003d35b78a6ce27cb01873c7abf597e 100644 --- a/src/core/tests/schedules.py +++ b/src/core/tests/schedules.py @@ -4,15 +4,15 @@ from pathlib import Path from django.test import TestCase, override_settings -from ..models import Event, Room -from ..models.assemblies import Assembly -from ..models.conference import Conference, ConferenceMember -from ..models.schedules import ScheduleSource, ScheduleSourceImport, ScheduleSourceMapping -from ..models.users import PlatformUser -from ..schedules.base import BaseScheduleSupport, ScheduleTypeManager, filter_additional_data, schedule_time_to_timedelta -from ..schedules.schedulejson import ScheduleJSONSupport -from ..schedules.schedulejsonfrab import ScheduleJSONFrabSupport -from ..schedules.schedulexml import ScheduleXMLSupport +from core.models import Event, Room +from core.models.assemblies import Assembly +from core.models.conference import Conference, ConferenceMember +from core.models.schedules import ScheduleSource, ScheduleSourceImport, ScheduleSourceMapping +from core.models.users import PlatformUser +from core.schedules.base import BaseScheduleSupport, ScheduleTypeManager, filter_additional_data, schedule_time_to_timedelta +from core.schedules.schedulejson import ScheduleJSONSupport +from core.schedules.schedulejsonfrab import ScheduleJSONFrabSupport +from core.schedules.schedulexml import ScheduleXMLSupport class FileBasedScheduleSupport(BaseScheduleSupport): diff --git a/src/core/tests/search.py b/src/core/tests/search.py index 1d9f4dadb8b4fdcb934384517fc0207b4c58c9a6..852e85858702a3b2cbb6398c697c3ca687187f07 100644 --- a/src/core/tests/search.py +++ b/src/core/tests/search.py @@ -1,12 +1,12 @@ from django.contrib.auth.models import AnonymousUser from django.test import TestCase -from ..models.assemblies import Assembly -from ..models.conference import Conference, ConferenceTrack -from ..models.events import Event -from ..models.pages import StaticPage -from ..models.users import PlatformUser -from ..search import search +from core.models.assemblies import Assembly +from core.models.conference import Conference, ConferenceTrack +from core.models.events import Event +from core.models.pages import StaticPage +from core.models.users import PlatformUser +from core.search import search class SearchTests(TestCase): diff --git a/src/core/tests/tags.py b/src/core/tests/tags.py index 6c411e15879fa702fd6c69e214f8e0f74d30e555..1d5d5d7dfbfdc1d9a09ba9ef4e3584d5c631bad3 100644 --- a/src/core/tests/tags.py +++ b/src/core/tests/tags.py @@ -2,10 +2,10 @@ from django.contrib.auth.models import AnonymousUser from django.contrib.contenttypes.models import ContentType from django.test import TestCase -from ..models.assemblies import Assembly -from ..models.conference import Conference -from ..models.events import Event -from ..models.tags import ConferenceTag, TaggedItemMixin, TagItem +from core.models.assemblies import Assembly +from core.models.conference import Conference +from core.models.events import Event +from core.models.tags import ConferenceTag, TaggedItemMixin, TagItem class TaggingTests(TestCase): diff --git a/src/core/tests/tickets.py b/src/core/tests/tickets.py index 1a7dfd5b1a6338588248286e8818041897de83e1..4ac9ecee1fa9757ebd794be6b0075eaca7f22c12 100644 --- a/src/core/tests/tickets.py +++ b/src/core/tests/tickets.py @@ -4,9 +4,9 @@ import jwt from django.test import TestCase, override_settings -from ..models.conference import Conference -from ..models.ticket import ConferenceMemberTicket, TicketValidationError -from ..models.users import PlatformUser +from core.models.conference import Conference +from core.models.ticket import ConferenceMemberTicket, TicketValidationError +from core.models.users import PlatformUser _GOOD_SECRET = 'F00Preti%' _BAD_SECRET = 'DämlicherFlanders' diff --git a/src/core/tests/users.py b/src/core/tests/users.py index c415cf8595d90f88eb54b521da12103641976536..d1047ef2226ac09a739a0a308feaf5587c91e895 100644 --- a/src/core/tests/users.py +++ b/src/core/tests/users.py @@ -2,8 +2,8 @@ from django.core.exceptions import ValidationError from django.test import TestCase from django.urls import reverse -from ..models.conference import Conference, ConferenceMember -from ..models.users import PlatformUser, UserCommunicationChannel +from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser, UserCommunicationChannel class UserCommunicationChannelStaticTests(TestCase): diff --git a/src/core/tests/utils.py b/src/core/tests/utils.py index 568be24a70ab849ecc8a86440d2bf8478c5bbf60..a69dab3c921ad22cb63b78ace318f5538b256656 100644 --- a/src/core/tests/utils.py +++ b/src/core/tests/utils.py @@ -3,7 +3,7 @@ from datetime import timedelta from django.test import TestCase -from ..utils import GitRepo, mail2uuid, mask_url, scheme_and_netloc_from_url, str2timedelta +from core.utils import GitRepo, mail2uuid, mask_url, scheme_and_netloc_from_url, str2timedelta class UtilsTests(TestCase): diff --git a/src/core/tests/vouchers.py b/src/core/tests/vouchers.py index dddc98caa4ddba5dc68e1a718fe363b6cb0ec170..c598820be882e28a639d015078dbf4df71c5ac00 100644 --- a/src/core/tests/vouchers.py +++ b/src/core/tests/vouchers.py @@ -4,10 +4,10 @@ from datetime import datetime, timezone from django.core.exceptions import ValidationError from django.test import TestCase -from ..models.assemblies import Assembly -from ..models.conference import Conference, ConferenceMember -from ..models.users import PlatformUser -from ..models.voucher import Voucher +from core.models.assemblies import Assembly +from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser +from core.models.voucher import Voucher class VoucherTests(TestCase): diff --git a/src/core/tests/workadventure.py b/src/core/tests/workadventure.py index 2e91edea33863e754f8144fba6c08d38ed983cc0..fd6eb43b4088a113c4d28487532d5a3ca02d95e7 100644 --- a/src/core/tests/workadventure.py +++ b/src/core/tests/workadventure.py @@ -1,8 +1,8 @@ from django.test import TestCase -from ..models import Assembly, Room, WorkadventureSession -from ..models.conference import Conference, ConferenceMember -from ..models.users import PlatformUser +from core.models import Assembly, Room, WorkadventureSession +from core.models.conference import Conference, ConferenceMember +from core.models.users import PlatformUser class WorkadventureSessionTests(TestCase): diff --git a/src/hub/settings/default.py b/src/hub/settings/default.py index 62069a573f8b6f5a93c1e784478ee1f0eafa0697..7dd95cacf958a8f20aed8418c6198c81f5c3a37a 100644 --- a/src/hub/settings/default.py +++ b/src/hub/settings/default.py @@ -58,9 +58,12 @@ assert SECRET_KEY is None or not SECRET_KEY.startswith('/'), ( # Local Settings try: - from ..local_settings import * # noqa: F403,F401 + from hub.local_settings import * # noqa: F403,F401 except ImportError: - print('Unable to load (optional) local_settings.py.') + try: + from hub.settings.local_settings import * # noqa: F403,F401 + except ImportError: + print('Unable to load (optional) local_settings.py.') # read SECRET_KEY from a file not stored in git if DEBUG and SECRET_KEY is None: # noqa: F405