Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@
"cms",
"event",
"event.presentation",
"event.sponsor",
"admin_api",
# django-constance
"constance",
Expand Down
1 change: 0 additions & 1 deletion app/event/admin.py

This file was deleted.

Empty file added app/event/sponsor/__init__.py
Empty file.
16 changes: 16 additions & 0 deletions app/event/sponsor/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import importlib

from django.apps import AppConfig


class SponsorConfig(AppConfig):
name = "event.sponsor"

def ready(self):
importlib.import_module("event.sponsor.translation")

from event.sponsor.models import Sponsor, SponsorTier
from simple_history import register

register(SponsorTier)
register(Sponsor)
322 changes: 322 additions & 0 deletions app/event/sponsor/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
# Generated by Django 5.2 on 2025-06-07 10:17

import uuid

import core.fields
import django.db.models.deletion
import simple_history.models
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
initial = True

dependencies = [
("event", "0001_initial"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name="HistoricalSponsor",
fields=[
("id", models.UUIDField(db_index=True, default=uuid.uuid4, editable=False)),
("created_at", models.DateTimeField(blank=True, editable=False)),
("updated_at", models.DateTimeField(blank=True, editable=False)),
("deleted_at", models.DateTimeField(blank=True, null=True)),
("name", models.CharField(blank=True, max_length=256, null=True)),
("name_ko", models.CharField(blank=True, max_length=256, null=True)),
("name_en", models.CharField(blank=True, max_length=256, null=True)),
("logo", models.URLField(blank=True, null=True)),
("description", models.CharField(blank=True, max_length=1000, null=True)),
("description_ko", models.CharField(blank=True, max_length=1000, null=True)),
("description_en", models.CharField(blank=True, max_length=1000, null=True)),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")], max_length=1),
),
(
"created_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"deleted_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"event",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="event.event",
),
),
(
"history_user",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"updated_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"verbose_name": "historical sponsor",
"verbose_name_plural": "historical sponsors",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="HistoricalSponsorTier",
fields=[
("id", models.UUIDField(db_index=True, default=uuid.uuid4, editable=False)),
("created_at", models.DateTimeField(blank=True, editable=False)),
("updated_at", models.DateTimeField(blank=True, editable=False)),
("deleted_at", models.DateTimeField(blank=True, null=True)),
("name", models.CharField(blank=True, max_length=256, null=True)),
("name_ko", models.CharField(blank=True, max_length=256, null=True)),
("name_en", models.CharField(blank=True, max_length=256, null=True)),
("order", models.IntegerField(blank=True, null=True)),
("history_id", models.AutoField(primary_key=True, serialize=False)),
("history_date", models.DateTimeField(db_index=True)),
("history_change_reason", models.CharField(max_length=100, null=True)),
(
"history_type",
models.CharField(choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")], max_length=1),
),
(
"created_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"deleted_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"event",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="event.event",
),
),
(
"history_user",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
(
"updated_by",
models.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"verbose_name": "historical sponsor tier",
"verbose_name_plural": "historical sponsor tiers",
"ordering": ("-history_date", "-history_id"),
"get_latest_by": ("history_date", "history_id"),
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
migrations.CreateModel(
name="Sponsor",
fields=[
("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("deleted_at", models.DateTimeField(blank=True, null=True)),
("name", models.CharField(blank=True, max_length=256, null=True)),
("name_ko", models.CharField(blank=True, max_length=256, null=True)),
("name_en", models.CharField(blank=True, max_length=256, null=True)),
("logo", models.URLField(blank=True, null=True)),
("description", models.CharField(blank=True, max_length=1000, null=True)),
("description_ko", models.CharField(blank=True, max_length=1000, null=True)),
("description_en", models.CharField(blank=True, max_length=1000, null=True)),
(
"created_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_created_by",
to=settings.AUTH_USER_MODEL,
),
),
(
"deleted_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_deleted_by",
to=settings.AUTH_USER_MODEL,
),
),
(
"event",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, related_name="sponsors", to="event.event"
),
),
(
"updated_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_updated_by",
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="SponsorTier",
fields=[
("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("deleted_at", models.DateTimeField(blank=True, null=True)),
("name", models.CharField(blank=True, max_length=256, null=True)),
("name_ko", models.CharField(blank=True, max_length=256, null=True)),
("name_en", models.CharField(blank=True, max_length=256, null=True)),
("order", models.IntegerField(blank=True, null=True)),
(
"created_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_created_by",
to=settings.AUTH_USER_MODEL,
),
),
(
"deleted_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_deleted_by",
to=settings.AUTH_USER_MODEL,
),
),
(
"event",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, related_name="sponsor_tiers", to="event.event"
),
),
(
"updated_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="%(class)s_updated_by",
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"abstract": False,
},
),
migrations.CreateModel(
name="SponsorTierSponsorRelation",
fields=[
(
"id",
core.fields.UUIDAutoField(
auto_created=True,
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"sponsor",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="sponsor_tier_sponsor_relations",
to="sponsor.sponsor",
),
),
(
"sponsor_tier",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="sponsor_tier_sponsor_relations",
to="sponsor.sponsortier",
),
),
],
),
migrations.AddField(
model_name="sponsor",
name="sponsor_tier",
field=models.ManyToManyField(through="sponsor.SponsorTierSponsorRelation", to="sponsor.sponsortier"),
),
]
Empty file.
24 changes: 24 additions & 0 deletions app/event/sponsor/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from core.models import BaseAbstractModel
from django.db import models
from event.models import Event


class Sponsor(BaseAbstractModel):
event = models.ForeignKey(Event, on_delete=models.PROTECT, related_name="sponsors")
name = models.CharField(max_length=256, null=True, blank=True)
logo = models.URLField(null=True, blank=True)
description = models.CharField(max_length=1000, null=True, blank=True)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description = models.CharField(max_length=1000, null=True, blank=True)
description = models.TextField(null=True, blank=True)

요건 어떨까요?

  • 저희 PSQL이라 varchar 타입이나 text 타입이나 둘 다 성능 차이가 없고
  • description으로 쿼리할 일이 없는지라, index 생성으로 인한 길이 제한 이슈가 없거든요!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어엇 이거 text field로 했었는데 왜 charfield로 되어있죠...ㅋㅋㅋㅋ 수정하겠습니다.

sponsor_tier = models.ManyToManyField(to="SponsorTier", through="SponsorTierSponsorRelation")


class SponsorTier(BaseAbstractModel):
event = models.ForeignKey(Event, on_delete=models.PROTECT, related_name="sponsor_tiers")
name = models.CharField(max_length=256, null=True, blank=True)
order = models.IntegerField(null=True, blank=True)


class SponsorTierSponsorRelation(models.Model):
sponsor_tier = models.ForeignKey(
SponsorTier, on_delete=models.CASCADE, related_name="sponsor_tier_sponsor_relations"
)
sponsor = models.ForeignKey(Sponsor, on_delete=models.CASCADE, related_name="sponsor_tier_sponsor_relations")
Loading