Skip to content

Commit fed993d

Browse files
committed
Edit names, view model
1 parent 040e821 commit fed993d

File tree

5 files changed

+37
-15
lines changed

5 files changed

+37
-15
lines changed

ticket/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ def can_coexist(self, other: TicketType) -> bool:
6262
return True
6363
if self.day == "SUN" and other.day == "SAT":
6464
return True
65+
if self.day == "FRI" or other.day == "FRI":
66+
# TODO program의 시간이 겹치는지 확인?
67+
return True
6568

6669
return False
6770

ticket/requests.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ def __init__(self, request: HttpRequest, **kwargs):
5757

5858

5959
@dataclass(init=False)
60-
class CheckConferenceTicketTypeBuyableRequest:
60+
class CheckTicketTypeBuyableRequest:
6161
@dataclass
6262
class Querystring:
6363
username: Optional[str] = None
6464

6565
@dataclass
6666
class MatchInfo:
67-
ticket_type_code: str
67+
ticket_type_id: str
6868

6969
@dataclass
7070
class Data:
@@ -74,14 +74,14 @@ def __init__(self, request: HttpRequest, **kwargs):
7474
try:
7575
self.querystring = jsons.load(
7676
_extract_querystring(request),
77-
CheckConferenceTicketTypeBuyableRequest.Querystring,
77+
CheckTicketTypeBuyableRequest.Querystring,
7878
)
7979
self.match_info = jsons.load(
80-
kwargs, CheckConferenceTicketTypeBuyableRequest.MatchInfo
80+
kwargs, CheckTicketTypeBuyableRequest.MatchInfo
8181
)
8282
self.data = jsons.load(
8383
json.loads(request.body) if request.body else dict(),
84-
CheckConferenceTicketTypeBuyableRequest.Data,
84+
CheckTicketTypeBuyableRequest.Data,
8585
)
8686
except Exception as e:
8787
raise RequestParsingException() from e

ticket/urls.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
urlpatterns = [
66
path("conference-ticket-types", views.get__get_ticket_types),
77
re_path(
8-
r"^conference-ticket-types/(?P<ticket_type_code>\w+)/check",
9-
views.get__check_conference_ticket_type_buyable,
8+
r"^conference-ticket-types/(?P<ticket_type_id>\w+)/check",
9+
views.get__check_ticket_type_buyable,
1010
),
11-
path("conference-tickets", views.post__add_conference_ticket),
11+
path("conference-tickets", views.post__add_ticket),
1212
path("list", views.get__ticket_list, name="ticket-list"),
1313
path("<int:item_id>", views.TicketDetailView.as_view(), name="ticket-detail"),
1414
path("success", views.ticket_success, name="page-ticket-success"),

ticket/view_models.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
from dataclasses import asdict, dataclass
2-
from typing import Optional
2+
from datetime import datetime
3+
from typing import Optional, Union
34

5+
from program.models import CONFERENCE, TUTORIAL, SPRINT
46
from .models import TicketType
57

68

79
@dataclass(init=False)
810
class TicketTypeViewModel:
11+
@dataclass
12+
class Program:
13+
title: str
14+
short_desc: str
15+
start_at: datetime
16+
end_at: datetime
17+
program_type: str # type: Union[CONFERENCE, TUTORIAL, SPRINT]
18+
919
id: str
1020
name: str
1121
price: int
1222
min_price: Optional[int]
1323
desc: str
1424
day: str # choice
15-
# program: ...
25+
program: Program
1626
is_refundable: bool
27+
is_buyable: property # type: bool
1728

1829
def __init__(self, model: TicketType):
1930
self.id = model.id
@@ -22,7 +33,15 @@ def __init__(self, model: TicketType):
2233
self.min_price = model.min_price
2334
self.desc = model.desc
2435
self.day = model.day
36+
self.program = TicketTypeViewModel.Program(
37+
title=model.program.title,
38+
short_desc=model.program.short_desc,
39+
start_at=model.program.start_at,
40+
end_at=model.program.end_at,
41+
program_type=model.program.program_type,
42+
)
2543
self.is_refundable = model.is_refundable
44+
self.is_buyable = model.buyable
2645

2746
def to_dict(self):
2847
return asdict(self)

ticket/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from .models import Ticket, TicketType
1515
from .requests import (
1616
AddConferenceTicketRequest,
17-
CheckConferenceTicketTypeBuyableRequest,
17+
CheckTicketTypeBuyableRequest,
1818
GetConferenceTicketTypesRequest,
1919
RequestParsingException,
2020
)
@@ -83,14 +83,14 @@ def get__get_ticket_types(request: HttpRequest, **kwargs) -> HttpResponse:
8383

8484
@request_method("GET")
8585
@exception_wrapper
86-
def get__check_conference_ticket_type_buyable(
86+
def get__check_ticket_type_buyable(
8787
request: HttpRequest, **kwargs
8888
) -> HttpResponse:
8989
"""특정 티켓 종류 구매 가능 여부 조회"""
90-
request = CheckConferenceTicketTypeBuyableRequest(request, **kwargs)
90+
request = CheckTicketTypeBuyableRequest(request, **kwargs)
9191

9292
ticket_type = get_object_or_404(
93-
TicketType, code=request.match_info.ticket_type_code
93+
TicketType, id=request.match_info.ticket_type_id
9494
)
9595

9696
if request.querystring.username is None:
@@ -118,7 +118,7 @@ def get__check_conference_ticket_type_buyable(
118118

119119
@request_method("POST")
120120
@exception_wrapper
121-
def post__add_conference_ticket(request: HttpRequest, **kwargs) -> HttpResponse:
121+
def post__add_ticket(request: HttpRequest, **kwargs) -> HttpResponse:
122122
"""티켓 결제 완료, 추가 요청"""
123123
request = AddConferenceTicketRequest(request)
124124

0 commit comments

Comments
 (0)