示例#1
0
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
示例#2
0
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")
示例#3
0
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")
示例#4
0
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")
示例#5
0
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
示例#6
0
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)
示例#7
0
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
示例#9
0
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
示例#10
0
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))
示例#11
0
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")
示例#12
0
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
示例#13
0
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
示例#14
0
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)
示例#15
0
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
示例#16
0
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")
示例#17
0
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))