diff --git a/src/api/tests/permissions.py b/src/api/tests/permissions.py index 92fef7d754435b8bacbd57c7be073c0c93eb7e5b..87c9010ebc969fb1c338200eb04669074048f4e0 100644 --- a/src/api/tests/permissions.py +++ b/src/api/tests/permissions.py @@ -135,7 +135,7 @@ class ConferencePermissionTestCase(PermissionTestCase): self.conference = self.view.conference = Conference.objects.create(slug='conf', name='TestConf', is_public=True) -class ConferenceDetectionTestCase(PermissionTestCase): +class ConferenceDetectionTestCase(ConferencePermissionTestCase): def test_get_conference_view(self): self.assertEqual(ConferencePermission().get_conference(view=self.view), self.conference) diff --git a/src/backoffice/views/assemblies/assemblies.py b/src/backoffice/views/assemblies/assemblies.py index 9bffb30f54cbe3cea190b8086b8c34f945e759e1..06bbe853723f05ace7d2f6c7e6bebb492cd8b090 100644 --- a/src/backoffice/views/assemblies/assemblies.py +++ b/src/backoffice/views/assemblies/assemblies.py @@ -402,7 +402,7 @@ class AssemblyLinksUpdateView(AssemblyMixin, View): if link_created: messages.success(request, gettext('assemblyedit_addedlink').format(linked_name=linkee.name)) logger.info( - 'Assembly "%(assembly_name)s" (%(assembly_pk)s): added link to "%(linkee)s" (%(linkee_pk)s), requested by {%(user)s.' + 'Assembly "%(assembly_name)s" (%(assembly_pk)s): added link to "%(linkee)s" (%(linkee_pk)s), requested by {%(user)s}.' 'Not from this assembly', {'assembly_name': assembly.name, 'assembly_pk': assembly.pk, 'linkee': linkee, 'linkee_pk': linkee.pk, 'user': request.user.username}, ) diff --git a/src/core/integrations/workadventure.py b/src/core/integrations/workadventure.py index 094bed765356d0f6fae4d68f81e1cc5d9ea671c9..461339ba1cb49c33ffc3e49b3b3913ec1920be6b 100644 --- a/src/core/integrations/workadventure.py +++ b/src/core/integrations/workadventure.py @@ -264,6 +264,7 @@ class WorkAdventureIntegration: linter_errors = None linter_missingassets = None linter_missingentrypoints = None + linter_exitgraph = None publish_timestamp = None publish_commit = None has_mapinfo = False diff --git a/src/core/management/commands/sanitize_database.py b/src/core/management/commands/sanitize_database.py index 0b56489e4ad3ec4ccf8b78426d1ab96aab279d57..c9b268407ff695a13739b9ab62fd0229d5e35c5f 100644 --- a/src/core/management/commands/sanitize_database.py +++ b/src/core/management/commands/sanitize_database.py @@ -4,7 +4,8 @@ from django.conf import settings from django.core.management.base import BaseCommand from django.db.models import Max -from core.models.assemblies import Assembly, AssemblyLogEntry, AssemblyMember +from core.models.activitylog import ActivityLogEntry +from core.models.assemblies import Assembly, AssemblyMember from core.models.badges import UserBadge from core.models.conference import ( ConferenceMember, @@ -60,8 +61,8 @@ class Command(BaseCommand): print('Assembly(technical_user:=None): ', end='', flush=True) print(Assembly.objects.exclude(technical_user=None).update(technical_user=None)) - print('AssemblyLogEntry: ', end='', flush=True) - print_delete_stat(AssemblyLogEntry.objects.all().delete()) + print('ActivityLogEntry: ', end='', flush=True) + print_delete_stat(ActivityLogEntry.objects.all().delete()) print('ConferenceMembers: ', end='', flush=True) print_delete_stat(ConferenceMember.objects.all().delete()) diff --git a/src/core/models/badges.py b/src/core/models/badges.py index fcee09d49089064bf53110fd6062524835558607..cbaedb7fcb91eadcb783c1de1f444cdf3371b3c5 100644 --- a/src/core/models/badges.py +++ b/src/core/models/badges.py @@ -185,10 +185,9 @@ class Badge(models.Model): return self.state == self.State.PUBLIC def save(self, update_fields=None, *args, **kwargs): - if self.conference_id is None and self.issuing_assembly_id is not None: - self.conference_id = self.issuing_assembly.conference_id - - elif self.conference_id != self.issuing_assembly.conference_id: + if not hasattr(self, 'conference') and hasattr(self, 'issuing_assembly'): + self.conference = self.issuing_assembly.conference + elif hasattr(self, 'conference') and self.conference != self.issuing_assembly.conference: raise ValidationError(_('Badge__issuing_assembly__wrong_conference')) if update_fields is None or 'description' in update_fields: render_results = compile_translated_markdown_fields(self, self.conference, 'description') diff --git a/src/core/models/messages.py b/src/core/models/messages.py index edcb87f3e5aa5710bcf96db1c2a42a334ae71da7..28e424ce9bac8c3be832245d62b3b2f2ed72875c 100644 --- a/src/core/models/messages.py +++ b/src/core/models/messages.py @@ -87,7 +87,7 @@ class DirectMessage(models.Model): ctx = { 'conference': self.conference, 'subject': self.subject, - 'message': self.message, + 'message': self.body, 'timestamp': self.timestamp, 'sender': str(self.sender) if self.sender is not None else None, 'recipient': str(self.recipient) if self.recipient is not None else None, @@ -96,7 +96,7 @@ class DirectMessage(models.Model): body_text = render_to_string('core/directmessage.txt', ctx) if settings.SUPPORT_HTML_MAILS: - ctx['message_html'] = render_markdown(self.body) + ctx['message_html'] = render_markdown(self.conference, self.body) body_html = render_to_string('core/directmessage.html', ctx) else: body_html = None diff --git a/src/core/models/pages.py b/src/core/models/pages.py index e4c37ddf12c59f6768b9f240db18c2f9c9c56354..257ca1333fcafc5d67617ae4ff9a17e657390425 100644 --- a/src/core/models/pages.py +++ b/src/core/models/pages.py @@ -326,7 +326,7 @@ class StaticPage(models.Model): def newest_revision(self): try: return self.revisions.order_by('-revision').first() - except models.DoesNotExist: + except StaticPageRevision.DoesNotExist: return None def clean(self, *args, **kwargs): diff --git a/src/core/tests/exportcache.py b/src/core/tests/exportcache.py index 72e57d7e46465b636be9dc6a0995b81b8985be14..a62ffc4c80d1f54d0caeb04b89469faf69061009 100644 --- a/src/core/tests/exportcache.py +++ b/src/core/tests/exportcache.py @@ -1,7 +1,6 @@ -from datetime import datetime, timedelta +from datetime import UTC, datetime, timedelta from django.test import TestCase, override_settings -from django.utils import timezone from django.utils.timezone import now from core.models.assemblies import Assembly @@ -13,8 +12,8 @@ class ScheduleTests(TestCase): self.conference = Conference( slug='foo', name='Foo Conference', - start=datetime(2021, 12, 1, 9, 0, 0, tzinfo=timezone.utc), - end=datetime(2021, 12, 31, 15, 00, 00, tzinfo=timezone.utc), + start=datetime(2021, 12, 1, 9, 0, 0, tzinfo=UTC), + end=datetime(2021, 12, 31, 15, 00, 00, tzinfo=UTC), ) self.conference.save() diff --git a/src/plainui/tests/test_views.py b/src/plainui/tests/test_views.py index a7ca15956bbcf25f442c22e407313fc1cd7735bc..e9002f0c704db719229956d1659aa6d71ed7b151 100644 --- a/src/plainui/tests/test_views.py +++ b/src/plainui/tests/test_views.py @@ -131,8 +131,8 @@ class ViewsTestBase(TestCase): This is the test pendant to `plainui.views.ConferenceRequiredMixin`. """ + old_cookies = self.client.cookies try: - old_cookies = self.client.cookies self.client.cookies = SimpleCookie() ConferenceRequiredMixin._test_cork = True _request = self.client.post if post else self.client.get @@ -192,8 +192,8 @@ class ViewsTestBase(TestCase): ConferenceRequiredMixin._conf = None def assertNeedsNoLogin(self, url, data=None, post=False): + old_cookies = self.client.cookies try: - old_cookies = self.client.cookies self.client.cookies = SimpleCookie() ConferenceRequiredMixin._test_cork = True _request = self.client.post if post else self.client.get diff --git a/src/plainui/utils.py b/src/plainui/utils.py index 5228e53df0414c2f50f68a0f9fba11e7262f3cda..08c243bd7634f39bf271c97af306ff950dadb61a 100644 --- a/src/plainui/utils.py +++ b/src/plainui/utils.py @@ -62,6 +62,7 @@ def check_message_content(conf, request, text, kind, kind_data): report_form = ReportForm( conf=conf, + request=request, data={ 'kind': kind, 'kind_data': str(kind_data),