def getoperationsmenu(uprofile): html = "" if UserProfileOPS.is_instructor(uprofile): html += """ <li> <a href="/survey/answers/"><i class="fa fa-file-text-o fa-fw"></i> Anket Sonuçları</a> </li> <li> <a href="/egitim/selectcourse/"><i class="fa fa-book fa-fw"></i> Kurslarım </a> </li> <li> <a href="/egitim/katilimciekle"><i class="fa fa-book fa-fw"></i> Kursiyer Ekle</a> </li> """ else: html += """ <li> <a href="/egitim/applytocourse"><i class="fa fa-check-square-o fa-fw"></i> Kurs Başvurusu</a> </li> <li> <a href="/egitim/approve_course_preference"><i class="fa fa-thumbs-o-up fa-fw"></i> Başvuru Durum/Onayla</a> </li> """ return html
def control_panel(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = getsiteandmenus(request) note = _("You can accept trainees") now = timezone.now() data["user"] = request.user try: if UserProfileOPS.is_instructor(request.user.userprofile): courses = Course.objects.filter(site=data['site'], approved=True, trainer__user=request.user) if courses: log.info("egitmenin " + str(len(courses)) + " tane kursu var", extra=d) data['now'] = now data['dates'] = get_approve_start_end_dates_for_inst(data['site'], d) data['trainess'] = {} if data['dates']: for course in courses: if now <= data['dates'].get(1).end_date: data['trainess'][course] = get_trainess_by_course(course, d) else: note = _("Consent period is closed") data['trainess'][course] = get_approved_trainess(course, d) if "send" in request.POST: log.info("kursiyer onay islemi basladi", extra=d) log.info(request.POST, extra=d) note = applytrainerselections(request.POST, courses, data, d) data['note'] = note return render_to_response("training/controlpanel.html", data, context_instance=RequestContext(request)) elif not request.user.is_staff: return redirect("applytocourse") return redirect("statistic") except UserProfile.DoesNotExist: return redirect("createprofile")
def select_course_for_control_panel(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = getsiteandmenus(request) note = "İşlem Yapmak İstediğiniz Kursu Seçiniz" data["user"] = request.user try: if UserProfileOPS.is_instructor(request.user.userprofile): courses = Course.objects.filter(site=data['site'], approved=True, trainer__user=request.user) if courses: log.info("egitmenin " + str(len(courses)) + " tane kursu var", extra=d) data['courses'] = courses else: note = "Bu etkinlikte kursunuz yok." data['note'] = note return render_to_response("training/courselistforinst.html", data, context_instance=RequestContext(request)) elif not request.user.is_staff: return redirect("applytocourse") return redirect("statistic") except UserProfile.DoesNotExist: return redirect("createprofile")
def showuserprofile(request, userid, courserecordid): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = getsiteandmenus(request) if UserProfileOPS.is_instructor(request.user.userprofile) or request.user.is_staff: courserecord = None try: courserecord = TrainessCourseRecord.objects.get(pk=courserecordid, trainess=UserProfile.objects.get(pk=userid)) if not request.user.is_staff and request.user.userprofile not in courserecord.course.trainer.all() and \ request.user.userprofile not in courserecord.course.authorized_trainer.all(): return redirect("controlpanel") except Exception as e: log.warning(e.message, extra=d) log.warning("Staff user show user profile", extra=d) if not request.user.is_staff: return redirect("controlpanel") user = UserProfile.objects.get(pk=userid) if user: data['note'] = "Detaylı kullanıcı bilgileri" data['tuser'] = user data['ruser'] = request.user if request.user.is_staff and "cancelall" in request.POST: cancelnote = request.POST.get('trainesscancelnotetext', '') res = cancel_all_prefs(user, cancelnote, data['site'], request.user, d) if res == 1: data['note'] = "Kullanıcının Tüm Başvuruları Silindi" else: data['note'] = "Kullanıcının Başvuruları silinirken hata oluştu" if courserecord: data['courseid'] = courserecord.course.pk if request.user.is_staff and courserecord.consentemailsent: try: data['forms'] = getparticipationforms(data['site'], courserecord) if request.POST: formsarevalid = [] frms = [] for f in data['forms']: frm = ParticipationForm(request.POST, prefix="participation" + str( datetime.strptime(f.initial['day'], '%Y-%m-%d').day)) frm.courserecord = courserecord.pk frm.day = f.initial['day'] formsarevalid.append(frm.is_valid()) frms.append(frm) if all(formsarevalid): for f in frms: f.save() data['note'] = 'Seçimleriniz başarıyla kaydedildi.' log.info("%s nolu kurs kaydinin yoklama kaydi girişi başarılı" % courserecord.pk, extra=d) else: data['note'] = 'Hata oluştu!' log.info("%s nolu kurs kaydinin yoklama kaydi girişi hatalı" % courserecord.pk, extra=d) except Exception as e: log.error(e.message, extra=d) else: data['note'] = "Böyle Bir kullanıcı yoktur." return render_to_response("userprofile/showuserprofile.html", data, context_instance=RequestContext(request)) return redirect("controlpanel")
def getinstinfo(uprofile, site): html = "" if UserProfileOPS.is_instructor(uprofile): try: inst_info = InstructorInformation.objects.get(user=uprofile, site=site) html = "<td>%s</td><td>%s</td><td>%s</td><td>%s</td>" % ( inst_info.transportation, inst_info.arrival_date, inst_info.departure_date, inst_info.additional_information) except Exception as e: return "<td></td><td></td><td></td><td></td>" return html
def instructor_information_view(request): if not request.user.userprofile: log.error("Kullanıcı Profili Bulunamadı", extra=request.log_extra) return redirect("createprofile") data = {} if not UserProfileOPS.is_instructor(request.user.userprofile): data['note'] = _("You are not authorized to access here") else: data['note'] = _( "Please enter your transformation, arrival date, departure date information" ) try: instructorinformation = InstructorInformation.objects.get( user=request.user.userprofile, site=request.site) form = InstructorInformationForm(instance=instructorinformation, site=request.site, request=request) except ObjectDoesNotExist as e: log.debug( "Egitmen bilgileri bulunamadi, yeni bilgiler olusturulmak icin form acilacak", extra=request.log_extra) log.error(e.message, extra=request.log_extra) form = InstructorInformationForm(site=request.site, request=request) instructorinformation = None if request.POST: if instructorinformation is not None: form = InstructorInformationForm( request.POST, instance=instructorinformation, site=request.site, request=request) else: form = InstructorInformationForm(request.POST, site=request.site, request=request) if form.is_valid(): try: instructor_info = form.save(commit=True) data['note'] = _("Your information saved successfully") log.info("%s egitmeni ek bilgilerini guncelledi" % instructor_info.user.user.username, extra=request.log_extra) except Exception as e: data['note'] = _( "An error occurred while saving your information") log.error(e.message, extra=request.log_extra) data['form'] = form return render(request, "userprofile/instructor_information.html", data)
def select_course_for_control_panel(request): data = {'note': "İşlem Yapmak İstediğiniz Kursu Seçiniz", 'user': request.user} try: if UserProfileOPS.is_instructor(request.user.userprofile): courses = Course.objects.filter(site=request.site, approved=True, trainer__user=request.user) if courses: log.info("egitmenin " + str(len(courses)) + " tane kursu var", extra=request.log_extra) data['courses'] = courses else: data['note'] = "Bu etkinlikte kursunuz yok." return render(request, "training/courselistforinst.html", data) elif not request.user.is_staff: return redirect("applytocourse") return redirect("statistic") except UserProfile.DoesNotExist: return redirect("createprofile")
def getoperationsmenu(uprofile): html = "" if UserProfileOPS.is_instructor(uprofile): html += """<li> <a href="/egitim/controlpanel"><i class="fa fa-book fa-fw"></i> Kursum</a> </li> <li> <a href="/egitim/katilimciekle"><i class="fa fa-book fa-fw"></i> Kursiyer Ekle</a> </li>""" else: html += """ <li> <a href="/egitim/applytocourse"><i class="fa fa-check-square-o fa-fw"></i> Kurs Başvurusu</a> </li> <li> <a href="/egitim/approve_course_preference"><i class="fa fa-thumbs-o-up fa-fw"></i> Başvuru Durum/Onayla</a> </li> """ return html
def instructor_information(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} if not request.user.userprofile: log.error("Kullanıcı Profili Bulunamadı", extra=d) return redirect("createprofile") data = getsiteandmenus(request) if not UserProfileOPS.is_instructor(request.user.userprofile): note = _("You are not authorized to access here") else: note = _("Please enter your transformation, arrival date, departure date information") instructorinformation = None try: instructorinformation = 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 instructorinformation: form = InstructorInformationForm(request.POST, instance=instructorinformation) 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 information saved successfully") except Exception as e: note = _("An error occurred while saving your information") 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 showuserprofile(request, userid, courserecordid): data = {} if UserProfileOPS.is_instructor( request.user.userprofile) or request.user.is_staff: courserecord = None try: courserecord = TrainessCourseRecord.objects.get( pk=courserecordid, trainess=UserProfile.objects.get(pk=userid)) if not UserProfileOPS.is_user_trainer_ofcourse_or_staff( request.user, courserecord.course): return redirect("selectcoursefcp") except Exception as e: log.warning(e.message, extra=request.log_extra) if not request.user.is_staff: return redirect("selectcoursefcp") log.warning("Staff user show user profile", extra=request.log_extra) user = UserProfile.objects.get(pk=userid) data['tuser'] = user data['ruser'] = request.user data['note'] = "Detaylı kullanıcı bilgileri" if user: userprofilebysite = None try: userprofilebysite = UserProfileBySite.objects.get( user=user.user, site=request.site) data['userprofilebysiteform'] = UserProfileBySiteForStaffForm( instance=userprofilebysite, ruser=request.user, site=request.site, user=user.user) except UserProfileBySite.DoesNotExist as e: data['userprofilebysiteform'] = UserProfileBySiteForStaffForm( ruser=request.user, site=request.site, user=user.user) if "savesitebasedprofile" in request.POST: if userprofilebysite: data[ 'userprofilebysiteform'] = UserProfileBySiteForStaffForm( request.POST, request.FILES, instance=userprofilebysite, ruser=request.user, site=request.site, user=user.user) else: data[ 'userprofilebysiteform'] = UserProfileBySiteForStaffForm( request.POST, request.FILES, ruser=request.user, site=request.site, user=user.user) if data['userprofilebysiteform'].is_valid(): data['userprofilebysiteform'].save() log.info( "%s kullanıcısı için etkinlik bazlı profil kaydedildi", extra=request.log_extra) data['note'] = "Etkinlik bazlı profil kaydedildi." else: data[ 'note'] = "Kullanici bazlı profil formu doğrulanamadı." if request.user.is_staff and "cancelall" in request.POST: cancelnote = request.POST.get('trainesscancelnotetext', '') res = cancel_all_prefs(user, cancelnote, request.site, request.user, request.log_extra) if res == 1: data['note'] = "Kullanıcının Tüm Başvuruları Silindi" else: data[ 'note'] = "Kullanıcının Başvuruları silinirken hata oluştu" if "savescore" in request.POST: ''' Kullanıcı için not girişi ''' trainessnote = request.POST.get('trainessnotetext') data['note'] = UserProfileOPS.savenote(request, user.user, trainessnote) if courserecord: ''' Kullanıcı profilindeki yoklamalar buradan alınıyor. (Görevli kullanıcı erişebilir) ''' data['courseid'] = courserecord.course.pk if request.user.is_staff and courserecord.consentemailsent: try: data['forms'] = getparticipationforms( request.site, courserecord) if "save" in request.POST: data['note'] = UserProfileOPS.saveparticipation( request, courserecord) data['forms'] = getparticipationforms( request.site, courserecord) except Exception as e: log.error(e.message, extra=request.log_extra) else: data['note'] = "Böyle Bir kullanıcı yoktur." return render(request, "userprofile/showuserprofile.html", data) return redirect("controlpanel")
def instinfo(uprofile): html = "" if UserProfileOPS.is_instructor(uprofile): html += "<li><a href=\"/accounts/egitmen/bilgi\"><i class=\"fa-info-circle fa-fw\"></i> Egitmen Bilgileri </a></li>" return html
def instinfo(uprofile): html = "" if UserProfileOPS.is_instructor(uprofile): html += "<li><a href=\"/accounts/egitmen/bilgi\"><i class=\"fa fa-info-circle fa-fw\"></i> Egitmen Bilgileri </a></li>" return html
def createprofile(request): data = {} log.info("create/update profile form", extra=request.log_extra) data['update_user_form'] = UpdateUserForm(instance=request.user) data['note'] = "Profilinizi güncelleyebilirsiniz." note, userprobysite, data['userproform'], data['userproformbysite'], data[ 'accomodations'], data['accomodation_records'] = getuserprofileforms( request.user, request.site, request.log_extra) data['sitewidequestions'] = TextBoxQuestions.objects.filter( site=request.site, active=True, is_sitewide=True) if 'register' in request.POST: data['update_user_form'] = UpdateUserForm(data=request.POST, instance=request.user) try: data['userproform'] = StuProfileForm( request.POST, request.FILES, instance=request.user.userprofile, ruser=request.user) except UserProfile.DoesNotExist: data['userproform'] = StuProfileForm(request.POST, request.FILES, ruser=request.user) if userprobysite: data['userproformbysite'] = UserProfileBySiteForm( request.POST, request.FILES, instance=userprobysite, ruser=request.user, site=request.site) else: data['userproformbysite'] = UserProfileBySiteForm( request.POST, request.FILES, ruser=request.user, site=request.site) if data['update_user_form'].is_valid(): data['update_user_form'].save() if data['userproform'].is_valid(): log.info("formvalid", extra=request.log_extra) try: data['userproform'].save() if data['sitewidequestions']: for question in data['sitewidequestions']: # noinspection PyUnresolvedReferences answer = request.POST.get("answer%s" % question.pk, "") if answer: tca, created = TrainessClassicTestAnswers.objects.get_or_create( user=request.user.userprofile, question=question) tca.answer = answer tca.save() if not UserProfileOPS.is_instructor( request.user.userprofile ) and ACCOMODATION_PREFERENCE_LIMIT: prefs = UserAccomodationPref.objects.filter( user=request.user.userprofile) if prefs: prefs.delete() if 'tercih1' in request.POST.keys(): try: uaccpref = UserAccomodationPref( user=request.user.userprofile, accomodation=Accommodation.objects.get( pk=request.POST.get('tercih1')), usertype="stu", preference_order=1) uaccpref.save() log.info( "Kullanıcı profilini ve konaklama tercihini güncelledi.", extra=request.log_extra) if request.site.needs_document: if data['userproformbysite'].is_valid(): data['userproformbysite'].save() if 'document' in request.FILES: log.info( "Kullanıcı evrakını güncelledi.", extra=request.log_extra) else: data[ 'note'] = "Profiliniz aşağıdaki sebeplerden dolayı kaydedilemedi" return render( request, "userprofile/user_profile.html", data) except Exception as e: log.error(e.message, extra=request.log_extra) data['note'] = "Profiliniz kaydedildi ancak konaklama tercihleriniz kaydedilemedi." \ " Sistem yöneticisi ile görüşün!" return render(request, "userprofile/user_profile.html", data) data['note'] = "Profiliniz başarılı bir şekilde kaydedildi. Kurs tercihleri adımından" \ " devam edebilirsiniz" return render(request, "userprofile/user_profile.html", data) except Exception as e: log.error('Error on line {}'.format( sys.exc_info()[-1].tb_lineno), extra=request.log_extra) log.error(e.message, extra=request.log_extra) data[ 'note'] = "Profiliniz kaydedilirken hata oluştu lütfen sayfayı yeniden yükleyip tekrar deneyin" return render(request, "userprofile/user_profile.html", data) data['note'] = "Profiliniz aşağıdaki sebeplerden dolayı oluşturulamadı" elif 'cancel' in request.POST: return redirect("createprofile") return render(request, "userprofile/user_profile.html", data)
def inststatistic(uprofile): html = "" if UserProfileOPS.is_instructor(uprofile): html += "<li><a href='/egitim/istatistik/'><i class='fa fa-pie-chart fa-fw'></i> İstatistik </a></li>" return html
def statistic(request): if request.user.is_staff or UserProfileOPS.is_instructor(request.user.userprofile): data = {} try: record_data = TrainessCourseRecord.objects.filter(course__site=request.site).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"]): course_object = Course.objects.get(pk=key, site=request.site) statistic_by_course[course_object] = {str(item['preference_order']): item['preference_order__count'] for item in group} statistic_by_course[course_object]['total_apply'] = len(TrainessCourseRecord.objects.filter( course=course_object)) statistic_by_course[course_object]['total_apply_by_trainer'] = len(TrainessCourseRecord.objects.filter( course=course_object, approved=True)) statistic_by_course[course_object]['applicationbywomen'] = len( TrainessCourseRecord.objects.filter(course=course_object, trainess__gender="K").order_by( "trainess").values_list("trainess").distinct()) statistic_by_course[course_object]['applicationbymen'] = len( TrainessCourseRecord.objects.filter(course=course_object, trainess__gender="E").order_by( "trainess").values_list("trainess").distinct()) data['statistic_by_course'] = statistic_by_course data['statistic_by_gender_k'] = len( TrainessCourseRecord.objects.filter(course__site=request.site, trainess__gender="K").order_by( "trainess").values_list("trainess").distinct()) data['statistic_by_gender_e'] = len( TrainessCourseRecord.objects.filter(course__site=request.site, trainess__gender="E").order_by( "trainess").values_list("trainess").distinct()) data['statistic_by_gender_k_approved'] = len( TrainessCourseRecord.objects.filter(course__site=request.site, trainess__gender="K", approved=True).order_by("trainess").values_list( "trainess").distinct()) data['statistic_by_gender_e_approved'] = len( TrainessCourseRecord.objects.filter(course__site=request.site, trainess__gender="E", approved=True).order_by("trainess").values_list( "trainess").distinct()) data['statistic_by_university'] = TrainessCourseRecord.objects.filter(course__site=request.site).order_by( "-trainess__id__count").values("trainess__university").annotate(Count("trainess__university"), Count("trainess__id", distinct=True)) data['statistic_by_university_for_approved'] = TrainessCourseRecord.objects.filter( course__site=request.site, approved=True).order_by("-trainess__id__count").values("trainess__university").annotate( Count("trainess__university"), Count("trainess__id", distinct=True)) data['statistic_by_city'] = TrainessCourseRecord.objects.filter(course__site=request.site).order_by( "-trainess__id__count").values("trainess__city").annotate(Count("trainess__city"), Count("trainess__id", distinct=True)) data['statistic_by_city_for_approved'] = TrainessCourseRecord.objects.filter(course__site=request.site, approved=True).order_by( "-trainess__id__count").values("trainess__city").annotate(Count("trainess__city"), Count("trainess__id", distinct=True)) # kurs bazinda toplam teyitli olanlar total_profile = len( TrainessCourseRecord.objects.filter(course__site=request.site).order_by("trainess").values( "trainess").distinct()) total_preference = len(TrainessCourseRecord.objects.filter(course__site=request.site)) data['statistic_by_totalsize'] = {'Toplam Profil(Kişi)': total_profile, 'Toplam Tercih': total_preference} except Exception as e: log.error(e.message, extra=request.log_extra) return render(request, "training/statistic.html", data) else: return redirect("index")
def createprofile(request): d = {'clientip': request.META['REMOTE_ADDR'], 'user': request.user} data = getsiteandmenus(request) log.info("create profile form", extra=d) data['update_user_form'] = UpdateUserForm(instance=request.user) data['accomodations_preference_count'] = range(ACCOMODATION_PREFERENCE_LIMIT) data['form'] = None try: user_profile = request.user.userprofile note = _("You can update your profile below") data['form'] = StuProfileForm(instance=user_profile) if not UserProfileOPS.is_instructor(user_profile): log.debug("egitmen olmayan kullanici icin isleme devam ediliyor", extra=d) data['accomodations'] = Accommodation.objects.filter( usertype__in=['stu', 'hepsi'], gender__in=[user_profile.gender, 'H'], site=data['site']).order_by( 'name') data['accomodation_records'] = UserAccomodationPref.objects.filter(user=user_profile).order_by( 'preference_order') except: note = _("If you want to continue please complete your profile.") data['form'] = StuProfileForm() data['accomodations'] = Accommodation.objects.filter(usertype__in=['stu', 'hepsi'], gender__in=['K', 'E', 'H'], site=data['site']).order_by('name') data['sitewidequestions'] = TextBoxQuestions.objects.filter(site=data["site"], active=True, is_sitewide=True) if 'register' in request.POST: data['update_user_form'] = UpdateUserForm(data=request.POST, instance=request.user) try: data['form'] = StuProfileForm(request.POST, request.FILES, instance=request.user.userprofile, ruser=request.user) except UserProfile.DoesNotExist: data['form'] = StuProfileForm(request.POST, request.FILES, ruser=request.user) if data['update_user_form'].is_valid(): data['update_user_form'].save() if data['form'].is_valid(): log.info("formvalid", extra=d) try: profile = data['form'].save(commit=False) profile.user = request.user profile.profilephoto = data['form'].cleaned_data['profilephoto'] profile.save() if data['sitewidequestions']: for question in data['sitewidequestions']: answer = request.POST.get("answer%s" % question.pk, "") if answer: tca, created = TrainessClassicTestAnswers.objects.get_or_create( user=request.user.userprofile, question=question) tca.answer = answer tca.save() if not UserProfileOPS.is_instructor(request.user.userprofile) and ACCOMODATION_PREFERENCE_LIMIT: prefs = UserAccomodationPref.objects.filter(user=request.user.userprofile) 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) note = "Profiliniz kaydedildi ancak konaklama tercihleriniz kaydedilemedi." \ " Sistem yöneticisi ile görüşün!" else: 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) note = "Profiliniz kaydedilirken hata oluştu lütfen sayfayı yeniden yükleyip tekrar deneyin" else: note = "Profiliniz aşağıdaki sebeplerden dolayı oluşturulamadı" 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))