Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,11 @@ local-collectstatic:
local-shell:
@ENV_PATH=envfile/.env.local uv run python app/manage.py shell

# Run django migrations
# Run django makemigrations
local-makemigrations:
@ENV_PATH=envfile/.env.local uv run python app/manage.py makemigrations

# Run django migrate
local-migrate:
@ENV_PATH=envfile/.env.local uv run python app/manage.py migrate

Expand Down
Empty file added app/cms/__init__.py
Empty file.
5 changes: 5 additions & 0 deletions app/cms/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class CmsConfig(AppConfig):
name = "cms"
65 changes: 65 additions & 0 deletions app/cms/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Generated by Django 5.2 on 2025-04-19 07:08

import uuid

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="Page",
fields=[
("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
("is_active", models.BooleanField(default=False)),
("css", models.TextField(blank=True, default=None, null=True)),
("title", models.CharField(max_length=256)),
("title_ko", models.CharField(max_length=256, null=True)),
("title_en", models.CharField(max_length=256, null=True)),
("subtitle", models.CharField(max_length=512)),
("subtitle_ko", models.CharField(max_length=512, null=True)),
("subtitle_en", models.CharField(max_length=512, null=True)),
],
),
migrations.CreateModel(
name="Section",
fields=[
("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
("order", models.IntegerField(default=0)),
("css", models.TextField(blank=True, default=None, null=True)),
("body", models.TextField(help_text="Content of the page, Written in markdown format")),
("body_ko", models.TextField(help_text="Content of the page, Written in markdown format", null=True)),
("body_en", models.TextField(help_text="Content of the page, Written in markdown format", null=True)),
("page", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="cms.page")),
],
),
migrations.CreateModel(
name="Sitemap",
fields=[
("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
("name", models.CharField(max_length=256)),
("name_ko", models.CharField(max_length=256, null=True)),
("name_en", models.CharField(max_length=256, null=True)),
("order", models.IntegerField(default=0)),
("display_start_at", models.DateTimeField(blank=True, null=True)),
("display_end_at", models.DateTimeField(blank=True, null=True)),
("page", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to="cms.page")),
(
"parent_sitemap",
models.ForeignKey(
blank=True,
default=None,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="children",
to="cms.sitemap",
),
),
],
),
]
Empty file added app/cms/migrations/__init__.py
Empty file.
44 changes: 44 additions & 0 deletions app/cms/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import uuid

from django.db import models
from simple_history.models import HistoricalRecords


class Page(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
is_active = models.BooleanField(default=False)
css = models.TextField(null=True, blank=True, default=None)
title = models.CharField(max_length=256)
subtitle = models.CharField(max_length=512)
history = HistoricalRecords()

def __str__(self):
return str(self.title)


class Sitemap(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
parent_sitemap = models.ForeignKey(
"self", null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name="children"
)
name = models.CharField(max_length=256)
order = models.IntegerField(default=0)
page = models.ForeignKey(Page, on_delete=models.PROTECT)
display_start_at = models.DateTimeField(null=True, blank=True)
display_end_at = models.DateTimeField(null=True, blank=True)
history = HistoricalRecords()

def __str__(self):
return str(self.name)


class Section(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
page = models.ForeignKey(Page, on_delete=models.CASCADE)
order = models.IntegerField(default=0)
css = models.TextField(null=True, blank=True, default=None)
body = models.TextField(help_text="Content of the page, Written in markdown format")
history = HistoricalRecords()

def __str__(self):
return f"Section {self.order} of {self.page}"
17 changes: 17 additions & 0 deletions app/cms/translation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from cms.models import Page, Section, Sitemap
from modeltranslation.translator import TranslationOptions, register


@register(Page)
class PageTranslationOptions(TranslationOptions):
fields = ("title", "subtitle")


@register(Sitemap)
class SitemapTranslationOptions(TranslationOptions):
fields = ("name",)


@register(Section)
class SectionTranslationOptions(TranslationOptions):
fields = ("body",)
8 changes: 8 additions & 0 deletions app/core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@
# Application definition

INSTALLED_APPS = [
# django model translation
# https://django-modeltranslation.readthedocs.io/en/latest/installation.html#installed-apps
"modeltranslation",
# django default apps
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
Expand All @@ -170,6 +174,7 @@
"django_extensions",
# django-app
"user",
"cms",
# django-constance
"constance",
]
Expand Down Expand Up @@ -257,6 +262,9 @@

USE_TZ = True

MODELTRANSLATION_DEFAULT_LANGUAGE = "ko"

MODELTRANSLATION_LANGUAGES = ("ko", "en")

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.2/howto/static-files/
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ dependencies = [
"django-environ>=0.12.0",
"django-extensions>=3.2.3",
"django-filter>=25.1",
"django-modeltranslation>=0.19.13",
"django-picklefield>=3.3",
"django-simple-history>=3.8.0",
"django-storages[s3]>=1.14.6",
Expand Down
15 changes: 15 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.