def active_resend(request): data = prepare_template_data(request) note = _( "Please activate your account. If you want to re-send an activation email, please click following button" ) if request.POST: user = request.user user_verification, created = UserVerification.objects.get_or_create( user_email=user.username) context = {} context['user'] = user domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain user_verification, created = UserVerification.objects.get_or_create( user_email=user.username) user_verification.activation_key = create_verification_link(user) user_verification.save() context['activation_key'] = user_verification.activation_key try: send_email("userprofile/messages/send_confirm_subject.html", "userprofile/messages/send_confirm.html", "userprofile/messages/send_confirm.text", context, settings.EMAIL_FROM_ADDRESS, [user.username]) note = _( "Your activation link has been sent to your email address") except Exception as e: note = e.message data['note'] = note return render_to_response("userprofile/activate_resend.html", data, context_instance=RequestContext(request))
def index(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) content = None data['state'] = "" if not request.user.is_authenticated(): data['alerttype'] = "alert-info" data['state'] = _( "If you already have an account, please login from top right hand side of the page" ) if request.POST: username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: login(request, user) log.info("%s user successfuly logged in" % (request.user), extra=d) return HttpResponseRedirect('/') else: data['state'] = _("Login Failed!") data['alerttype'] = "alert-danger" try: if not request.GET.get('menu_id'): menu_id = Menu.objects.all().order_by('order').first() else: menu_id = request.GET.get('menu_id') content = Content.objects.get(menu=menu_id) except ObjectDoesNotExist: content = None log.error("%s entered content not found " % (request.user), extra=d) except Exception as e: log.error("%s error occured %s " % (request.user, e.message), extra=d) data['content'] = content return render_to_response('dashboard.html', data)
def statistic(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} try: data = prepare_template_data(request) record_data = TrainessCourseRecord.objects.filter().values( 'course', 'preference_order').annotate(Count('preference_order')).order_by( 'course', 'preference_order') statistic_by_course = {} for key, group in itertools.groupby(record_data, lambda item: item["course"]): statistic_by_course[Course.objects.get(pk=key)] = { item['preference_order']: item['preference_order__count'] for item in group } data['statistic_by_course'] = statistic_by_course statistic_by_gender = UserProfile.objects.filter( is_student=True).values('gender').annotate(Count('user')) data['statistic_by_gender'] = statistic_by_gender statistic_by_university = UserProfile.objects.filter( is_student=True).values('university').annotate(Count('university')) data['statistic_by_university'] = statistic_by_university total_profile = len(UserProfile.objects.filter(is_student=True)) total_preference = len(TrainessCourseRecord.objects.all()) data['statistic_by_totalsize'] = { 'Toplam Profil(Kişi)': total_profile, 'Toplam Tercih': total_preference } except Exception as e: log.error(e.message, extra=d) return render_to_response("training/statistic.html", data)
def testbeforeapply(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) data[ "note"] = "Kurs tercihi yapabilmek için aşağıdaki sorulara doğru yanıt vermelisiniz!" try: uprof = UserProfile.objects.get(user=request.user) if not uprof.userpassedtest: questions = Question.objects.filter(active=True).order_by('no') if questions: data['questions'] = questions if request.POST: userpasstest = True for q in questions: uansw = request.POST[str(q.no)][0] if q.rightanswer.id != int(uansw): data["note"] = "Tüm sorulara doğru cevap veriniz" userpasstest = False if userpasstest: uprof.userpassedtest = True uprof.save() return render_to_response('abkayit/faqtest.html', data) else: uprof.userpassedtest = True uprof.save() return redirect("applytocourse") except ObjectDoesNotExist: return redirect('createprofile')
def active_resend(request): data = prepare_template_data(request) note = _("Please activate your account. If you want to re-send an activation email, please click following button") if request.POST: user = request.user user_verification, created = UserVerification.objects.get_or_create(user_email=user.username) context={} context['user'] = user domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain user_verification, created = UserVerification.objects.get_or_create(user_email=user.username) user_verification.activation_key = create_verification_link(user) user_verification.save() context['activation_key'] = user_verification.activation_key try: send_email("userprofile/messages/send_confirm_subject.html", "userprofile/messages/send_confirm.html", "userprofile/messages/send_confirm.text", context, settings.EMAIL_FROM_ADDRESS, [user.username]) note = _("Your activation link has been sent to your email address") except Exception as e: note = e.message data['note'] = note return render_to_response("userprofile/activate_resend.html", data, context_instance=RequestContext(request))
def password_reset_key_done(request, key=None): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("Change your password") form = ChangePasswordForm() note = _("Change your password") try: user_verification = UserVerification.objects.get(password_reset_key=key) user = User.objects.get(username=user_verification.user_email) user.is_authenticated = False user.save() request.user = user except Exception as e: note = _("""Password reset operation failed""") log.error(e.message, extra=d) if request.method == 'POST': form = ChangePasswordForm(request.POST) if form.is_valid(): try: request.user.set_password(form.cleaned_data['password']) request.user.save() note = _("""Your password has been changed""") form = None redirect("index") except Exception as e: note = _("""Your password couldn't be changed""") log.error(e.message, extra=d) data['changepasswordform'] = form data['note'] = note data['user'] = request.user return render_to_response("userprofile/change_password.html", data, context_instance=RequestContext(request))
def allcourseprefview(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) data['datalist'] = TrainessCourseRecord.objects.all() return render_to_response("training/allcourseprefs.html", data, context_instance=RequestContext(request))
def save_note(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) jsondata={} if request.method == 'POST': trainess_username = request.POST['trainess_username'] trainess_score = request.POST['score'] t_note = request.POST['note'] if trainess_username and trainess_username != '': try: userprofile = UserProfile.objects.get(user__username=trainess_username) userprofile.score = trainess_score userprofile.save() trainess_note, created = TrainessNote.objects.get_or_create(note_to_profile=userprofile, site=data['site']) trainess_note.note = t_note trainess_note.note_from_profile = request.user.userprofile trainess_note.note_date = datetime.now() trainess_note.save() jsondata['status'] = "0" jsondata['message'] = "Durum güncellendi!" except Exception as e: jsondata['status'] = "-1" jsondata['message'] = "Durum güncelleme sırasında hata olustu" log.error(e.message, extra=d) else: jsondata['status'] = "-1" jsondata['message'] = "Hata: Kullanıcı adı boş olamaz!" log.error("username bos olamaz", extra=d) return HttpResponse(json.dumps(jsondata), content_type="application/json")
def subscribe(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) if not request.user.is_authenticated(): data['buttonname1'] = "register" data['buttonname2'] = "cancel" data['buttonname1_value'] = _("Register") data['buttonname2_value'] = _("Cancel") note = _("Register to system to participate in courses before the conferences") form = CreateUserForm() if 'register' in request.POST: form = CreateUserForm(request.POST) if form.is_valid(): try: user = form.save(commit=True) user.set_password(user.password) try: user.save() note = _("Your account has been created. Please check your email for activation link") except Exception as e: note = e.message form = None except Exception as e: note = _("Your account couldn't create. Please try again!") log.error(e.message, extra=d) elif 'cancel' in request.POST: return redirect("subscribe") data['createuserform'] = form data['note']=note return render_to_response("userprofile/subscription.html", data, context_instance=RequestContext(request)) else: return redirect("controlpanel")
def statistic(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} try: data=prepare_template_data(request) record_data = TrainessCourseRecord.objects.filter().values( 'course','preference_order').annotate( Count('preference_order')).order_by( 'course','preference_order') statistic_by_course = {} for key, group in itertools.groupby(record_data, lambda item: item["course"]): statistic_by_course[Course.objects.get(pk=key)] = {item['preference_order']:item['preference_order__count'] for item in group} data['statistic_by_course'] = statistic_by_course statistic_by_gender = UserProfile.objects.filter(is_student=True).values('gender').annotate(Count('user')) data['statistic_by_gender'] = statistic_by_gender statistic_by_university = UserProfile.objects.filter(is_student=True).values('university').annotate(Count('university')) data['statistic_by_university'] = statistic_by_university total_profile = len(UserProfile.objects.filter(is_student=True)) total_preference = len(TrainessCourseRecord.objects.all()) data['statistic_by_totalsize'] = {'Toplam Profil(Kişi)': total_profile, 'Toplam Tercih': total_preference} except Exception as e: log.error(e.message, extra=d) return render_to_response("training/statistic.html", data)
def index(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user':request.user} data = prepare_template_data(request) content = None data['state']="" if not request.user.is_authenticated(): data['alerttype'] = "alert-info" data['state']=_("If you already have an account, please login from top right hand side of the page") if request.POST: username=request.POST['username'] password=request.POST['password'] user = authenticate(username=username,password=password) if user is not None: login(request,user) log.info("%s user successfuly logged in" % (request.user), extra=d) return HttpResponseRedirect('/') else: data['state']=_("Login Failed!") data['alerttype'] = "alert-danger" try: if not request.GET.get('menu_id'): menu_id = Menu.objects.all().order_by('order').first() else: menu_id = request.GET.get('menu_id') content = Content.objects.get(menu=menu_id) except ObjectDoesNotExist: content = None log.error("%s entered content not found " % (request.user), extra=d) except Exception as e: log.error("%s error occured %s " % (request.user, e.message), extra=d) data['content'] = content return render_to_response('dashboard.html', data)
def password_reset_key_done(request, key=None): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("Change your password") form = ChangePasswordForm() note = _("Change your password") try: user_verification = UserVerification.objects.get( password_reset_key=key) user = User.objects.get(username=user_verification.user_email) user.is_authenticated = False user.save() request.user = user except Exception as e: note = _("""Password reset operation failed""") log.error(e.message, extra=d) if request.method == 'POST': form = ChangePasswordForm(request.POST) if form.is_valid(): try: request.user.set_password(form.cleaned_data['password']) request.user.save() note = _("""Your password has been changed""") form = None redirect("index") except Exception as e: note = _("""Your password couldn't be changed""") log.error(e.message, extra=d) data['changepasswordform'] = form data['note'] = note data['user'] = request.user return render_to_response("userprofile/change_password.html", data, context_instance=RequestContext(request))
def testbeforeapply(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user':request.user} data = prepare_template_data(request) data["note"] = "Kurs tercihi yapabilmek için aşağıdaki sorulara doğru yanıt vermelisiniz!" try: uprof = UserProfile.objects.get(user=request.user) if not uprof.userpassedtest: questions = Question.objects.filter(active=True).order_by('no') if questions: data['questions']=questions if request.POST: userpasstest = True for q in questions: uansw=request.POST[str(q.no)][0] if q.rightanswer.id != int(uansw): data["note"]="Tüm sorulara doğru cevap veriniz" userpasstest = False if userpasstest: uprof.userpassedtest=True uprof.save() return render_to_response('abkayit/faqtest.html',data) else: uprof.userpassedtest=True uprof.save() return redirect("applytocourse") except ObjectDoesNotExist: return redirect('createprofile')
def submitandregister(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} data = prepare_template_data(request) userops = UserProfileOPS() # TODO:site ve pages'e bi care bulmak lazim site = Site.objects.get(is_active=True) pages = Menu.objects.filter(site=site.pk).order_by("order") note = "Kurs onerisi olustur:" try: curuserprof = UserProfile.objects.get(user=request.user) except: log.info("%s kullanici profili bulunamadi" % (request.user), extra=d) curinstprofform = InstProfileForm(prefix="cur") forms = {} for x in xrange(4): forms[x] = [CreateInstForm(prefix=str(x) + "inst"), InstProfileForm(prefix=str(x) + "instprof")] form = CreateCourseForm() if "submit" in request.POST: allf = [] forms = {} for x in xrange(4): if str(x) + "inst-email" in request.POST: forms[x] = [ CreateInstForm(request.POST, prefix=str(x) + "inst"), InstProfileForm(request.POST, prefix=str(x) + "instprof"), ] allf.append(forms[x][0].is_valid()) allf.append(forms[x][1].is_valid()) else: pass curinstprofform = InstProfileForm(request.POST, prefix="cur") form = CreateCourseForm(request.POST) if all([curinstprofform.is_valid(), form.is_valid()]) and all(allf): curinst = curinstprofform.save(commit=False) curinst.user = request.user curinst.save() course = form.save(commit=False) if "fulltext" in request.FILES: course.fulltext = request.FILES["fulltext"] course.save() for key, f in forms.items(): instx = f[0].save(commit=False) passwd = userops.generatenewpass(8) instx.set_password(passwd) instx.save() instxprof = f[1].save(commit=False) instxprof.user = instx instxprof.save() course.trainer.add(instxprof) course.trainer.add(curinst) course.save() note = "Egitim oneriniz basari ile alindi." else: note = "Olusturulamadi" return render_to_response( "training/submitandregister.html", {"site": site, "pages": pages, "note": note, "form": form, "curinstprofform": curinstprofform, "forms": forms}, context_instance=RequestContext(request), )
def show_course(request, course_id): try: data = prepare_template_data(request) course = Course.objects.get(id=course_id) data['course'] = course return render_to_response('training/course_detail.html', data) except ObjectDoesNotExist: return HttpResponse("Kurs Bulunamadi")
def show_course(request, course_id): try: data = prepare_template_data(request) course = Course.objects.get(id=course_id) data["course"] = course return render_to_response("training/course_detail.html", data) except ObjectDoesNotExist: return HttpResponse("Kurs Bulunamadi")
def get_all_trainers_view(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) try: trainers = UserProfile.objects.filter(is_instructor=True) data['trainers'] = trainers except Exception as e: log.error(e.message) return render_to_response("userprofile/alltrainess.html", data, context_instance=RequestContext(request))
def getaccomodations(request,usertype,gender): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) jsondata={} accomodations = Accommodation.objects.filter( usertype__in=[usertype,'hepsi']).filter( gender__in=[gender,'H']).filter( site=data['site']).values_list('id','name').order_by('name') for a in accomodations: jsondata[a[0]]=a[1] return HttpResponse(json.dumps(jsondata), content_type="application/json")
def getaccomodations(request, usertype, gender): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) jsondata = {} accomodations = Accommodation.objects.filter( usertype__in=[usertype, 'hepsi']).filter( gender__in=[gender, 'H']).filter(site=data['site']).values_list( 'id', 'name').order_by('name') for a in accomodations: jsondata[a[0]] = a[1] return HttpResponse(json.dumps(jsondata), content_type="application/json")
def control_panel(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("You can accept trainees") now = datetime.date(datetime.now()) try: uprofile = UserProfile.objects.get(user=request.user).is_student log.info(uprofile, extra = d) if not uprofile: if now < data['site'].aproval_start_date: data['note'] = _("You can choose courses in future") data['closed'] = "1" return render_to_response("training/controlpanel.html", data,context_instance=RequestContext(request)) elif now > data['site'].aproval_end_date: data['note'] = _("The course choosing process is closed") data['closed'] = "1" return render_to_response("training/controlpanel.html", data,context_instance=RequestContext(request)) courses = Course.objects.filter(approved=True).filter(trainer__user=request.user) log.info(courses, extra = d) if courses: trainess = {} for course in courses: trainess[course] = {} trainess[course]['trainess1'] = TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=1) trainess[course]['trainess2'] = TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=2) trainess[course]['trainess3'] = TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=3) data['trainess'] = trainess log.info(data, extra = d) if request.POST: log.info(request.POST, extra=d) for course in courses: try: course.trainess.clear() allprefs=TrainessCourseRecord.objects.filter(course=course.pk) approvedr = request.POST.getlist('students' + str(course.pk)) for p in allprefs: if str(p.pk) not in approvedr: p.approved=False elif str(p.pk) in approvedr: p.approved=True course.trainess.add(p.trainess) p.save() course.save() note = "Seçimleriniz başarılı bir şekilde kaydedildi." except Exception: note = "Beklenmedik bir hata oluştu!" data['note'] = note return render_to_response("training/controlpanel.html", data,context_instance=RequestContext(request)) else: return redirect("applytocourse") except UserProfile.DoesNotExist: return redirect("createprofile")
def alluserview(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) userList=[] alluser=UserProfile.objects.all() if alluser: for u in alluser: usr={} usr["usertype"] = "instructor" if u.is_instructor else "student" usr["firstname"] = u.user.first_name usr["lastname"] = u.user.last_name usr["tcino"] = u.tckimlikno if u.tckimlikno != '' else u.ykimlikno usr["coursename"] = Course.objects.filter(trainer=u).values_list('name',flat=True) usr["accomodation"] = UserAccomodationPref.objects.filter(user=u) userList.append(usr) data["datalist"]=userList return render_to_response("userprofile/allusers.html",data,context_instance=RequestContext(request))
def instructor_information(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} if request.user.userprofile == None: log.error("Kullanıcı Profili Bulunamadı", extra=d) return redirect("createprofile") data = prepare_template_data(request) note = "" if not request.user.userprofile.is_instructor: note = _("You don't have permission to access to here") else: note = _( "Please enter your transformation, arrival date, departure date informations" ) instructor_information = None try: instructor_information = InstructorInformation.objects.get( user=request.user.userprofile) form = InstructorInformationForm(instance=instructor_information) except Exception as e: log.debug( "Egitmen bilgileri bulunamadi, yeni bilgiler olusturulmak icin form acilacak", extra=d) log.error(e.message, extra=d) form = InstructorInformationForm() if request.POST: if instructor_information: form = InstructorInformationForm( request.POST, instance=instructor_information) else: form = InstructorInformationForm(request.POST) if form.is_valid(): try: form.instance.user = request.user.userprofile instructor_info = form.save(commit=True) instructor_info.user = request.user.userprofile instructor_info.save() note = _("Your informations saved successfully") except Exception as e: note = _("Error occured during save your informations") log.error(e.message, extra=d) data['form'] = form data['note'] = note return render_to_response("userprofile/instructor_information.html", data, context_instance=RequestContext(request))
def password_reset_key(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("Please enter your registered email") if request.method == 'POST': email = request.POST['email'] if email and email != "": try: user = User.objects.get(username=request.POST['email']) user_verification, created = UserVerification.objects.get_or_create( user_email=user.username) user_verification.password_reset_key = create_verification_link( user) user_verification.save() context = {} context['user'] = user context[ 'activation_key'] = user_verification.password_reset_key domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain send_email( "userprofile/messages/send_reset_password_key_subject.html", "userprofile/messages/send_reset_password_key.html", "userprofile/messages/send_reset_password_key.text", context, settings.EMAIL_FROM_ADDRESS, [user.username]) note = _("""Password reset key has been sent""") except ObjectDoesNotExist: note = _( """There isn't any user record with this e-mail on the system""" ) log.error(note, extra=d) except Exception as e: note = _("""Password reset operation failed""") log.error(note, extra=d) log.error(e.message, extra=d) else: note = _("""Email field can not be empty""") log.error(note, extra=d) data['note'] = note return render_to_response("userprofile/change_password_key_request.html", data, context_instance=RequestContext(request))
def cancel_all_preference(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} if request.POST: try: data = prepare_template_data(request) userprofile = UserProfile.objects.get(user=request.user) trainess_course_records = TrainessCourseRecord.objects.filter(trainess=userprofile) context = {} for tcr in trainess_course_records: try: # x. tercih onaylama donemi baslangic zamani ile x. tercih teyit etme donemi arasinda ise mail atsin. now_for_approve = timezone.now() preference_order = tcr.preference_order check_start = ApprovalDate.objects.get( site=data["site"], preference_order=preference_order, for_instructor=True ).start_date check_end = ApprovalDate.objects.get( site=data["site"], preference_order=preference_order, for_trainess=True ).end_date if (now_for_approve > check_start and now_for_approve < check_end) or ( tcr.trainess_approved == True ): context["trainess_course_record"] = tcr send_email( "training/messages/notice_for_canceled_courses_subject.html", "training/messages/notice_for_canceled_courses.html", "training/messages/notice_for_canceled_courses.text", context, EMAIL_FROM_ADDRESS, tcr.course.trainer.all().values_list("user__username", flat=True), ) except Exception as e: log.error(e.message, extra=d) trainess_course_records.delete() message = "Tüm Başvurularınız Silindi" log.debug(message, extra=d) except ObjectDoesNotExist: message = "Başvurularınız Silinirken Hata Oluştu" except Exception as e: message = "Başvurularınız Silinirken Hata Oluştu" log.error(e.message, extra=d) return HttpResponse(json.dumps({"status": "-1", "message": message}), content_type="application/json") message = "Başvurularınız Silinirken Hata Oluştu" return HttpResponse(json.dumps({"status": "-1", "message": message}), content_type="application/json")
def password_reset(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) form = ChangePasswordForm() note = _("Change your password") if request.method == 'POST': form = ChangePasswordForm(request.POST) if form.is_valid(): try: request.user.set_password(form.cleaned_data['password']) request.user.save() backend_login(request, request.user) note = _("""Your password has been changed""") form = None except Exception as e: note = _("""Your password couldn't be changed""") log.error(e.message, extra=d) data['changepasswordform'] = form data['note'] = note return render_to_response("userprofile/change_password.html", data, context_instance=RequestContext(request))
def alluserview(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) userList = [] alluser = UserProfile.objects.all() if alluser: for u in alluser: usr = {} usr["usertype"] = "instructor" if u.is_instructor else "student" usr["firstname"] = u.user.first_name usr["lastname"] = u.user.last_name usr["tcino"] = u.tckimlikno if u.tckimlikno != '' else u.ykimlikno usr["coursename"] = Course.objects.filter(trainer=u).values_list( 'name', flat=True) usr["accomodation"] = UserAccomodationPref.objects.filter(user=u) userList.append(usr) data["datalist"] = userList return render_to_response("userprofile/allusers.html", data, context_instance=RequestContext(request))
def subscribe(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) if not request.user.is_authenticated(): data['buttonname1'] = "register" data['buttonname2'] = "cancel" data['buttonname1_value'] = _("Register") data['buttonname2_value'] = _("Cancel") note = _( "Register to system to participate in courses before the conferences" ) form = CreateUserForm() if 'register' in request.POST: form = CreateUserForm(request.POST) if form.is_valid(): try: user = form.save(commit=True) user.set_password(user.password) try: user.save() note = _( "Your account has been created. Please check your email for activation link" ) except Exception as e: note = e.message form = None except Exception as e: note = _("Your account couldn't create. Please try again!") log.error(e.message, extra=d) elif 'cancel' in request.POST: return redirect("subscribe") data['createuserform'] = form data['note'] = note return render_to_response("userprofile/subscription.html", data, context_instance=RequestContext(request)) else: return redirect("controlpanel")
def password_reset_key(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("Please enter your registered email") if request.method == 'POST': email = request.POST['email'] if email and email != "": try: user = User.objects.get(username=request.POST['email']) user_verification, created = UserVerification.objects.get_or_create(user_email=user.username) user_verification.password_reset_key = create_verification_link(user) user_verification.save() context = {} context['user'] = user context['activation_key'] = user_verification.password_reset_key domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain send_email("userprofile/messages/send_reset_password_key_subject.html", "userprofile/messages/send_reset_password_key.html", "userprofile/messages/send_reset_password_key.text", context, settings.EMAIL_FROM_ADDRESS, [user.username]) note = _("""Password reset key has been sent""") except ObjectDoesNotExist: note=_("""There isn't any user record with this e-mail on the system""") log.error(note, extra=d) except Exception as e: note = _("""Password reset operation failed""") log.error(note, extra=d) log.error(e.message, extra=d) else: note = _("""Email field can not be empty""") log.error(note, extra=d) data['note'] = note return render_to_response("userprofile/change_password_key_request.html", data, context_instance=RequestContext(request))
def instructor_information(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} if request.user.userprofile == None: log.error("Kullanıcı Profili Bulunamadı", extra=d) return redirect("createprofile") data = prepare_template_data(request) note = "" if not request.user.userprofile.is_instructor: note = _("You don't have permission to access to here") else: note = _("Please enter your transformation, arrival date, departure date informations") instructor_information = None try: instructor_information = InstructorInformation.objects.get(user=request.user.userprofile) form = InstructorInformationForm(instance = instructor_information) except Exception as e: log.debug("Egitmen bilgileri bulunamadi, yeni bilgiler olusturulmak icin form acilacak", extra=d) log.error(e.message, extra=d) form = InstructorInformationForm() if request.POST: if instructor_information: form = InstructorInformationForm(request.POST, instance=instructor_information) else: form = InstructorInformationForm(request.POST) if form.is_valid(): try: form.instance.user = request.user.userprofile instructor_info = form.save(commit=True) instructor_info.user = request.user.userprofile instructor_info.save() note = _("Your informations saved successfully") except Exception as e: note = _("Error occured during save your informations") log.error(e.message, extra=d) data['form'] = form data['note'] = note return render_to_response("userprofile/instructor_information.html",data,context_instance=RequestContext(request))
def createprofile(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) log.info("create profile form",extra=d) user=User.objects.get(username=request.user) data['update_user_form']=UpdateUserForm(instance=user) data['form']=None action="" json_response={} try: user_profile = UserProfile.objects.get(user=user) note = _("You can update your profile below") action="update" data['form']= StuProfileForm(instance=user_profile) if not user_profile.is_instructor: log.debug("egitmen olmayan kullanici icin isleme devam ediliyor", extra=d) data['accomodations'] = Accommodation.objects.filter( usertype__in=['stu','hepsi']).filter( gender__in=[user_profile.gender,'H']).filter( site=data['site']).order_by('name') data['accomodation_records'] = UserAccomodationPref.objects.filter( user=user_profile).order_by('preference_order') except ObjectDoesNotExist: log.debug("Kullanıcı profili bulunamadi, yeni profil olusturmak icin isleme devam ediliyor", extra=d) note = _("If you want to continue please complete your profile.") action="create" data['form'] = StuProfileForm() data['accomodations'] = Accommodation.objects.filter( usertype__in=['stu','hepsi']).filter( gender__in=['K','E','H']).filter( site=data['site']).order_by('name') if 'register' in request.POST: first_name = request.POST.get('first_name','') last_name = request.POST.get('last_name','') request.user.first_name = first_name request.user.last_name = last_name data['form'] = StuProfileForm(request.user, request.POST, ruser=request.user) if action=="update": data['form'].instance = UserProfile.objects.get(user=user) if data['form'].is_valid(): if first_name or last_name: log.info("firstlast",extra=d) user = User.objects.get(username=request.user.username) user.first_name=first_name user.last_name=last_name user.save() log.info("formvalid", extra=d) profile = data['form'].save(commit=False) if action=="create": profile.is_student = True log.info("create",extra=d) profile.user = User.objects.get(username=request.user) try: profile.save() if profile.is_student: prefs=UserAccomodationPref.objects.filter(user=UserProfile.objects.get(user=user)) if prefs: prefs.delete() for pref in range(0,len(data['accomodations'])): if 'tercih'+str(pref+1) in request.POST.keys(): try: uaccpref=UserAccomodationPref(user=profile, accomodation=Accommodation.objects.get(pk=request.POST['tercih'+str(pref+1)]), usertype="stu",preference_order=pref+1) uaccpref.save() note = "Profiliniz başarılı bir şekilde kaydedildi. Kurs tercihleri adımından devam edebilirsiniz" except Exception as e: log.error(e.message, extra=d) response_note = "Profiliniz kaydedildi ancak konaklama tercihleriniz kaydedilemedi. Sistem yöneticisi ile görüşün!" except Exception as e: log.error(e.message, extra=d) note = "Profiliniz kaydedilirken hata oluştu lütfen sayfayı yeniden yükleyip tekrar deneyin" else: note = "Profiliniz aşağıdaki sebeplerden dolayı oluşturulamadı" elif 'cancel' in request.POST: return redirect("createprofile") data['note'] = note return render_to_response("userprofile/user_profile.html",data,context_instance=RequestContext(request))
def createprofile(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) log.info("create profile form", extra=d) user = User.objects.get(username=request.user) data['update_user_form'] = UpdateUserForm(instance=user) data['form'] = None action = "" json_response = {} try: user_profile = UserProfile.objects.get(user=user) note = _("You can update your profile below") action = "update" data['form'] = StuProfileForm(instance=user_profile) if not user_profile.is_instructor: log.debug("egitmen olmayan kullanici icin isleme devam ediliyor", extra=d) data['accomodations'] = Accommodation.objects.filter( usertype__in=['stu', 'hepsi']).filter( gender__in=[user_profile.gender, 'H']).filter( site=data['site']).order_by('name') data['accomodation_records'] = UserAccomodationPref.objects.filter( user=user_profile).order_by('preference_order') except ObjectDoesNotExist: log.debug( "Kullanıcı profili bulunamadi, yeni profil olusturmak icin isleme devam ediliyor", extra=d) note = _("If you want to continue please complete your profile.") action = "create" data['form'] = StuProfileForm() data['accomodations'] = Accommodation.objects.filter( usertype__in=['stu', 'hepsi']).filter( gender__in=['K', 'E', 'H']).filter( site=data['site']).order_by('name') if 'register' in request.POST: first_name = request.POST.get('first_name', '') last_name = request.POST.get('last_name', '') request.user.first_name = first_name request.user.last_name = last_name data['form'] = StuProfileForm(request.user, request.POST, ruser=request.user) if action == "update": data['form'].instance = UserProfile.objects.get(user=user) if data['form'].is_valid(): if first_name or last_name: log.info("firstlast", extra=d) user = User.objects.get(username=request.user.username) user.first_name = first_name user.last_name = last_name user.save() log.info("formvalid", extra=d) profile = data['form'].save(commit=False) if action == "create": profile.is_student = True log.info("create", extra=d) profile.user = User.objects.get(username=request.user) try: profile.save() if profile.is_student: prefs = UserAccomodationPref.objects.filter( user=UserProfile.objects.get(user=user)) if prefs: prefs.delete() for pref in range(0, len(data['accomodations'])): if 'tercih' + str(pref + 1) in request.POST.keys(): try: uaccpref = UserAccomodationPref( user=profile, accomodation=Accommodation.objects.get( pk=request.POST['tercih' + str(pref + 1)]), usertype="stu", preference_order=pref + 1) uaccpref.save() note = "Profiliniz başarılı bir şekilde kaydedildi. Kurs tercihleri adımından devam edebilirsiniz" except Exception as e: log.error(e.message, extra=d) response_note = "Profiliniz kaydedildi ancak konaklama tercihleriniz kaydedilemedi. Sistem yöneticisi ile görüşün!" except Exception as e: log.error(e.message, extra=d) note = "Profiliniz kaydedilirken hata oluştu lütfen sayfayı yeniden yükleyip tekrar deneyin" else: note = "Profiliniz aşağıdaki sebeplerden dolayı oluşturulamadı" elif 'cancel' in request.POST: return redirect("createprofile") data['note'] = note return render_to_response("userprofile/user_profile.html", data, context_instance=RequestContext(request))
def list_courses(request): data = prepare_template_data(request) courses = Course.objects.filter(site=data['site']) data['courses'] = courses return render_to_response('training/courses.html', data)
def apply_to_course(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) userprofile = None try: userprofile = UserProfile.objects.get(user=request.user) except ObjectDoesNotExist: return redirect("createprofile") if userprofile.userpassedtest: data['closed'] = "0" data['PREFERENCE_LIMIT'] = PREFERENCE_LIMIT message = "" now = datetime.date(datetime.now()) note = _("You can choose courses in order of preference.") if request.method == "POST": if now < data['site'].application_start_date: message = _("You can choose courses in future") data['closed'] = True return HttpResponse(json.dumps({ 'status': '-1', 'message': message }), content_type="application/json") elif now > data['site'].application_end_date: message = _("The course choosing process is closed") data['closed'] = True return HttpResponse(json.dumps({ 'status': '-1', 'message': message }), content_type="application/json") TrainessCourseRecord.objects.filter(trainess=userprofile).delete() course_prefs = json.loads(request.POST.get('course')) if len(course_prefs) <= PREFERENCE_LIMIT: if len(set([i['value'] for i in course_prefs ])) == len([i['value'] for i in course_prefs]): for course_pre in course_prefs: try: course_record = TrainessCourseRecord( trainess=userprofile, course=Course.objects.get( id=course_pre['value']), preference_order=course_pre['name']) course_record.save() message = "Tercihleriniz başarılı bir şekilde güncellendi" except Exception as e: log.error(e.message, extra=d) message = "Tercihleriniz kaydedilirken hata oluştu" return HttpResponse( json.dumps({ 'status': '-1', 'message': message }), content_type="application/json") else: message = "Farklı Tercihlerinizde Aynı Kursu Seçemezsiniz" return HttpResponse(json.dumps({ 'status': '-1', 'message': message }), content_type="application/json") try: context = {} context['user'] = request.user domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain send_email( "training/messages/preference_saved_subject.html", "training/messages/preference_saved.html", "training/messages/preference_saved.text", context, EMAIL_FROM_ADDRESS, [request.user.username]) except Exception as e: log.error(e.message, extra=d) return HttpResponse(json.dumps({ 'status': '0', 'message': message }), content_type="application/json") else: message = "En fazla " + PREFERENCE_LIMIT + " tane tercih hakkına sahipsiniz" return HttpResponse(json.dumps({ 'status': '-1', 'message': message }), content_type="application/json") courses = Course.objects.filter(approved=True) course_records = TrainessCourseRecord.objects.filter( trainess__user=request.user).order_by('preference_order') data['courses'] = courses data['course_records'] = course_records data['note'] = note if now < data['site'].application_start_date: data['note'] = _("You can choose courses in future") data['closed'] = "1" return render_to_response('training/courserecord.html', data) elif now > data['site'].application_end_date: data['note'] = _("The course choosing process is closed") data['closed'] = "1" return render_to_response('training/courserecord.html', data) return render_to_response('training/courserecord.html', data) else: return redirect("testbeforeapply")
def control_panel(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) note = _("You can accept trainees") now = datetime.date(datetime.now()) try: uprofile = UserProfile.objects.get(user=request.user).is_student log.info(uprofile, extra=d) if not uprofile: if now < data['site'].aproval_start_date: data['note'] = _("You can choose courses in future") data['closed'] = "1" return render_to_response( "training/controlpanel.html", data, context_instance=RequestContext(request)) elif now > data['site'].aproval_end_date: data['note'] = _("The course choosing process is closed") data['closed'] = "1" return render_to_response( "training/controlpanel.html", data, context_instance=RequestContext(request)) courses = Course.objects.filter(approved=True).filter( trainer__user=request.user) log.info(courses, extra=d) if courses: trainess = {} for course in courses: trainess[course] = {} trainess[course][ 'trainess1'] = TrainessCourseRecord.objects.filter( course=course.pk).filter(preference_order=1) trainess[course][ 'trainess2'] = TrainessCourseRecord.objects.filter( course=course.pk).filter(preference_order=2) trainess[course][ 'trainess3'] = TrainessCourseRecord.objects.filter( course=course.pk).filter(preference_order=3) data['trainess'] = trainess log.info(data, extra=d) if request.POST: log.info(request.POST, extra=d) for course in courses: try: course.trainess.clear() allprefs = TrainessCourseRecord.objects.filter( course=course.pk) approvedr = request.POST.getlist('students' + str(course.pk)) for p in allprefs: if str(p.pk) not in approvedr: p.approved = False elif str(p.pk) in approvedr: p.approved = True course.trainess.add(p.trainess) p.save() course.save() note = "Seçimleriniz başarılı bir şekilde kaydedildi." except Exception: note = "Beklenmedik bir hata oluştu!" data['note'] = note return render_to_response("training/controlpanel.html", data, context_instance=RequestContext(request)) else: return redirect("applytocourse") except UserProfile.DoesNotExist: return redirect("createprofile")
def apply_to_course(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data=prepare_template_data(request) userprofile=None try: userprofile = UserProfile.objects.get(user=request.user) except ObjectDoesNotExist: return redirect("createprofile") if userprofile.userpassedtest: data['closed'] = "0" data['PREFERENCE_LIMIT'] = PREFERENCE_LIMIT message = "" now = datetime.date(datetime.now()) note = _("You can choose courses in order of preference.") if request.method == "POST": if now < data['site'].application_start_date: message = _("You can choose courses in future") data['closed'] = True return HttpResponse(json.dumps({'status':'-1', 'message':message}), content_type="application/json") elif now > data['site'].application_end_date: message = _("The course choosing process is closed") data['closed'] = True return HttpResponse(json.dumps({'status':'-1', 'message':message}), content_type="application/json") TrainessCourseRecord.objects.filter(trainess=userprofile).delete() course_prefs = json.loads(request.POST.get('course')) if len(course_prefs) <= PREFERENCE_LIMIT: if len(set([i['value'] for i in course_prefs])) == len([i['value'] for i in course_prefs]): for course_pre in course_prefs: try: course_record = TrainessCourseRecord(trainess=userprofile, course=Course.objects.get(id=course_pre['value']), preference_order=course_pre['name']) course_record.save() message = "Tercihleriniz başarılı bir şekilde güncellendi" except Exception as e: log.error(e.message, extra = d) message = "Tercihleriniz kaydedilirken hata oluştu" return HttpResponse(json.dumps({'status':'-1', 'message':message}), content_type="application/json") else: message = "Farklı Tercihlerinizde Aynı Kursu Seçemezsiniz" return HttpResponse(json.dumps({'status':'-1', 'message':message}), content_type="application/json") try: context={} context['user'] = request.user domain = Site.objects.get(is_active=True).home_url if domain.endswith('/'): domain = domain.rstrip('/') context['domain'] = domain send_email("training/messages/preference_saved_subject.html", "training/messages/preference_saved.html", "training/messages/preference_saved.text", context, EMAIL_FROM_ADDRESS, [request.user.username]) except Exception as e: log.error(e.message, extra = d) return HttpResponse(json.dumps({'status':'0', 'message':message}), content_type="application/json") else: message = "En fazla "+ PREFERENCE_LIMIT + " tane tercih hakkına sahipsiniz" return HttpResponse(json.dumps({'status':'-1', 'message':message}), content_type="application/json") courses = Course.objects.filter(approved=True) course_records = TrainessCourseRecord.objects.filter(trainess__user=request.user).order_by('preference_order') data['courses'] = courses data['course_records'] = course_records data['note'] = note if now < data['site'].application_start_date: data['note'] = _("You can choose courses in future") data['closed'] = "1" return render_to_response('training/courserecord.html', data) elif now > data['site'].application_end_date: data['note'] = _("The course choosing process is closed") data['closed'] = "1" return render_to_response('training/courserecord.html', data) return render_to_response('training/courserecord.html', data) else: return redirect("testbeforeapply")
def submitandregister(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = prepare_template_data(request) userops = UserProfileOPS() # TODO:site ve pages'e bi care bulmak lazim site = Site.objects.get(is_active=True) pages = Menu.objects.filter(site=site.pk).order_by('order') note = "Kurs onerisi olustur:" try: curuserprof = UserProfile.objects.get(user=request.user) except: log.info("%s kullanici profili bulunamadi" % (request.user), extra=d) curinstprofform = InstProfileForm(prefix="cur") forms = {} for x in xrange(4): forms[x] = [ CreateInstForm(prefix=str(x) + "inst"), InstProfileForm(prefix=str(x) + "instprof") ] form = CreateCourseForm() if "submit" in request.POST: allf = [] forms = {} for x in xrange(4): if str(x) + "inst-email" in request.POST: forms[x] = [ CreateInstForm(request.POST, prefix=str(x) + "inst"), InstProfileForm(request.POST, prefix=str(x) + "instprof") ] allf.append(forms[x][0].is_valid()) allf.append(forms[x][1].is_valid()) else: pass curinstprofform = InstProfileForm(request.POST, prefix="cur") form = CreateCourseForm(request.POST) if all([curinstprofform.is_valid(), form.is_valid()]) and all(allf): curinst = curinstprofform.save(commit=False) curinst.user = request.user curinst.save() course = form.save(commit=False) if 'fulltext' in request.FILES: course.fulltext = request.FILES['fulltext'] course.save() for key, f in forms.items(): instx = f[0].save(commit=False) passwd = userops.generatenewpass(8) instx.set_password(passwd) instx.save() instxprof = f[1].save(commit=False) instxprof.user = instx instxprof.save() course.trainer.add(instxprof) course.trainer.add(curinst) course.save() note = "Egitim oneriniz basari ile alindi." else: note = "Olusturulamadi" return render_to_response("training/submitandregister.html", { 'site': site, 'pages': pages, 'note': note, 'form': form, 'curinstprofform': curinstprofform, 'forms': forms }, context_instance=RequestContext(request))
def list_courses(request): data = prepare_template_data(request) courses = Course.objects.filter(site=data["site"]) data["courses"] = courses return render_to_response("training/courses.html", data)
def apply_to_course(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} data = prepare_template_data(request) userprofile = None try: userprofile = UserProfile.objects.get(user=request.user) except ObjectDoesNotExist: return redirect("createprofile") if userprofile.userpassedtest: data["closed"] = "0" data["additional1_pref_closed"] = "1" data["PREFERENCE_LIMIT"] = PREFERENCE_LIMIT data["ADDITION_PREFERENCE_LIMIT"] = ADDITION_PREFERENCE_LIMIT message = "" now = datetime.date(datetime.now()) note = _("You can choose courses in order of preference.") if request.method == "POST": if now < data["site"].application_start_date: message = _("You can choose courses in future") data["closed"] = True return HttpResponse(json.dumps({"status": "-1", "message": message}), content_type="application/json") elif now > data["site"].application_end_date: message = _("The course choosing process is closed") data["closed"] = True return HttpResponse(json.dumps({"status": "-1", "message": message}), content_type="application/json") TrainessCourseRecord.objects.filter(trainess=userprofile).delete() course_prefs = json.loads(request.POST.get("course")) if len(course_prefs) <= PREFERENCE_LIMIT: if len(set([i["value"] for i in course_prefs])) == len([i["value"] for i in course_prefs]): for course_pre in course_prefs: try: course_record = TrainessCourseRecord( trainess=userprofile, course=Course.objects.get(id=course_pre["value"]), preference_order=course_pre["name"], ) course_record.save() message = "Tercihleriniz başarılı bir şekilde güncellendi" except Exception as e: log.error(e.message, extra=d) message = "Tercihleriniz kaydedilirken hata oluştu" return HttpResponse( json.dumps({"status": "-1", "message": message}), content_type="application/json" ) else: message = "Farklı Tercihlerinizde Aynı Kursu Seçemezsiniz" return HttpResponse( json.dumps({"status": "-1", "message": message}), content_type="application/json" ) try: context = {} context["user"] = request.user domain = Site.objects.get(is_active=True).home_url if domain.endswith("/"): domain = domain.rstrip("/") context["domain"] = domain send_email( "training/messages/preference_saved_subject.html", "training/messages/preference_saved.html", "training/messages/preference_saved.text", context, EMAIL_FROM_ADDRESS, [request.user.username], ) except Exception as e: log.error(e.message, extra=d) return HttpResponse(json.dumps({"status": "0", "message": message}), content_type="application/json") else: message = "En fazla " + PREFERENCE_LIMIT + " tane tercih hakkına sahipsiniz" return HttpResponse(json.dumps({"status": "-1", "message": message}), content_type="application/json") additipnal_pref_start_for_trainess = ApprovalDate.objects.get( site=data["site"], preference_order=1, for_instructor=True ).start_date courses = Course.objects.filter(approved=True) course_records = TrainessCourseRecord.objects.filter(trainess__user=request.user).order_by("preference_order") data["courses"] = courses data["course_records"] = course_records data["note"] = note if now < data["site"].application_start_date: data["note"] = _("You can choose courses in future") data["closed"] = "1" return render_to_response("training/courserecord.html", data) elif now > data["site"].application_end_date: data["note"] = _("The course choosing process is closed") data["closed"] = "1" if ( len( TrainessCourseRecord.objects.filter(trainess_approved=True) .filter(preference_order__gte=0) .filter(trainess=userprofile) ) == 0 ): try: additional1_pref_for_trainess = ApprovalDate.objects.get( site=data["site"], preference_order=-1, for_trainess=True ) now_for_pref = timezone.now() if ( now_for_pref > additional1_pref_for_trainess.start_date and now_for_pref < additional1_pref_for_trainess.end_date ): data["additional1_pref_closed"] = "0" log.debug("ek tercih aktif", extra=d) data["note"] = _("Ek tercih dönemi içindesiniz, ek tercih yapabilirsiniz") except ObjectDoesNotExist: log.error("ek tercih icin sure bulunamadi", extra=d) except Exception as e: log.error(e.message, extra=d) return render_to_response("training/courserecord.html", data) return render_to_response("training/courserecord.html", data) else: return redirect("testbeforeapply")
def control_panel(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} data = prepare_template_data(request) note = _("You can accept trainees") try: uprofile = UserProfile.objects.get(user=request.user).is_student log.info(uprofile, extra=d) if not uprofile: courses = Course.objects.filter(approved=True).filter(trainer__user=request.user) log.info(courses, extra=d) if courses: log.info("egitmenin " + str(len(courses)) + " tane kursu var", extra=d) trainess = {} now_for_approve = timezone.now() log.debug("now_for_approve : egitmen kendi kursunu listeliyor", extra=d) log.debug(now_for_approve, extra=d) first_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=1, for_instructor=True ).start_date first_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=1, for_instructor=True ).end_date second_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=2, for_instructor=True ).start_date second_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=2, for_instructor=True ).end_date third_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=3, for_instructor=True ).start_date third_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=3, for_instructor=True ).end_date addition1_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=-1, for_instructor=True ).start_date addition1_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=-1, for_instructor=True ).end_date note = ( " 1. Tercihleri %s - %s tarihleri arasında onaylayabilirsiniz" % ( first_pref_approve_start.strftime(DATETIME_FORMAT), first_pref_approve_end.strftime(DATETIME_FORMAT), ) + " " ) note += ( " 2. Tercihten %s - %s tarihleri arasında seçebilirsiniz" % ( second_pref_approve_start.strftime(DATETIME_FORMAT), second_pref_approve_end.strftime(DATETIME_FORMAT), ) + " " ) note += ( " 3. Tercihten %s - %s tarihleri arasında seçebilirsiniz" % ( third_pref_approve_start.strftime(DATETIME_FORMAT), third_pref_approve_end.strftime(DATETIME_FORMAT), ) + " " ) data["closed_pref_1"] = "1" data["closed_pref_2"] = "1" data["closed_pref_3"] = "1" data["closed_pref_addition1"] = "1" data["note_edit_closed"] = "1" if now_for_approve > first_pref_approve_start and now_for_approve < addition1_pref_approve_end: if (now_for_approve > first_pref_approve_start) and (now_for_approve < first_pref_approve_end): data["closed_pref_1"] = "0" if (now_for_approve > second_pref_approve_start) and (now_for_approve < second_pref_approve_end): data["closed_pref_2"] = "0" if (now_for_approve > third_pref_approve_start) and (now_for_approve < third_pref_approve_end): data["closed_pref_3"] = "0" if (now_for_approve > addition1_pref_approve_start) and ( now_for_approve < addition1_pref_approve_end ): data["closed_pref_addition1"] = "0" if now_for_approve > addition1_pref_approve_end: data["note_edit_closed"] = "0" for course in courses: trainess[course] = {} if ( now_for_approve < ApprovalDate.objects.get(site=data["site"], preference_order=-1, for_trainess=True).end_date ): trainess[course]["trainess1"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=1) .exclude( trainess__in=TrainessCourseRecord.objects.values_list("trainess") .filter(~Q(course=course.pk)) .filter(trainess_approved=True) ) .prefetch_related("course") ) trainess[course]["trainess2"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=2) .exclude( trainess__in=TrainessCourseRecord.objects.values_list("trainess") .filter(~Q(course=course.pk)) .filter(trainess_approved=True) ) .prefetch_related("course") ) trainess[course]["trainess3"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=3) .exclude( trainess__in=TrainessCourseRecord.objects.values_list("trainess") .filter(~Q(course=course.pk)) .filter(trainess_approved=True) ) .prefetch_related("course") ) trainess[course]["trainess_addition_1"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=-1) .exclude( trainess__in=TrainessCourseRecord.objects.values_list("trainess") .filter(~Q(course=course.pk)) .filter(trainess_approved=True) ) .prefetch_related("course") ) else: trainess[course]["trainess1"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=1) .filter(approved=True) .filter(trainess_approved=True) .prefetch_related("course") ) trainess[course]["trainess2"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=2) .filter(approved=True) .filter(trainess_approved=True) .prefetch_related("course") ) trainess[course]["trainess3"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=3) .filter(approved=True) .filter(trainess_approved=True) .prefetch_related("course") ) trainess[course]["trainess_addition_1"] = ( TrainessCourseRecord.objects.filter(course=course.pk) .filter(preference_order=-1) .filter(approved=True) .filter(trainess_approved=True) .prefetch_related("course") ) data["trainess"] = trainess if request.POST: log.info("kursiyer onay islemi basladi", extra=d) log.info(request.POST, extra=d) for course in courses: try: if now_for_approve > first_pref_approve_start and now_for_approve < third_pref_approve_end: allprefs = [] if (now_for_approve > first_pref_approve_start) and ( now_for_approve < first_pref_approve_end ): allprefs.extend( TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=1) ) log.debug(allprefs, extra=d) if (now_for_approve > second_pref_approve_start) and ( now_for_approve < second_pref_approve_end ): allprefs.extend( TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=2) ) log.debug(allprefs, extra=d) if (now_for_approve > third_pref_approve_start) and ( now_for_approve < third_pref_approve_end ): allprefs.extend( TrainessCourseRecord.objects.filter(course=course.pk).filter(preference_order=3) ) log.debug(allprefs, extra=d) approvedr = request.POST.getlist("students" + str(course.pk)) log.debug(allprefs, extra=d) for p in allprefs: if str(p.pk) not in approvedr: p.approved = False elif str(p.pk) in approvedr: p.approved = True p.save() log.debug(p, extra=d) course.trainess.clear() allprefs = TrainessCourseRecord.objects.filter(course=course.pk) for p in allprefs: if p.approved == True: course.trainess.add(p.trainess) course.save() data["user"] = request.user data["course"] = course send_email( "training/messages/inform_trainers_about_changes_subject.txt", "training/messages/inform_trainers_about_changes.html", "training/messages/inform_trainers_about_changes.txt", data, EMAIL_FROM_ADDRESS, course.trainer.all().values_list("user__username", flat=True), ) note = "Seçimleriniz başarılı bir şekilde kaydedildi." else: if (now_for_approve > addition1_pref_approve_start) and ( now_for_approve < addition1_pref_approve_end ): allprefs = [] allprefs.extend( TrainessCourseRecord.objects.filter(course=course.pk).filter( preference_order=-1 ) ) approvedr = request.POST.getlist("students" + str(course.pk)) log.debug(allprefs, extra=d) for p in allprefs: if str(p.pk) not in approvedr: p.approved = False elif str(p.pk) in approvedr: p.approved = True p.trainess_approved = True p.save() log.debug(p, extra=d) course.trainess.clear() allprefs = TrainessCourseRecord.objects.filter(course=course.pk) for p in allprefs: if p.approved == True: course.trainess.add(p.trainess) course.save() data["user"] = request.user data["course"] = course send_email( "training/messages/inform_trainers_about_changes_subject.txt", "training/messages/inform_trainers_about_changes.html", "training/messages/inform_trainers_about_changes.txt", data, EMAIL_FROM_ADDRESS, course.trainer.all().values_list("user__username", flat=True), ) note = "Seçimleriniz başarılı bir şekilde kaydedildi." else: note = "Onaylama dönemi dışındasınız" except Exception as e: note = "Beklenmedik bir hata oluştu!" log.error(e.message, extra=d) data["TRAINESS_SCORE"] = TRAINESS_SCORE data["note"] = note return render_to_response("training/controlpanel.html", data, context_instance=RequestContext(request)) else: return redirect("applytocourse") except UserProfile.DoesNotExist: return redirect("createprofile")
def allcourseprefview(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} data = prepare_template_data(request) data["datalist"] = TrainessCourseRecord.objects.all() return render_to_response("training/allcourseprefs.html", data, context_instance=RequestContext(request))
def statistic(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} try: data = prepare_template_data(request) record_data = ( TrainessCourseRecord.objects.filter() .values("course", "preference_order") .annotate(Count("preference_order")) .order_by("course", "-preference_order") ) statistic_by_course = {} for key, group in itertools.groupby(record_data, lambda item: item["course"]): statistic_by_course[Course.objects.get(pk=key)] = { str(item["preference_order"]): item["preference_order__count"] for item in group } data["statistic_by_course"] = statistic_by_course statistic_by_gender = ( UserProfile.objects.filter(is_student=True).values("gender").annotate(Count("gender")).order_by("gender") ) data["statistic_by_gender"] = statistic_by_gender statistic_by_gender_for_approved = ( UserProfile.objects.filter(is_student=True) .filter(trainesscourserecord__approved__in=[True]) .filter(trainesscourserecord__trainess_approved__in=[True]) .values("gender") .annotate(Count("gender")) .order_by("gender") ) data["statistic_by_gender_for_approved"] = statistic_by_gender_for_approved log.debug(statistic_by_gender, extra=d) statistic_by_university = ( UserProfile.objects.filter(is_student=True) .values("university") .annotate(Count("university")) .order_by("-university__count") ) data["statistic_by_university"] = statistic_by_university statistic_by_university_for_approved = ( UserProfile.objects.filter(is_student=True) .values("university") .filter(trainesscourserecord__approved__in=[True]) .filter(trainesscourserecord__trainess_approved__in=[True]) .annotate(Count("university")) .order_by("-university__count") ) data["statistic_by_university_for_approved"] = statistic_by_university_for_approved data["statistic_by_course_for_apply"] = ( TrainessCourseRecord.objects.filter(trainess_approved=True) .values("course__name") .annotate(count=Count("course")) .order_by("-count") ) total_profile = len(UserProfile.objects.filter(is_student=True)) total_preference = len(TrainessCourseRecord.objects.all()) total_preference_for_approved = len( TrainessCourseRecord.objects.filter(approved=True).filter(trainess_approved=True) ) data["statistic_by_totalsize"] = { "Toplam Profil(Kişi)": total_profile, "Toplam Tercih": total_preference, "Toplam Teyit Eden": total_preference_for_approved, } except Exception as e: log.error(e.message, extra=d) return render_to_response("training/statistic.html", data)
def approve_course_preference(request): d = {"clientip": request.META["REMOTE_ADDR"], "user": request.user} data = prepare_template_data(request) now_for_approve = timezone.now() if request.POST: try: log.debug(request.POST.get("courseRecordId"), extra=d) trainess_course_record = TrainessCourseRecord.objects.get( trainess=request.user.userprofile, approved=True, id=request.POST.get("courseRecordId") ) preference_order = trainess_course_record.preference_order pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=preference_order, for_trainess=True ).start_date pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=preference_order, for_trainess=True ).end_date if now_for_approve > pref_approve_start and now_for_approve < pref_approve_end: trainess_course_record.trainess_approved = True trainess_course_record.save() message = "İşleminiz başarılı bir şekilde gerçekleştirildi" status = "0" log.debug("kursu onayladi " + trainess_course_record.course.name, extra=d) else: message = "Kurs teyit dönemi dışındasınız." status = "-1" except Exception as e: log.error(e.message, extra=d) message = "İşleminiz Sırasında Hata Oluştu" status = "-1" return HttpResponse(json.dumps({"status": status, "message": message}), content_type="application/json") try: first_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=1, for_trainess=True ).start_date first_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=1, for_trainess=True ).end_date second_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=2, for_trainess=True ).start_date second_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=2, for_trainess=True ).end_date third_pref_approve_start = ApprovalDate.objects.get( site=data["site"], preference_order=3, for_trainess=True ).start_date third_pref_approve_end = ApprovalDate.objects.get( site=data["site"], preference_order=3, for_trainess=True ).end_date trainess_course_record = [] trainess_course_records = TrainessCourseRecord.objects.filter(trainess=request.user.userprofile).order_by( "preference_order" ) data["course_exist"] = "0" data["approve_is_open"] = "0" note = "" if now_for_approve > first_pref_approve_start and now_for_approve < third_pref_approve_end: if len(trainess_course_records) == len(trainess_course_records.filter(approved=False)): data["course_exist"] = "0" data["approve_is_open"] = "0" note = "Herhangi bir kursa kabul edilemediniz." if first_pref_approve_start < now_for_approve and now_for_approve < second_pref_approve_start: note = "Birinci tercihinizden herhangi bir kursa kabul edilemediniz varsa diğer tercihlerinizin sonuçlanmasını bekleyiniz" elif second_pref_approve_start < now_for_approve and now_for_approve < third_pref_approve_start: note = "İkinci tercihinizden herhangi bir kursa kabul edilemediniz varsa diğer tercihlerinizin sonuçlanmasını bekleyiniz" elif len(trainess_course_records) == len(trainess_course_records.filter(trainess_approved=False)): data["course_exist"] = "1" data["approve_is_open"] = "1" note = "Kabul edildiğiniz aşağıdaki kursu onaylayabilirsiniz" if first_pref_approve_start < now_for_approve and now_for_approve < first_pref_approve_end: trainess_course_record = trainess_course_records.filter(preference_order=1).filter(approved=True) elif second_pref_approve_start < now_for_approve and now_for_approve < second_pref_approve_end: trainess_course_record = trainess_course_records.filter(preference_order=2).filter(approved=True) elif third_pref_approve_start < now_for_approve and now_for_approve < third_pref_approve_end: trainess_course_record = trainess_course_records.filter(preference_order=3).filter(approved=True) if len(trainess_course_record) == 0: note = "Kabul edildiğiniz veya teyit ettiğiniz kurs bulunamadı" data["course_exist"] = "0" data["approve_is_open"] = "0" else: data["course_exist"] = "1" data["approve_is_open"] = "0" trainess_course_record = trainess_course_records.filter(trainess_approved=True).filter(approved=True) note = "Aşağıdaki Kursa Kabul Edildiniz" else: trainess_course_record = trainess_course_records.filter(trainess_approved=True).filter(approved=True) if len(trainess_course_record) == 1: data["course_exist"] = "1" data["approve_is_open"] = "0" note = "Aşağıdaki Kursa Kabul Edildiniz" else: if len(trainess_course_record) > 1: log.debug("kursiyerin teyit edilen 1'den fazla kursu var!!", extra=d) note = "Kurs teyit dönemi dışındasınız veya kabul edildiğiniz kurs yok" data["note"] = note data["trainess_course_record"] = trainess_course_record except Exception as e: log.error(e.message, extra=d) data["note"] = "Hata oluştu" return render_to_response("training/confirm_course_preference.html", data)