def UnSign(request): if request.is_ajax(): if request.user.is_authenticated(): if request.method == "POST": try: Enrollments.objects.filter(participant=request.user.id).filter( course_details=parse_income_body(request.body)).delete() course = Courses.objects.get(pk=parse_income_body(request.body)) course.participants_number = (F('participants_number') - 1) course.save() return JsonResponse({'status': 'user_unsigned'}, safe=False) except: traceback.print_exc(file=sys.stdout) return render(request, "ajax/terminy_zapisow.html", {})
def DoSignUp(request): if request.is_ajax(): if request.user.is_authenticated(): if request.method == "POST": # Pobieramy dane od klienta, PK wybranego kursu parsed_income = parse_income_body(request.body) try: if Enrollments.objects.filter(participant=request.user.id).filter( course_details=parsed_income).exists(): return JsonResponse({'status': 'already_signed'}, safe=False) elif Enrollments.objects.filter(course_details=parsed_income).exists(): job = Enrollments.objects.filter(course_details=parsed_income).get() job.participant.add(User.objects.filter(pk=request.user.id).get()) else: category = Courses.objects.get(pk=parsed_income) job = Enrollments(course_details=category) job.save() job.participant.add(User.objects.filter(pk=request.user.id).get()) # Inkrementacja liczby zapisanych course = Courses.objects.get(pk=parsed_income) course.participants_number = (F('participants_number') + 1) course.save() subject = "OSK, Zapis na kurs" message = "Zapisałeś/aś się na spotkanie organizacyjne kursu z kategorii {0} , które odbędzie się {1} pod adresem {2}.".format( course.category, course.course_date, course.address) from_email = "*****@*****.**" send_mail(subject, message, from_email, [request.user.email]) return JsonResponse({'status': 'user_signed'}, safe=False) except: traceback.print_exc(file=sys.stdout) return render(request, "ajax/terminy_zapisow.html", {})
def Instructors(request): if request.is_ajax(): if request.method == "POST": if request.user.is_authenticated(): parsed_income = parse_income_body(request.body) try: work_plan = WorkPlan.objects.filter(instructor=parsed_income).order_by("slot_type").values( "status", "slot_type") work_plan = ValuesQuerySetToDict(work_plan) return JsonResponse(work_plan, safe=False) except: traceback.print_exc(file=sys.stdout) instructors = ValuesQuerySetToDict( User.objects.filter(Q(myuser__userType="Instruktor") | Q(myuser__userType="Prezes")).all()) return render(request, "ajax/instructors.html", {"instructors": instructors})
def SignUpTerminy(request): if request.is_ajax(): if request.user.is_authenticated(): if request.method == "POST": parsed_income = parse_income_body(request.body) if (len(parsed_income) > 2): parsed_income = parsed_income.replace("%2B", "+") try: available_courses = Courses.objects.filter(category__category_type=parsed_income).values( "pk", "category__category_type", "course_date", "participants_number", "address__city", "address__street", "address__place") available_courses = ValuesQuerySetToDict(available_courses) return JsonResponse(available_courses, safe=False) except: traceback.print_exc(file=sys.stdout) courses = ValuesQuerySetToDict(Category.objects.all()) return render(request, "ajax/terminy_zapisow.html", {"courses": courses})
def ManPlaceCheck(request): if request.is_ajax(): if request.user.is_authenticated(): if request.user.myuser.is_instructor() or request.user.myuser.is_boss(): if request.method == "POST": parsed_income = parse_income_body(request.body) if Maneuvre_ground.is_place_free(Maneuvre_ground.objects.get(pk=parsed_income)): status = "Zajęty" Maneuvre_ground.objects.filter(pk=parsed_income).update( taken_by=request.user.first_name + " " + request.user.last_name) Maneuvre_ground.objects.filter(pk=parsed_income).update( state_changed=datetime.now().strftime("%H:%M %Y-%m-%d")) else: who = Maneuvre_ground.objects.filter(pk=parsed_income).values("taken_by") who = ValuesQuerySetToDict(who) combined_cred = request.user.first_name + " " + request.user.last_name if who[0]["taken_by"] == combined_cred: status = "Wolny" Maneuvre_ground.objects.filter(pk=parsed_income).update(state_changed="", taken_by="") else: return JsonResponse({"status": "NotYou"}, safe=False) Maneuvre_ground.objects.filter(pk=parsed_income).update(is_free=status) data = Maneuvre_ground.objects.order_by('pk').values('pk', "category__category_type", "is_free", "state_changed", "taken_by", "address__city", "address__street", "address__place") data_dict = ValuesQuerySetToDict(data) return JsonResponse(data_dict, safe=False) elif request.method == "GET": try: data = Maneuvre_ground.objects.order_by('pk').values('pk', "category__category_type", "is_free", "state_changed", "taken_by", "address__city", "address__street", "address__place") data_dict = ValuesQuerySetToDict(data) except Exception: traceback.print_exc(file=sys.stdout) return JsonResponse(data_dict, safe=False) return render(request, "ajax/maneuvering_place.html")
def statistics(request): if request.user.is_authenticated(): if request.user.myuser.is_boss(): if request.is_ajax(): if request.method == "POST": parsed_income = parse_income_body(request.body) try: selected_instructor = User.objects.filter(pk=parsed_income).values( 'pk', "first_name", 'workplan__status').annotate( work_hours=Count('workplan__status')).order_by('work_hours') selected_instructor = ValuesQuerySetToDict(selected_instructor) return JsonResponse(selected_instructor, safe=False) except: traceback.print_exc(file=sys.stdout) instructors = User.objects.filter(Q(myuser__userType="Instruktor") | Q(myuser__userType="Prezes")).all() instructors = ValuesQuerySetToDict(instructors) coursants = len(User.objects.filter(myuser__userType="Kursant").all()) coursants_categories = ValuesQuerySetToDict( Category.objects.filter(myuser__userType="Kursant").values("category_type").annotate( category_stats=Count('category_type'))) male = len(User.objects.filter(myuser__userType="Kursant", myuser__sex="M").all()) male_data = ValuesQuerySetToDict( Category.objects.filter(myuser__userType="Kursant", myuser__sex="M").values("category_type").annotate( category_stats=Count('category_type'))) female = len(User.objects.filter(myuser__userType="Kursant", myuser__sex="F").all()) female_data = ValuesQuerySetToDict( Category.objects.filter(myuser__userType="Kursant", myuser__sex="F").values("category_type").annotate( category_stats=Count('category_type'))) return render(request, "statistics/statistics.html", {"instructors": instructors, "coursant": coursants, "coursants_categories": coursants_categories, "male": male, "male_data": male_data, "female": female, "female_data": female_data})