Beispiel #1
0
    def journal_last_semestr(request, *args, **kwargs):
        if Group.objects.get(name='teacher') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left, d_right = mainView.make_dates_last_semestr(request)
            teacher_id = data['userData'].id
            try:
                instance = teacher.objects.filter(pk=teacher_id)
                form = reportListOfJournalsForm(request.POST,
                                                instance=instance.first())

                discip_qs = discipline.objects.filter(
                    teachIdToDiscip=teacher_id).order_by(
                        'dayofWeekStartLecture', 'timeStartLecture')
                discip_qs = discip_qs.extra(where=[
                    f"dateStart>='{d_left.strftime('%Y-%m-%d')}' and dateFinish<='{d_right.strftime('%Y-%m-%d')}'"
                ])
                data['disciplines_for_manager'] = discip_qs

            except ValueError:
                form = reportListOfJournalsForm()

            data['d_left'] = d_left
            data['d_right'] = d_right
            data['form'] = form
            return render(request,
                          'journal/report_journal_manager.html',
                          context=data)
        else:
            raise Http404
    def contact_student(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left, d_right = mainView.make_semestr_dates(request)

            form_table = StudentContactTable(student.objects.all().filter(
                isOn=1).order_by('lastName', 'course', 'depStudId', 'paid'))

            data['form_table'] = form_table
            return render(request, 'journal/table_contacts.html', context=data)
        else:
            raise Http404
    def contact_teacher(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)

            form_table = TeacherContactTable(teacher.objects.all().filter(
                Q(userTechId_id__is_active=1)
                & (Q(dateFinishTeach__gte=datetime.today())
                   | Q(dateFinishTeach__isnull=True))).order_by('lastName'))

            data['form_table'] = form_table
            return render(request, 'journal/table_contacts.html', context=data)
        else:
            raise Http404
    def journal_manager_main(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left, d_right = mainView.determine_date_study(request)
            if request.method == 'POST':
                teacher_id = request.POST['teacher']
                try:
                    instance = teacher.objects.filter(pk=teacher_id)
                    form = reportListOfJournalsForm(request.POST,
                                                    instance=instance.first())

                    format_d = datetime.today().strftime('%Y-%m-%d')
                    discip_qs = discipline.objects.filter(
                        teachIdToDiscip=teacher_id).order_by(
                            'dayofWeekStartLecture', 'timeStartLecture')
                    discip_qs = discip_qs.extra(where=[
                        f"dateStart>='{d_left}' and dateFinish<'{d_right}'"
                    ])
                    data['disciplines_for_manager'] = discip_qs

                except ValueError:
                    form = reportListOfJournalsForm()
            else:
                data['disciplines_for_manager'] = None
                form = reportListOfJournalsForm()

            data['d_left'] = datetime.strptime(d_left, '%Y%m%d')
            data['d_right'] = datetime.strptime(d_right, '%Y%m%d')
            data['form'] = form
            return render(request,
                          'journal/report_journal_manager.html',
                          context=data)
        else:
            raise Http404
    def workload(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all(
                    ) or Group.objects.get(
                        name='teacher') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left, d_right = mainView.determine_date_study(request)

            def select_data(teacher_id, d_left, d_right):
                # with connection.cursor() as cursor:
                cursor = connection.cursor()
                cursor.execute(

                    # qs = material.objects.raw(
                    "SELECT "
                    # "    1 as id , "
                    "    date_format( data_table.dateInit, '%%Y-%%m' ) as d, "
                    "    data_table.paid_discip, "
                    "    SUM( data_table.countHour ) AS 'sum_h' "
                    "FROM "
                    "    ( "
                    "    SELECT "
                    "        journal_material.id, "
                    "        journal_material.dateInit, "
                    "        journal_material.countHour, "
                    "        journal_discipline.paid_discip, "
                    "        journal_position.positionName, "
                    "        journal_teacher.lastName, "
                    "        journal_teacher.firstName"
                    "    FROM"
                    "        `u0865207_journal_amumgk`.`journal_material` "
                    "        JOIN journal_teacher ON journal_teacher.id = journal_material.teachIdToMaterial_id "
                    "        JOIN journal_discipline ON journal_discipline.id = journal_material.discipMaterialId_id "
                    "        JOIN journal_position ON journal_position.id = journal_teacher.positionId_id "
                    "    WHERE"
                    "        journal_material.teachIdToMaterial_id = %s "
                    "        AND journal_material.isCount = 1 "
                    "        AND journal_material.dateInit >= %s "
                    "        AND journal_material.dateInit < %s "
                    "    ORDER BY "
                    "        journal_material.dateInit "
                    "    ) AS data_table "
                    "GROUP BY "
                    "    d, "
                    "    data_table.paid_discip "
                    "ORDER BY "
                    "    d, "
                    "    data_table.paid_discip ",
                    [teacher_id, d_left, d_right])
                return cursor.fetchall()

            if request.method == 'POST':
                teacher_id = request.POST['teacher']
                try:
                    instance = teacher.objects.filter(pk=teacher_id)
                    form = reportListOfJournalsForm(request.POST,
                                                    instance=instance.first())

                    data['table_workload'] = select_data(
                        teacher_id, d_left, d_right)
                except ValueError:
                    form = reportListOfJournalsForm()
            else:
                data['table_workload'] = select_data(data['userData'].id,
                                                     d_left, d_right)
                form = reportListOfJournalsForm()

            data['d_left'] = d_left
            data['d_right'] = d_right
            data['form'] = form
            return render(request,
                          'journal/report_workload.html',
                          context=data)
        else:
            raise Http404
    def schedule_teacher(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left_semestr, d_right_semestr = mainView.make_semestr_dates(
                request)
            d_left_year, d_right_year = mainView.determine_date_study(request)

            if request.method == 'POST':
                teacher_id = request.POST['teacher']

                if 'paid' in request.POST and request.POST['paid'] == 'on':
                    paid = 1
                else:
                    paid = 0

                try:
                    teacher_int = int(teacher_id)
                    instance = teacher.objects.filter(pk=teacher_int)
                    form = reportListOfJournalsForm(request.POST,
                                                    instance=instance.first())
                    qs = student.objects.raw(
                        "SELECT "
                        "journal_teacher.id , "
                        "journal_discipline.dayofWeekStartLecture, "
                        "journal_discipline.timeStartLecture, "
                        "journal_discipline.timeFinishLecture, "
                        "journal_discipline.nameDiscipline, "
                        "journal_teacher.firstName  AS 'teacher_firstName', "
                        "journal_teacher.lastName AS 'teacher_lastName', "
                        "journal_teacher.partonymic AS 'teacher_partonymic' ,"
                        "journal_item.itemName "
                        "FROM "
                        "journal_teacher "
                        "INNER JOIN journal_discipline ON journal_discipline.teachIdToDiscip_id = journal_teacher.id "
                        "INNER JOIN journal_position ON journal_position.id = journal_teacher.positionId_id "
                        "INNER JOIN journal_item ON journal_item.id = journal_discipline.itemIdToDiscip_id  "
                        "WHERE "
                        "`journal_teacher`.id = %s "
                        "AND journal_discipline.paid_discip = %s "
                        "AND journal_discipline.isOn = 1 "
                        "AND ((journal_discipline.dateStart >= %s AND journal_discipline.dateFinish <= %s) OR "
                        " (journal_discipline.dateStart >= %s AND journal_discipline.dateFinish < %s)) "
                        "ORDER BY "
                        "journal_discipline.dayofWeekStartLecture, journal_discipline.timeStartLecture ASC",
                        [
                            teacher_id, paid, d_left_semestr, d_right_semestr,
                            d_left_year, d_right_year
                        ])

                    data['report_schedule'] = qs
                except ValueError:
                    form = reportListOfJournalsForm()
            else:
                form = reportListOfJournalsForm()

            data['teacher_name'] = form.instance
            data['d_left'] = d_left_semestr
            data['d_right'] = d_right_semestr
            data['form'] = form
            return render(request,
                          'journal/report_schedule.html',
                          context=data)
        else:
            raise Http404
    def workload_all(request, *args, **kwargs):
        if request.user.is_staff or Group.objects.get(
                name='course_teacher') in request.user.groups.all(
                ) or Group.objects.get(
                    name='curator') in request.user.groups.all():
            data = mainView.get_data_main(request, *args, **kwargs)
            d_left, d_right = mainView.determine_date_study(request)

            def select_data(d_left, d_right):
                # with connection.cursor() as cursor:
                cursor = connection.cursor()
                cursor.execute(

                    # qs = material.objects.raw(
                    "SELECT "
                    "    data_table.teach_id, "
                    "    data_table.teach, "
                    "    data_table.nameDep, "
                    "    date_format( data_table.dateInit, '%%Y-%%m' ) as d, "
                    "    data_table.paid_discip, "
                    "    SUM( data_table.countHour ) AS 'sum_h', "
                    "    data_table.dep_id "
                    "FROM "
                    "    ( "
                    "    SELECT "
                    "        journal_material.id, "
                    "        journal_material.dateInit, "
                    "        journal_material.countHour, "
                    "        journal_discipline.paid_discip, "
                    "        journal_position.positionName, "
                    "        CONCAT(journal_teacher.lastName, ' ',journal_teacher.firstName, ' ',journal_teacher.partonymic ) as 'teach', "
                    "        journal_teacher.id  as 'teach_id', "
                    "        journal_departament.order_by, "
                    "        journal_departament.nameDep, "
                    "        journal_departament.id as 'dep_id'"
                    "    FROM"
                    "        journal_teacher "
                    "        LEFT JOIN journal_material ON journal_teacher.id = journal_material.teachIdToMaterial_id "
                    "        LEFT JOIN journal_discipline ON journal_discipline.id = journal_material.discipMaterialId_id "
                    "        JOIN journal_position ON journal_position.id = journal_teacher.positionId_id "
                    "        JOIN journal_departament ON journal_departament.id = journal_teacher.depTeachId_id "
                    "    WHERE"
                    "        ((journal_material.discipMaterialId_id OR journal_material.teachIdToMaterial_id is NULL) OR "
                    "        (journal_material.isCount = 1 "
                    "        AND journal_material.dateInit >= %s "
                    "        AND journal_material.dateInit < %s ) ) AND (journal_teacher.dateFinishTeach >= now()  OR journal_teacher.dateFinishTeach is NULL)"
                    "    ORDER BY "
                    "        journal_material.dateInit "
                    "    ) AS data_table "
                    "GROUP BY "
                    "    data_table.order_by, "
                    "    data_table.teach, "
                    "    d, "
                    "    data_table.paid_discip "
                    "ORDER BY "
                    "    data_table.order_by, "
                    "    data_table.teach, "
                    "    d, "
                    "    data_table.paid_discip ",
                    [d_left, d_right])
                return cursor.fetchall()

            data['table_workload'] = select_data(d_left, d_right)
            form = reportListOfJournalsForm()

            data['d_left'] = d_left
            data['d_right'] = d_right
            data['form'] = form
            return render(request,
                          'journal/report_workload_all.html',
                          context=data)
        else:
            raise Http404