You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
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 django.conf import settings
|
|
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):
|
|
return {'settings': settings}
|
|
|