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)