Files
account_store/SubscribesApp/js_views.py

126 lines
4.4 KiB
Python

from django.shortcuts import render
from uuid import uuid1
from .models import *
from django.contrib import auth
from django.http import HttpResponse, Http404, JsonResponse, HttpResponseRedirect
from django.template import loader, RequestContext
from django.contrib.auth.decorators import login_required
from BaseModels.mailSender import techSendMail
from django.utils.translation import gettext as _
from datetime import datetime
from django.template.loader import render_to_string
from django.urls import reverse
from .funcs import *
import json
from datetime import datetime, time, timedelta
from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync
from GeneralApp.funcs import get_and_set_lang
from django.shortcuts import redirect
@login_required()#login_url='/profile/login/')
def subscribe_now_ajax(request):
if request.method != 'POST':
raise Http404
lang = get_and_set_lang(request)
try:
data = json.loads(request.body)
subscribe = Subscribe.objects.get(id=data['subscribe_id'])
kwargs_for_order = {
'user': request.user,
'subscribe': subscribe,
'currency': 'USD',
'sum': subscribe.price,
}
from BillingApp.funcs import create_subscribe_order
order = create_subscribe_order(kwargs_for_order)
if order:
return JsonResponse({'redirect_url': order.pay_page})
kwargs = {
'user': request.user,
'subscribe': subscribe,
'last_paid_DT': datetime.now(),
'paid_period_from_DT': datetime.now(),
'paid_period_to_DT': datetime.now() + timedelta(hours=subscribe.period),
'receive_finish_subscribe_msg': True,
}
subscribe_for_user = SubscribeForUser.objects.filter(user=request.user)
if subscribe_for_user:
subscribe_for_user.update(**kwargs)
subscribe_for_user = subscribe_for_user[0]
if not subscribe_for_user:
tpl_name = 'blocks/profile/b_subscribe_variants.html'
else:
tpl_name = 'blocks/profile/b_subscribe_current.html'
all_options = SubscribeOption.objects.filter(enable=True)
subscribes = Subscribe.objects.filter(enable=True)
for subscribe in subscribes:
subscribe_options_ids = subscribe.options.values_list('id', flat=True)
subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)
Dict = {
'subscribe_for_user': subscribe_for_user,
'subscribes': subscribes
}
html = render_to_string(tpl_name, Dict, request=request)
return JsonResponse({'html': html}, status=200)
except Exception as e:
msg = f'show_cur_subscribe_ajax Error = {str(e)}'
return JsonResponse({'error': msg}, status=400)
@login_required()#login_url='/profile/login/')
def show_cur_subscribe_ajax(request):
if request.method != 'POST':
raise Http404
lang = get_and_set_lang(request)
Dict = get_profile_subscribe_page_content_Dict(request)
return JsonResponse(Dict, status=200)
# try:
#
# # data = json.loads(request.body)
# all_options = SubscribeOption.objects.filter(enable=True)
#
# subscribe_for_user = SubscribeForUser.objects.filter(user=request.user)
# if not subscribe_for_user:
# tpl_name = 'blocks/profile/b_subscribe_variants.html'
# else:
# tpl_name = 'blocks/profile/b_subscribe_current.html'
# subscribe_for_user = subscribe_for_user[0]
# subscribe_options_ids = subscribe_for_user.subscribe.options.values_list('id', flat=True)
# subscribe_for_user.subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)
#
# subscribes = Subscribe.objects.filter(enable=True)
# for subscribe in subscribes:
# subscribe_options_ids = subscribe.options.values_list('id', flat=True)
# subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)
#
# Dict = {
# 'subscribe_for_user': subscribe_for_user,
# 'subscribes': subscribes
# }
#
# html = render_to_string(tpl_name, Dict, request=request)
# return JsonResponse({'html': html}, status=200)
#
# except Exception as e:
# msg = f'show_cur_subscribe_ajax Error = {str(e)}'
# return JsonResponse({'error': msg}, status=400)