Skip to content

Commit 94b4b89

Browse files
authored
Merge pull request #168 from pythonkr/devdev
스폰서 API 프로덕션에 반영
2 parents f07cc58 + b6c38e2 commit 94b4b89

File tree

8 files changed

+126
-17
lines changed

8 files changed

+126
-17
lines changed

requirements-local.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ drf-spectacular==0.27.2
2222
django-cors-headers==3.14.0
2323
requests==2.28.2
2424
django-picklefield==3.1
25+
setuptools==74.1.2

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Markdown==3.4.1
1212
mysql-connector-python==8.0.32
1313
mysqlclient==2.2.4
1414
sqlparse==0.4.3
15+
setuptools==74.1.2
1516
tzdata==2022.7
1617
sorl-thumbnail==12.9.0
1718
django-summernote==0.8.20.0

sponsor/admin.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django_summernote.admin import SummernoteModelAdmin
33
from import_export.admin import ImportExportModelAdmin
44

5-
from sponsor.models import Sponsor, SponsorLevel, Patron
5+
from sponsor.models import Sponsor, SponsorLevel, Patron, SponsorBenefit, BenefitByLevel
66

77

88
class SponsorAdmin(SummernoteModelAdmin):
@@ -21,7 +21,7 @@ class SponsorAdmin(SummernoteModelAdmin):
2121
"accepted",
2222
"paid_at",
2323
)
24-
list_filter = ("accepted",)
24+
list_filter = ("accepted", "submitted")
2525
ordering = ("-created_at",)
2626

2727

@@ -35,15 +35,41 @@ class SponsorLevelAdmin(SummernoteModelAdmin):
3535
"name",
3636
"price",
3737
"limit",
38+
"year",
3839
)
3940
list_editable = ("order",)
4041
ordering = ("order",)
41-
search_fields = ("name",)
42+
search_fields = ("name", "year")
4243

4344

4445
admin.site.register(SponsorLevel, SponsorLevelAdmin)
4546

4647

48+
class SponsorBenefitAdmin(SummernoteModelAdmin):
49+
list_display = (
50+
"id",
51+
"name",
52+
"desc",
53+
"unit",
54+
"year",
55+
"is_countable",
56+
)
57+
ordering = ("-year", "id")
58+
search_fields = ("name", "year")
59+
list_editable = ("unit", "is_countable")
60+
61+
62+
admin.site.register(SponsorBenefit, SponsorBenefitAdmin)
63+
64+
65+
class BenefitByLevelAdmin(SummernoteModelAdmin):
66+
list_display = ("id", "benefit", "level", "offer", "uncountable_offer")
67+
list_editable = ("offer",)
68+
69+
70+
admin.site.register(BenefitByLevel, BenefitByLevelAdmin)
71+
72+
4773
class PatronAdmin(SummernoteModelAdmin, ImportExportModelAdmin):
4874
list_display = (
4975
"id",
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Generated by Django 4.1.5 on 2024-09-18 03:49
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("sponsor", "0009_sponsorbenefit_year_sponsorlevel_benefits"),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name="benefitbylevel",
15+
options={
16+
"verbose_name": "후원사 등급별 혜택",
17+
"verbose_name_plural": "후원사 등급별 혜택 목록",
18+
},
19+
),
20+
migrations.AlterModelOptions(
21+
name="sponsorbenefit",
22+
options={
23+
"verbose_name": "후원사 혜택",
24+
"verbose_name_plural": "후원사 혜택 목록",
25+
},
26+
),
27+
migrations.AddField(
28+
model_name="benefitbylevel",
29+
name="uncountable_offer",
30+
field=models.TextField(blank=True, help_text="셀 수 없는 혜택", null=True),
31+
),
32+
migrations.AlterField(
33+
model_name="benefitbylevel",
34+
name="offer",
35+
field=models.PositiveIntegerField(
36+
help_text="제공 하는 혜택 개수", null=True
37+
),
38+
),
39+
migrations.AlterField(
40+
model_name="sponsorbenefit",
41+
name="unit",
42+
field=models.CharField(
43+
blank=True, help_text="혜택 단위", max_length=10, null=True
44+
),
45+
),
46+
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 4.1.5 on 2024-09-18 12:30
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("sponsor", "0010_alter_benefitbylevel_options_and_more"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="benefitbylevel",
15+
name="offer",
16+
field=models.PositiveIntegerField(
17+
blank=True, help_text="제공 하는 혜택 개수", null=True
18+
),
19+
),
20+
]

sponsor/models.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,28 @@
55
User = get_user_model()
66

77

8-
class SponsorLevelManager(models.Manager):
9-
def get_queryset(self):
10-
return super(SponsorLevelManager, self).get_queryset().all().order_by("order")
11-
12-
138
class SponsorBenefit(models.Model):
149
class Meta:
15-
verbose_name = "후원사 등급 별 혜택"
16-
verbose_name_plural = "후원사 등급 별 혜택 목록"
10+
verbose_name = "후원사 혜택"
11+
verbose_name_plural = "후원사 혜택 목록"
1712

1813
name = models.CharField(max_length=255, help_text="혜택 이름")
1914
desc = models.TextField(null=True, blank=True, help_text="기타")
20-
unit = models.CharField(max_length=10, help_text="혜택 단위")
15+
unit = models.CharField(max_length=10, null=True, blank=True, help_text="혜택 단위")
2116
year = models.IntegerField(default=2023)
2217
is_countable = models.BooleanField(
2318
default=True, help_text="제공 하는 혜택이 셀 수 있는지 여부"
2419
)
2520

21+
def __str__(self):
22+
return self.name
23+
2624

2725
class SponsorLevel(models.Model):
2826
class Meta:
2927
verbose_name = "후원사 등급"
3028
verbose_name_plural = "후원사 등급"
29+
ordering = ["order"]
3130

3231
name = models.CharField(
3332
max_length=255, blank=True, default="", help_text="후원 등급명"
@@ -49,8 +48,6 @@ class Meta:
4948
SponsorBenefit, through="BenefitByLevel", related_name="level"
5049
)
5150

52-
objects = SponsorLevelManager()
53-
5451
@property
5552
def current_remaining_number(self):
5653
return (
@@ -75,6 +72,8 @@ def __str__(self):
7572

7673
class BenefitByLevel(models.Model):
7774
class Meta:
75+
verbose_name = "후원사 등급별 혜택"
76+
verbose_name_plural = "후원사 등급별 혜택 목록"
7877
constraints = [
7978
models.UniqueConstraint(
8079
fields=["benefit_id", "level_id"], name="IX_BENEFIT_BY_LEVEL_1"
@@ -87,7 +86,15 @@ class Meta:
8786
level = models.ForeignKey(
8887
SponsorLevel, on_delete=models.CASCADE, related_name="benefit_by_level"
8988
)
90-
offer = models.PositiveIntegerField(help_text="제공 하는 혜택 개수")
89+
offer = models.PositiveIntegerField(
90+
null=True, blank=True, help_text="제공 하는 혜택 개수"
91+
)
92+
uncountable_offer = models.TextField(
93+
null=True, blank=True, help_text="셀 수 없는 혜택"
94+
)
95+
96+
def __str__(self):
97+
return f"{self.level!s} - {self.benefit!s}"
9198

9299

93100
def registration_file_upload_to(instance, filename):

sponsor/serializers.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,15 @@ class SponsorBenefitWithOfferSerializer(SponsorBenefitSerializer):
4242

4343
class Meta:
4444
model = BenefitByLevel
45-
fields = ["id", "name", "desc", "unit", "is_countable", "offer"]
45+
fields = [
46+
"id",
47+
"name",
48+
"desc",
49+
"unit",
50+
"is_countable",
51+
"offer",
52+
"uncountable_offer",
53+
]
4654

4755
def get_benefit_id(self, obj):
4856
breakpoint()

sponsor/viewsets.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class SponsorLevelViewSet(ModelViewSet):
4040
http_method_names = ["get", "post", "put", "delete"]
4141

4242
def get_queryset(self):
43-
return SponsorLevel.objects.get_queryset()
43+
return SponsorLevel.objects.filter(year=self.request.version).all()
4444

4545
def get_serializer_class(self):
4646
match self.action:
@@ -159,7 +159,7 @@ class SponsorRemainingAccountViewSet(ModelViewSet):
159159
http_method_names = ["get"]
160160

161161
def get_queryset(self):
162-
return SponsorLevel.objects.all()
162+
return SponsorLevel.objects.filter(year=self.request.version).all()
163163

164164
def list(self, request, *args, **kwargs):
165165
queryset = SponsorLevel.objects.all().order_by("-price")

0 commit comments

Comments
 (0)