Skip to content

Commit 2c609fa

Browse files
committed
organizer -> conference
1 parent 8a2ade2 commit 2c609fa

14 files changed

+195
-76
lines changed

backend/api/visa/tests/mutations/test_update_invitation_letter_document.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def test_update_invitation_letter_document_as_staff_without_permission(
243243
],
244244
},
245245
)
246-
ConferenceFactory(organizer=document.invitation_letter_organizer_config.organizer)
246+
ConferenceFactory(organizer=document.invitation_letter_conference_config.organizer)
247247

248248
response = _update_invitation_letter_document(
249249
admin_graphql_api_client,
@@ -297,7 +297,7 @@ def test_update_invitation_letter_document_as_staff_user_with_permission(
297297
],
298298
},
299299
)
300-
ConferenceFactory(organizer=document.invitation_letter_organizer_config.organizer)
300+
ConferenceFactory(organizer=document.invitation_letter_conference_config.organizer)
301301

302302
admin_user.admin_all_conferences = True
303303
admin_user.save()

backend/api/visa/tests/queries/test_invitation_letter_document.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def test_cannot_query_invitation_letter_document_as_staff_without_permission(
151151
],
152152
},
153153
)
154-
ConferenceFactory(organizer=document.invitation_letter_organizer_config.organizer)
154+
ConferenceFactory(organizer=document.invitation_letter_conference_config.organizer)
155155

156156
response = _invitation_letter_document(admin_graphql_api_client, id=document.id)
157157

@@ -178,7 +178,7 @@ def test_query_invitation_letter_document_as_staff(
178178
],
179179
},
180180
)
181-
ConferenceFactory(organizer=document.invitation_letter_organizer_config.organizer)
181+
ConferenceFactory(organizer=document.invitation_letter_conference_config.organizer)
182182
admin_user.admin_all_conferences = True
183183
admin_user.save()
184184
admin_user.user_permissions.add(

backend/users/backends.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def _get_conference_id(self, obj: Model) -> int:
2929
case Conference():
3030
return obj.id
3131
case InvitationLetterDocument():
32-
# This is a workaround for now. We need to change our permissions system
33-
return obj.invitation_letter_organizer_config.organizer.conferences.first().id
32+
return obj.invitation_letter_conference_config.conference_id
3433
case _:
3534
return obj.conference_id

backend/visa/admin.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from visa.models import (
1717
InvitationLetterAsset,
1818
InvitationLetterDocument,
19-
InvitationLetterOrganizerConfig,
19+
InvitationLetterConferenceConfig,
2020
InvitationLetterRequest,
2121
)
2222

@@ -45,12 +45,12 @@ class InvitationLetterRequestAdmin(admin.ModelAdmin):
4545
)
4646

4747
list_display = (
48-
"conference",
4948
"requester",
5049
"on_behalf_of",
5150
"full_name",
5251
"nationality",
5352
"status",
53+
"conference",
5454
)
5555
list_filter = (
5656
"status",
@@ -140,14 +140,14 @@ def edit_dynamic_document(self, obj):
140140
url = reverse(
141141
"admin:edit_dynamic_document",
142142
kwargs={
143-
"config_id": obj.invitation_letter_organizer_config_id,
143+
"config_id": obj.invitation_letter_conference_config_id,
144144
"document_id": obj.id,
145145
},
146146
)
147147
return mark_safe(f'<a href="{url}">Edit</a>')
148148

149149
def edit_dynamic_document_view(self, request, config_id, document_id):
150-
config = InvitationLetterOrganizerConfig.objects.get(id=config_id)
150+
config = InvitationLetterConferenceConfig.objects.get(id=config_id)
151151
document = get_object_or_404(config.attached_documents, id=document_id)
152152

153153
context = dict(
@@ -183,12 +183,14 @@ def _create_builder_breadcrumbs(self, config, document):
183183
},
184184
{
185185
"title": str(config._meta.verbose_name_plural),
186-
"url": reverse("admin:visa_invitationletterorganizerconfig_changelist"),
186+
"url": reverse(
187+
"admin:visa_invitationletterconferenceconfig_changelist"
188+
),
187189
},
188190
{
189191
"title": str(config),
190192
"url": reverse(
191-
"admin:visa_invitationletterorganizerconfig_change",
193+
"admin:visa_invitationletterconferenceconfig_change",
192194
args=[config.id],
193195
),
194196
},
@@ -199,12 +201,15 @@ def _create_builder_breadcrumbs(self, config, document):
199201
]
200202

201203

202-
@admin.register(InvitationLetterOrganizerConfig)
203-
class InvitationLetterOrganizerConfigAdmin(
204+
@admin.register(InvitationLetterConferenceConfig)
205+
class InvitationLetterConferenceConfigAdmin(
204206
OrderedInlineModelAdminMixin, OrderedModelAdmin
205207
):
206-
list_display = ("organizer",)
208+
list_display = ("conference", "conference__organizer")
207209
search_fields = [
208-
"organizer__name",
210+
"conference__name",
211+
]
212+
list_filter = [
213+
"conference__organizer",
209214
]
210215
inlines = [InvitationLetterAssetInline, InvitationLetterDocumentInline]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Generated by Django 5.1.4 on 2024-12-21 03:18
2+
3+
import django.db.models.deletion
4+
import django.utils.timezone
5+
import model_utils.fields
6+
from django.db import migrations, models
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
('conferences', '0051_conference_location'),
13+
('visa', '0008_alter_invitationletterasset_identifier'),
14+
]
15+
16+
operations = [
17+
migrations.RenameModel(
18+
old_name='InvitationLetterOrganizerConfig',
19+
new_name='InvitationLetterConferenceConfig',
20+
),
21+
migrations.AlterField(
22+
model_name='invitationletterasset',
23+
name='invitation_letter_organizer_config',
24+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assets', to='visa.invitationletterconferenceconfig', verbose_name='invitation letter organizer config'),
25+
),
26+
migrations.AlterField(
27+
model_name='invitationletterdocument',
28+
name='invitation_letter_organizer_config',
29+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attached_documents', to='visa.invitationletterconferenceconfig', verbose_name='invitation letter organizer config'),
30+
),
31+
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 5.1.4 on 2024-12-21 03:22
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('conferences', '0051_conference_location'),
11+
('visa', '0009_invitationletterconferenceconfig_and_more'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='invitationletterconferenceconfig',
17+
name='conference',
18+
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invitation_letter_config', to='conferences.conference', verbose_name='conference'),
19+
),
20+
migrations.RemoveField(
21+
model_name='invitationletterconferenceconfig',
22+
name='organizer',
23+
),
24+
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 5.1.4 on 2024-12-21 03:24
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('conferences', '0051_conference_location'),
11+
('visa', '0010_remove_invitationletterconferenceconfig_organizer_and_more'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='invitationletterconferenceconfig',
17+
name='conference',
18+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='invitation_letter_config', to='conferences.conference', verbose_name='conference'),
19+
),
20+
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 5.1.4 on 2024-12-21 03:31
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('visa', '0011_alter_invitationletterconferenceconfig_conference'),
11+
]
12+
13+
operations = [
14+
migrations.RenameField(
15+
model_name='invitationletterasset',
16+
old_name='invitation_letter_organizer_config',
17+
new_name='invitation_letter_conference_config',
18+
),
19+
migrations.RenameField(
20+
model_name='invitationletterdocument',
21+
old_name='invitation_letter_organizer_config',
22+
new_name='invitation_letter_conference_config',
23+
),
24+
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 5.1.4 on 2024-12-21 03:31
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('visa', '0012_remove_invitationletterasset_invitation_letter_organizer_config_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='invitationletterasset',
16+
name='invitation_letter_conference_config',
17+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assets', to='visa.invitationletterconferenceconfig', verbose_name='Invitation letter conference config'),
18+
),
19+
migrations.AlterField(
20+
model_name='invitationletterdocument',
21+
name='invitation_letter_conference_config',
22+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attached_documents', to='visa.invitationletterconferenceconfig', verbose_name='Invitation letter conference config'),
23+
),
24+
]

backend/visa/models.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,7 @@ def schedule(self):
148148
)
149149

150150
def get_config(self):
151-
return InvitationLetterOrganizerConfig.objects.get(
152-
organizer=self.conference.organizer
153-
)
151+
return self.conference.invitation_letter_config
154152

155153
class Meta:
156154
constraints = [
@@ -162,29 +160,29 @@ class Meta:
162160
]
163161

164162

165-
class InvitationLetterOrganizerConfig(TimeStampedModel):
166-
organizer = models.ForeignKey(
167-
"organizers.Organizer",
163+
class InvitationLetterConferenceConfig(TimeStampedModel):
164+
conference = models.OneToOneField(
165+
"conferences.Conference",
168166
on_delete=models.CASCADE,
169-
related_name="+",
170-
verbose_name=_("organizer"),
167+
related_name="invitation_letter_config",
168+
verbose_name=_("conference"),
171169
)
172170

173171
def __str__(self):
174-
return f"{self.organizer.name} - Invitation Letter Config"
172+
return f"{self.conference.name} - Invitation Letter Config"
175173

176174

177175
def invitation_letter_attached_document_upload_to(instance, filename):
178-
return f"invitation_letter_attached_documents/{instance.invitation_letter_organizer_config.organizer.slug}/{filename}"
176+
return f"invitation_letter_attached_documents/{instance.invitation_letter_conference_config.conference.code}/{filename}"
179177

180178

181179
class InvitationLetterDocument(OrderedModel, TimeStampedModel):
182180
name = models.CharField(_("name"), max_length=300)
183-
invitation_letter_organizer_config = models.ForeignKey(
184-
"InvitationLetterOrganizerConfig",
181+
invitation_letter_conference_config = models.ForeignKey(
182+
"InvitationLetterConferenceConfig",
185183
on_delete=models.CASCADE,
186184
related_name="attached_documents",
187-
verbose_name=_("invitation letter organizer config"),
185+
verbose_name=_("Invitation letter conference config"),
188186
)
189187
document = models.FileField(
190188
_("document"),
@@ -194,18 +192,18 @@ class InvitationLetterDocument(OrderedModel, TimeStampedModel):
194192
blank=True,
195193
)
196194
dynamic_document = models.JSONField(_("dynamic document"), null=True, blank=True)
197-
order_with_respect_to = "invitation_letter_organizer_config"
195+
order_with_respect_to = "invitation_letter_conference_config"
198196

199197
def __str__(self):
200198
return f"Document: {self.name}"
201199

202200

203201
class InvitationLetterAsset(TimeStampedModel):
204-
invitation_letter_organizer_config = models.ForeignKey(
205-
"InvitationLetterOrganizerConfig",
202+
invitation_letter_conference_config = models.ForeignKey(
203+
"InvitationLetterConferenceConfig",
206204
on_delete=models.CASCADE,
207205
related_name="assets",
208-
verbose_name=_("invitation letter organizer config"),
206+
verbose_name=_("Invitation letter conference config"),
209207
)
210208
identifier = models.CharField(_("identifier"), max_length=100)
211209
image = models.ImageField(

0 commit comments

Comments
 (0)