def events_all(request): ads = Ad.get_active_ads() events_list = Event.objects.filter(status="published").order_by( "-start_date", "-start_time") cities = events_list.values_list('city', flat=True).distinct().order_by('city') categories = EventCategory.objects.all().order_by('title') filtered_cities = request.GET.getlist('location') if filtered_cities: events_list = events_list.filter(city__in=filtered_cities) filtered_categories = request.GET.getlist('category') if filtered_categories: events_list = events_list.filter( categories__title__in=filtered_categories) page = request.GET.get("page", 1) paginator = Paginator(events_list, 10) try: events = paginator.page(page) except PageNotAnInteger: events = paginator.page(1) except EmptyPage: events = paginator.page(paginator.num_pages) context = { "events": events, "cities": cities, "categories": categories, "filtered_cities": filtered_cities, "filtered_categories": filtered_categories, "ads": ads } return render(request, "events/index.html", context)
def listing_single(request, slug, pk): ads = Ad.get_active_ads() listing = get_object_or_404(Listing, slug=slug, id=pk) user_liked = listing.is_liked_by(request.user) if listing.status == 'draft' and request.user != listing.created_by: return render(request, "private.html") report_post_form = ReportPostForm() categories = [{"title": cat.title, "category_group": cat.category_group.title} for cat in listing.categories.all()] context = {"listing": listing, "categories": categories, "report_post_form": report_post_form, "ads": ads, "user_liked": user_liked} return render(request, "listings/single.html", context)
def events_single(request, slug, pk): ads = Ad.get_active_ads() event = get_object_or_404(Event, slug=slug, id=pk) if event.status == 'draft' and request.user != event.created_by: return render(request, "private.html") report_post_form = ReportPostForm() context = { "event": event, "report_post_form": report_post_form, "ads": ads } return render(request, "events/single.html", context)
def home(request): ads = Ad.get_active_ads() listings = Listing.objects.filter( status="published").order_by("-created_at")[:15] upcoming_events = Event.get_upcoming_events() latest_forum_activity = ForumThread.get_latest() context = { "ads": ads, "listings": listings, "upcoming_events": upcoming_events, "latest_forum_activity": latest_forum_activity } return render(request, "pages/home.html", context)
def listings_all(request, category=None): ads = Ad.get_active_ads() listings = Listing.objects.all().order_by("-created_at").filter(status='published') cities = listings.values_list('city', flat=True).distinct().order_by('city') # categories = Category.objects.all(category_group=listing_group).order_by('title') categories = CategoryGroup.objects.all().order_by('title') subcategories = None filtered_cities = request.GET.getlist('location') if filtered_cities: listings = listings.filter(city__in=filtered_cities) filtered_categories = request.GET.getlist('category') if filtered_categories: subcategories = [x.title for x in Category.objects.filter(category_group__title=filtered_categories[0]).order_by('title')] listings = listings.distinct().filter(categories__title__in=subcategories) filtered_subcategories = request.GET.getlist('subcategory') if filtered_subcategories: listings = listings.filter(categories__title__in=filtered_subcategories) page = request.GET.get("page", 1) paginator = Paginator(listings, 10) try: listings = paginator.page(page) except PageNotAnInteger: listings = paginator.page(1) except EmptyPage: listings = paginator.page(paginator.num_pages) context = { "listings": listings, "cities": cities, "categories": categories, "subcategories": subcategories, "category_group": "Listings", "filtered_cities": filtered_cities, "filtered_categories": filtered_categories, "filtered_subcategories": filtered_subcategories, "ads": ads, } return render(request, "listings/index.html", context)