def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: start_date = cf.get_date_or_none(request.GET.get('sd')) # noqa return self.process_usecase(ShowCalendar, self.kwargs['hid'], start_date, user=request.user)
def calculate_occupancy( self, hid: int = None, rid: int = None, start_date: Union[str, datetime.date] = None, end_date: Union[str, datetime.date] = None, ) -> None: if start_date is not None and not isinstance(start_date, datetime.date): start_date = cf.get_date_or_none(start_date) if end_date is not None and not isinstance(end_date, datetime.date): end_date = cf.get_date_or_none(end_date) result = CalculateOccupancy().execute(house_id=hid, roomtype_id=rid, start_date=start_date, end_date=end_date) if is_successful(result): return failure = result.failure() Logger.warning(__name__, failure) nf.notify_warning(f"Error recalculate occupancy\n{failure.short_info()}") raise self.retry(exc=failure.exc)
def occupancies_json_view(request: http.HttpRequest, hid: int) -> http.HttpResponse: if not request.user.check_perms(Permissions.BOARD_READ, house_id=hid): # noqa return http.HttpResponseForbidden(_('common:error:access')) result = select_occupancies(hid, cf.get_date_or_none(request.GET.get('sd')), request.user) # noqa if is_successful(result): return json_response({'data': prepare_occupancies(result.unwrap().occupancies)}) failure = result.failure() Logger.warning(__name__, failure) if failure.failure == ReservationErrors.missed_house: raise http.Http404(f"Unknown House ID={hid}") return http.HttpResponseServerError()
def update_reservations( self, hid: int = None, pk: int = None, start_date: Union[str, datetime.date] = None, end_date: Union[str, datetime.date] = None, ) -> None: if start_date is not None and not isinstance(start_date, datetime.date): start_date = cf.get_date_or_none(start_date) if end_date is not None and not isinstance(end_date, datetime.date): end_date = cf.get_date_or_none(end_date) result = UpdateReservationCache().execute(house_id=hid, start_date=start_date, end_date=end_date, pk=pk) if is_successful(result): return failure = result.failure() Logger.warning(__name__, failure) nf.notify_warning( f"Error update reservation cache\n{failure.short_info()}") raise self.retry(exc=failure.exc)
def parse_price_data( data: Dict[str, Any]) -> Dict[datetime.date, Dict[str, Any]]: result = {} pattern = re.compile(r'\[(\d{4}-\d{2}-\d{2})]') for key, value in data.items(): if not key.startswith('room[') and not key.startswith('price['): continue match = pattern.search(key) if match is None: continue day = cf.get_date_or_none(match.group(1)) if day is None: continue if day not in result: result[day] = {'room': None, 'price': None, 'day': day} if key.startswith('room['): result[day]['room'] = cf.get_int_or_none(value) elif key.startswith('price['): result[day]['price'] = cf.get_decimal_or_none(value) return result
def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: self._start_date = cf.get_date_or_none(request.GET.get('sd'), dayfirst=True) # noqa self._end_date = cf.get_date_or_none(request.GET.get('fd'), dayfirst=True) # noqa return self.process_usecase( ShowPricesForm, self.kwargs['hid'], self.kwargs['pk'], self.kwargs['rid'], request.user )
def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: base_date = cf.get_date_or_none(request.GET.get('bd')) # noqa return self.process_usecase(SelectReservations, self.kwargs['hid'], base_date=base_date)