def IssueCoupon(request): for i in range(len(request.data['issued_coupons'])): coupon = Coupon.objects.get(id=request.data['issued_coupons'][i]) serializer = CouponSerializer(instance=coupon, data=request.data) if serializer.is_valid(): serializer.save(isIssued=True) return Response({"message": "successfully issued"})
def EnrollCourseByPayment(request, pk, upk): course = Course.objects.get(id=pk) student = StudentProfile.objects.get(user_id=upk) print("before before") enrollment = Enrollment.objects.filter(student=student, course=course).first() print("before running") if not enrollment: print("running") c = Coupon.objects.create(course=course, coupon_key="", isValid=False, isIssued=True) print(c.id) serializer = CouponSerializer(instance=c, data=request.data) if serializer.is_valid(): coupon = str(c.id) + ":" + str(c.course.id) coupon_key = hashlib.shake_256(coupon.encode()).hexdigest(5) serializer.save(coupon_key=coupon_key) enroll = Enrollment(course=course, student=student, enroll_key=coupon_key, is_payment=True) enroll_serializer = CourseEnrollSerializer(enroll, data=request.data) if enroll_serializer.is_valid(): enroll_serializer.save() return Response(enroll_serializer.data) return Response(enroll_serializer.errors) return Response(serializer.errors) else: return Response({'message': 'You have already enrolled'}, status=403)
def EnrollCourse(request, pk, upk): course = Course.objects.get(id=pk) student = StudentProfile.objects.get(user_id=upk) couponList = Coupon.objects.filter(course=course) for c in couponList: if str(request.data['coupon_key']) == str(c.coupon_key): enroll = Enrollment(course=course, student=student, enroll_key=request.data['coupon_key']) condition = c.isValid == True and c.isIssued == True if request.method == "POST": if condition: e = Enrollment.objects.filter(course=course, student=student).first() if not e: serializer = CourseEnrollSerializer(enroll, data=request.data) if serializer.is_valid(): serializer.save() couponSerializer = CouponSerializer( instance=c, data=request.data) if couponSerializer.is_valid(): couponSerializer.save(isValid=False) return Response(serializer.data) return Response(serializer.errors, status=403) return Response( { "message": "You have already enrolled this course..." }, status=403) return Response({"message": "Coupon is not valid"}, status=403) return Response({"message": "coupon is not found"}, status=404)
def IssuedCoupon(request, pk): course = Course.objects.get(id=pk) couponList = Coupon.objects.filter(isValid=True, isIssued=True, course=course) serializer = CouponSerializer(couponList, many=True) return Response(serializer.data)
def CouponGenerator(request, count, pk): course = Course.objects.filter(id=pk).first() try: Coupon.objects.bulk_create( [Coupon(course=course, coupon_key="") for __ in range(count)]) couponL = Coupon.objects.filter(coupon_key="") for c in list(couponL): serializer = CouponSerializer(instance=c, data=request.data) if serializer.is_valid(): coupon = str(c.id) + ":" + str(c.course.id) coupon_key = hashlib.shake_256(coupon.encode()).hexdigest(5) serializer.save(coupon_key=coupon_key) return Response({"message": "successfully created"}) except Error: return Response({"message": "Unable to create the bulk of coupons"}) else: return Response({"message": "Something went wrong"})
def AvailableCoupon(request, pk): course = Course.objects.get(id=pk) couponList = Coupon.objects.filter(isValid=True, isIssued=False, course=course) # for i in range(len(couponList)): # coupon = str(couponList[i].id)+":"+str(couponList[i].course.id) # couponList[i].coupon_key = hashlib.shake_256(coupon.encode()).hexdigest(5) serializer = CouponSerializer(couponList, many=True) return Response(serializer.data)