Spaces:
Sleeping
Sleeping
| from django.http import HttpResponse | |
| from .models import Profile, Department, Event, Ticket, Notifications, Gallery | |
| from django.contrib.auth.models import User | |
| from django.contrib.auth import authenticate, login | |
| import json | |
| import re | |
| import requests | |
| import random | |
| from django.views.decorators.csrf import csrf_exempt | |
| def index(request): | |
| objects = Profile.objects.all().first() | |
| name = objects.user.get_full_name() | |
| profilePic = objects.profilePic | |
| location = objects.location | |
| phone = objects.phone | |
| otp = objects.otp | |
| isVolunteer = objects.isVolunteer | |
| isOrganiser = objects.isOrganiser | |
| isAccountSetup = objects.isAccountSetup | |
| data = { | |
| "name": name, | |
| "profilePic": profilePic, | |
| "location": location, | |
| "phone": phone, | |
| "otp": otp, | |
| "isVolunteer": isVolunteer, | |
| "isOrganiser": isOrganiser, | |
| "isAccountSetup": isAccountSetup | |
| } | |
| return HttpResponse(json.dumps(data), content_type="application/json") | |
| def check(email): | |
| regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b' | |
| if(re.fullmatch(regex, email)): | |
| return True | |
| else: | |
| return False | |
| def loginApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| password = body['password'] | |
| try: | |
| username = User.objects.filter(email=email).first().username | |
| user = authenticate(username=username, password=password) | |
| if user is not None: | |
| profile = Profile.objects.filter(user=user).first() | |
| isVerified = profile.isVerified | |
| isAccountSetup = profile.isAccountSetup | |
| if isVerified == True: | |
| login(request, user) | |
| return HttpResponse(json.dumps({"msg": "Logged in successfully.", "accountSetup": isAccountSetup}), content_type="application/json") | |
| else: | |
| email = user.email | |
| return HttpResponse(json.dumps({"msg": "OTP sent to "+email}), content_type="application/json") | |
| except: | |
| return HttpResponse(json.dumps({"error": "Email or password must be Incorrect."}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error": "Email or password must be Incorrect."}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def registerApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| pass1 = body['password1'] | |
| pass2 = body['password2'] | |
| if not check(email): | |
| return HttpResponse(json.dumps({"error": "Invalid Email."}), content_type="application/json") | |
| elif pass1 != pass2: | |
| return HttpResponse(json.dumps({"error": "Password Does Not Match."}), content_type="application/json") | |
| else: | |
| users = User.objects.filter(email=email).all().count() | |
| if users == 0: | |
| newUser = User.objects.create_user( | |
| username=email, email=email, password=pass1) | |
| newUser.save() | |
| otp = str(random.randint(1000, 9999)) | |
| profileForNewUser = Profile() | |
| profileForNewUser.user = User.objects.filter( | |
| email=email).first() | |
| profileForNewUser.otp = otp | |
| profileForNewUser.events = {"data": []} | |
| profileForNewUser.notification = {"data": []} | |
| profileForNewUser.isAccountSetup = False | |
| profileForNewUser.isVolunteer = False | |
| profileForNewUser.isOrganiser = False | |
| profileForNewUser.isVerified = False | |
| profileForNewUser.save() | |
| # https://script.google.com/macros/s/AKfycbzW-cQR5jK5dWpfdH7yJ0Rb_gR9dC7YMn0VFnQU9ZCzhCx7wXZgbnTwDcFDsLo6Vn_V/exec?email=barotjaivin244@gmail.com&subject=auto&body=auto&otp=1234 | |
| r = requests.get('https://script.google.com/macros/s/AKfycbzW-cQR5jK5dWpfdH7yJ0Rb_gR9dC7YMn0VFnQU9ZCzhCx7wXZgbnTwDcFDsLo6Vn_V/exec?email=' + | |
| email + '&subject=Welcome to Xenesis 2023&body=Hi there&otp='+otp) | |
| return HttpResponse(json.dumps({"msg": "OTP sent to "+email}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error": "There already exist a account with this email."}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def locationSetterApp(request): | |
| if request.method == "POST" and request.session['accountSetup'] == True: | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| location = body['location'] | |
| user = User.objects.filter(email=email).first() | |
| profile = Profile.objects.filter(user=user).first() | |
| profile.location = location | |
| profile.isVerified = True | |
| profile.isAccountSetup = True | |
| profile.save() | |
| request.session['accountSetup'] = False | |
| return HttpResponse(json.dumps({"msg": "New Location has been saved.", "location": location}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def accountSetupApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| name = body['name'] | |
| college = body['college'] | |
| phone = body['phone'] | |
| profilePic = body['profilePic'] | |
| user = User.objects.filter(email=email).first() | |
| user.first_name = name | |
| user.save() | |
| profile = Profile.objects.filter(user=user).first() | |
| profile.college = college | |
| profile.phone = phone | |
| profile.profilePic = profilePic | |
| profile.save() | |
| request.session['accountSetup'] = True | |
| return HttpResponse(json.dumps({"msg": "Account has been setup."}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def resendotpApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| if "passwordRecovery" in body.keys(): | |
| otp = str(random.randint(1000, 9999)) | |
| profile = Profile.objects.filter( | |
| user=User.objects.filter(email=email).first()).first() | |
| profile.otp = otp | |
| profile.save() | |
| r = requests.get('https://script.google.com/macros/s/AKfycbzW-cQR5jK5dWpfdH7yJ0Rb_gR9dC7YMn0VFnQU9ZCzhCx7wXZgbnTwDcFDsLo6Vn_V/exec?email=' +email + '&subject=Welcome to Xenesis 2023&body=Hi there&otp='+otp) | |
| request.session['isPasswordRecovery'] = True | |
| return HttpResponse(json.dumps({"msg": "OTP sent to "+email + " for Password Verification."}), content_type="application/json") | |
| else: | |
| otp = str(random.randint(1000, 9999)) | |
| profile = Profile.objects.filter(user=User.objects.filter(email=email).first()).first() | |
| profile.otp = otp | |
| profile.save() | |
| r = requests.get('https://script.google.com/macros/s/AKfycbzW-cQR5jK5dWpfdH7yJ0Rb_gR9dC7YMn0VFnQU9ZCzhCx7wXZgbnTwDcFDsLo6Vn_V/exec?email=' +email + '&subject=Welcome to Xenesis 2023&body=Hi there&otp='+otp) | |
| return HttpResponse(json.dumps({"msg": "OTP sent to "+email}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def forgotpasswordApp(request): | |
| if request.method == "POST" and request.session['isPasswordRecovery'] == True: | |
| try: | |
| body = json.loads(request.body) | |
| email = body['email'] | |
| password1 = body['password1'] | |
| password2 = body['password2'] | |
| if password1 == password2: | |
| user = User.objects.filter(email=email).first() | |
| user.set_password(password1) | |
| print(email, password1, password2) | |
| request.session['isPasswordRecovery'] = False | |
| return HttpResponse(json.dumps({"msg": "OTP sent to "+email}), content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error": "Passwords doesn't match."}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def otpvalidationApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| userOtp = body['otp'] | |
| email = body['email'] | |
| user = Profile.objects.filter( | |
| user=User.objects.filter(email=email).first()).first() | |
| if userOtp == user.otp: | |
| profile = Profile.objects.filter( | |
| user=User.objects.filter(email=email).first()).first() | |
| profile.isVerified = True | |
| profile.save() | |
| return HttpResponse(json.dumps({"msg": "The user has been verified."}), content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error": "OTP does not match."}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def accountsetupApp(request): | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def homeDataFetcherApp(request): | |
| data = {"department": [],"event":[],"gallery":[]} | |
| departmentArr = Department.objects.all() | |
| for department in departmentArr: | |
| data["department"].append(department.name) | |
| images = Gallery.objects.all() | |
| for image in images: | |
| data["gallery"].append(image.path) | |
| events = Event.objects.filter(department=Department.objects.filter(name="Computer Engineering").first()).order_by('name').all() | |
| eventArr = [] | |
| impEvent = [] | |
| for event in events: | |
| if event.name != "X - Motion Game Mania": | |
| eventArr.append([event.name, event.price, event.description, event.tagline,event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]) | |
| else: | |
| impEvent = [[event.name, event.price, event.description, event.tagline, event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]] | |
| impEvent.extend(eventArr[:10]) | |
| data["event"] = impEvent | |
| return HttpResponse(json.dumps(data), content_type="application/json") | |
| def galleryListApp(request): | |
| images = Gallery.objects.all() | |
| imageArr = [] | |
| for image in images: | |
| imageArr.append(image.path) | |
| return HttpResponse(json.dumps({"data":imageArr}), content_type="application/json") | |
| def eventListApp(request): | |
| events = Event.objects.all() | |
| eventArr = [] | |
| impEvent = [] | |
| for event in events: | |
| if event.name != "X - Motion Game Mania": | |
| eventArr.append([event.name, event.price, event.description, event.tagline,event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]) | |
| else: | |
| impEvent = [[event.name, event.price, event.description, event.tagline, event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]] | |
| impEvent.extend(eventArr[:20]) | |
| departments = Department.objects.all() | |
| departmentArr = [] | |
| for department in departments: | |
| departmentArr.append([department.name,department.abbriviation]) | |
| return HttpResponse(json.dumps({"event":impEvent,"department":departmentArr}), content_type="application/json") | |
| def eventsSearchApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| query = body['query'] | |
| events = Event.objects.filter(name__contains=query).order_by('name').all() | |
| eventArr = [] | |
| impEvent = [] | |
| departmentTempArr = [] | |
| for event in events: | |
| if event.name != "X - Motion Game Mania": | |
| eventArr.append([event.name, event.price, event.description, event.tagline,event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]) | |
| departmentTempArr.append([event.department.name,event.department.abbriviation]) | |
| else: | |
| impEvent = [[event.name, event.price, event.description, event.tagline, event.posterImage, (event.name).replace(" ", "-").replace("---", ":")]] | |
| impEvent.extend(eventArr[:10]) | |
| tempArr = [['Computer Engineering', 'CE']] | |
| tempArr.extend(departmentTempArr) | |
| departmentArr = [] | |
| for i in range(len(impEvent)): | |
| if tempArr[i] not in departmentArr: | |
| departmentArr.append(tempArr[i]) | |
| data = { | |
| "event": impEvent, | |
| "department" : departmentArr | |
| } | |
| return HttpResponse(json.dumps(data), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def eventDetailFetcherApp(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| event = body['event'] | |
| event = Event.objects.filter(name=event).first() | |
| eventArr = [] | |
| eventArr.append(event.name) | |
| eventArr.append(event.price) | |
| eventArr.append(event.description) | |
| eventArr.append(event.posterImage) | |
| eventArr.append((event.rules).split("•")[1:] if event.rules != None and event.rules != "" else []) | |
| eventArr.append(event.round1Title) | |
| eventArr.append((event.round1).split("•")[1:] if event.round1 != None else []) | |
| eventArr.append(event.round2Title) | |
| eventArr.append((event.round2).split("•")[1:] if event.round2 != None else []) | |
| eventArr.append(event.round3Title) | |
| eventArr.append((event.round3).split("•")[1:] if event.round3 != None else []) | |
| eventArr.append(event.round4Title) | |
| eventArr.append((event.round4).split("•")[1:] if event.round4 != None else []) | |
| eventArr.append(event.round5Title) | |
| eventArr.append((event.round5).split("•")[1:] if event.round5 != None else []) | |
| eventArr.append(event.coordinator1.user.first_name) | |
| eventArr.append(event.coordinator2.user.first_name) | |
| return HttpResponse(json.dumps({"data":eventArr}), content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error": "You were not suppose be here."}), content_type="application/json") | |
| def QRScanner(request): | |
| if request.method == "POST": | |
| try: | |
| body = json.loads(request.body) | |
| if "uuid" in body.keys(): | |
| uuid = body['uuid'] | |
| ticket = Ticket.objects.filter(qrCodeData=uuid).first() | |
| if ticket is not None: | |
| if ticket.userCount >0: | |
| count = 1 | |
| if ticket.owner1 != None: | |
| count=count+1 | |
| if ticket.owner2 != None: | |
| count=count+1 | |
| if ticket.owner3 != None: | |
| count=count+1 | |
| if ticket.owner4 != None: | |
| count=count+1 | |
| temp = {} | |
| temp["id"] = ticket.id | |
| temp["profilePic"] = ticket.owner.profilePic | |
| temp["username"] = ticket.owner.user.first_name | |
| temp["email"] = ticket.owner.user.email | |
| if ticket.event.isTeamEvent != True: | |
| temp["price"] = ticket.event.price | |
| else: | |
| temp["price"] = ticket.event.teamPrice | |
| temp["eventName"] = ticket.event.name | |
| temp["isPaid"] = ticket.isPaid | |
| temp["qrCodeData"] = ticket.qrCodeData | |
| temp["isTeamPriceFull"] = ticket.event.isTeamPriceFull | |
| try: | |
| temp["userCount"] = count | |
| if count != 1: | |
| temp["total"] = count*int(ticket.event.price) | |
| except: | |
| temp["userCount"] = 1 | |
| temp["total"] = 0 | |
| return HttpResponse(json.dumps({"data":temp}),content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error":"Ticket Has already been used."}),content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error":"Ticket Does Not Exist."}),content_type="application/json") | |
| elif "ticketId" in body.keys(): | |
| ticketId = body['ticketId'] | |
| ticket = Ticket.objects.filter(id=ticketId).first() | |
| if ticket.userCount >0: | |
| ticket.userCount = ticket.userCount - 1 | |
| ticket.save() | |
| return HttpResponse(json.dumps({"msg":"Ticket Has Been Confirmed."}),content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error":"Ticket Has already been used."}),content_type="application/json") | |
| else: | |
| return HttpResponse(json.dumps({"error":"Server Didnot Recieve QR code. Please Rescan the code."}),content_type="application/json") | |
| except Exception as error: | |
| return HttpResponse(json.dumps({"error": error}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here"}),content_type="application/json") | |