Ejemplo n.º 1
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        featured_tour_operators = TourOperator.objects.all()
        featured_tour_operators = featured_tour_operators.exclude(slug=None)
        featured_tour_operators = featured_tour_operators.exclude(slug='')
        featured_tour_operators = featured_tour_operators.exclude(draft=True)
        featured_tour_operators = featured_tour_operators.exclude(logo__isnull=True)
        featured_tour_operators = featured_tour_operators.exclude(logo="")
        featured_tour_operators = featured_tour_operators.filter(date_deleted__isnull=True)
        featured_tour_operators = featured_tour_operators.order_by('-date_created')[:4]        

        featured_articles = Article.objects.filter(article_status=Article.STATUS_PUBLISHED)
        featured_articles = featured_articles.order_by('-date_created')[:3]

        masthead_number = random.randint(1, 6)
        masthead_number_lg = random.randint(1, 3)
        context['max576px'] = '{}-max576px'.format(masthead_number)
        context['max768px'] = '{}-max768px'.format(masthead_number)
        context['max1440px'] = '{}-max1440px'.format(masthead_number)

        context['max1920px'] = '{}-max1920px'.format(masthead_number_lg)
        context['min1920px'] = '{}-min1920px'.format(masthead_number_lg)
        
        context['featured_tour_operators'] = featured_tour_operators
        context['featured_articles'] = featured_articles
        context['alert_success_activation'] = not not self.request.GET.get('success_activation')
        context['alert_error_activation'] = not not self.request.GET.get('error_activation')
        log_action(self.request)
        return context
Ejemplo n.º 2
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     page = Page.objects.get(slug=self.kwargs.get('page_name'))
     context['page'] = page
     context['content'] = parse_variables(page.parse_content())
     log_action(self.request,hit_object=page)
     return context
Ejemplo n.º 3
0
    def get_context_data(self, **kwargs):
        context = kwargs

        country_index = context['object']

        context['country_data'] = serializers.serialize(
            'json', [country_index],
            fields=('name', 'slug', 'latitude', 'longitude'))

        context['parks_data'] = serializers.serialize(
            'json',
            Park.objects.all(),
            fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))
        context['latest_photos'] = country_index.photos.order_by(
            '-date_created')[0:1].all()
        context['latest_photos_count'] = Photo.objects.filter(
            draft=False,
            country_index=country_index,
            date_deleted__isnull=True).distinct().count()
        context['highlighted_articles'] = country_index.article_set.order_by(
            '-date_created')[0:2].all()
        context['highlighted_activities'] = country_index.activities.all(
        ).order_by('?')[:6]
        animals = Animal.objects.filter(country_indexes=country_index)
        context['highlighted_animals'] = animals.order_by('?')[:6]
        context['animals_count'] = animals.count()

        context['object'].header_caption_link = context[
            'object'].header_caption_link or ""
        context['object'].highlighted_articles = context[
            'object'].article_set.order_by('-date_created')[0:2].all()
        for article in context['object'].highlighted_articles:
            article.categories_string = ", ".join(
                [category.name for category in article.categories.all()])
        context['object'].highlighted_activities = context[
            'object'].activities.order_by('name')[0:6]
        context['object'].highlighted_animals = context[
            'object'].animal_set.order_by('-priority')[0:6]
        context['object'].highlighted_photo = context[
            'object'].photos.order_by('-date_created')[0]
        context['object'].parksannotated = context['object'].parks.order_by(
            'name').prefetch_related('park_reviews').annotate(
                parkreview_count=Count('park_reviews', distinct=True)
            ).annotate(photo_count=Count('photos', distinct=True)).annotate(
                parkreview_average=Avg('park_reviews__overall_rating')).all()

        for park in context['object'].parksannotated:
            park.tour_operators_cnt = park.tour_operators.all().count()
            park.tour_packages_cnt = Itinerary.objects.filter(
                parks__in=[park]).count()
            park.reviews_cnt = park.parkreview_count
            park.photos_cnt = Photo.objects.filter(
                draft=False, park=park,
                date_deleted__isnull=True).distinct().count()

        for article in context['object'].highlighted_articles:
            article.categories_string = ", ".join(
                [category.name for category in article.categories.all()])
        log_action(self.request, hit_object=self.object)
        return context
Ejemplo n.º 4
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     country_index = context['object']
     operators = TourOperator.objects.filter(country_indexes=country_index)
     context['companies'] = operators.count()
     itineraries = Itinerary.objects.filter(country_indexes=country_index)
     context['tours'] = itineraries.count()
     animals = Animal.objects.filter(country_indexes=country_index)
     context['parks'] = country_index.parks.count()
     context['country_data'] = serializers.serialize(
         'json', [country_index],
         fields=('name', 'slug', 'latitude', 'longitude'))
     context['parks_data'] = serializers.serialize(
         'json',
         Park.objects.all(),
         fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))
     vaccinations = country_index.vaccinations.all()
     context['highlighted_articles'] = country_index.article_set.order_by(
         '-date_created')[0:2].all()
     context['highlighted_activities'] = country_index.activities.all(
     ).order_by('name')[:6]
     context['highlighted_animals'] = animals.order_by('-priority')[:6]
     context['animals_count'] = animals.count()
     context['latest_photos'] = country_index.photos.order_by(
         '-date_created')[0:1].all()
     context['latest_photos_count'] = Photo.objects.filter(
         draft=False,
         country_index=country_index,
         date_deleted__isnull=True).distinct().count()
     context['airports'] = country_index.airports.replace(",", ", ")
     log_action(self.request, hit_object=self.object)
     return context
Ejemplo n.º 5
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     articles = Article.objects.filter(
         animals=self.object).order_by('-date_created')[:3]
     context['articles'] = articles
     reviews_tour = TourOperatorReview.objects.filter(
         animals=self.object).order_by('?')[:2]
     reviews_park = ParkReview.objects.filter(
         animals=self.object).order_by('?')[:2]
     reviews = chain(reviews_park, reviews_tour)
     context['reviews'] = reviews
     total_photos = Photo.objects.filter(
         draft=False, date_deleted__isnull=True).filter(
             animals__id=self.object.pk).count()
     photos = Photo.objects.filter(draft=False,
                                   date_deleted__isnull=True).filter(
                                       animals=self.object).order_by('?')
     count = photos.count()
     if count <= 5:
         photos = photos[:3]
     elif count >= 6 and count < 9:
         photos = photos[:6]
     else:
         photos = photos[:9]
     context['photos'] = photos
     context['total_photos'] = total_photos
     # parks
     parks = self.object.parks.filter(safari_suitability__gte=9)
     if parks:
         context['parks_1'] = parks[:5]
         context['parks_2'] = parks[5:10]
     log_action(self.request, hit_object=self.object)
     return context
Ejemplo n.º 6
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     country_index = context['object']
     animals = Animal.objects.filter(country_indexes=country_index)
     context['animals'] = animals.order_by('name')
     log_action(self.request, hit_object=self.object)
     return context
Ejemplo n.º 7
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        recent_reviews = AbstractReview.latest_reviews(tail=3)
        context['recent_reviews'] = recent_reviews

        article = Article.objects.filter(slug=kwargs.get('slug')).first()
        article = self.object
        context['article'] = article

        recent_articles = Article.objects.all().exclude(
            pk=article.pk).order_by('-date_created')[:3]
        context['recent_articles'] = recent_articles

        recent_articles_author = Article.objects.all().filter(
            user=article.user).exclude(pk=article.pk)
        recent_articles_ids = list(
            recent_articles.values_list('pk', flat=True))
        recent_articles_author = recent_articles_author.exclude(
            pk__in=recent_articles_ids)
        recent_articles_author = recent_articles_author.order_by(
            '-date_created')[:3]
        context['recent_articles_author'] = recent_articles_author

        if article.user.profile.tour_operator:
            context['link'] = reverse('tour_operator', kwargs={
                'slug': article.user.profile.tour_operator.slug})
        else:
            context['link'] = reverse('member', kwargs={'pk': article.user.pk})

        context['comments'] = article.comments()
        log_action(self.request, hit_object=self.object)
        self.object.update_visit_count()
        return context
Ejemplo n.º 8
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     activity = Activity.objects.get(slug=self.kwargs.get('slug'))
     context['activity'] = activity
     context['photos'] = Photo.objects.filter(
         draft=False, activity=activity).order_by('-date_modified')[:9]
     log_action(self.request, hit_object=activity)
     return context
Ejemplo n.º 9
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     activities = Activity.objects.all().order_by('name')
     context['activities'] = activities
     bw = activities.get(slug__lower='bird-watchingwith-professional-guide')
     header_image = "{0}{1}".format(settings.BASE_URL, bw.image.url)
     context['header_image'] = header_image
     log_action(self.request)
     return context
Ejemplo n.º 10
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        if self.kwargs.get('slug'):
            tour = TourOperator.objects.get(slug=self.kwargs.get('slug'))
        else:
            from django.http import Http404
            raise Http404("No tour operator")

        # focused review
        if 'review' in kwargs:
            o_review = TourOperatorReview.objects.get(
                pk=self.kwargs.get('review'))
            temp = get_template(
                'operators/tour_operator_includes/tour_reviews_cards.html')
            result = temp.render({
                'tour_reviews': [o_review],
                'tour': tour,
                'focused': True
            })
            context['review_focus'] = result

        # sencond of three
        context['tour_countries'] = CountryIndex.objects.filter(
            itineraries__tour_operator=tour).distinct()
        # context['tour_countries'] = CountryIndex.objects.filter(parks__in=tour.parks.all())

        context['tour_reviews'] = TourOperatorReview.objects.filter(
            tour_operator=tour, status="AC").order_by('-date_modified')[:10]
        context['tour_reviews_total'] = tour.tour_operator_reviews.all().count(
        )

        tour_user_profile = UserProfile.objects.filter(
            tour_operator=tour).first()

        context['tour_quick_respond'] = tour.quick_to_respond()
        if tour_user_profile:
            context['tour_park_reviews'] = ParkReview.objects.filter(
                user=tour_user_profile.user)
            context['tour_articles'] = Article.objects.filter(
                user=tour_user_profile.user)[:5]
            context['tour_articles_total'] = Article.objects.filter(
                user=tour_user_profile.user)[:5].count()
        context['tour_photos'] = Photo.objects.filter(
            draft=False, tour_operator=tour, image__isnull=False).exclude(
                image__exact='').order_by('-date_modified')[:20]

        if context['tour_photos']:
            context['tour_photos_first_id'] = context['tour_photos'].first().id

        tour.is_fav_ = tour.is_fav(self.request)
        context['tour'] = tour
        context['tour_operator'] = tour

        log_action(self.request, hit_object=tour)

        return context
Ejemplo n.º 11
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     activities = context['object'].activities.all().order_by('name')
     activities = activities.filter(image__isnull=False)
     context['activities'] = activities
     header_image = "{0}{1}".format(
         settings.BASE_URL,
         activities.get(
             slug__lower='bird-watchingwith-professional-guide').image.url)
     context['header_image'] = header_image
     context['isCountryActivities'] = True
     log_action(self.request, hit_object=self.object)
     return context
Ejemplo n.º 12
0
 def get(self, request, **kwargs):
     context = {}
     query = kwargs.get('query')
     if not query:
         query = ""
     results = Article.objects.filter(
         title__lower__icontains=query.lower())[:10]
     for result in results:
         results.meta_description = unescape(result.meta_description)
     context['results'] = results
     context['query'] = query
     log_action(self.request)
     return render(request, self.template_name, context=context)
Ejemplo n.º 13
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     parks = Park.objects.all().order_by('name')
     parks_by_country_count = {}
     parks_by_country = {}
     context['reviews_by_parks'] = {}
     for park in parks:
         context['reviews_by_parks'][park.pk] = ParkReview.objects.filter(
             park__pk=park.pk).count()
         for country in park.country_indexes.all():
             parks_by_country.setdefault(country.pk, []).append(park)
             if country.pk in parks_by_country_count:
                 parks_by_country_count[country.pk] += 1
             else:
                 parks_by_country_count[country.pk] = 1
     context['parks'] = parks
     context['parks_by_country'] = parks_by_country
     context['parks_by_country_count'] = parks_by_country_count
     # operators stats
     operators_by_country_count = {}
     countries = CountryIndex.objects.all()
     for country in countries:
         operators = TourOperator.objects \
             .exclude(logo='') \
             .filter(logo__isnull=False) \
             .filter(date_deleted__isnull=True) \
             .filter(draft=False) \
             .filter(country_indexes__pk=country.pk).count()
         operators_by_country_count[country.pk] = operators
     context['operators_by_country_count'] = operators_by_country_count
     # reviews
     reviews = AbstractReview.latest_reviews()
     context['reviews'] = reviews
     # recent operators
     operators = TourOperator.latest_added()
     context['operators'] = operators
     # stats
     context['tour_operators_count'] = get_tour_operators_count()
     context['tour_packages_count'] = get_tour_packages_count()
     context['reviews_count'] = get_reviews_count()
     context['parks_count'] = get_parks_count()
     context['users_count'] = get_users_count()
     context['photos_count'] = get_photos_count()
     context['wildlife_count'] = get_wildlife_count()
     context['countries_count'] = get_countries_count()
     countries = CountryIndex.objects.all()
     context['countries_1'] = countries[:5]
     context['countries_2'] = countries[5:10]
     context['countries_3'] = countries[10:]
     log_action(self.request)
     return context
Ejemplo n.º 14
0
 def get_context_data(self, **kwargs):
     context = {}
     log_action(self.request)
     if cache.get('WildlifeView'):
         context.update(cache.get('WildlifeView'))
         return context
     animals = Animal.objects.all().order_by('name')
     context['animals'] = animals
     header_image = "{0}{1}".format(
         settings.BASE_URL,
         animals.get(name__lower='bushbaby').image.url)
     context['header_image'] = header_image
     cache.set('WildlifeView', context)
     return context
Ejemplo n.º 15
0
    def get(self, request, **kwargs):
        query = kwargs.get('query')
        if not query:
            query = ""
        context = {}
        latest_articles = Article.objects.filter(article_status="PUBLISHED").order_by('-date_created')[:15]
        context['latest_articles'] = latest_articles
        categories_names = {}

        for a in latest_articles.all():
            categories = list(a.categories.values_list('name', flat=True))
            categories_names[a.pk] = ', '.join(categories)

        context['categories_names'] = categories_names
        log_action(self.request)
        return render(request, self.template_name, context=context)
Ejemplo n.º 16
0
 def get_context_data(self, **kwargs):
     context = kwargs
     park = context['object']
     country_indexes = CountryIndex.objects.filter(parks__exact=park)
     context['countries'] = country_indexes
     country_index = country_indexes[0]
     if len(country_indexes) > 1:
         country_index2 = country_indexes[1]
         context['country2'] = country_index2
     context['country'] = country_index
     #
     #
     #
     # sidebar:
     context['sidebar'] = {}
     context['sidebar']['main_park'] = serializers.serialize(
         'json', [park], fields=('name', 'slug', 'latitude', 'longitude'))
     context['sidebar']['all_parks'] = serializers.serialize(
         'json',
         Park.objects.exclude(id=park.id),
         fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))
     context['sidebar']['reviews'] = ParkReview.latest_reviews(park)
     context['sidebar']['nearby_parks'] = Park.objects.filter(
         country_indexes__in=country_indexes)
     context['sidebar']['articles'] = country_index.article_set.order_by(
         '-date_created')[0:2].all()
     if len(country_indexes) > 1:
         context['sidebar'][
             'articles2'] = country_index2.article_set.order_by(
                 '-date_created')[0:2].all()
     context['sidebar']['latest_photo'] = park.photos.order_by(
         '-date_created').last()
     context['sidebar']['photos_count'] = Photo.objects.filter(
         draft=False, park=park,
         date_deleted__isnull=True).distinct().count()
     context['sidebar']['animals'] = park.animal_set.order_by(
         '-priority')[0:6].all()
     context['sidebar']['animal_count'] = park.animal_set.all().count()
     context['sidebar']['activities'] = park.activities.order_by(
         'name')[0:6].all()
     context['sidebar']['activity_count'] = park.activities.all().count()
     log_action(self.request, hit_object=self.object)
     return context
Ejemplo n.º 17
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     page = self.request.GET.get('page', 1)
     parks = Park.objects.all()
     paginator = Paginator(parks, 10)
     try:
         context['parks'] = paginator.page(page)
     except PageNotAnInteger:
         context['parks'] = paginator.page(1)
     except EmptyPage:
         context['parks'] = paginator.page(paginator.num_pages)
     context['parks_count'] = parks.count()
     context['recent_reviews'] = ParkReview.latest_reviews()
     articles = Article.objects.order_by('-date_created')[:3]
     context['recent_articles'] = articles
     context['image'] = Park.objects.filter(
         slug='buffalo-springs').first().image.url
     log_action(self.request)
     return context
Ejemplo n.º 18
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        log_action(self.request)

        context['filter_variants_country_and_park'] = json.dumps(
            countries_and_parks())

        price_range = Itinerary.objects.aggregate(Max('search_price'),
                                                  Min('search_price'))
        context['min_price'] = price_range['search_price__min']
        context['max_price'] = price_range['search_price__max']

        focus_type_main = ItineraryFocusType.objects.get(name='Primary').pk
        focus_type_second = ItineraryFocusType.objects.get(name='Secondary').pk
        main_focus_activities = Activity.objects.filter(
            focus_type__in=[focus_type_main]).order_by('name_short')
        main_focus_serializer = ActivitySimpleSerializer(main_focus_activities,
                                                         many=True)
        context['main_focus_activities'] = json.dumps(
            main_focus_serializer.data)
        second_focus_activities = Activity.objects.filter(
            focus_type__in=[focus_type_second]).order_by('name_short')
        second_focus_serializer = ActivitySimpleSerializer(
            second_focus_activities, many=True)
        context['second_focus_activities'] = json.dumps(
            second_focus_serializer.data)

        itinerary_types = ItineraryType.objects.all()
        itinerary_types_serializer = ItineraryTypeSerializer(itinerary_types,
                                                             many=True)
        context['itinerary_types'] = json.dumps(
            itinerary_types_serializer.data)

        slug = self.slug(context)
        context['slug'] = json.dumps(slug)

        context['head'] = self.page_head(context, slug)

        return context
Ejemplo n.º 19
0
    def get_form_kwargs(self):
        kwargs = super(RequestInfoView, self).get_form_kwargs()
        kwargs['tour_operator'] = get_object_or_404(
            TourOperator, slug=self.kwargs.get('slug'))
        if self.request.user.is_authenticated:
            kwargs[
                'name'] = self.request.user.first_name + " " + self.request.user.last_name
            kwargs['email'] = self.request.user.email
        if self.request.GET.get('countries', ''):
            kwargs['countries'] = [
                get_object_or_404(CountryIndex, pk=x)
                for x in self.request.GET.get('countries').split(",")
            ]

        if self.request.GET.get('regarding_text', ''):
            kwargs['regarding_text'] = self.request.GET.get(
                'regarding_text', '')
        if self.request.GET.get("type", ""):
            kwargs["itinerary_type"] = get_object_or_404(
                ItineraryType, name=self.request.GET.get("type", ""))
        log_action(self.request, hit_object=self.kwargs.get('tour_operator'))
        return kwargs
Ejemplo n.º 20
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['form'] = CompanyInfoForm()
        context['form'].fields['name'].widget.attrs['readonly'] = False
        context['form'].fields['website'].widget.attrs['readonly'] = False
        context['form'].fields['email'].widget.attrs['readonly'] = False

        if self.request.user.is_authenticated:
            context['form'].fields['email'].initial = self.request.user.email
        countries = CountryIndex.objects.all().order_by('name').prefetch_related('parks')
        context['countries'] = countries
        parks = Park.objects.all().order_by('name')
        context['parks'] = parks

        countries_json = []
        for country in countries:
            country_json = {}
            country_json['id'] = country.id
            country_json['name'] = country.name
            country_json['parks'] = list(country.parks.all().order_by('name').values_list('id', flat=True))
            countries_json.append(country_json)
        context['vue_variables'] = {}
        context['vue_variables']['countries_json'] = countries_json

        countries = CountryIndex.objects.all().order_by('name')
        context['countries'] = countries
        parks = Park.objects.all().order_by('name')
        context['parks'] = parks
        parks_json = []
        for park in parks:
            park_json = {}
            park_json['id'] = park.id
            park_json['name'] = park.name_short
            parks_json.append(park_json)
        context['vue_variables']['parks_json'] = parks_json
        log_action(self.request)
        return context
Ejemplo n.º 21
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     countries = CountryIndex.objects.all()
     context['countries'] = countries
     log_action(self.request)
     return context
Ejemplo n.º 22
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        log_action(self.request)

        context['filter_variants_country_and_park'] = json.dumps(
            countries_and_parks())

        luxury_level_choices = dict(TourOperator.LUXURY_LEVEL_CHOICES)
        luxury_focus = [
            {
                'id':
                TourOperator.LUXURY_LEVEL_BUDGET,
                'title':
                luxury_level_choices[TourOperator.LUXURY_LEVEL_BUDGET],
                'count':
                TourOperator.objects.filter(
                    luxury_level=TourOperator.LUXURY_LEVEL_BUDGET).count()
            },
            {
                'id':
                TourOperator.LUXURY_LEVEL_MID_LEVEL,
                'title':
                luxury_level_choices[TourOperator.LUXURY_LEVEL_MID_LEVEL],
                'count':
                TourOperator.objects.filter(
                    luxury_level=TourOperator.LUXURY_LEVEL_MID_LEVEL).count()
            },
            {
                'id':
                TourOperator.LUXURY_LEVEL_ULTRA_SAFARI,
                'title':
                luxury_level_choices[TourOperator.LUXURY_LEVEL_ULTRA_SAFARI],
                'count':
                TourOperator.objects.filter(luxury_level=TourOperator.
                                            LUXURY_LEVEL_ULTRA_SAFARI).count()
            },
        ]
        context['luxury_focus'] = json.dumps(luxury_focus)

        ratings = []
        for i in range(0, 5):
            ratings.append({
                'id':
                i + 1,
                'rating':
                i + 1,
                'count':
                TourOperator.objects.filter(average_rating=i + 1).count()
            })
        context['minimum_rating'] = json.dumps(ratings)

        languages = Language.objects.all()
        languages_serializer = LanguageSerializer(languages, many=True)
        context['languages'] = json.dumps(languages_serializer.data)

        headquarters = Country.objects.all()
        headquarters_serializer = CountrySerializer(headquarters, many=True)
        context['headquarters'] = json.dumps(headquarters_serializer.data)

        tour_operator_that = []
        operator_that_choices = TourOperator.operator_that_choices()
        for key in operator_that_choices:
            rule = operator_that_choices[key]
            q = TourOperator.objects
            if rule['annotate']:
                q = q.annotate(subquery_alias=rule['annotate'])
            q = q.filter(rule['query'])
            count = q.count()
            tour_operator_that.append({
                'id': key,
                'title': rule['title'],
                'count': count
            })
        context['tour_operator_that'] = json.dumps(tour_operator_that)

        slug = self.slug(context)
        context['slug'] = json.dumps(slug)

        context['head'] = self.page_head(context, slug)

        return context
Ejemplo n.º 23
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        itinerary = Itinerary.objects.get(pk=self.kwargs.get('pk'))
        itinerary.is_fav_ = itinerary.is_fav(self.request)

        context['itinerary'] = itinerary
        itinerary_days = ItineraryDayDescription.objects.filter(
            itinerary=itinerary).filter(
                date_deleted__isnull=True).order_by('day_number')
        context['itinerary_days'] = itinerary_days
        country_index = CountryIndex.objects.get(id=1)

        parks = itinerary.parks.all()
        lat = 0
        lon = 0
        for park in parks:
            lat += park.latitude
            lon += park.longitude
        if len(parks) > 0:
            lat = str(lat / len(parks))
            lon = str(lon / len(parks))

        context['parks_data'] = serializers.serialize(
            'json',
            itinerary.parks.all(),
            fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))

        if itinerary.activity_level_name == 'Easy':
            battery_level = 'empty'
        elif itinerary.activity_level_name == 'Moderate':
            battery_level = 'half'
        else:
            battery_level = 'full'

        context['battery_level'] = battery_level

        context['country_data'] = [{
            "fields": {
                "name": "center",
                "slug": "center",
                "latitude": lat,
                "longitude": lon
            }
        }]

        tour = itinerary.tour_operator

        context['operator'] = tour
        context['tour_operator'] = tour
        context['offered_by'] = True
        serializer = ItinerarySerializer()

        all_tours = Itinerary.objects.filter(date_deleted__isnull=True).filter(
            tour_operator=tour).exclude(
                id=itinerary.id).order_by('-date_modified')
        for tour in all_tours:
            tour.serialized = serializer._main_features(tour)

        context['all_tours_count'] = all_tours.count()
        related_tours = all_tours[:6]
        for related_tour in related_tours:
            related_tour.is_fav_ = related_tour.is_fav(self.request)
        context['related_tours'] = related_tours

        log_action(self.request, hit_object=itinerary)
        return context
Ejemplo n.º 24
0
    def get_context_data(self, **kwargs):
        context = kwargs
        park = context['object']
        country_indexes = CountryIndex.objects.filter(parks__exact=park)
        context['countries'] = country_indexes
        country_index = country_indexes[0]
        if len(country_indexes) > 1:
            country_index2 = country_indexes[1]
            context['country2'] = country_index2
        context['country'] = country_index
        #
        #
        #
        # sidebar:
        context['sidebar'] = {}
        context['sidebar']['main_park'] = serializers.serialize(
            'json', [park], fields=('name', 'slug', 'latitude', 'longitude'))
        context['sidebar']['all_parks'] = serializers.serialize(
            'json',
            Park.objects.exclude(id=park.id),
            fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))
        context['sidebar']['reviews'] = ParkReview.latest_reviews(park)
        context['sidebar']['nearby_parks'] = Park.objects.filter(
            country_indexes__in=country_indexes)
        context['sidebar']['articles'] = country_index.article_set.order_by(
            '-date_created')[0:2].all()
        if len(country_indexes) > 1:
            context['sidebar'][
                'articles2'] = country_index2.article_set.order_by(
                    '-date_created')[0:2].all()
        context['sidebar']['latest_photo'] = park.photos.order_by(
            '-date_created').last()
        context['sidebar']['photos_count'] = Photo.objects.filter(
            draft=False, park=park,
            date_deleted__isnull=True).distinct().count()
        context['sidebar']['animals'] = park.animal_set.order_by(
            '-priority')[0:6].all()
        context['sidebar']['animal_count'] = park.animal_set.all().count()
        context['sidebar']['activities'] = park.activities.order_by(
            'name')[0:6].all()
        context['sidebar']['activity_count'] = park.activities.all().count()
        #
        #
        #
        # main-page-content:
        #
        #
        #
        # headers:

        #
        #
        #
        operator_count = context['object'].itineraries.all().values(
            'tour_operator').distinct().count()
        context['object'].tour_operator_count = operator_count
        park_reviews = ParkReview.objects.filter(
            park__pk=context['object'].pk).all()
        number_of_reviews = 0
        wildlife_quality = 0
        lodging_quality = 0
        crowdness = 0
        visited_months = []
        for review in park_reviews:
            number_of_reviews += 1
            wildlife_quality += review.quality_wildlife_rating
            lodging_quality += review.quality_lodging_rating
            crowdness += review.crowdedness_rating
            visited_months.append(review.visit_date.strftime('%B'))
        if number_of_reviews > 0:
            context[
                'object'].wildlife_quality = wildlife_quality / number_of_reviews
            context[
                'object'].lodging_quality = lodging_quality / number_of_reviews
            context['object'].crowdness_rating = crowdness / number_of_reviews
            context['object'].most_visited_month = max(
                set(visited_months), key=visited_months.count)
        #
        #
        #
        # Highlights:
        context['object'].highlights = park.highlights.split('\n')
        context['highlighted_activities'] = context['object'].activities.all(
        ).order_by('?')[:6]
        log_action(self.request, hit_object=self.object)
        return context
Ejemplo n.º 25
0
    def get_context_data(self, *args, **kwargs):
        context = kwargs
        review_id_focus = self.request.GET.get('review', '')
        if not review_id_focus:
            review_id_focus = self.kwargs.get('review_pk', '')
        context['review_id_focus'] = review_id_focus
        if review_id_focus:
            review_focus = [ParkReview.objects.get(id=int(review_id_focus))]
            temp = get_template('places/park_inserts/park_reviews.html')
            result = temp.render({'reviews': review_focus, 'focused': True})
            context['review_focus'] = result
        else:
            review_id_focus = '0'

        park = context['object']
        country_indexes = CountryIndex.objects.filter(parks__exact=park)
        context['countries'] = country_indexes
        country_index = country_indexes[0]
        if len(country_indexes) > 1:
            country_index2 = country_indexes[1]
            context['country2'] = country_index2
            if len(country_indexes) > 2:
                country_index3 = country_indexes[2]
                context['country3'] = country_index3

        context['country'] = country_index
        #
        #
        #
        # sidebar:
        context['sidebar'] = {}
        context['sidebar']['main_park'] = serializers.serialize(
            'json', [park], fields=('name', 'slug', 'latitude', 'longitude'))
        context['sidebar']['all_parks'] = serializers.serialize(
            'json',
            Park.objects.exclude(id=park.id),
            fields=('name', 'name_short', 'latitude', 'longitude', 'slug'))
        context['sidebar']['reviews'] = ParkReview.latest_reviews(park)
        context['sidebar']['nearby_parks'] = Park.objects.filter(
            country_indexes__in=country_indexes)
        context['sidebar']['articles'] = country_index.article_set.order_by(
            '-date_created')[0:2].all()
        if len(country_indexes) > 1:
            context['sidebar'][
                'articles2'] = country_index2.article_set.order_by(
                    '-date_created')[0:2].all()
            if len(country_indexes) > 2:
                context['sidebar'][
                    'articles3'] = country_index3.article_set.order_by(
                        '-date_created')[0:2].all()

        context['sidebar']['latest_photo'] = park.photos.order_by(
            '-date_created').last()
        context['sidebar']['photos_count'] = Photo.objects.filter(
            draft=False, park=park,
            date_deleted__isnull=True).distinct().count()
        context['sidebar']['animals'] = park.animal_set.order_by(
            '-priority')[0:6].all()
        context['sidebar']['animal_count'] = park.animal_set.all().count()
        context['sidebar']['activities'] = park.activities.order_by(
            'name')[0:6].all()
        context['sidebar']['activity_count'] = park.activities.all().count()
        #
        #
        #
        x = 'date_created'
        total_park_reviews = ParkReview.objects.filter(
            park__pk=context['object'].pk, ).exclude(
                id=int(review_id_focus)).order_by('-date_created').count()
        park_reviews = ParkReview.objects.filter(
            park__pk=context['object'].pk, ).exclude(
                id=int(review_id_focus)).order_by('-date_created').all()[:10]
        for review in park_reviews:
            user = review.user
            review.user_reviews = ParkReview.objects.filter(user__exact=user).count() \
                                  + TourOperatorReview.objects.filter(user__exact=user).count()
            review.profile_picture = review.user.profile.avatar.url
        context['reviews'] = park_reviews
        context['total_park_reviews'] = total_park_reviews
        log_action(self.request, hit_object=self.object)
        return context
Ejemplo n.º 26
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     log_action(self.request, hit_object=self.object)
     return context