-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrip.py
201 lines (180 loc) · 7.23 KB
/
trip.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
from custom_exceptions import WrongType, NegativeValue, ValueOverLimit, DateIsEarly, CityNotFound
import request_data
import calculations
class Trip:
"""
Класс с информацией о параметрах поездки
"""
def __init__(self) -> None:
"""
Инициализация класса с параметрами поездки
Все параметры инициализмруются пустыми значениями или значениями по умолчанию
"""
self.sort_order = ''
self.city_name = ''
self.city_id = ''
self.hotels_count = 10
self.checkin_date = ''
self.checkout_date = ''
self.persons_count = 1
self.photos_count = 5
@property
def sort_order(self) -> str:
"""
Геттер для получения значения порядка сортировки результатов
:return: str - порядок сортировки результаов
"""
return self.__sort_order
@sort_order.setter
def sort_order(self, msg_data: str) -> None:
"""
Сеттер для задания порядка сортировки результатов
:param msg_data: str - порядок сортировки результатов
"""
self.__sort_order = msg_data
@property
def city_name(self) -> str:
"""
Геттер для получения параметра город поездки
:return: str - город поездки
"""
return self.__city_name
@city_name.setter
def city_name(self, msg_data: str) -> None:
"""
Сеттер для задания названия города поездки
:param msg_data: str - Название города поездки
"""
self.__city_name = msg_data
self.city_id = msg_data
@property
def city_id(self) -> str:
"""
Геттер для получения параметра идентификатор города поездки
:return: str - идентификатор города поездки
"""
return self.__city_id
@city_id.setter
def city_id(self, city_name: str) -> None:
"""
Сеттер для задания идентификатора города поездки
"""
if city_name == '':
self.__city_id = 'city_name'
else:
try:
self.__city_id = request_data.get_city_id(city_name)
except CityNotFound:
raise CityNotFound
@property
def hotels_count(self) -> int:
"""
Геттер для получения информации о количестве отбираемых отелей
:return: int - Количество отбираемых отелей
"""
return self.__hotels_count
@hotels_count.setter
def hotels_count(self, msg_data: str) -> None:
"""
Сеттер для задания параметра количество отбираемых отелей
:param msg_data: str - Количество отбираемых отелей
"""
try:
self.__hotels_count = calculations.int_transformation(msg_data, 10)
except WrongType:
raise WrongType
except NegativeValue:
raise NegativeValue
except ValueOverLimit:
self.__hotels_count = 10
@property
def checkin_date(self) -> str:
"""
Геттер для получения даты предполагаемой поездки
:return: str - Дата предполагаемой поездки в строковом формате
"""
return self.__check_in_date
@checkin_date.setter
def checkin_date(self, msg_data: str) -> None:
"""
Сеттер для задания даты предполагаемой поездки
:param msg_data: str
"""
if msg_data == '':
self.__check_in_date = msg_data
else:
try:
self.__check_in_date = calculations.date_transformation(msg_data)
except DateIsEarly:
raise DateIsEarly
except WrongType:
raise WrongType
@property
def checkout_date(self) -> str:
"""
Геттер для получения даты завершения поездки
:return: str - Дата завершения в строковом формате
"""
return self.__checkout_date
@checkout_date.setter
def checkout_date(self, msg_data: str) -> None:
"""
Сеттер для задания даты окончания поездки через количество ночей
:param msg_data: str - Количество ночей поездки
"""
if msg_data == '':
self.__checkout_date = msg_data
else:
try:
nights_count = calculations.int_transformation(msg_data)
except WrongType:
raise WrongType
except NegativeValue:
raise NegativeValue
else:
self.__checkout_date = calculations.update_date(self.checkin_date, nights_count)
@property
def persons_count(self) -> int:
"""
Геттер для получения информации о количестве туристов
:return: int - Количество туристов
"""
return self.__persons_count
@persons_count.setter
def persons_count(self, msg_data: str) -> None:
"""
Сеттер для установления значения количества туристов
:param msg_data: str - Количество туристов
"""
try:
self.__persons_count = calculations.int_transformation(msg_data)
except WrongType:
raise WrongType
except NegativeValue:
raise NegativeValue
@property
def photos_count(self) -> int:
"""
Геттер для получения количества выгружаемых фотографий отеля
:return: int - Количество выгружаемых фотографий
"""
return self.__photos_count
@photos_count.setter
def photos_count(self, msg_data: str) -> None:
"""
Сеттер для задания значения параметру Количество фотографий
:param msg_data: str - Количество фотографий из сообщения
"""
if msg_data == '0':
self.__photos_count = 0
else:
try:
self.__photos_count = calculations.int_transformation(msg_data, 5)
except WrongType:
raise WrongType
except NegativeValue:
raise NegativeValue
except ValueOverLimit:
self.__photos_count = 5
if __name__ == '__main__':
pass