def get_context_data(self, **kwargs): f_date = self.request.GET.get('from') or None t_date = self.request.GET.get('to') or None guests = guests_from_request(self.request) # Call the base implementation first to get a context context = super(HotelDetail, self).get_context_data(**kwargs) context['tab'] = 'description' context['city'] = self.object.city context['hotels_in_city'] = Hotel.objects.filter(city=self.object.city).count() context['title_line'] = self.object.get_name context['hotel_options'] = self.object.option.order_by('category','order_in_list','name') context['search_url'] = self.object.get_absolute_url() try: from_date = convert_to_date(f_date) to_date = convert_to_date(t_date) if from_date > to_date: from_date, to_date = to_date, from_date f_date, t_date = t_date, f_date context['free_room'] = self.object.free_room(from_date,to_date,guests) search_data = {'from_date':f_date, 'to_date':t_date, 'guests':guests, 'city':self.object.city} context['search'] = 1 context['search_data'] = search_data context['search_count'] = Hotel.objects.filter(city=self.object.city).count() except : pass return context
def get_context_data(self, **kwargs): f_date = self.request.GET.get('from') or None t_date = self.request.GET.get('to') or None guests = guests_from_request(self.request) if f_date and t_date and guests and ('room' in self.kwargs.keys()): try: room_id = int(self.kwargs['room']) except ValueError: raise Http404 room = get_object_or_404(Room,id=room_id) if room.hotel.payment_method.count() <1: raise Http404 s = SettlementVariant.objects.filter(room=room).values_list('settlement', flat=True) if guests > max(s): raise Http404 from_date = convert_to_date(f_date) to_date = convert_to_date(t_date) if from_date > to_date: f_date,t_date = t_date,f_date from_date,to_date = to_date,from_date if (from_date-datetime.now()).days < -1: raise Http404 avail_count = Availability.objects.filter(room=room, date__range=(from_date, to_date-timedelta(days=1)),placecount__gt=0).count() if avail_count <> (to_date-from_date).days: raise Http404 settlement = SettlementVariant.objects.filter(room=room, settlement__gte=guests, enabled=True).order_by('settlement')[0] #settlement = get_object_or_404(SettlementVariant,room=room,settlement=guests,enabled=True) valid_price_count = PlacePrice.objects.filter(settlement=settlement, date__range=(from_date, to_date-timedelta(days=1)),amount__gt=0).count() if valid_price_count <> (to_date-from_date).days: raise Http404 context = super(ClientBooking, self).get_context_data(**kwargs) context['hotel_count'] = Hotel.objects.filter(city=self.object.city).count() context['tab'] = 'rates' context['hotel'] = self.object context['title_line'] = _('booking') context['room_id'] = room_id context['room'] = room context['settlements'] = s context['search_data'] = {'from_date':f_date, 'to_date':t_date, 'guests':guests} return context else : raise Http404
def get_context_data(self, **kwargs): f_date = self.request.GET.get('from') or None t_date = self.request.GET.get('to') or None guests = guests_from_request(self.request) context = super(RoomDetail, self).get_context_data(**kwargs) if self.object.hotel is not None: context['city'] = self.object.hotel.city context['title_line'] = self.object.hotel.get_name context['hotels_in_city'] = Hotel.objects.filter(city=self.object.hotel.city).count() context['search_url'] = self.object.hotel.get_absolute_url() context['tab'] = 'description' context['room_options'] = self.object.option.order_by('category','order_in_list','name') if f_date and t_date and guests: from_date = convert_to_date(f_date) to_date = convert_to_date(t_date) if from_date > to_date: f_date, t_date = t_date, f_date search_data = {'from_date': f_date, 'to_date': t_date, 'guests': guests, 'city': self.object.hotel.city} context['search_data'] = search_data context['search'] = 1 context['search_count'] = Hotel.objects.filter(city=self.object.hotel.city).count() return context
def get_queryset(self): self.search_data = dict() order = self.request.GET.get('order') or None sort = self.request.GET.get('sort') or None options = self.request.GET.getlist('options') or None stars = self.request.GET.getlist('stars') or None notknowndates = self.request.GET.get('notknowndates') or None guests = guests_from_request(self.request) f_date = self.request.GET.get('from') or None t_date = self.request.GET.get('to') or None amount_min = self.request.GET.get('amount_min') or None amount_max = self.request.GET.get('amount_max') or None if amount_min: a_min = convert_from_client_currency(self.request, amount_min) if amount_max: a_max = convert_from_client_currency(self.request, amount_max) try: self.city = City.objects.get(slug=self.kwargs['slug']) hotels = Hotel.objects.filter(city=self.city) except : self.city = None hotels = Hotel.objects.all() self.tab = {'css_name':'asc','css_class':'desc','css_amount':'desc','css_review':'desc', 'order_name':'desc','order_class':'desc','order_amount':'desc','order_review':'desc', 'tab':'name'} if (notknowndates and self.city ) or (f_date and t_date and self.city): result = [] try: from_date = convert_to_date(f_date) to_date = convert_to_date(t_date) if from_date > to_date: self.search_data = {'from_date':t_date, 'to_date':f_date, 'guests':guests} from_date, to_date = to_date, from_date else: self.search_data = {'from_date':f_date, 'to_date':t_date, 'guests':guests} self.search_data['city'] = self.city for hotel in hotels: if hotel.free_room(from_date,to_date,guests): result.append(hotel.pk) search_hotel = Hotel.objects.filter(pk__in=result) except : search_hotel = hotels self.search = 1 else : self.search = 0 search_hotel = hotels if amount_max and amount_min: r = [] for h in search_hotel: amount = h.min_current_amount if int(a_min) < amount < int(a_max): r.append(h.pk) search_hotel = Hotel.objects.filter(pk__in=r) if options: for option in options: search_hotel = search_hotel.filter(option=option) if stars: search_hotel = search_hotel.filter(starcount__in=stars) if order: if order == 'name': self.tab['tab'] = 'name' if sort == 'desc': result = search_hotel.order_by('-name') self.tab['css_name'] = 'desc' self.tab['order_name'] = 'asc' else: result = search_hotel.order_by('name') self.tab['css_name'] = 'asc' self.tab['order_name'] = 'desc' elif order == 'class': self.tab['tab'] = 'class' if sort == 'asc': result = search_hotel.order_by('starcount') self.tab['css_class'] = 'asc' self.tab['order_class'] = 'desc' else: result = search_hotel.order_by('-starcount') self.tab['css_class'] = 'desc' self.tab['order_class'] = 'asc' elif order == 'amount': self.tab['tab'] = 'amount' if sort == 'asc': result = search_hotel.order_by('current_amount') self.tab['css_amount'] = 'asc' self.tab['order_amount'] = 'desc' else: result = search_hotel.order_by('-current_amount') self.tab['css_amount'] = 'desc' self.tab['order_amount'] = 'asc' elif order == 'review': self.tab['tab'] = 'review' if sort == 'asc': result = search_hotel.order_by('point') self.tab['css_review'] = 'asc' self.tab['order_review'] = 'desc' else: result = search_hotel.order_by('-point') self.tab['css_review'] = 'desc' self.tab['order_review'] = 'asc' else: pass else: result = search_hotel try: self.result_count = search_hotel.count() except: self.result_count = None return result