From 81b1827fdd70e78f71096985e2b1d7f6b7c2b0f0 Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 12:16:41 +0900 Subject: [PATCH 1/9] =?UTF-8?q?Feat:=20=EC=96=B4=EB=93=9C=EB=AF=BC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=20=ED=9B=84=EC=9B=90?= =?UTF-8?q?=EC=82=AC=20=EB=93=B1=EA=B8=89=20=EB=B0=8F=20=EB=93=B1=EA=B8=89?= =?UTF-8?q?=EB=B3=84=20=ED=98=9C=ED=83=9D=20=EA=B4=80=EB=A6=AC=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/admin.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/sponsor/admin.py b/sponsor/admin.py index 50b9f84..c11149f 100644 --- a/sponsor/admin.py +++ b/sponsor/admin.py @@ -2,7 +2,7 @@ from django_summernote.admin import SummernoteModelAdmin from import_export.admin import ImportExportModelAdmin -from sponsor.models import Sponsor, SponsorLevel, Patron +from sponsor.models import Sponsor, SponsorLevel, Patron, SponsorBenefit, BenefitByLevel class SponsorAdmin(SummernoteModelAdmin): @@ -21,7 +21,7 @@ class SponsorAdmin(SummernoteModelAdmin): "accepted", "paid_at", ) - list_filter = ("accepted",) + list_filter = ("accepted", "submitted") ordering = ("-created_at",) @@ -35,15 +35,41 @@ class SponsorLevelAdmin(SummernoteModelAdmin): "name", "price", "limit", + "year", ) list_editable = ("order",) ordering = ("order",) - search_fields = ("name",) + search_fields = ("name", "year") admin.site.register(SponsorLevel, SponsorLevelAdmin) +class SponsorBenefitAdmin(SummernoteModelAdmin): + list_display = ( + "id", + "name", + "desc", + "unit", + "year", + "is_countable", + ) + ordering = ("-year", "id") + search_fields = ("name", "year") + list_editable = ("unit", "is_countable") + + +admin.site.register(SponsorBenefit, SponsorBenefitAdmin) + + +class BenefitByLevelAdmin(SummernoteModelAdmin): + list_display = ("id", "benefit_id", "level_id", "offer") + list_editable = ("offer",) + + +admin.site.register(BenefitByLevel, BenefitByLevelAdmin) + + class PatronAdmin(SummernoteModelAdmin, ImportExportModelAdmin): list_display = ( "id", From 58f36a4850d23dec1cbc77b7bca9c0709ef8d224 Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 12:20:54 +0900 Subject: [PATCH 2/9] =?UTF-8?q?Fix:=20=EC=96=B4=EB=93=9C=EB=AF=BC=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=20=EB=B3=B4=EC=9D=B4?= =?UTF-8?q?=EB=8A=94=20=EC=84=A4=EB=AA=85=20=EB=82=B4=EC=9A=A9=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sponsor/models.py b/sponsor/models.py index 4328acf..872b01d 100644 --- a/sponsor/models.py +++ b/sponsor/models.py @@ -12,8 +12,8 @@ def get_queryset(self): class SponsorBenefit(models.Model): class Meta: - verbose_name = "후원사 등급 별 혜택" - verbose_name_plural = "후원사 등급 별 혜택 목록" + verbose_name = "후원사 혜택" + verbose_name_plural = "후원사 혜택 목록" name = models.CharField(max_length=255, help_text="혜택 이름") desc = models.TextField(null=True, blank=True, help_text="기타") @@ -75,6 +75,8 @@ def __str__(self): class BenefitByLevel(models.Model): class Meta: + verbose_name = "후원사 등급별 혜택" + verbose_name_plural = "후원사 등급별 혜택 목록" constraints = [ models.UniqueConstraint( fields=["benefit_id", "level_id"], name="IX_BENEFIT_BY_LEVEL_1" From 2594cbda8a94e028a950235fcd9e5ff77b35f227 Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 12:27:18 +0900 Subject: [PATCH 3/9] =?UTF-8?q?Fix:=20id=EA=B0=80=20=EC=95=84=EB=8B=8C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EC=9D=B4=20=EC=B6=9C=EB=A0=A5=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/admin.py | 2 +- sponsor/models.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sponsor/admin.py b/sponsor/admin.py index c11149f..3c75230 100644 --- a/sponsor/admin.py +++ b/sponsor/admin.py @@ -63,7 +63,7 @@ class SponsorBenefitAdmin(SummernoteModelAdmin): class BenefitByLevelAdmin(SummernoteModelAdmin): - list_display = ("id", "benefit_id", "level_id", "offer") + list_display = ("id", "benefit", "level", "offer") list_editable = ("offer",) diff --git a/sponsor/models.py b/sponsor/models.py index 872b01d..84c80c5 100644 --- a/sponsor/models.py +++ b/sponsor/models.py @@ -23,6 +23,9 @@ class Meta: default=True, help_text="제공 하는 혜택이 셀 수 있는지 여부" ) + def __str__(self): + return self.name + class SponsorLevel(models.Model): class Meta: From 40b59dde2b7b97346b49bef3094bfb91d87b164b Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 12:51:04 +0900 Subject: [PATCH 4/9] =?UTF-8?q?Update:=20=EB=A1=9C=EA=B3=A0=20=EB=85=B8?= =?UTF-8?q?=EC=B6=9C=20=ED=9B=84=EC=9B=90=20=ED=98=9C=ED=83=9D=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=EB=A5=BC=20=EC=9C=84=ED=95=B4=20uncountable=5Foffer?= =?UTF-8?q?=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/admin.py | 2 +- ...0_alter_benefitbylevel_options_and_more.py | 46 +++++++++++++++++++ sponsor/models.py | 10 +++- 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 sponsor/migrations/0010_alter_benefitbylevel_options_and_more.py diff --git a/sponsor/admin.py b/sponsor/admin.py index 3c75230..4c0bddd 100644 --- a/sponsor/admin.py +++ b/sponsor/admin.py @@ -63,7 +63,7 @@ class SponsorBenefitAdmin(SummernoteModelAdmin): class BenefitByLevelAdmin(SummernoteModelAdmin): - list_display = ("id", "benefit", "level", "offer") + list_display = ("id", "benefit", "level", "offer", "uncountable_offer") list_editable = ("offer",) diff --git a/sponsor/migrations/0010_alter_benefitbylevel_options_and_more.py b/sponsor/migrations/0010_alter_benefitbylevel_options_and_more.py new file mode 100644 index 0000000..428a4c7 --- /dev/null +++ b/sponsor/migrations/0010_alter_benefitbylevel_options_and_more.py @@ -0,0 +1,46 @@ +# Generated by Django 4.1.5 on 2024年09月18日 03:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("sponsor", "0009_sponsorbenefit_year_sponsorlevel_benefits"), + ] + + operations = [ + migrations.AlterModelOptions( + name="benefitbylevel", + options={ + "verbose_name": "후원사 등급별 혜택", + "verbose_name_plural": "후원사 등급별 혜택 목록", + }, + ), + migrations.AlterModelOptions( + name="sponsorbenefit", + options={ + "verbose_name": "후원사 혜택", + "verbose_name_plural": "후원사 혜택 목록", + }, + ), + migrations.AddField( + model_name="benefitbylevel", + name="uncountable_offer", + field=models.TextField(blank=True, help_text="셀 수 없는 혜택", null=True), + ), + migrations.AlterField( + model_name="benefitbylevel", + name="offer", + field=models.PositiveIntegerField( + help_text="제공 하는 혜택 개수", null=True + ), + ), + migrations.AlterField( + model_name="sponsorbenefit", + name="unit", + field=models.CharField( + blank=True, help_text="혜택 단위", max_length=10, null=True + ), + ), + ] diff --git a/sponsor/models.py b/sponsor/models.py index 84c80c5..0cede5c 100644 --- a/sponsor/models.py +++ b/sponsor/models.py @@ -17,7 +17,7 @@ class Meta: name = models.CharField(max_length=255, help_text="혜택 이름") desc = models.TextField(null=True, blank=True, help_text="기타") - unit = models.CharField(max_length=10, help_text="혜택 단위") + unit = models.CharField(max_length=10, null=True, blank=True, help_text="혜택 단위") year = models.IntegerField(default=2023) is_countable = models.BooleanField( default=True, help_text="제공 하는 혜택이 셀 수 있는지 여부" @@ -92,7 +92,13 @@ class Meta: level = models.ForeignKey( SponsorLevel, on_delete=models.CASCADE, related_name="benefit_by_level" ) - offer = models.PositiveIntegerField(help_text="제공 하는 혜택 개수") + offer = models.PositiveIntegerField(null=True, help_text="제공 하는 혜택 개수") + uncountable_offer = models.TextField( + null=True, blank=True, help_text="셀 수 없는 혜택" + ) + + def __str__(self): + return f"{self.level!s} - {self.benefit!s}" def registration_file_upload_to(instance, filename): From da466538355f589ebfb33dc08c63df70663925f6 Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 13:53:48 +0900 Subject: [PATCH 5/9] =?UTF-8?q?Update:=20=EC=9D=91=EB=8B=B5=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=ED=95=84=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/serializers.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sponsor/serializers.py b/sponsor/serializers.py index 954f4b9..d87b308 100644 --- a/sponsor/serializers.py +++ b/sponsor/serializers.py @@ -42,7 +42,15 @@ class SponsorBenefitWithOfferSerializer(SponsorBenefitSerializer): class Meta: model = BenefitByLevel - fields = ["id", "name", "desc", "unit", "is_countable", "offer"] + fields = [ + "id", + "name", + "desc", + "unit", + "is_countable", + "offer", + "uncountable_offer", + ] def get_benefit_id(self, obj): breakpoint() From 8901ecb140b9ab097782f860b18b71b0fdddb23e Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月18日 21:52:29 +0900 Subject: [PATCH 6/9] =?UTF-8?q?Fix:=20=ED=9B=84=EC=9B=90=20=ED=98=9C?= =?UTF-8?q?=ED=83=9D=20=EC=88=98=EB=9F=89=20null=20=ED=97=88=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0011_alter_benefitbylevel_offer.py | 20 +++++++++++++++++++ sponsor/models.py | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 sponsor/migrations/0011_alter_benefitbylevel_offer.py diff --git a/sponsor/migrations/0011_alter_benefitbylevel_offer.py b/sponsor/migrations/0011_alter_benefitbylevel_offer.py new file mode 100644 index 0000000..b463c2d --- /dev/null +++ b/sponsor/migrations/0011_alter_benefitbylevel_offer.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.5 on 2024年09月18日 12:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("sponsor", "0010_alter_benefitbylevel_options_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="benefitbylevel", + name="offer", + field=models.PositiveIntegerField( + blank=True, help_text="제공 하는 혜택 개수", null=True + ), + ), + ] diff --git a/sponsor/models.py b/sponsor/models.py index 0cede5c..d4e7b0d 100644 --- a/sponsor/models.py +++ b/sponsor/models.py @@ -92,7 +92,9 @@ class Meta: level = models.ForeignKey( SponsorLevel, on_delete=models.CASCADE, related_name="benefit_by_level" ) - offer = models.PositiveIntegerField(null=True, help_text="제공 하는 혜택 개수") + offer = models.PositiveIntegerField( + null=True, blank=True, help_text="제공 하는 혜택 개수" + ) uncountable_offer = models.TextField( null=True, blank=True, help_text="셀 수 없는 혜택" ) From 946be076d1207b5ab8264a7a81daf92c83197376 Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月21日 00:23:24 +0900 Subject: [PATCH 7/9] =?UTF-8?q?Fix:=20=ED=95=B4=EB=8B=B9=20=EC=97=B0?= =?UTF-8?q?=EB=8F=84=EC=9D=98=20=ED=9B=84=EC=9B=90=EC=82=AC=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=A7=8C=20=EC=BF=BC=EB=A6=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/viewsets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sponsor/viewsets.py b/sponsor/viewsets.py index 542a6c4..ee93be7 100644 --- a/sponsor/viewsets.py +++ b/sponsor/viewsets.py @@ -40,7 +40,7 @@ class SponsorLevelViewSet(ModelViewSet): http_method_names = ["get", "post", "put", "delete"] def get_queryset(self): - return SponsorLevel.objects.get_queryset() + return SponsorLevel.objects.filter(year=self.request.version).get_queryset() def get_serializer_class(self): match self.action: @@ -159,7 +159,7 @@ class SponsorRemainingAccountViewSet(ModelViewSet): http_method_names = ["get"] def get_queryset(self): - return SponsorLevel.objects.all() + return SponsorLevel.objects.filter(year=self.request.version).all() def list(self, request, *args, **kwargs): queryset = SponsorLevel.objects.all().order_by("-price") From b7254e50064a0af444cf9a2bae3e62b23c16d4fc Mon Sep 17 00:00:00 2001 From: jungmir Date: 2024年9月21日 00:31:22 +0900 Subject: [PATCH 8/9] =?UTF-8?q?Fix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20querys?= =?UTF-8?q?et=20=EB=B9=8C=EB=93=9C=EB=A1=9C=20=EC=9D=B8=ED=95=B4=20api?= =?UTF-8?q?=EA=B0=80=20=EC=A0=95=EC=83=81=20=EB=8F=99=EC=9E=91=20=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EC=9D=B4=EC=8A=88=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sponsor/models.py | 8 +------- sponsor/viewsets.py | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/sponsor/models.py b/sponsor/models.py index d4e7b0d..2cd4351 100644 --- a/sponsor/models.py +++ b/sponsor/models.py @@ -5,11 +5,6 @@ User = get_user_model() -class SponsorLevelManager(models.Manager): - def get_queryset(self): - return super(SponsorLevelManager, self).get_queryset().all().order_by("order") - - class SponsorBenefit(models.Model): class Meta: verbose_name = "후원사 혜택" @@ -31,6 +26,7 @@ class SponsorLevel(models.Model): class Meta: verbose_name = "후원사 등급" verbose_name_plural = "후원사 등급" + ordering = ["order"] name = models.CharField( max_length=255, blank=True, default="", help_text="후원 등급명" @@ -52,8 +48,6 @@ class Meta: SponsorBenefit, through="BenefitByLevel", related_name="level" ) - objects = SponsorLevelManager() - @property def current_remaining_number(self): return ( diff --git a/sponsor/viewsets.py b/sponsor/viewsets.py index ee93be7..2e56066 100644 --- a/sponsor/viewsets.py +++ b/sponsor/viewsets.py @@ -40,7 +40,7 @@ class SponsorLevelViewSet(ModelViewSet): http_method_names = ["get", "post", "put", "delete"] def get_queryset(self): - return SponsorLevel.objects.filter(year=self.request.version).get_queryset() + return SponsorLevel.objects.filter(year=self.request.version).all() def get_serializer_class(self): match self.action: From b24654a455a2da66bf1ac6c8e08605632403c678 Mon Sep 17 00:00:00 2001 From: MU-Software Date: 2024年9月21日 15:12:57 +0900 Subject: [PATCH 9/9] =?UTF-8?q?setuptools=20=EB=B2=84=EC=A0=84=EC=9D=84=20?= =?UTF-8?q?=EB=82=AE=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements-local.txt | 1 + requirements.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements-local.txt b/requirements-local.txt index df7a479..fcdeb46 100644 --- a/requirements-local.txt +++ b/requirements-local.txt @@ -22,3 +22,4 @@ drf-spectacular==0.27.2 django-cors-headers==3.14.0 requests==2.28.2 django-picklefield==3.1 +setuptools==74.1.2 diff --git a/requirements.txt b/requirements.txt index dfdaf31..2b9839a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,7 @@ Markdown==3.4.1 mysql-connector-python==8.0.32 mysqlclient==2.2.4 sqlparse==0.4.3 +setuptools==74.1.2 tzdata==2022.7 sorl-thumbnail==12.9.0 django-summernote==0.8.20.0

AltStyle によって変換されたページ (->オリジナル) /