Beispiel #1
0
def add(request, *args, **kwargs):
    """资产报修"""
    # TODO 2015-03-23
    # 表单添加字段
    # 所属位置(常规教室(年级,班级,其他(文本框手动输入))

    if models.Setting.getvalue('server_type') != 'school':
        return
    if request.method == 'POST':
        try:
            record = AssetRepairForm(request.POST)
            if record.is_valid():
                a = record.save(commit=False)
                a.reported_by = request.current_user.username
                school = models.Group.objects.get(group_type='school')
                a.school = school
                a.school_name = school.name
                town, town_name = school.get_town()
                a.town = town
                a.town_name = town_name
                a.country_name = school.get_country_name()
                a.save(force_insert=True)
                data = model_to_dict(a)
                data['asset_type__name'] = data['asset_type']['name']
                return create_success_dict(msg='资产报修成功!', data=data)
            return create_failure_dict(msg='资产报修失败!', errors=record.errors)
        except:
            traceback.print_exc()
Beispiel #2
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        try:
            f = LessonTeacherForm(request.POST)
            if f.is_valid():
                lesson_teacher = f.save()
                simplecache.LessonTeacher.update(
                    lesson_teacher.class_uuid.uuid)
                data = model_to_dict(lesson_teacher)
                school_year = lesson_teacher.class_uuid.grade.term.school_year
                data['class_uuid__grade__term__school_year'] = school_year
                term_type = lesson_teacher.class_uuid.grade.term.term_type
                data['class_uuid__grade__term__term_type'] = term_type
                grade_name = lesson_teacher.class_uuid.grade.name
                data['class_uuid__grade__name'] = grade_name
                data['class_uuid__name'] = lesson_teacher.class_uuid.name
                data['lesson_name__name'] = lesson_teacher.lesson_name.name
                data['teacher__name'] = lesson_teacher.teacher.name
                try:
                    stat_obj = models.Statistic.objects.get(
                        key=lesson_teacher.class_uuid.pk)
                    stat_obj.cala('teacher_num', True)
                except Exception as e:
                    logger.exception(e)
                return create_success_dict(msg='添加班级课程授课教师记录成功!', data=data)

            return create_failure_dict(msg='添加班级课程授课教师记录失败!', errors=f.errors)
        except IntegrityError:
            msg = '已有相同的年级班级-课程-教师姓名,无法重复添加!'
            return create_failure_dict(msg=msg)
        except Exception as e:
            logger.exception(e)
            return create_failure_dict(msg=u'添加班级课程授课教师记录失败!', debug=str(e))
Beispiel #3
0
def edit(request, *args, **kwargs):
    # 如果编辑教师时,修改教师的生日,导致(name, birthday, school)
    # 与已删除的隐藏记录重复,这里先删掉隐藏教师。
    if request.method == 'POST':
        try:
            uu = request.POST.get('uuid')
            record = models.Teacher.objects.get(uuid=uu)
        except:
            traceback.print_exc()
            return create_failure_dict(msg='错误的uuid!')

        teacher_form = TeacherForm(request.POST, instance=record)

        if teacher_form.is_valid():
            teacher = teacher_form.save(commit=False)
            school = models.Group.objects.get(group_type='school')
            teacher.school = school
            try:
                teacher.save()
            except IntegrityError, e:
                if 'Duplicate entry' in str(e):
                    return create_failure_dict(msg='已存在同名且同生日的教师')
                old = models.Teacher.objects.get(name=teacher.name,
                                                 school=school,
                                                 birthday=teacher.birthday,
                                                 deleted=True)
                old.delete()
                teacher.save()
            except Exception as e:
                traceback.print_exc()
                return create_failure_dict(msg='服务器错误', debug=str(e))
            return create_success_dict(msg='编辑教师成功!',
                                       data=model_to_dict(teacher))
Beispiel #4
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        lesson_name_form = LessonNameForm(request.POST)
        if lesson_name_form.is_valid():
            obj = lesson_name_form.save()
            return create_success_dict(msg='添加课程成功!', data=model_to_dict(obj))

        return create_failure_dict(msg='添加课程失败!',
                                   errors=lesson_name_form.errors)
Beispiel #5
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        f = NodeForm(request.POST)
        if f.is_valid():
            node = f.save()
            return create_success_dict(msg='添加服务器成功!',
                                       data=model_to_dict(node))

        return create_failure_dict(msg='添加服务器失败!', errors=f.errors)
Beispiel #6
0
def detail(request, *args, **kwargs):
    if request.method == 'GET':
        try:
            uu = request.GET.get('uuid')
            obj = models.Teacher.objects.get(uuid=uu)
            data = model_to_dict(obj)
            return create_success_dict(data=data)
        except:
            return create_failure_dict(msg='错误的uuid!')
Beispiel #7
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        record = TermForm(request.POST)
        if record.is_valid():
            term = record.save(commit=False)
            school = models.Group.objects.get(group_type='school')
            term.school = school
            term.save()
            return create_success_dict(msg='添加学期成功!', data=model_to_dict(term))

        return create_failure_dict(msg='添加学期失败!', errors=record.errors)
Beispiel #8
0
def edit(request, *args, **kwargs):
    if request.method == 'POST':
        try:
            pk = request.POST.get('id')
            node = models.Node.objects.get(id=pk)
            f = NodeForm(request.POST, instance=node)
            if f.is_valid():
                node = f.save()
                return create_success_dict(msg=u'编辑成功!',
                                           data=model_to_dict(node))
            return create_failure_dict(msg=u'操作失败', errors=f.errors)
        except Exception as e:
            return create_failure_dict(msg='操作失败', debug=str(e))
Beispiel #9
0
def detail(request):
    if request.method == 'GET':
        try:
            uu = request.GET.get('uuid')
            u = models.User.objects.filter(uuid=uu)[0]
            p = models.UserPermittedGroup.objects.filter(user=u)
            p = p.values('uuid', 'group__uuid', 'group__name')
            data = {
                'user': model_to_dict(u),
                'permitted_groups': model_list_to_dict(p)
            }
            return create_success_dict(data=data)
        except:
            return create_failure_dict(msg='错误的uuid!')
Beispiel #10
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        role_form = RoleForm(request.POST)
        privileges = request.POST.get('privileges').split(',')
        if role_form.is_valid():
            role = role_form.save()

            for p in privileges:
                record = models.RolePrivilege(role=role, privilege=p)
                record.save()

            return create_success_dict(msg='添加角色成功!', data=model_to_dict(role))

        return create_failure_dict(msg='添加角色失败!', errors=role_form.errors)
Beispiel #11
0
def details(request, *args, **kwargs):
    timelog = []
    timelog.append({'start': str(datetime.datetime.now())})
    curruser = model_to_dict(request.current_user)
    timelog.append({'1': str(datetime.datetime.now())})
    k = 'permitted-groups-%s' % curruser['uuid']
    v = cache.get(k)
    if v:
        curruser['permitted_groups'] = cPickle.loads(v)
    else:
        q = models.Group.objects.filter(
            userpermittedgroup__user=curruser['uuid'])
        curruser['permitted_groups'] = model_list_to_dict(q)
        v = cPickle.dumps(curruser['permitted_groups'],
                          cPickle.HIGHEST_PROTOCOL)
        cache.set(k, v, get_timeout(k, None))
    timelog.append({'3': str(datetime.datetime.now())})
    curruser['role_name'] = ''
    curruser['privileges'] = []
    curruser['superuser'] = False
    timelog.append({'4': str(datetime.datetime.now())})

    if is_admin(request.current_user):
        curruser['role_name'] = '超级管理员'
        curruser['superuser'] = True
        timelog.append({'5-11': str(datetime.datetime.now())})
        server_type = models.Setting.getvalue('server_type')
        timelog.append({'5-12': str(datetime.datetime.now())})

        if server_type not in settings_privileges.PRIVILEGES:
            privileges = copy.deepcopy(
                settings_privileges.PRIVILEGES['school'])
        else:
            privileges = copy.deepcopy(
                settings_privileges.PRIVILEGES[server_type])
        timelog.append({'5-13': str(datetime.datetime.now())})
        curruser['privileges'] = get_all_privilege_keys(privileges)
        timelog.append({'5-14': str(datetime.datetime.now())})
    else:
        if request.current_user.role:
            curruser['role_name'] = request.current_user.role.name
            timelog.append({'5-21': str(datetime.datetime.now())})
            rp = request.current_user.role.roleprivilege_set.all()
            timelog.append({'5-22': str(datetime.datetime.now())})
            curruser['privileges'] = [i.privilege for i in rp]
            timelog.append({'5-23': str(datetime.datetime.now())})

    timelog.append({'end': str(datetime.datetime.now())})
    return create_success_dict(data=curruser, timelog=timelog)
Beispiel #12
0
def edit(request, *args, **kwargs):
    if request.method == 'POST':
        try:
            uu = request.POST.get('uuid')
            obj = models.NewTerm.objects.get(uuid=uu)
            record_form = NewTermForm(request.POST, instance=obj)
            if record_form.is_valid():
                term = record_form.save()
                return create_success_dict(msg='编辑学期成功!',
                                           data=model_to_dict(term))

            return create_failure_dict(msg='编辑学期失败!',
                                       errors=record_form.errors)
        except:
            return create_failure_dict(msg='错误的uuid!')
Beispiel #13
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        record = AssetForm(request.POST)
        if record.is_valid():
            asset = record.save(commit=False)
            asset.school = models.Group.objects.get(group_type='school')
            asset.reported_by = request.current_user.username
            try:
                asset.save()
            except django.db.DataError, e:
                # print dir(e)
                if 'Out of range value' in str(e):
                    return create_failure_dict(msg=u'申报数目过大', debug=str(e))
                return create_failure_dict(msg=str(e), debug=str(e))
            except StandardError, e:
                # print type(e), dir(e)
                # print e.args
                # print e.message
                return create_failure_dict(msg='StandardError', debug=str(e))

            # 插入一条申报记录
            log = models.AssetLog()
            town = asset.school.parent
            town_name = town.name
            if town.group_type != 'town':
                town = None
                town_name = ''
            log.town = town
            try:
                country_name = town.parent.name
            except:
                country_name = ''
            log.country_name = country_name
            log.town_name = town_name
            log.school = asset.school
            log.school_name = asset.school.name
            log.log_type = '新增'
            log.asset_type = asset.asset_type
            log.asset_from = asset.asset_from
            log.device_model = asset.device_model
            log.number = asset.number
            log.reported_by = asset.reported_by
            log.remark = asset.remark
            log.save()

            return create_success_dict(msg='成功申报资产!',
                                       data=model_to_dict(asset))
Beispiel #14
0
def edit(request, *args, **kwargs):
    if request.method == 'POST':
        uu = request.POST.get('uuid')
        record = models.Role.objects.get(uuid=uu)
        role_form = RoleForm(request.POST, instance=record)
        privileges = request.POST.get('privileges').split(',')

        if role_form.is_valid():
            role = role_form.save()
            role.roleprivilege_set.all().delete()
            for p in privileges:
                record = models.RolePrivilege(role=role, privilege=p)
                record.save()

            return create_success_dict(msg='编辑角色成功!', data=model_to_dict(role))

        return create_failure_dict(msg='编辑角色失败!', errors=role_form.errors)
Beispiel #15
0
def add(request, *args, **kwargs):
    if request.method == 'POST':
        user_form = UserForm(request.POST)
        permitted_groups = request.POST.get('permitted_groups').split(',')
        if user_form.is_valid():
            user = user_form.save()

            for group_uuid in permitted_groups:
                try:
                    group = models.Group.objects.get(uuid=group_uuid)
                    record = models.UserPermittedGroup(user=user, group=group)
                    record.save()
                except:
                    pass
            data = model_to_dict(user)
            if 'role' in data:
                if 'name' in data['role']:
                    data['role__name'] = data['role']['name']
            return create_success_dict(msg='添加用户成功!', data=data)

        return create_failure_dict(msg='添加用户失败!', errors=user_form.errors)
Beispiel #16
0
def edit(request, *args, **kwargs):
    if request.method == 'POST':
        try:
            uu = request.POST.get('uuid')
            user = models.User.objects.get(uuid=uu)
            if is_admin(user):
                role = request.POST.get('role', None)
                status = request.POST.get('status', None)
                if role:
                    return create_failure_dict(msg='不允许修改超级管理员用户的角色')

                if status == 'suspended':
                    return create_failure_dict(msg='超级管理员用户不可停用')
            user_form = UserForm(request.POST, instance=user)
            groups = request.POST.get('permitted_groups').split(',')

            if user_form.is_valid():
                u = user_form.save()
                u.userpermittedgroup_set.all().delete()
                for i in groups:
                    try:
                        g = models.Group.objects.get(uuid=i)
                        user = models.UserPermittedGroup(user=u, group=g)
                        user.save()
                    except:
                        pass
                k = 'permitted-groups-%s' % uu
                cache.delete(k)
                k = 'group-%s' % uu
                cache.delete(k)
                data = model_to_dict(u)
                if data['role']:
                    data['role__name'] = u.role.name
                return create_success_dict(msg='编辑用户成功!', data=data)

            return create_failure_dict(msg='编辑用户失败!', errors=user_form.errors)
        except:
            traceback.print_exc()
            return create_failure_dict(msg='错误的uuid!')
Beispiel #17
0
def list_current_or_next(request, *args, **kwargs):
    o = models.NewTerm.get_current_or_next_term()
    if not o:
        o = {}
    return create_success_dict(data=model_to_dict(o))
Beispiel #18
0
def remote_get(request):
    '''
        远程获取大纲内容
        1.保存 syllabusgradelesson内容;
        2.保存 syllabusgradelessoncontent内容;
    '''
    term_uuid = request.POST.get('term_uuid', u'')
    publish = request.POST.get('publish', u'')
    grade_name = request.POST.get('syllabus_grade', u'')
    lesson_name = request.POST.get('lesson_name', u'')
    bookversion = request.POST.get('date', u'')
    #remark = request.POST.get('remark', u'')
    #cover_pic = request.POST.get('cover_pic', u'')
    #version_pic = request.POST.get('version_pic', u'')

    # 1. 保存 syllabusgrade 内容 , 已存在的年级直接读取
    try:
        t = models.NewTerm.objects.get(uuid=term_uuid)
    except:
        return create_failure_dict(msg='错误的学年学期')

    grade = models.SyllabusGrade.objects.get(school_year=t.school_year,
                                             term_type=t.term_type,
                                             grade_name=grade_name)

    # 2. 保存 syllabusgradelessoncontent内容
    year, month, number = bookversion.split('-')
    # 调用远程接口来获取大纲内容并保存
    url = '%s/view/api/syllabus/list-by-bookversion/' % (
        constants.RESOURCE_PLATFORM_HOST)

    data = {
        'lessonname': lesson_name,
        #'volume': u'上册' if t.term_type == u'秋季学期' else u'下册',
        'school_year': t.school_year,
        'term_type': t.term_type,
        'grade_name': grade_name,
        'publish': publish,
        'year': year,
        'month': month,
        'number': number
    }
    try:
        ret = requests.get(url, params=data, timeout=120)
        ret = ret.json()
        data = ret.get('data', None)

        if data:
            remark = data.get('remark', '')
            cover_pic = data.get('cover_pic', '')
            version_pic = data.get('version_pic', '')
            volume = data.get('volume', '')
            records = data.get('records', [])

            # 2.1 保存 syllabusgradelesson 内容 , 已存在的课程直接读取
            lesson, c = models.SyllabusGradeLesson.objects.get_or_create(
                syllabus_grade=grade,
                lesson_name=lesson_name,
                publish=publish,
                bookversion=bookversion,
                defaults={
                    'remark': remark,
                    'picture_host': cover_pic,
                    'picture_url': version_pic,
                    'edition': publish
                })

            if not c:
                return create_failure_dict(msg='不能添加重复课程')

            if lesson.in_use:
                return create_failure_dict(msg='已启用的课程不能拉取教材大纲数据')

            # 根据资源平台传递过来的大纲册来回写班班通该字段
            if volume:
                lesson.volume = volume
                lesson.save()

            # 先删除原来的
            lesson.syllabusgradelessoncontent_set.all().delete()

            # 先处理一下拉取过来的大纲数据,它们有父子关系
            parent_dict = {}
            for record in records:
                id = record['id']
                title = record['title']
                seq = record['seq']
                subseq = record['subseq']
                parent = record['parent']
                # 保存父
                if not parent:
                    obj = models.SyllabusGradeLessonContent.objects.create(
                        syllabus_grade_lesson=lesson,
                        title=title,
                        seq=seq,
                        subseq=subseq)
                    parent_dict[id] = obj

            for record in records:
                title = record['title']
                seq = record['seq']
                subseq = record['subseq']
                parent = record['parent']
                # 保存子
                if parent:
                    parent = parent_dict[parent]
                    models.SyllabusGradeLessonContent.objects.create(
                        syllabus_grade_lesson=lesson,
                        title=title,
                        parent=parent,
                        seq=seq,
                        subseq=subseq)

            return create_success_dict(data={'records': model_to_dict(lesson)})

        return create_failure_dict(msg='无合适课程教学大纲拉取')
    except Exception:
        traceback.print_exc()
        return create_failure_dict(msg='课程教学大纲拉取失败')