Example #1
0
def direction(request):
    context = {}
    data = []
    row = {
        'id': "rootnode",
        'parent': '#',
        'text': gettext("x_directional_type"),
        'type': 'root'
    }
    data.append(row)

    all_directions = course_model.Direction.objects.filter(
        status=Status.NORMAL)
    direction_type_list = all_directions.filter(
        parent__isnull=True).order_by('-update_time')
    direction_sub_type_list = all_directions.filter(parent__isnull=False)

    for direction_type in direction_type_list:
        row = {
            'id':
            str(direction_type.id),
            'parent':
            'rootnode',
            'text':
            escape(direction_type.en_name)
            if is_en(request) else escape(direction_type.cn_name),
            'cn_name':
            escape(direction_type.cn_name),
            'type':
            'device_type',
            'en_name':
            escape(direction_type.en_name)
        }
        data.append(row)

    for direction_sub_type in direction_sub_type_list:
        row = {
            'id':
            '{}:{}'.format(direction_sub_type.parent_id,
                           direction_sub_type.id),
            'parent':
            str(direction_sub_type.parent_id),
            'text':
            escape(direction_sub_type.en_name)
            if is_en(request) else escape(direction_sub_type.cn_name),
            'type':
            'device_sub_type',
            'cn_name':
            escape(direction_sub_type.cn_name),
            'en_name':
            escape(direction_sub_type.en_name)
        }
        data.append(row)
    context['jstree'] = json.dumps(data)
    return render(request, 'course/cms/standard_direction_type.html', context)
Example #2
0
def info(request, **kwargs):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    context = kwargs.get('menu')
    s_c = SystemConfiguration.objects.filter(key='organization')
    if s_c.exists():
        s_c = s_c.first()
        school = s_c.value
    else:
        school = "OJ Platform"
    context['school_name'] = school
    context['user'] = request.user
    faculty_name, major_name, classes_name, audit = ['', '', '', '']
    if (Faculty.objects.filter(id=request.user.faculty_id).exists()):
        faculty_object = Faculty.objects.filter(id=request.user.faculty_id)
        faculty_name = faculty_object[0].name
    if (Major.objects.filter(id=request.user.major_id).exists()):
        major_object = Major.objects.filter(id=request.user.major_id)
        major_name = major_object[0].name
    if (Classes.objects.filter(id=request.user.classes_id).exists()):
        classes_object = Classes.objects.filter(id=request.user.classes_id)
        classes_name = classes_object[0].name
    if SystemConfiguration.objects.filter(key='audit').exists():
        audit = SystemConfiguration.objects.filter(key='audit').first().value

    context['audit'] = audit
    context['faculty'] = faculty_name
    context['major'] = major_name
    context['classes'] = classes_name
    context['ORGANIZATION'] = ORGANIZATION

    return render(request, 'x_person/web/info.html', context)
Example #3
0
def statistics(request, course_id):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    course_id = int(course_id)
    course_obj = get_object_or_404(course_model.Lesson, id=course_id)

    product_type = get_product_type()
    faculty_list = Faculty.objects.all()
    major_list = Major.objects.all()
    classes_list = Classes.objects.all()

    context = {
        'product_type': product_type,
        'faculty_list': faculty_list,
        'major_list': major_list,
        'classes_list': classes_list,
        'course': course_obj,
        'ORGANIZATION': ORGANIZATION,
        'course_type': int(course_obj.type),
    }

    return render(request, 'course/cms/course_statistics.html', context)
Example #4
0
def sys_notice_detail(request, pk):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    context = {
        'classes_list': Classes.objects.filter(status=Status.NORMAL),
        'faculty_list': Faculty.objects.filter(status=Status.NORMAL),
        'groups': get_groups(),
        'select': 3,
        'ORGANIZATION': ORGANIZATION,
    }
    pk = int(pk)
    if pk == 0:
        context['mode'] = 0
    else:
        try:
            sysNotice = SysNotice.objects.get(pk=pk)
        except SysNotice.DoesNotExist as e:
            return default_views.Http404Page(request, e)
        sysNotice = mserializers.SysNoticeSerializer(sysNotice).data
        context['mode'] = 1
        context['sysNotice'] = sysNotice

    return render(request, 'sys_notice_detail.html', context)
Example #5
0
    def sub_perform_create(self, serializer):
        if is_en(self.request):
            ORGANIZATION = ORGANIZATION_EN
        else:
            ORGANIZATION = ORGANIZATION_CN
        if serializer.validated_data.get('group') == 3:
            if serializer.validated_data.get('faculty') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Second_level']))
            if serializer.validated_data.get('major') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Third_level']))
            if serializer.validated_data.get('classes') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Fourth_level']))

        if serializer.validated_data.get('name') is None:
            raise exceptions.ValidationError(SysNoticeError.LOST_TITLE)

        if serializer.validated_data.get('content') is None:
            raise exceptions.ValidationError(SysNoticeError.LOST_CONTENT)

        if len(serializer.validated_data.get('content')) > 100:
            raise exceptions.ValidationError(SysNoticeError.CONTENTLT100)

        if SysNotice.objects.filter(
                name=serializer.validated_data.get('name')).exists():
            raise exceptions.ValidationError(SysNoticeError.NAME_HAVE_EXISTED)
        else:
            serializer.save(creator=self.request.user, )
        return True
Example #6
0
def lesson_classroom(request, classroom_id):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    classroom = get_object_or_404(course_model.CourseSchedule,
                                  pk=int(classroom_id))
    lesson = classroom.lesson
    context = {
        'id':
        classroom.id,
        'schedule_id':
        classroom.id,
        'lesson_id':
        lesson.id,
        'course_id':
        lesson.course_id,
        'lesson_name':
        lesson.name,
        'classes_id':
        classroom.classes_id,
        'is_experiment':
        course_model.Lesson.Type.EXPERIMENT == lesson.type and True or False,
        'ORGANIZATION':
        ORGANIZATION,
    }

    return render(request, 'course/cms/lesson_classroom.html', context)
Example #7
0
def rank(request, **kwargs):
    context = kwargs.get('menu')
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    context['ORGANIZATION'] = ORGANIZATION
    return render(request, 'x_person/web/rank.html', context)
Example #8
0
def auth_class(request, context):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    if context:
        context['facultys'] = auth_api.get_faculty()
        context['majors'] = auth_api.get_major()
        context['ORGANIZATION'] = ORGANIZATION

    return render(request, 'cms/auths.html', context)
Example #9
0
def review(request, pk, **kwargs):
    context = kwargs.get('menu')
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    try:
        exam = event_models.Event.objects.get(pk=pk)
        ######
        # score = event_models.Score.objects.get(pk=pk)
        ######
    except Exception, e:
        return default_views.Http404Page(request, e)
Example #10
0
def detail(request, pk, **kwargs):
    context = kwargs.get('menu')
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    try:
        exam = event_models.Event.objects.get(pk=pk)
        ua.event_exam(request.user, testpaper=exam.name)
        ######
        # score = event_models.Score.objects.get(pk=pk)
        ######
    except Exception, e:
        return default_views.Http404Page(request, e)
Example #11
0
def user_statistics(request, user_id):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    user_obj = User.objects.filter(id=user_id).first()
    direction_obj = course_model.Direction.objects.exclude(parent_id=None)
    context = {
        "user": user_obj,
        "direction": direction_obj,
        "ORGANIZATION": ORGANIZATION,
    }
    return render(request, 'course/cms/user_statistics.html', context)
Example #12
0
def schedule_list(request):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    default_schedule = CourseSchedule.objects.filter(
        status=Status.NORMAL).first()
    context = {
        'teacher_list':
        User.objects.exclude(status=User.USER.DELETE).filter(
            Q(groups__id=GroupType.TEACHER) | Q(is_superuser=1)),
        'default_schedule':
        default_schedule,
        'ORGANIZATION':
        ORGANIZATION,
    }
    return render(request, 'course/cms/schedule.html', context)
Example #13
0
def class_statistics_detail(request, class_id):
    class_id = int(class_id)
    users = User.objects.filter(classes_id=class_id).exclude(
        status=User.USER.DELETE)
    class_obj = Classes.objects.filter(id=class_id)

    if class_obj.exists():
        if is_en(request):
            ORGANIZATION = ORGANIZATION_EN
        else:
            ORGANIZATION = ORGANIZATION_CN

        context = dict(class_id=class_id,
                       student_nums=users.count(),
                       class_name=class_obj.first().name,
                       ORGANIZATION=ORGANIZATION)

        return render(request, 'course/cms/class_statistics_detail.html',
                      context)
Example #14
0
    def sub_perform_update(self, serializer):
        if is_en(self.request):
            ORGANIZATION = ORGANIZATION_EN
        else:
            ORGANIZATION = ORGANIZATION_CN
        faculty = Faculty(self.request.data.get("faculty"))
        major = Major(self.request.data.get("major"))
        classes = Classes(self.request.data.get("classes"))

        if serializer.validated_data.get('group') == 3:
            if serializer.validated_data.get('faculty') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Second_level']))
            if serializer.validated_data.get('major') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Third_level']))
            if serializer.validated_data.get('classes') is None:
                raise exceptions.ValidationError(
                    SysNoticeError.PLEASE_SELECT_FORMAT.format(
                        ORGANIZATION['Fourth_level']))

        if serializer.validated_data.get('group') is not 3:
            faculty = None
            major = None
            classes = None

        if serializer.validated_data.get('name'):
            if SysNotice.objects.filter(
                    name=serializer.validated_data.get('name')):
                raise exceptions.ValidationError(
                    SysNoticeError.NAME_HAVE_EXISTED)

        serializer.save(faculty=faculty, major=major, classes=classes)

        # 更新后将已读的消息状态重置为未读
        read_notice = UserNotice.objects.filter(
            sys_notice_id=self.get_object().id, status=UserNotice.Status.READ)
        read_notice.update(status=UserNotice.Status.DELETE)

        return True
Example #15
0
def user_list(request):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    product_type = get_product_type()
    faculty_list = Faculty.objects.all()
    major_list = Major.objects.all()
    classes_list = Classes.objects.all()
    superuser = 1 if request.user.is_superuser else 0
    staff = 1 if request.user.is_staff else 0
    context = {
        'ORGANIZATION': ORGANIZATION,
        'product_type': product_type,
        'faculty_list': faculty_list,
        'major_list': major_list,
        'classes_list': classes_list,
        'superuser': superuser,
        'staff': staff
    }
    return render(request, 'user_list.html', context)
Example #16
0
def user_audit(request, pk):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN
    product_type = get_product_type()
    faculty_list = Faculty.objects.all()
    major_list = Major.objects.all()
    classes_list = Classes.objects.all()
    group_list = Group.objects.all()

    for g in group_list:
        g.name = _(g.name)

    context = {
        'product_type': product_type,
        'faculty_list': faculty_list,
        'major_list': major_list,
        'classes_list': classes_list,
        'group_list': group_list,
        'ORGANIZATION': ORGANIZATION,
    }
    if int(pk) == 0:
        context['mode'] = 0
    else:
        try:
            user = auth_model.User.objects.get(pk=pk)
            context['user'] = user
            context['majorId'] = user.major_id if user.major_id else -1
            context['classesId'] = user.classes_id if user.classes_id else -1
            if context['majorId'] != -1:
                context['major'] = Major.objects.filter(id=user.major_id).first().name
            if context['classesId'] != -1:
                context['classes'] = Classes.objects.filter(id=user.classes_id).first().name

        except auth_model.User.DoesNotExist as e:
            return default_views.Http404Page(request, e)
        context['mode'] = 1
        context['userinfo'] = m_serializers.UserSerializer(user).data
    return render(request, 'audit_detail.html', context)
Example #17
0
def class_statistics_list(request):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    faculty_list = Faculty.objects.all()
    major_list = Major.objects.all()
    classes_list = Classes.objects.all()
    direction_ids = list(
        course_model.Course.objects.values_list('direction',
                                                flat=True).distinct())
    sub_direction_ids = list(
        course_model.Course.objects.values_list('sub_direction',
                                                flat=True).distinct())
    all_ids = direction_ids + sub_direction_ids
    all_directions = course_model.Direction.objects.filter(
        status=Status.NORMAL, id__in=all_ids)

    context = dict(
        faculty_list=faculty_list,
        major_list=major_list,
        classes_list=classes_list,
        ORGANIZATION=ORGANIZATION,
    )

    context.update({
        'difficulty':
        get_difficulty(),
        'directions':
        all_directions.filter(parent__isnull=True),
        'sub_directions':
        all_directions.filter(parent__isnull=False)
    })

    return render(request, 'course/cms/class_statistics_list.html', context)
Example #18
0
def event_report_score(request, pk):
    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    context = {}
    context['pk'] = pk
    context['ORGANIZATION'] = ORGANIZATION
    try:
        event = common.get_user_event(request.user, pk)
        context['event'] = event
        taskArrary = event_models.EventTask.objects.filter(event=pk)
        all_score = 0
        all_count = 0
        for t in taskArrary:
            all_count += 1
            all_score = all_score + t.task_score
        context['all_score'] = all_score
        context['all_count'] = all_count
        # 获取授权的班级,年级,院系

        auth_class_list = event.auth_classes.all()

        auth_major = []
        auth_faculty = []
        auth_class = []
        process = []
        # is authority
        process = [{
            'id': 0,
            'status': _("x_answering")
        }, {
            'id': 1,
            'status': _("x_submit_over")
        }]

        if len(auth_class_list) == 0:
            auth_class_list = Classes.objects.all()

        for classes in auth_class_list:
            auth_class.append(classes)
            major_dict = {
                'name': classes.major_name(),
                'id': classes.major_id,
                'parent_id': classes.major.faculty_id,
            }
            faculty_dict = {
                'name': classes.faculty_name(),
                'id': classes.faculty(),
            }

            if not auth_major.__contains__(major_dict):
                auth_major.append(major_dict)

            if not auth_faculty.__contains__(faculty_dict):
                auth_faculty.append(faculty_dict)

        context['process'] = process
        context['classes'] = auth_class
        context['majors'] = auth_major
        context['facultys'] = auth_faculty

    except event_models.Event.DoesNotExist as e:
        return default_views.Http404Page(request, e)

    return app_render(request, 'exam_result_list.html', context)
Example #19
0
def user_detail(request, pk):
    def check_authority(user, allow_self=False):
        operate_user = request.user
        if user.id == operate_user.id:
            return True if allow_self else False
        if user.groups.filter(id=GroupType.ADMIN) or user.is_superuser:
            return False
        else:
            if user.groups.filter(id=GroupType.TEACHER):
                return True if operate_user.is_superuser or operate_user.groups.filter(id=GroupType.ADMIN) else False
            if user.groups.filter(id=GroupType.USER):
                return True if not operate_user.groups.filter(id=GroupType.USER) else False
        return False

    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    product_type = get_product_type()
    faculty_list = Faculty.objects.all()
    major_list = Major.objects.all()
    classes_list = Classes.objects.all()

    edit_user = request.user
    # 如果操作人是超级管理员
    if edit_user.is_superuser:
        group_list = Group.objects.all()
    # 如果管理员操作自己
    elif edit_user.id == int(pk) and edit_user.groups.filter(id=GroupType.ADMIN):
        group_list = Group.objects.all()
    # 如果操作人是教员
    elif edit_user.is_staff:
        ids = [2, 3]
        group_list = Group.objects.all().filter(id__in=ids)
    # 如果操作人是学员
    else:
        ids = [3]
        group_list = Group.objects.all().filter(id__in=ids)

    # fan yi
    for g in group_list:
        g.name = _(g.name)
    context = {
        'product_type': product_type,
        'faculty_list': faculty_list,
        'major_list': major_list,
        'classes_list': classes_list,
        'group_list': group_list,
        'ORGANIZATION': ORGANIZATION,
    }

    if int(pk) == 0:
        # 如果是新增
        context['mode'] = 0
        context['default_group'] = _('x_student')
    else:
        try:
            user = auth_model.User.objects.get(pk=pk)
            if user.status == 0:
                return default_views.Http404Page(request, '')
            if not check_authority(user, True):
                return default_views.Http404Page(request, '')
            context['user'] = user
            context['majorId'] = user.major_id if user.major_id else -1
            context['classesId'] = user.classes_id if user.classes_id else -1
            if context['majorId'] != -1:
                context['major'] = Major.objects.filter(id=user.major_id).first().name
            if context['classesId'] != -1:
                context['classes'] = Classes.objects.filter(id=user.classes_id).first().name

        except auth_model.User.DoesNotExist as e:
            return default_views.Http404Page(request, e)
        context['mode'] = 1

        user_info = m_serializers.UserSerializer(user).data
        user_info['group_name'] = _(user_info['group_name'])
        context['userinfo'] = user_info

    return render(request, 'user_detail.html', context)
Example #20
0
def organization(request):
    product_type = get_edition()

    if is_en(request):
        ORGANIZATION = ORGANIZATION_EN
    else:
        ORGANIZATION = ORGANIZATION_CN

    context = {
        'product_type': product_type,
        'ORGANIZATION': ORGANIZATION,
    }
    system_configuration_list = SystemConfiguration.objects.filter(key="organization")
    if system_configuration_list:
        system_configuration = system_configuration_list.first()
        organization = system_configuration.value
    else:
        organization = "OJ Platform"
    Faculties = Faculty.objects.all()

    data = []
    row = {
        'id': "rootnode",
        'parent': '#',
        'text': organization,
        'type': 'root'
    }
    data.append(row)
    for faculty in Faculties:
        row = {
            'id': str(faculty.id),
            'parent': 'rootnode',
            'text': escape(faculty.name),
            'type': 'faculty'
        }
        data.append(row)

    majors = Major.objects.all()
    for major in majors:
        row = {
            'id': str(major.faculty.id) + ':' + str(major.id),
            'parent': str(major.faculty.id),
            'text': escape(major.name),
            'type': 'major'
        }

        data.append(row)

    classlist = Classes.objects.all()
    for classes in classlist:
        row = {
            'id': str(classes.major.faculty.id) + ':' + str(classes.major.id) + ':' + str(classes.id),
            'parent': str(classes.major.faculty.id) + ':' + str(classes.major.id),
            'text': escape(classes.name),
            'type': 'class'
        }
        data.append(row)
    # userlist=User.objects.all()
    # for user in userlist:
    #     row = {
    #         'id': str(user.classes.major.faculty.id) + ':' + str(user.classes.major.id) + ':' + str(user.classes.id) + str(user.id),
    #         'parent': str(user.classes.major.faculty.id) + ':' + str(user.classes.major.id)+ ':' + str(user.classes.id),
    #         'text': user.student_id,
    #         'type': 'studentID'
    #     }
    #     data.append(row)


    context['jstree'] = json.dumps(data)
    return render(request, 'organization.html', context)