コード例 #1
0
 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)
コード例 #2
0
ファイル: tasks.py プロジェクト: pmisters/django-code-example
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)
コード例 #3
0
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()
コード例 #4
0
ファイル: tasks.py プロジェクト: pmisters/django-code-example
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)
コード例 #5
0
 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
コード例 #6
0
 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
     )
コード例 #7
0
 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)