Example #1
0
 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
Example #2
0
 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
Example #3
0
 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
Example #4
0
    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