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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)