from django.db.models import Func, F from django.utils.timezone import now from paymentwall.pingback import Pingback from django.contrib.auth import get_user_model from apps.config.models import Config from apps.content.models import Banner from apps.payment.models import SchoolPayment User = get_user_model() def config(request): return {"config": Config.load()} def banner(request): return {'banner': Banner.objects.filter(use=True).first()} def school_purchased(request): if request.user.is_authenticated: n = now().date() school_payment = SchoolPayment.objects.filter( user=request.user, status__in=[ Pingback.PINGBACK_TYPE_REGULAR, Pingback.PINGBACK_TYPE_GOODWILL, Pingback.PINGBACK_TYPE_RISK_REVIEWED_ACCEPTED, ], date_start__lte=n, date_end__gte=n ) school_schedules_purchased = school_payment.annotate( joined_weekdays=Func(F('weekdays'), function='unnest', ) ).values_list('joined_weekdays', flat=True).distinct() return { 'is_school_purchased': school_payment.exists(), 'school_schedules_purchased': school_schedules_purchased, } return { 'is_school_purchased': False, 'school_schedules_purchased': [], } def referrer(request): referrer = request.session.get('referrer') if referrer: try: referrer = User.objects.get(pk=referrer) except: referrer = None return {'referrer': referrer} def settings(request): from django.conf import settings return {'settings': settings}