1662 lines
76 KiB
Python
1662 lines
76 KiB
Python
|
# from rest_framework import viewsets
|
||
|
# from rest_framework.decorators import action
|
||
|
# from rest_framework.response import Response
|
||
|
# from .models import CorporateMember, CorporateUser, Transaction, CreditRequest, Payment, CreditRequestFromMember, Institute, AffiliatedStudent, UnaffiliatedStudent, WaitForInstituteStudent, CreditRequestStudent, CreditRequestInstitute
|
||
|
# from .serializers import (
|
||
|
# CorporateMemberSerializer, CorporateUserSerializer, TransactionSerializer,
|
||
|
# CreditRequestSerializer, PaymentSerializer, CreditRequestMemberSerializer,
|
||
|
# InstituteSerializer, AffiliatedStudentSerializer, UnaffiliatedStudentSerializer, WaitForInstituteStudentSerializer,CreditRequestInstituteSerializer, CreditRequestStudentSerializer
|
||
|
# )
|
||
|
# from django.http import HttpResponse
|
||
|
# from django.shortcuts import render
|
||
|
# from django.views import View
|
||
|
# from django.contrib.auth.models import User
|
||
|
# from django.conf import settings
|
||
|
# from datetime import datetime, timedelta
|
||
|
# from django.shortcuts import get_object_or_404
|
||
|
# from django.http import JsonResponse
|
||
|
# from django.db import transaction as db_transaction
|
||
|
# from django.db.models import Sum, Q
|
||
|
# from django.db import transaction
|
||
|
# from auto_email.views import sendmail
|
||
|
# from reportlab.lib.pagesizes import letter
|
||
|
# from reportlab.lib import colors
|
||
|
# from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
|
||
|
# from reportlab.lib.styles import getSampleStyleSheet
|
||
|
# from reportlab.lib.units import inch
|
||
|
# import json
|
||
|
# from django.utils import timezone
|
||
|
# DISCOUNT = settings.IM_DISCOUNT
|
||
|
# from MNF.settings import discount_limit_handler
|
||
|
|
||
|
from django.shortcuts import redirect
|
||
|
class CorporateReg(View):
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
user = request.user
|
||
|
if CorporateMember.objects.filter(user=user).exists():
|
||
|
return redirect('/institute/')
|
||
|
|
||
|
elif CorporateUser.objects.filter(user= user).exists():
|
||
|
return redirect('/institute/')
|
||
|
|
||
|
return render(request, "institutional/intermidiate.html", context)
|
||
|
elif Institute.objects.filter(user= user).exists() or AffiliatedStudent.objects.filter(user= user).exists() or UnaffiliatedStudent.objects.filter(user= user).exists() or WaitForInstituteStudent.objects.filter(user= user).exists():
|
||
|
message = "You have already taken other type of membership so you can not take this membership!!"
|
||
|
context = {
|
||
|
'message': message,
|
||
|
}
|
||
|
return render(request, "institutional/intermidiate.html", context)
|
||
|
else:
|
||
|
key = settings.COUNTRY_KEY
|
||
|
context = {
|
||
|
'key': key,
|
||
|
}
|
||
|
return render(request, "institutional/corporateReg.html", context)
|
||
|
|
||
|
class InstituteReg(View):
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
user = request.user
|
||
|
if Institute.objects.filter(user= user).exists():
|
||
|
return redirect('/institute/')
|
||
|
elif AffiliatedStudent.objects.filter(user= user).exists():
|
||
|
return redirect('/institute/')
|
||
|
elif CorporateMember.objects.filter(user=user).exists() or CorporateUser.objects.filter(user= user).exists() or UnaffiliatedStudent.objects.filter(user= user).exists() or WaitForInstituteStudent.objects.filter(user= user).exists():
|
||
|
message = "You have already taken other type of membership so you can not take this membership!!"
|
||
|
context = {
|
||
|
'message': message,
|
||
|
}
|
||
|
return render(request, "institutional/intermidiate.html", context)
|
||
|
else:
|
||
|
key = settings.COUNTRY_KEY
|
||
|
context = {
|
||
|
'key': key,
|
||
|
}
|
||
|
return render(request, "institutional/instituteReg.html", context)
|
||
|
|
||
|
class StudentReg(View):
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
user = request.user
|
||
|
if WaitForInstituteStudent.objects.filter(user= user).exists():
|
||
|
return redirect('/institute/')
|
||
|
elif UnaffiliatedStudent.objects.filter(user= user).exists():
|
||
|
return redirect('/institute/')
|
||
|
elif CorporateMember.objects.filter(user=user).exists() or CorporateUser.objects.filter(user= user).exists() or AffiliatedStudent.objects.filter(user= user).exists() or Institute.objects.filter(user= user).exists():
|
||
|
message = "You have already taken other type of membership so you can not take this membership!!"
|
||
|
context = {
|
||
|
'message': message,
|
||
|
}
|
||
|
return render(request, "institutional/intermidiate.html", context)
|
||
|
else:
|
||
|
key = settings.COUNTRY_KEY
|
||
|
institutes = Institute.objects.all()
|
||
|
context = {
|
||
|
'key': key,
|
||
|
'institutes': institutes,
|
||
|
}
|
||
|
return render(request, "institutional/studentReg.html", context)
|
||
|
|
||
|
class AffliliatedStudentReg(View):
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
key = settings.COUNTRY_KEY
|
||
|
institutes = Institute.objects.all()
|
||
|
context = {
|
||
|
'key': key,
|
||
|
'institutes': institutes,
|
||
|
}
|
||
|
return render(request, "institutional/affstudentReg.html", context)
|
||
|
|
||
|
class Main(View):
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
user = request.user
|
||
|
total_payable_of_users_this_month = total_payable_of_users_last_month = total_payable_of_students_last_month = total_payable_of_students_this_month = 0.0
|
||
|
credit_requests = CreditRequestFromMember.objects.filter(ctype="corporate_membership")
|
||
|
credit_requests_institute = CreditRequestInstitute.objects.filter(ctype="institute_membership")
|
||
|
if user.is_superuser:
|
||
|
context ={
|
||
|
'credit_requests': credit_requests,
|
||
|
'credit_requests_institute': credit_requests_institute,
|
||
|
}
|
||
|
return render(request, 'institutional/AdminDashboard.html', context)
|
||
|
|
||
|
if CorporateMember.objects.filter(user=user).exists() or CorporateUser.objects.filter(user= user).exists() or Institute.objects.filter(user= user).exists() or AffiliatedStudent.objects.filter(user= user).exists() or UnaffiliatedStudent.objects.filter(user= user).exists() or WaitForInstituteStudent.objects.filter(user= user).exists():
|
||
|
if CorporateMember.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if CorporateMember.objects.filter(user= user, is_approved="pending").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/application_under_review.html')
|
||
|
elif CorporateMember.objects.filter(user= user, is_approved="approved").exists():
|
||
|
userdetails = CorporateMember.objects.get(user= user, is_approved="approved")
|
||
|
associated_corporate_users = CorporateUser.objects.filter(this_user_admin=userdetails)
|
||
|
for auser in associated_corporate_users:
|
||
|
total_payable_of_users_this_month += float(auser.used_credit_point)
|
||
|
for auser in associated_corporate_users:
|
||
|
total_payable_of_users_last_month += float(auser.pending_payment)
|
||
|
total_payable_of_member_last_month = float(userdetails.pending_payment)
|
||
|
total_payable_of_member_this_month = float(userdetails.used_credit_point)
|
||
|
input_dt = datetime.now()
|
||
|
next_month = input_dt.replace(day=28) + timedelta(days=4)
|
||
|
print("Phase-3")
|
||
|
validity_time = next_month - timedelta(days=next_month.day)
|
||
|
credit_requests = CreditRequest.objects.filter(request_to=userdetails)
|
||
|
total_payable = 0.0
|
||
|
total_payable += float(userdetails.used_credit_point)
|
||
|
corporate_users = CorporateUser.objects.filter(this_user_admin = userdetails)
|
||
|
for i in corporate_users:
|
||
|
total_payable += float(i.used_credit_point)
|
||
|
context = {
|
||
|
'userdetails': userdetails,
|
||
|
'associated_corporate_users': associated_corporate_users,
|
||
|
'validity_time': validity_time,
|
||
|
'credit_requests': credit_requests,
|
||
|
'last_month_payment': (total_payable_of_member_last_month + total_payable_of_users_last_month),
|
||
|
'payment_till_now': (total_payable_of_member_this_month + total_payable_of_users_this_month + total_payable_of_member_last_month + total_payable_of_users_last_month),
|
||
|
'total_payable': total_payable,
|
||
|
}
|
||
|
print("Phase-4")
|
||
|
return render(request, 'institutional/CorporateMemberDashboard.html', context)
|
||
|
else:
|
||
|
application = CorporateMember.objects.get(user=user)
|
||
|
message = "Your Registration request for Corporate Membership is under review."
|
||
|
application_type = "CorporateMembership"
|
||
|
print("Phase-5")
|
||
|
if CorporateUser.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if CorporateUser.objects.filter(user= user, is_approved="banned").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/corporateUserBan.html')
|
||
|
if CorporateUser.objects.filter(user= user, is_approved="active").exists():
|
||
|
userdetails = CorporateUser.objects.get(user= user, is_approved="active")
|
||
|
input_dt = datetime.now()
|
||
|
next_month = input_dt.replace(day=28) + timedelta(days=4)
|
||
|
validity_time = next_month - timedelta(days=next_month.day)
|
||
|
transactions = Transaction.objects.filter(user=user)
|
||
|
print("Phase-3")
|
||
|
credit_requests_send = CreditRequest.objects.filter(request_from=userdetails)
|
||
|
context = {
|
||
|
'userdetails': userdetails,
|
||
|
'validity_time': validity_time,
|
||
|
'credit_requests_send': credit_requests_send,
|
||
|
'transactions': transactions,
|
||
|
}
|
||
|
print("Phase-4")
|
||
|
return render(request, 'institutional/CorporateUserDashboard.html', context)
|
||
|
|
||
|
if Institute.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if Institute.objects.filter(user= user, is_approved="pending").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/application_under_review.html')
|
||
|
elif Institute.objects.filter(user= user, is_approved="approved").exists():
|
||
|
userdetails = Institute.objects.get(user= user, is_approved="approved")
|
||
|
affiliated_student = AffiliatedStudent.objects.filter(institute=userdetails)
|
||
|
for auser in affiliated_student:
|
||
|
total_payable_of_students_this_month += float(auser.used_credit_point)
|
||
|
for auser in affiliated_student:
|
||
|
total_payable_of_students_last_month += float(auser.pending_payment)
|
||
|
total_payable_of_institute_last_month = float(userdetails.pending_payment)
|
||
|
total_payable_of_institute_this_month = float(userdetails.used_credit_point)
|
||
|
input_dt = datetime.now()
|
||
|
next_month = input_dt.replace(day=28) + timedelta(days=4)
|
||
|
print("Phase-3")
|
||
|
validity_time = next_month - timedelta(days=next_month.day)
|
||
|
credit_requests = CreditRequestStudent.objects.filter(request_to=userdetails)
|
||
|
total_payable = 0
|
||
|
total_payable += float(userdetails.used_credit_point)
|
||
|
affiliated_students = AffiliatedStudent.objects.filter(institute = userdetails)
|
||
|
for i in affiliated_students:
|
||
|
total_payable += float(i.used_credit_point)
|
||
|
context = {
|
||
|
'total_payable': total_payable,
|
||
|
'userdetails': userdetails,
|
||
|
'affiliated_student': affiliated_student,
|
||
|
'validity_time': validity_time,
|
||
|
'credit_requests': credit_requests,
|
||
|
'last_month_payment': (total_payable_of_institute_last_month + total_payable_of_students_last_month),
|
||
|
'payment_till_now': (total_payable_of_institute_this_month + total_payable_of_students_this_month + total_payable_of_institute_last_month + total_payable_of_students_last_month),
|
||
|
}
|
||
|
print("Phase-4")
|
||
|
return render(request, 'institutional/InstituteDashboard.html', context)
|
||
|
else:
|
||
|
application = Institute.objects.get(user=user)
|
||
|
message = "Your Registration request for Institute Membership is under review."
|
||
|
application_type = "InstituteMembership"
|
||
|
print("Phase-5")
|
||
|
if AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if AffiliatedStudent.objects.filter(user= user, is_approved="pending").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/application_under_review.html')
|
||
|
elif AffiliatedStudent.objects.filter(user= user, is_approved="approved").exists():
|
||
|
userdetails = AffiliatedStudent.objects.get(user= user, is_approved="approved")
|
||
|
credit_requests = CreditRequestStudent.objects.filter(request_from=userdetails)
|
||
|
transactions = Transaction.objects.filter(user=user)
|
||
|
print("Phase-3")
|
||
|
context = {
|
||
|
'userdetails': userdetails,
|
||
|
'credit_requests': credit_requests,
|
||
|
'transactions': transactions,
|
||
|
}
|
||
|
print("Phase-4")
|
||
|
return render(request, 'institutional/AffiliatedStudentDashboard.html', context)
|
||
|
else:
|
||
|
application = AffiliatedStudent.objects.get(user=user)
|
||
|
message = "Your Registration request for Affiliated Student Membership is under review."
|
||
|
application_type = "AffiliatedStudentMembership"
|
||
|
print("Phase-5")
|
||
|
return render(request, 'institutional/corporateUserBan.html')
|
||
|
if UnaffiliatedStudent.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if UnaffiliatedStudent.objects.filter(user= user, is_approved="pending").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/application_under_review.html')
|
||
|
elif UnaffiliatedStudent.objects.filter(user= user, is_approved="approved").exists():
|
||
|
userdetails = UnaffiliatedStudent.objects.get(user= user, is_approved="approved")
|
||
|
context = {
|
||
|
'userdetails': userdetails,
|
||
|
}
|
||
|
print("Phase-3")
|
||
|
return render(request, 'institutional/UnaffiliatedStudentDashboard.html', context)
|
||
|
else:
|
||
|
application = UnaffiliatedStudent.objects.get(user=user)
|
||
|
message = "Your Registration request for Unaffiliated Student Membership is under review."
|
||
|
application_type = "UnaffiliatedStudentMembership"
|
||
|
print("Phase-4")
|
||
|
if WaitForInstituteStudent.objects.filter(user=user).exists():
|
||
|
print("Phase-1")
|
||
|
if WaitForInstituteStudent.objects.filter(user= user, is_approved="pending").exists():
|
||
|
print("Phase-2")
|
||
|
return render(request, 'institutional/application_under_review.html')
|
||
|
elif WaitForInstituteStudent.objects.filter(user= user, is_approved="approved").exists():
|
||
|
userdetails = WaitForInstituteStudent.objects.get(user= user, is_approved="approved")
|
||
|
institute_registered = Institute.objects.filter(institute_email= userdetails.institute_email).exists()
|
||
|
print("Phase-3")
|
||
|
context = {
|
||
|
'userdetails': userdetails,
|
||
|
'institute_registered': institute_registered,
|
||
|
}
|
||
|
print("Phase-4")
|
||
|
return render(request, 'institutional/WaitForInstituteStudentDashboard.html', context)
|
||
|
else:
|
||
|
application = WaitForInstituteStudent.objects.get(user=user)
|
||
|
message = "Your Registration request for Wait For Institute Student Membership is under review."
|
||
|
application_type = "WaitForInstituteStudentMembership"
|
||
|
print("Phase-5")
|
||
|
context = {
|
||
|
'message': message,
|
||
|
'application': application,
|
||
|
'application_type': application_type,
|
||
|
}
|
||
|
print("Phase-6")
|
||
|
return render(request, 'institutional/Reject_Application.html', context)
|
||
|
message = "You have not Taken any membership yet!! Please Take any membership to view the Member Dashboard."
|
||
|
context = {
|
||
|
'message': message,
|
||
|
}
|
||
|
return render(request, "institutional/intermidiate.html", context)
|
||
|
|
||
|
|
||
|
class CorporateMemberViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CorporateMember.objects.all()
|
||
|
serializer = CorporateMemberSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
member = CorporateMember.objects.get(pk=pk)
|
||
|
serializer = CorporateMemberSerializer(member)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CorporateMemberSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
sendmail(to_email=[request.data.get("contact_person_email")], email_code="IP1")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
member = CorporateMember.objects.get(pk=pk)
|
||
|
serializer = CorporateMemberSerializer(member, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
member = CorporateMember.objects.get(pk=pk)
|
||
|
serializer = CorporateMemberSerializer(member, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
if request.data.get("is_approved") == "rejected":
|
||
|
sendmail(to_email=[member.contact_person_email], email_code="IP3")
|
||
|
if request.data.get("is_approved") == "approved":
|
||
|
sendmail(to_email=[member.contact_person_email], email_code="IP2")
|
||
|
|
||
|
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
member = CorporateMember.objects.get(pk=pk)
|
||
|
member.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class CorporateUserViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CorporateUser.objects.all()
|
||
|
serializer = CorporateUserSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
user = CorporateUser.objects.get(pk=pk)
|
||
|
serializer = CorporateUserSerializer(user)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CorporateUserSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
em = CorporateMember.objects.get(corporate_member_uuid = request.data.get("this_user_admin"))
|
||
|
sendmail(to_email=[em.contact_person_email],email_code="IP4")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
user = CorporateUser.objects.get(pk=pk)
|
||
|
serializer = CorporateUserSerializer(user, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
user = CorporateUser.objects.get(pk=pk)
|
||
|
serializer = CorporateUserSerializer(user, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
if request.data.get("is_approved") == 'active' :
|
||
|
sendmail(to_email=[user.contact_person_email], email_code="IP15")
|
||
|
if request.data.get("is_approved") == 'banned' :
|
||
|
sendmail(to_email=[user.contact_person_email], email_code="IP14")
|
||
|
if (request.data.get("services_access_premise_pool") == user.services_access_premise_pool):
|
||
|
sendmail(to_email=[user.contact_person_email], email_code="IP11")
|
||
|
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
user = CorporateUser.objects.get(pk=pk)
|
||
|
user.delete()
|
||
|
sendmail(to_email=[user.contact_person_email], email_code="IP3")
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class TransactionViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = Transaction.objects.all()
|
||
|
serializer = TransactionSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
transaction = Transaction.objects.get(pk=pk)
|
||
|
serializer = TransactionSerializer(transaction)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = TransactionSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
transaction = Transaction.objects.get(pk=pk)
|
||
|
serializer = TransactionSerializer(transaction, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
#
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
transaction = Transaction.objects.get(pk=pk)
|
||
|
serializer = TransactionSerializer(transaction, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
#
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
transaction = Transaction.objects.get(pk=pk)
|
||
|
transaction.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class CreditRequestViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CreditRequest.objects.all()
|
||
|
serializer = CreditRequestSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
credit_request = CreditRequest.objects.get(pk=pk)
|
||
|
serializer = CreditRequestSerializer(credit_request)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CreditRequestSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
useremail = CorporateUser.objects.get(corporate_user_uuid = request.data.get("request_from"))
|
||
|
sendmail(to_email=[useremail.contact_person_email], email_code="IP5")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
credit_request = CreditRequest.objects.get(pk=pk)
|
||
|
serializer = CreditRequestSerializer(credit_request, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
credit_request = CreditRequest.objects.get(pk=pk)
|
||
|
serializer = CreditRequestSerializer(credit_request, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
credit_request = CreditRequest.objects.get(pk=pk)
|
||
|
credit_request.delete()
|
||
|
sendmail(to_email=[credit_request.request_from.contact_person_email], email_code="IP7")
|
||
|
return Response(status=204)
|
||
|
|
||
|
class CreditRequestMemberViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CreditRequestFromMember.objects.all()
|
||
|
serializer = CreditRequestMemberSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
credit_request = CreditRequestFromMember.objects.get(pk=pk)
|
||
|
serializer = CreditRequestMemberSerializer(credit_request)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CreditRequestMemberSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
useremail = CorporateMember.objects.get(corporate_member_uuid = request.data.get("request_from"))
|
||
|
sendmail(to_email=[useremail.contact_person_email], email_code="IP8")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
credit_request = CreditRequestFromMember.objects.get(pk=pk)
|
||
|
serializer = CreditRequestMemberSerializer(credit_request, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
#
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
credit_request = CreditRequestFromMember.objects.get(pk=pk)
|
||
|
serializer = CreditRequestMemberSerializer(credit_request, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
credit_request = CreditRequestFromMember.objects.get(pk=pk)
|
||
|
credit_request.delete()
|
||
|
sendmail(to_email=[credit_request.request_from.contact_person_email], email_code="IP10")
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class PaymentViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = Payment.objects.all()
|
||
|
serializer = PaymentSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
payment = Payment.objects.get(pk=pk)
|
||
|
serializer = PaymentSerializer(payment)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = PaymentSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
payment = Payment.objects.get(pk=pk)
|
||
|
serializer = PaymentSerializer(payment, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
payment = Payment.objects.get(pk=pk)
|
||
|
serializer = PaymentSerializer(payment, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
payment = Payment.objects.get(pk=pk)
|
||
|
payment.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
|
||
|
class InstituteViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = Institute.objects.all()
|
||
|
serializer = InstituteSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
institute = Institute.objects.get(pk=pk)
|
||
|
serializer = InstituteSerializer(institute)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = InstituteSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
sendmail(to_email=[request.data.get("institute_email")], email_code="IP16")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
institute = Institute.objects.get(pk=pk)
|
||
|
serializer = InstituteSerializer(institute, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
institute = Institute.objects.get(pk=pk)
|
||
|
serializer = InstituteSerializer(institute, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
if request.data.get("is_approved") == "rejected":
|
||
|
sendmail(to_email=[institute.admin_email], email_code="IP18")
|
||
|
if request.data.get("is_approved") == "approved":
|
||
|
sendmail(to_email=[institute.admin_email], email_code="IP17")
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
institute = Institute.objects.get(pk=pk)
|
||
|
institute.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
|
||
|
class AffiliatedStudentViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = AffiliatedStudent.objects.all()
|
||
|
serializer = AffiliatedStudentSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
affiliated_student = AffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = AffiliatedStudentSerializer(affiliated_student)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = AffiliatedStudentSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
sendmail(to_email=[request.data.get("student_institute_email")], email_code="IP30")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
affiliated_student = AffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = AffiliatedStudentSerializer(affiliated_student, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
affiliated_student = AffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = AffiliatedStudentSerializer(affiliated_student, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
if request.data.get("is_approved") == 'approved' :
|
||
|
sendmail(to_email=[affiliated_student.student_institute_email], email_code="IP28")
|
||
|
if request.data.get("is_approved") == 'rejected' :
|
||
|
sendmail(to_email=[affiliated_student.student_institute_email], email_code="IP27")
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
affiliated_student = AffiliatedStudent.objects.get(pk=pk)
|
||
|
affiliated_student.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
class UnaffiliatedStudentViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = UnaffiliatedStudent.objects.all()
|
||
|
serializer = UnaffiliatedStudentSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
unaffiliated_student = UnaffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = UnaffiliatedStudentSerializer(unaffiliated_student)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = UnaffiliatedStudentSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
sendmail(to_email=[request.data.get("student_institute_email")], email_code="IP34")
|
||
|
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
unaffiliated_student = UnaffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = UnaffiliatedStudentSerializer(unaffiliated_student, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
unaffiliated_student = UnaffiliatedStudent.objects.get(pk=pk)
|
||
|
serializer = UnaffiliatedStudentSerializer(unaffiliated_student, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
|
||
|
if request.data.get("is_approved") == 'approved' :
|
||
|
sendmail(to_email=[unaffiliated_student.email], email_code="IP35")
|
||
|
if request.data.get("is_approved") == 'rejected' :
|
||
|
sendmail(to_email=[unaffiliated_student.email], email_code="IP36")
|
||
|
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
unaffiliated_student = UnaffiliatedStudent.objects.get(pk=pk)
|
||
|
unaffiliated_student.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class WaitForInstituteStudentViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = WaitForInstituteStudent.objects.all()
|
||
|
serializer = WaitForInstituteStudentSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
wait_for_institute_student = WaitForInstituteStudent.objects.get(pk=pk)
|
||
|
serializer = WaitForInstituteStudentSerializer(wait_for_institute_student)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = WaitForInstituteStudentSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
sendmail(to_email=[request.data.get("student_institute_email")], email_code="IP37")
|
||
|
sendmail(to_email=[request.data.get("institute_email")], email_code="IP40")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
wait_for_institute_student = WaitForInstituteStudent.objects.get(pk=pk)
|
||
|
serializer = WaitForInstituteStudentSerializer(wait_for_institute_student, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
wait_for_institute_student = WaitForInstituteStudent.objects.get(pk=pk)
|
||
|
serializer = WaitForInstituteStudentSerializer(wait_for_institute_student, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
if request.data.get("is_approved") == 'approved' :
|
||
|
sendmail(to_email=[wait_for_institute_student.email], email_code="IP38")
|
||
|
if request.data.get("is_approved") == 'rejected' :
|
||
|
sendmail(to_email=[wait_for_institute_student.email], email_code="IP39")
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
wait_for_institute_student = WaitForInstituteStudent.objects.get(pk=pk)
|
||
|
wait_for_institute_student.delete()
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class CreditRequestStudentViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CreditRequestStudent.objects.all()
|
||
|
serializer = CreditRequestStudentSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
credit_request = CreditRequestStudent.objects.get(pk=pk)
|
||
|
serializer = CreditRequestStudentSerializer(credit_request)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CreditRequestStudentSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
Afem = AffiliatedStudent.objects.get(affiliated_student_uuid = request.data.get("request_from"))
|
||
|
sendmail(to_email=[Afem.student_institute_email], email_code="IP20")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
credit_request = CreditRequestStudent.objects.get(pk=pk)
|
||
|
serializer = CreditRequestStudentSerializer(credit_request, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
credit_request = CreditRequestStudent.objects.get(pk=pk)
|
||
|
serializer = CreditRequestStudentSerializer(credit_request, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
#
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
credit_request = CreditRequestStudent.objects.get(pk=pk)
|
||
|
credit_request.delete()
|
||
|
sendmail(to_email=[credit_request.request_from.student_institute_email], email_code="IP21")
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
class CreditRequestInstituteViewSet(viewsets.ViewSet):
|
||
|
def list(self, request):
|
||
|
queryset = CreditRequestInstitute.objects.all()
|
||
|
serializer = CreditRequestInstituteSerializer(queryset, many=True)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def retrieve(self, request, pk=None):
|
||
|
credit_request = CreditRequestInstitute.objects.get(pk=pk)
|
||
|
serializer = CreditRequestInstituteSerializer(credit_request)
|
||
|
return Response(serializer.data)
|
||
|
|
||
|
def create(self, request):
|
||
|
serializer = CreditRequestInstituteSerializer(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
em = Institute.objects.get(institute_uuid=request.data.get("request_from"))
|
||
|
sendmail(to_email=[em.admin_email], email_code="IP22")
|
||
|
return Response(serializer.data, status=201)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def update(self, request, pk=None):
|
||
|
credit_request = CreditRequestInstitute.objects.get(pk=pk)
|
||
|
serializer = CreditRequestInstituteSerializer(credit_request, data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def partial_update(self, request, pk=None):
|
||
|
credit_request = CreditRequestInstitute.objects.get(pk=pk)
|
||
|
serializer = CreditRequestInstituteSerializer(credit_request, data=request.data, partial=True)
|
||
|
if serializer.is_valid():
|
||
|
serializer.save()
|
||
|
return Response(serializer.data)
|
||
|
return Response(serializer.errors, status=400)
|
||
|
|
||
|
def destroy(self, request, pk=None):
|
||
|
credit_request = CreditRequestInstitute.objects.get(pk=pk)
|
||
|
credit_request.delete()
|
||
|
sendmail(to_email=[credit_request.request_from.institute_email], email_code="IP23")
|
||
|
return Response(status=204)
|
||
|
|
||
|
|
||
|
|
||
|
def get_user_transactions(request, user_id):
|
||
|
user = get_object_or_404(User, id=user_id)
|
||
|
transactions = Transaction.objects.filter(user=user)
|
||
|
|
||
|
# Create a list to hold the serialized transaction data
|
||
|
serialized_transactions = []
|
||
|
|
||
|
# Serialize each transaction and add it to the list
|
||
|
for transaction in transactions:
|
||
|
serialized_transaction = {
|
||
|
'transaction_uuid': str(transaction.transaction_uuid),
|
||
|
'user': transaction.user.username,
|
||
|
'date': transaction.date.isoformat(),
|
||
|
'user_type': transaction.user_type,
|
||
|
'service_type': transaction.service_type,
|
||
|
'amount': str(transaction.amount),
|
||
|
}
|
||
|
serialized_transactions.append(serialized_transaction)
|
||
|
|
||
|
# Return the serialized transactions as JSON response
|
||
|
return JsonResponse(serialized_transactions, safe=False)
|
||
|
|
||
|
|
||
|
def check_corporate_user_exists(request):
|
||
|
if request.method == 'POST':
|
||
|
name = request.POST.get('name')
|
||
|
email = request.POST.get('email')
|
||
|
# Perform the logic to check if a user with the provided name and email exists
|
||
|
user_exists = User.objects.filter(email=email).exists()
|
||
|
if user_exists:
|
||
|
corporate_user_exists = CorporateUser.objects.filter(contact_person_email=email).exists()
|
||
|
if corporate_user_exists:
|
||
|
response_data = {
|
||
|
'userExists': 'corporate_user'
|
||
|
}
|
||
|
|
||
|
return JsonResponse(response_data)
|
||
|
else:
|
||
|
user = User.objects.get(email=email)
|
||
|
response_data = {
|
||
|
'userExists': 'normal_user',
|
||
|
'userId': user.pk
|
||
|
}
|
||
|
return JsonResponse(response_data)
|
||
|
else:
|
||
|
response_data = {
|
||
|
'userExists': 'not_user'
|
||
|
}
|
||
|
|
||
|
return JsonResponse(response_data)
|
||
|
|
||
|
return JsonResponse({'error': 'Invalid request method'})
|
||
|
|
||
|
|
||
|
def check_domain_available(request):
|
||
|
if request.method == 'POST':
|
||
|
domain_name = request.POST.get('domainname')
|
||
|
# Perform the logic to check if a user with the provided name and email exists
|
||
|
user_exists = Institute.objects.filter(domain_name=domain_name).exists()
|
||
|
response_data = {
|
||
|
'userExists': True
|
||
|
}
|
||
|
if user_exists:
|
||
|
institute = Institute.objects.filter(domain_name=domain_name).exists()
|
||
|
if institute:
|
||
|
response_data = {
|
||
|
'userExists': False
|
||
|
}
|
||
|
return JsonResponse(response_data)
|
||
|
|
||
|
return JsonResponse({'error': 'Invalid request method'})
|
||
|
|
||
|
def make_transaction(user, service_type, service_id, amount):
|
||
|
user = User.objects.get(pk=user)
|
||
|
print("User Found")
|
||
|
print(service_type)
|
||
|
|
||
|
if CorporateUser.objects.filter(user=user).exists():
|
||
|
user_type = 'corporate_user'
|
||
|
elif CorporateMember.objects.filter(user=user).exists():
|
||
|
user_type = 'corporate_member'
|
||
|
elif Institute.objects.filter(user=user).exists():
|
||
|
user_type = 'institute'
|
||
|
elif AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user_type = 'student'
|
||
|
else:
|
||
|
user_type = ''
|
||
|
|
||
|
if CorporateUser.objects.filter(user=user).exists():
|
||
|
print("Corporate User")
|
||
|
cuser = CorporateUser.objects.get(user=user)
|
||
|
print("cuser")
|
||
|
cuadmin = cuser.this_user_admin
|
||
|
print('cuadmin')
|
||
|
print(cuser.services_access_subtitle)
|
||
|
print(cuser.services_access_viewers_lounge)
|
||
|
print(cuser.services_access_project_center)
|
||
|
print(cuser.services_access_conversion)
|
||
|
print(cuser.services_access_script_builder)
|
||
|
print(cuser.services_access_script_builder)
|
||
|
|
||
|
|
||
|
if cuser.is_approved != "active":
|
||
|
return False
|
||
|
|
||
|
if float(cuser.available_credit_points) <= float(amount):
|
||
|
return False
|
||
|
|
||
|
if service_type == 'Subtitle':
|
||
|
print("--------------1")
|
||
|
print(cuser.services_access_subtitle)
|
||
|
if cuser.services_access_subtitle == False:
|
||
|
return False
|
||
|
if service_type == 'Viewers Lounge':
|
||
|
print("--------------2")
|
||
|
print(cuser.services_access_viewers_lounge)
|
||
|
if cuser.services_access_viewers_lounge == False:
|
||
|
return False
|
||
|
if service_type == 'Project Center':
|
||
|
print("--------------3")
|
||
|
print(cuser.services_access_project_center)
|
||
|
if cuser.services_access_project_center == False:
|
||
|
return False
|
||
|
if service_type == 'Conversion':
|
||
|
print("--------------4")
|
||
|
print(cuser.services_access_conversion)
|
||
|
if cuser.services_access_conversion == False:
|
||
|
return False
|
||
|
if service_type == 'Narration':
|
||
|
print("--------------5")
|
||
|
print(cuser.services_access_narration)
|
||
|
if cuser.services_access_narration == False:
|
||
|
return False
|
||
|
if service_type == 'Script Builder':
|
||
|
print("--------------6")
|
||
|
print(cuser.services_access_script_builder)
|
||
|
if cuser.services_access_script_builde == Falser:
|
||
|
return False
|
||
|
if service_type == 'Premise Pool':
|
||
|
print("--------------7")
|
||
|
print(cuser.services_access_premise_pool)
|
||
|
if cuser.services_access_premise_pool == False:
|
||
|
return False
|
||
|
try:
|
||
|
with db_transaction.atomic():
|
||
|
transaction = Transaction.objects.create(
|
||
|
user=user,
|
||
|
user_type=user_type,
|
||
|
service_type=service_type,
|
||
|
service_id=service_id,
|
||
|
amount=amount,
|
||
|
date=timezone.now()
|
||
|
)
|
||
|
print('transaction added')
|
||
|
cuser.available_credit_points = float(cuser.available_credit_points) - float(amount)
|
||
|
print("user available_credit_points")
|
||
|
cuser.used_credit_point = float(cuser.used_credit_point) + float(amount)
|
||
|
print("user used_credit_point")
|
||
|
cuser.pending_payment = float(cuser.pending_payment) + float(amount)
|
||
|
print("user pending_payment")
|
||
|
cuadmin.pending_payment = float(cuadmin.pending_payment) + float(amount)
|
||
|
print("user admin pending_payment")
|
||
|
cuser.save()
|
||
|
cuadmin.save()
|
||
|
return True
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
elif CorporateMember.objects.filter(user=user).exists():
|
||
|
print("Corporate Member")
|
||
|
member = CorporateMember.objects.get(user=user)
|
||
|
print('member')
|
||
|
if member.is_approved != "approved":
|
||
|
return False
|
||
|
|
||
|
if float(member.available_credit_points) <= float(amount):
|
||
|
return False
|
||
|
|
||
|
try:
|
||
|
with db_transaction.atomic():
|
||
|
transaction = Transaction.objects.create(
|
||
|
user=user,
|
||
|
user_type=user_type,
|
||
|
service_type=service_type,
|
||
|
service_id=service_id,
|
||
|
amount=amount,
|
||
|
date=timezone.now()
|
||
|
)
|
||
|
print('transaction added')
|
||
|
member.available_credit_points = float(member.available_credit_points) - float(amount)
|
||
|
print('member available_credit_points')
|
||
|
member.used_credit_point = float(member.used_credit_point) + float(amount)
|
||
|
print('member used_credit_point')
|
||
|
member.pending_payment = float(member.pending_payment) + float(amount)
|
||
|
print('member pending_payment')
|
||
|
member.save()
|
||
|
return True
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
elif AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
print('AffiliatedStudent')
|
||
|
astudent = AffiliatedStudent.objects.get(user=user)
|
||
|
print('astudent')
|
||
|
asinstitute = astudent.institute
|
||
|
print('asinstitute')
|
||
|
|
||
|
if astudent.is_approved != "approved":
|
||
|
return False
|
||
|
|
||
|
if float(astudent.available_credit_points) <= float(amount):
|
||
|
return False
|
||
|
|
||
|
try:
|
||
|
with db_transaction.atomic():
|
||
|
transaction = Transaction.objects.create(
|
||
|
user=user,
|
||
|
user_type=user_type,
|
||
|
service_type=service_type,
|
||
|
service_id=service_id,
|
||
|
amount=amount,
|
||
|
date=timezone.now()
|
||
|
)
|
||
|
print('transaction added')
|
||
|
astudent.available_credit_points = float(astudent.available_credit_points) - float(amount)
|
||
|
print('astudent available_credit_points')
|
||
|
astudent.used_credit_point = float(astudent.used_credit_point) + float(amount)
|
||
|
print('astudent used_credit_point')
|
||
|
astudent.pending_payment = float(astudent.pending_payment) + float(amount)
|
||
|
print('astudent pending_payment')
|
||
|
asinstitute.pending_payment = float(asinstitute.pending_payment) + float(amount)
|
||
|
print('asinstitute pending_payment')
|
||
|
|
||
|
astudent.save()
|
||
|
asinstitute.save()
|
||
|
return True
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
elif Institute.objects.filter(user=user).exists():
|
||
|
print('Institute')
|
||
|
institute = Institute.objects.get(user=user)
|
||
|
print('institute')
|
||
|
if institute.is_approved != "approved":
|
||
|
return False
|
||
|
|
||
|
if float(institute.available_credit_points) <= float(amount):
|
||
|
return False
|
||
|
|
||
|
try:
|
||
|
with db_transaction.atomic():
|
||
|
transaction = Transaction.objects.create(
|
||
|
user=user,
|
||
|
user_type=user_type,
|
||
|
service_type=service_type,
|
||
|
service_id=service_id,
|
||
|
amount=amount,
|
||
|
date=timezone.now()
|
||
|
)
|
||
|
print('transaction added')
|
||
|
institute.available_credit_points = float(institute.available_credit_points) - float(amount)
|
||
|
print('institute available_credit_points')
|
||
|
institute.used_credit_point = float(institute.used_credit_point) + float(amount)
|
||
|
print('institute used_credit_point')
|
||
|
institute.pending_payment = float(institute.pending_payment) + float(amount)
|
||
|
print('institute pending_payment')
|
||
|
institute.save()
|
||
|
return True
|
||
|
except:
|
||
|
return False
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
|
||
|
def run_credit_transfer(request):
|
||
|
|
||
|
# Filter corporate members and users whose join date is before the first day of the next month
|
||
|
corporate_members = CorporateMember.objects.all()
|
||
|
corporate_users = CorporateUser.objects.all()
|
||
|
|
||
|
# Transfer used_credit_points to pending_payment for corporate members
|
||
|
with transaction.atomic():
|
||
|
for member in corporate_members:
|
||
|
member.pending_payment += float(member.used_credit_point)
|
||
|
member.used_credit_point = 0.0
|
||
|
member.credit_limit = member.requested_credit_point
|
||
|
member.available_credit_points = member.requested_credit_point
|
||
|
member.save()
|
||
|
|
||
|
# Transfer used_credit_points to pending_payment for corporate users
|
||
|
with transaction.atomic():
|
||
|
for user in corporate_users:
|
||
|
user.pending_payment += float(user.used_credit_point)
|
||
|
user.used_credit_point = 0.0
|
||
|
user.save()
|
||
|
|
||
|
institutes = Institute.objects.all()
|
||
|
astudents = AffiliatedStudent.objects.all()
|
||
|
|
||
|
# Transfer used_credit_points to pending_payment for Institute
|
||
|
with transaction.atomic():
|
||
|
for institute in institutes:
|
||
|
institute.pending_payment += float(institute.used_credit_point)
|
||
|
institute.used_credit_point = 0.0
|
||
|
institute.credit_limit = institute.requested_credit_point
|
||
|
institute.available_credit_points = institute.requested_credit_point
|
||
|
institute.save()
|
||
|
|
||
|
# Transfer used_credit_points to pending_payment for Affiliated Students
|
||
|
with transaction.atomic():
|
||
|
for astudent in astudents:
|
||
|
astudent.pending_payment += float(astudent.used_credit_point)
|
||
|
astudent.used_credit_point = 0.0
|
||
|
astudent.save()
|
||
|
|
||
|
return HttpResponse("Credit transfer completed successfully.")
|
||
|
|
||
|
|
||
|
def get_discount(user_id, amount):
|
||
|
user = User.objects.get(pk=user_id)
|
||
|
payable_after_s_discount = amount - ((amount*50)/100)
|
||
|
if UnaffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = UnaffiliatedStudent.objects.get(user=user)
|
||
|
if float(user.free_credits) >= float(payable_after_s_discount):
|
||
|
return 100
|
||
|
if float(user.free_credits) != 0.0:
|
||
|
return ((float(user.free_credits)/amount)*100) + 50
|
||
|
return discount_limit_handler(DISCOUNT["student_discount"])
|
||
|
elif WaitForInstituteStudent.objects.filter(user=user).exists():
|
||
|
user = WaitForInstituteStudent.objects.get(user=user)
|
||
|
if float(user.free_credits) >= float(payable_after_s_discount):
|
||
|
return 100
|
||
|
if float(user.free_credits) != 0.00:
|
||
|
return ((float(user.free_credits)/amount)*100) + 50
|
||
|
return discount_limit_handler(DISCOUNT["student_discount"])
|
||
|
elif AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = AffiliatedStudent.objects.get(user=user)
|
||
|
if float(user.free_credits) >= float(payable_after_s_discount):
|
||
|
return 100
|
||
|
if float(user.free_credits) != 0:
|
||
|
return ((float(user.free_credits)/amount)*100) + 50
|
||
|
return discount_limit_handler(DISCOUNT["student_discount"])
|
||
|
else:
|
||
|
return 0
|
||
|
|
||
|
def after_student_discount(user_id, amount):
|
||
|
user = User.objects.get(pk=user_id)
|
||
|
|
||
|
if UnaffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = UnaffiliatedStudent.objects.get(user=user)
|
||
|
user.free_credits -= amount
|
||
|
user.save()
|
||
|
|
||
|
return True
|
||
|
elif WaitForInstituteStudent.objects.filter(user=user).exists():
|
||
|
user = WaitForInstituteStudent.objects.get(user=user)
|
||
|
user.free_credits -= amount
|
||
|
user.save()
|
||
|
|
||
|
return True
|
||
|
elif AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = AffiliatedStudent.objects.get(user=user)
|
||
|
user.free_credits -= amount
|
||
|
user.save()
|
||
|
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def check_institute_exists(request):
|
||
|
if request.method == 'POST':
|
||
|
email = request.POST.get('email')
|
||
|
# Perform the logic to check if a user with the provided name and email exists
|
||
|
institute = Institute.objects.filter(institute_email=email).exists()
|
||
|
if institute:
|
||
|
response_data = {
|
||
|
'userExists': True,
|
||
|
'uuid': Institute.objects.get(institute_email=email).institute_uuid,
|
||
|
}
|
||
|
return JsonResponse(response_data)
|
||
|
else:
|
||
|
response_data = {
|
||
|
'userExists': False,
|
||
|
}
|
||
|
return JsonResponse(response_data)
|
||
|
|
||
|
return JsonResponse({'error': 'Invalid request method'})
|
||
|
|
||
|
|
||
|
def update_transactions(user_id, amount):
|
||
|
user = User.objects.get(pk=user_id)
|
||
|
total_payable_of_users_this_month = total_payable_of_users_last_month = total_payable_of_member_last_month = total_payable_of_member_this_month = last_month_payment = payment_till_now = 0
|
||
|
if CorporateMember.objects.filter(user=user).exists():
|
||
|
userdetails = CorporateMember.objects.get(user= user, is_approved="approved")
|
||
|
associated_corporate_users = CorporateUser.objects.filter(this_user_admin=userdetails)
|
||
|
for auser in associated_corporate_users:
|
||
|
total_payable_of_users_this_month += float(auser.used_credit_point)
|
||
|
for auser in associated_corporate_users:
|
||
|
total_payable_of_users_last_month += float(auser.pending_payment)
|
||
|
total_payable_of_member_last_month = float(userdetails.pending_payment)
|
||
|
total_payable_of_member_this_month = float(userdetails.used_credit_point)
|
||
|
last_month_payment= float(total_payable_of_member_last_month + total_payable_of_users_last_month)
|
||
|
payment_till_now = float(total_payable_of_member_this_month + total_payable_of_users_this_month + total_payable_of_member_last_month + total_payable_of_users_last_month)
|
||
|
if amount == payment_till_now:
|
||
|
print(amount, last_month_payment)
|
||
|
print("Paid all payments of the last month!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
|
||
|
member = CorporateMember.objects.get(user = user)
|
||
|
# Calculate the start and end dates of the last month
|
||
|
today = datetime.now()
|
||
|
last_month_end_date = today.replace(day=1) - timedelta(days=1)
|
||
|
last_month_start_date = last_month_end_date.replace(day=1)
|
||
|
# Get the associated CorporateUsers
|
||
|
associated_users = CorporateUser.objects.filter(this_user_admin=member)
|
||
|
# Create a list of user IDs for the associated CorporateUsers
|
||
|
associated_user_ids = list(associated_users.values_list('user__id', flat=True))
|
||
|
# Add the CorporateMember's user ID to the list
|
||
|
associated_user_ids.append(member.user.id)
|
||
|
print(associated_user_ids)
|
||
|
last_month_transactions = Transaction.objects.filter(
|
||
|
Q(user__id__in=associated_user_ids) &
|
||
|
Q(date__gte=last_month_start_date, date__lte=today) &
|
||
|
Q(status='pending')
|
||
|
)
|
||
|
for last_month_transaction in last_month_transactions:
|
||
|
print(last_month_transaction.transaction_uuid)
|
||
|
#last_month_transactions.update(status='paid')
|
||
|
print(amount, payment_till_now)
|
||
|
print("Paid all payments till now!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
|
||
|
return True
|
||
|
elif amount == last_month_payment:
|
||
|
print(amount, last_month_payment)
|
||
|
print("Paid all payments of the last month!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
|
||
|
member = CorporateMember.objects.get(user = user)
|
||
|
# Calculate the start and end dates of the last month
|
||
|
today = datetime.now()
|
||
|
last_month_end_date = today.replace(day=1) - timedelta(days=1)
|
||
|
last_month_start_date = last_month_end_date.replace(day=1)
|
||
|
# Get the associated CorporateUsers
|
||
|
associated_users = CorporateUser.objects.filter(this_user_admin=member)
|
||
|
# Create a list of user IDs for the associated CorporateUsers
|
||
|
associated_user_ids = list(associated_users.values_list('user__id', flat=True))
|
||
|
# Add the CorporateMember's user ID to the list
|
||
|
associated_user_ids.append(member.user.id)
|
||
|
print(associated_user_ids)
|
||
|
last_month_transactions = Transaction.objects.filter(
|
||
|
Q(user__id__in=associated_user_ids) &
|
||
|
Q(date__gte=last_month_start_date, date__lte=last_month_end_date) &
|
||
|
Q(status='pending')
|
||
|
)
|
||
|
for last_month_transaction in last_month_transactions:
|
||
|
print(last_month_transaction.transaction_uuid)
|
||
|
#last_month_transactions.update(status='paid')
|
||
|
return True
|
||
|
else:
|
||
|
print(amount, last_month_payment, payment_till_now)
|
||
|
print("Something went wrong")
|
||
|
return False
|
||
|
return False
|
||
|
|
||
|
|
||
|
def open_bill_corporate(request):
|
||
|
if request.method == 'POST':
|
||
|
total_payable = 0.0
|
||
|
uuid = request.POST['uuid']
|
||
|
corporate_member = CorporateMember.objects.get(corporate_member_uuid = uuid)
|
||
|
total_payable += float(corporate_member.used_credit_point)
|
||
|
corporate_users = CorporateUser.objects.filter(this_user_admin = corporate_member)
|
||
|
for i in corporate_users:
|
||
|
total_payable += float(i.used_credit_point)
|
||
|
transactions = Transaction.objects.filter(user=corporate_member.user, status='pending')
|
||
|
corporate_users_transactions = {}
|
||
|
for i in corporate_users:
|
||
|
user_transactions = Transaction.objects.filter(user=i.user, status='pending')
|
||
|
corporate_users_transactions[i.corporate_user_uuid] = {
|
||
|
'name': i.name,
|
||
|
'transactions': user_transactions
|
||
|
}
|
||
|
discount_percentage = 0
|
||
|
discount_value = 0.0
|
||
|
if total_payable <= 5000.00:
|
||
|
discount_percentage = 10
|
||
|
discount_value = round(float((total_payable*10)/100),2)
|
||
|
elif total_payable > 5000.00 and total_payable <= 25000.00:
|
||
|
discount_percentage = 20
|
||
|
discount_value = round(float((total_payable*20)/100),2)
|
||
|
else:
|
||
|
discount_percentage = 30
|
||
|
discount_value = round(float((total_payable*30)/100),2)
|
||
|
final_payable = round(float(total_payable) - float(discount_value),2)
|
||
|
context={
|
||
|
'corporate_member': corporate_member,
|
||
|
'corporate_users': corporate_users,
|
||
|
'total_payable': total_payable,
|
||
|
'transactions': transactions,
|
||
|
'corporate_users_transactions': corporate_users_transactions,
|
||
|
'discount_percentage': discount_percentage,
|
||
|
'discount_value': discount_value,
|
||
|
'final_payable': final_payable,
|
||
|
|
||
|
}
|
||
|
|
||
|
return render(request, 'institutional/corporate_bill.html', context=context)
|
||
|
|
||
|
def payment_received_corporate_member(request):
|
||
|
if request.method == 'POST':
|
||
|
try:
|
||
|
data = json.loads(request.body)
|
||
|
uuid = data.get('uuid')
|
||
|
if uuid:
|
||
|
corporate_member = CorporateMember.objects.get(corporate_member_uuid=uuid)
|
||
|
corporate_member.used_credit_point = 0
|
||
|
corporate_member.available_credit_points = corporate_member.requested_credit_point
|
||
|
corporate_member.save()
|
||
|
|
||
|
# Update status for corporate member's transactions
|
||
|
member_transactions = Transaction.objects.filter(user=corporate_member.user, status='pending')
|
||
|
member_transactions.update(status='paid')
|
||
|
|
||
|
# Update status for corporate users' transactions
|
||
|
corporate_users = corporate_member.corporateuser_set.all()
|
||
|
for user in corporate_users:
|
||
|
user.used_credit_point = 0
|
||
|
user.available_credit_points = user.credit_limit
|
||
|
user.save()
|
||
|
|
||
|
user_transactions = Transaction.objects.filter(user=user.user, status='pending')
|
||
|
user_transactions.update(status='paid')
|
||
|
sendmail(to_email=[corporate_member.contact_person_email], email_code="IP12")
|
||
|
return JsonResponse({'message': 'Transactions updated successfully.'})
|
||
|
else:
|
||
|
return JsonResponse({'message': 'UUID is missing or invalid.'}, status=400)
|
||
|
except json.JSONDecodeError:
|
||
|
return JsonResponse({'message': 'Invalid JSON data.'}, status=400)
|
||
|
|
||
|
|
||
|
def open_bill_institute(request):
|
||
|
if request.method == 'POST':
|
||
|
total_payable = 0.0
|
||
|
uuid = request.POST['uuid']
|
||
|
institute = Institute.objects.get(institute_uuid = uuid)
|
||
|
total_payable += float(institute.used_credit_point)
|
||
|
affiliated_students = AffiliatedStudent.objects.filter(institute = institute)
|
||
|
for i in affiliated_students:
|
||
|
total_payable += float(i.used_credit_point)
|
||
|
transactions = Transaction.objects.filter(user=institute.user, status='pending')
|
||
|
affiliated_student_transactions = {}
|
||
|
for i in affiliated_students:
|
||
|
user_transactions = Transaction.objects.filter(user=i.user, status='pending')
|
||
|
affiliated_student_transactions[i.affiliated_student_uuid] = {
|
||
|
'name': i.name,
|
||
|
'transactions': user_transactions
|
||
|
}
|
||
|
discount_percentage = 0
|
||
|
discount_value = 0.0
|
||
|
if total_payable <= 5000.00:
|
||
|
discount_percentage = 5
|
||
|
discount_value = round(float((total_payable*5)/100),2)
|
||
|
elif total_payable > 5000.00 and total_payable <= 25000.00:
|
||
|
discount_percentage = 10
|
||
|
discount_value = round(float((total_payable*10)/100),2)
|
||
|
else:
|
||
|
discount_percentage = 15
|
||
|
discount_value = round(float((total_payable*15)/100),2)
|
||
|
final_payable = round(float(total_payable) - float(discount_value),2)
|
||
|
context={
|
||
|
'institute': institute,
|
||
|
'affiliated_students': affiliated_students,
|
||
|
'total_payable': total_payable,
|
||
|
'transactions': transactions,
|
||
|
'affiliated_student_transactions': affiliated_student_transactions,
|
||
|
'discount_percentage': discount_percentage,
|
||
|
'discount_value': discount_value,
|
||
|
'final_payable': final_payable,
|
||
|
}
|
||
|
|
||
|
return render(request, 'institutional/institute_bill.html', context=context)
|
||
|
|
||
|
|
||
|
def payment_received_institute_member(request):
|
||
|
if request.method == 'POST':
|
||
|
try:
|
||
|
data = json.loads(request.body)
|
||
|
uuid = data.get('uuid')
|
||
|
if uuid:
|
||
|
institute = Institute.objects.get(institute_uuid=uuid)
|
||
|
institute.used_credit_point = 0
|
||
|
institute.available_credit_points = institute.requested_credit_point
|
||
|
institute.save()
|
||
|
|
||
|
# Update status for corporate member's transactions
|
||
|
member_transactions = Transaction.objects.filter(user=institute.user, status='pending')
|
||
|
member_transactions.update(status='paid')
|
||
|
|
||
|
# Update status for corporate users' transactions
|
||
|
affiliated_students = institute.affiliatedstudent_set.all()
|
||
|
for user in affiliated_students:
|
||
|
user.used_credit_point = 0
|
||
|
user.available_credit_points = user.credit_limit
|
||
|
user.save()
|
||
|
|
||
|
user_transactions = Transaction.objects.filter(user=user.user, status='pending')
|
||
|
user_transactions.update(status='paid')
|
||
|
sendmail(to_email=[institute.admin_email], email_code="IP25")
|
||
|
return JsonResponse({'message': 'Transactions updated successfully.'})
|
||
|
else:
|
||
|
return JsonResponse({'message': 'UUID is missing or invalid.'}, status=400)
|
||
|
except json.JSONDecodeError:
|
||
|
return JsonResponse({'message': 'Invalid JSON data.'}, status=400)
|
||
|
|
||
|
def deactivate_expired_accounts():
|
||
|
today = timezone.now().date()
|
||
|
|
||
|
# Deactivate UnaffiliatedStudent accounts
|
||
|
unaffiliated_students_to_deactivate = UnaffiliatedStudent.objects.filter(is_approved='approved', end_date=today)
|
||
|
for student in unaffiliated_students_to_deactivate:
|
||
|
student.is_approved = 'rejected' # Set to 'rejected' to deactivate the account
|
||
|
student.save()
|
||
|
|
||
|
# Deactivate WaitForInstituteStudent accounts
|
||
|
wait_for_institute_students_to_deactivate = WaitForInstituteStudent.objects.filter(is_approved='approved', end_date=today)
|
||
|
for student in wait_for_institute_students_to_deactivate:
|
||
|
student.is_approved = 'rejected' # Set to 'rejected' to deactivate the account
|
||
|
student.save()
|
||
|
|
||
|
|
||
|
def deactivate_accounts_with_pending_payments():
|
||
|
# Deactivate CorporateMember accounts with pending_payment > 0
|
||
|
corporate_members_to_deactivate = CorporateMember.objects.filter(is_approved='approved', pending_payment__gt=0)
|
||
|
for member in corporate_members_to_deactivate:
|
||
|
# Deactivate CorporateUser accounts associated with this Corporate Member
|
||
|
corporate_users_to_deactivate = CorporateUser.objects.filter(is_approved='active', this_user_admin=member)
|
||
|
for user in corporate_users_to_deactivate:
|
||
|
user.is_approved = 'banned' # Set to 'banned' to deactivate the account
|
||
|
user.save()
|
||
|
member.is_approved = 'rejected' # Set to 'rejected' to deactivate the account
|
||
|
member.save()
|
||
|
|
||
|
# Deactivate Institute accounts with pending_payment > 0
|
||
|
institute_members_to_deactivate = InstituteMember.objects.filter(is_approved='approved', pending_payment__gt=0)
|
||
|
for member in institute_members_to_deactivate:
|
||
|
# Deactivate Affiliated Students accounts associated with this Institute Member
|
||
|
affiliated_student_to_deactivate = AffiliatedStudentMember.objects.filter(is_approved='active', institute=member)
|
||
|
for user in affiliated_student_to_deactivate:
|
||
|
user.is_approved = 'rejected' # Set to 'banned' to deactivate the account
|
||
|
user.save()
|
||
|
member.is_approved = 'rejected' # Set to 'rejected' to deactivate the account
|
||
|
member.save()
|
||
|
|
||
|
|
||
|
def send_deactivation_reminder_emails():
|
||
|
today = timezone.now().date()
|
||
|
|
||
|
# Calculate the deactivation dates for each reminder
|
||
|
deactivation_dates = [
|
||
|
today + timedelta(days=3),
|
||
|
today + timedelta(days=15),
|
||
|
today + timedelta(days=30),
|
||
|
]
|
||
|
|
||
|
for deactivation_date in deactivation_dates:
|
||
|
# Deactivate UnaffiliatedStudent accounts
|
||
|
unaffiliated_students_to_remind = UnaffiliatedStudent.objects.filter(
|
||
|
is_approved='approved',
|
||
|
end_date=deactivation_date
|
||
|
)
|
||
|
for student in unaffiliated_students_to_remind:
|
||
|
if deactivation_date == today + timedelta(days=3):
|
||
|
email_code = "IP44" # 3 days prior
|
||
|
elif deactivation_date == today + timedelta(days=15):
|
||
|
email_code = "IP49" # 15 days prior
|
||
|
elif deactivation_date == today + timedelta(days=30):
|
||
|
email_code = "IP54" # 30 days prior
|
||
|
else:
|
||
|
email_code = "IP" # Default email code if none of the conditions match
|
||
|
sendmail(to_email=[student.student_institute_email], email_code=email_code)
|
||
|
|
||
|
# Deactivate WaitForInstituteStudent accounts
|
||
|
wait_for_institute_students_to_remind = WaitForInstituteStudent.objects.filter(
|
||
|
is_approved='approved',
|
||
|
end_date=deactivation_date
|
||
|
)
|
||
|
for student in wait_for_institute_students_to_remind:
|
||
|
if deactivation_date == today + timedelta(days=3):
|
||
|
email_code = "IP45" # 3 days prior
|
||
|
elif deactivation_date == today + timedelta(days=15):
|
||
|
email_code = "IP50" # 15 days prior
|
||
|
elif deactivation_date == today + timedelta(days=30):
|
||
|
email_code = "IP55" # 30 days prior
|
||
|
else:
|
||
|
email_code = "IP" # Default email code if none of the conditions match
|
||
|
sendmail(to_email=[student.student_institute_email], email_code=email_code)
|
||
|
|
||
|
# Deactivate AffiliatedStudent accounts
|
||
|
affiliated_students_to_remind = AffiliatedStudent.objects.filter(
|
||
|
is_approved='approved',
|
||
|
end_date=deactivation_date
|
||
|
)
|
||
|
for student in affiliated_students_to_remind:
|
||
|
if deactivation_date == today + timedelta(days=3):
|
||
|
email_code = "IP43" # 3 days prior
|
||
|
elif deactivation_date == today + timedelta(days=15):
|
||
|
email_code = "IP48" # 15 days prior
|
||
|
elif deactivation_date == today + timedelta(days=30):
|
||
|
email_code = "IP53" # 30 days prior
|
||
|
else:
|
||
|
email_code = "IP" # Default email code if none of the conditions match
|
||
|
sendmail(to_email=[student.student_institute_email], email_code=email_code)
|
||
|
|
||
|
# Deactivate CorporateMember accounts with pending_payment > 0
|
||
|
corporate_members_to_remind = CorporateMember.objects.filter(
|
||
|
is_approved='approved',
|
||
|
pending_payment__gt=0
|
||
|
)
|
||
|
for member in corporate_members_to_remind:
|
||
|
if deactivation_date == today + timedelta(days=3):
|
||
|
email_code = "IP42" # 3 days prior
|
||
|
elif deactivation_date == today + timedelta(days=15):
|
||
|
email_code = "IP47" # 15 days prior
|
||
|
elif deactivation_date == today + timedelta(days=30):
|
||
|
email_code = "IP52" # 30 days prior
|
||
|
else:
|
||
|
email_code = "IP" # Default email code if none of the conditions match
|
||
|
sendmail(to_email=[member.contact_person_email], email_code=email_code)
|
||
|
|
||
|
# Deactivate Institute accounts with pending_payment > 0
|
||
|
institute_members_to_remind = InstituteMember.objects.filter(
|
||
|
is_approved='approved',
|
||
|
pending_payment__gt=0
|
||
|
)
|
||
|
for member in institute_members_to_remind:
|
||
|
if deactivation_date == today + timedelta(days=3):
|
||
|
email_code = "IP41" # 3 days prior
|
||
|
elif deactivation_date == today + timedelta(days=15):
|
||
|
email_code = "IP46" # 15 days prior
|
||
|
elif deactivation_date == today + timedelta(days=30):
|
||
|
email_code = "IP51" # 30 days prior
|
||
|
else:
|
||
|
email_code = "IP" # Default email code if none of the conditions match
|
||
|
sendmail(to_email=[member.institute_email], email_code=email_code)
|
||
|
|
||
|
def IM_Tut(request):
|
||
|
return render(request,"institutional/itutorial.html")
|
||
|
|
||
|
def C_Tut(request):
|
||
|
return render(request,"institutional/ctutorial.html")
|
||
|
|
||
|
def S_Tut(request):
|
||
|
return render(request,"institutional/stutorial.html")
|
||
|
|
||
|
def C_demo(request):
|
||
|
return render(request,"institutional/Corporate_demo.html")
|
||
|
|
||
|
def S_demo(request):
|
||
|
return render(request,"institutional/Student_demo.html")
|
||
|
|
||
|
def IM_demo(request):
|
||
|
return render(request,"institutional/intitution_demo.html")
|
||
|
|
||
|
def after_student_discount1(user_id, amount):
|
||
|
user = User.objects.get(pk=user_id)
|
||
|
print("amount neha:",amount)
|
||
|
payment={}
|
||
|
if UnaffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = UnaffiliatedStudent.objects.get(user=user)
|
||
|
free_credits = user.free_credits
|
||
|
if float(free_credits) > amount:
|
||
|
user.free_credits = float(free_credits) - amount
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = user.free_credits
|
||
|
elif float(free_credits) < amount:
|
||
|
print("in elif")
|
||
|
free_credits = amount - float(free_credits)
|
||
|
user.free_credits = 0.00
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = free_credits
|
||
|
|
||
|
else:
|
||
|
payment["free_credits_student"] = amount
|
||
|
|
||
|
return True,payment
|
||
|
|
||
|
elif WaitForInstituteStudent.objects.filter(user=user).exists():
|
||
|
user = WaitForInstituteStudent.objects.get(user=user)
|
||
|
free_credits = user.free_credits
|
||
|
payment={}
|
||
|
if float(free_credits) > amount:
|
||
|
user.free_credits = float(free_credits) - amount
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = user.free_credits
|
||
|
elif float(free_credits) < amount:
|
||
|
print("in elif")
|
||
|
free_credits = amount - float(free_credits)
|
||
|
user.free_credits = 0.00
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = free_credits
|
||
|
else:
|
||
|
payment["free_credits_student"] = amount
|
||
|
return True,payment
|
||
|
|
||
|
elif AffiliatedStudent.objects.filter(user=user).exists():
|
||
|
user = AffiliatedStudent.objects.get(user=user)
|
||
|
free_credits = user.free_credits
|
||
|
payment={}
|
||
|
if float(free_credits) > amount:
|
||
|
user.free_credits = float(free_credits) - amount
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = user.free_credits
|
||
|
elif float(free_credits) < amount:
|
||
|
print("in elif")
|
||
|
free_credits = amount - float(free_credits)
|
||
|
user.free_credits = 0.00
|
||
|
user.save()
|
||
|
payment["free_credits_student"] = free_credits
|
||
|
else:
|
||
|
payment["free_credits_student"] = amount
|
||
|
return True,payment
|
||
|
else:
|
||
|
return False
|