Ejemplo n.º 1
0
def createOrganization(request, person=None):
    '''
    创建组织(组织、根部门、未分组部门、员工信息)
    '''
    if not person:
        person = Person()
        person.user = request.user
        person.name = request.user.name
    orgform = OrganizationForm(request.POST)
    if not orgform.is_valid():
        return getErrorFormResult(orgform)
    org = orgform.save()
    person.org = org
    person.save()
    org.managers.add(person)

    department = Department()
    department.name = org.name
    department.flag = 'root'
    department.icon = org.icon
    department.org = org
    department.save()
    department.managers.add(person)

    free_depart = Department()
    free_depart.name = u'未分组'
    free_depart.flag = 'free'
    free_depart.icon = org.icon
    free_depart.org = org
    free_depart.father = department
    free_depart.save()
Ejemplo n.º 2
0
def updateDepartment(request):
    pk = request.POST.get('id')
    if pk:
        dfrom = DepartmentForm(request.POST, instance=Department.objects.get(pk=pk))
    else:
        dfrom = DepartmentForm(request.POST)
    if not dfrom.is_valid():
        return getErrorFormResult(dfrom)
    depart = dfrom.save()
    cache.delete('alldepart_%s' % get_current_org().pk)
    d = MyEncoder.default(depart)
    d['managers'] = MyEncoder.default(depart.managers)
    d['members'] = MyEncoder.default(depart.members)
    return getResult(True, u'保存部门信息成功', d)
Ejemplo n.º 3
0
def create_gysaddress_by_group(request, project_id=None):
    """
    创建一个供应商名录
    by:王健 at:2015-1-14
    增加积分
    by:王健 at:2015-2-5
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加修改时判断是否是当前用户创建的逻辑
    by:尚宗凯 at:2015-3-26
    增加极光推送
    by:尚宗凯 at:2015-4-8
    极光推送别名
    by:尚宗凯 at:2015-4-13
	极光推送IOS增加字段
	by:尚宗凯 at:2015-4-23
    提交日志时刷新阅读时间
    by:尚宗凯 at:2015-05-06
    增加最新数据时间缓存
    by:尚宗凯 at:2015-05-20
    修复小红点bug
    by:尚宗凯 at:2015-05-27
    增加项目状态为 0 装饰器
    by:尚宗凯 at:2015-05-31
    变更极光推送方法
    by:尚宗凯 at:2015-05-31
    添加用户活跃度缓存
    by:尚宗凯 at:2015-06-04
    """
    flag = request.REQUEST.get('flag')
    id = request.REQUEST.get('id')
    if id:
        ghsform = GYSAddressForm(request.POST, instance=GYSAddress.objects.get(pk=id))
        if ghsform.instance.user.pk != request.user.pk:
            return getResult(False, u'不是您发布的数据,不能修改', status_code=2)
    else:
        ghsform = GYSAddressForm(request.POST)
    if not ghsform.is_valid():
        return getErrorFormResult(ghsform)
    ghsform.instance.project_id = int(project_id)
    ghsform.instance.file_group = get_object_or_404(FileGroup, flag=flag)
    ghsform.instance.user = request.user
    gys = ghsform.save()
    # if flag:
    #     alias = list(set(get_alias_by_project_id_flag(project_id, flag)))
    #     NeedPush.send_jpush(flag=flag,
    #                     project_id=project_id,
    #                     title=Project.get_project_name_by_id(project_id),
    #                     msg=FileGroup.objects.get(flag=flag).name,
    #                     alias=alias,
    #                     file_group=FileGroup.objects.get(flag=flag).toJSON()
    #                     )

    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)
    file_group_id = all_flag['flags2'][flag]
    alias = get_alias_by_project_id_flag(project_id, flag, file_group_id)
    alias = list(set(alias))
    NeedPush.send_jpush(flag=flag,
                        project_id=project_id,
                        title=Project.get_project_name_by_id(project_id),
                        msg=all_flag['file_group'][file_group_id]['name'],
                        alias=alias,
                        file_group=all_flag['file_group'][file_group_id]
    )

    # UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=request.user.pk)
    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    cache.set(RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE % (project_id, ghsform.instance.file_group_id), gys.timeline, settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id, gys.timeline, settings.CACHES_TIMEOUT)
    cache.delete(USER_ACTIVITY % (user_id, project_id, ghsform.instance.create_time.strftime('%Y-%m-%d')))

    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, ghsform.instance.file_group_id, user_id))
    UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=user_id)
    UserLastReadTimeline.update_last_read_timeline(project_id, 0, user_id)
    return getResult(True, u'创建供应商名录成功', MyEncoder.default(gys), jifen=create_data_jifen(request, CREATE_DATA))
Ejemplo n.º 4
0
def create_wuzirecord_by_group(request, project_id=None):
    """
    创建一个物资记录
    by:王健 at:2015-1-14
    num bug修复
    by:王健 at:2015-2-3
    增加积分
    by:王健 at:2015-2-5
    优化物资记录 增加方法
    by:王健 at:2015-2-10
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加采购出库入库修改记录
    by:尚宗凯 at:2015-3-26
    添加极光推送
    by:尚宗凯 at:2015-4-8
	极光推送别名
	by:尚宗凯 at:2015-4-13
	极光推送IOS增加字段
	by:尚宗凯 at:2015-4-23
    提交日志时刷新阅读时间
    by:尚宗凯 at:2015-05-06
    优化查询
    by:尚宗凯 at:2015-05-20
    增加项目状态为 0 装饰器
    by:尚宗凯 at:2015-05-31
    添加用户活跃度缓存
    by:尚宗凯 at:2015-06-04
    """
    flag = request.REQUEST.get('flag')
    id = request.REQUEST.get('id')
    create = False
    if id:
        ghsform = WuZiRecordForm(request.POST, instance=WuZiRecord.objects.get(pk=id))
        record = ghsform.instance.record_date
        if ghsform.instance.user.pk != request.user.pk:
            return getResult(False, u'不是您发布的数据,不能修改', status_code=2)
        now = datetime.datetime.now().date()
        if record.date + datetime.timedelta(days=1) < now:
             return getResult(False, u'已超过24小时,不能修改', status_code=2)
    else:
        ghsform = WuZiRecordForm(request.POST)
        record, create = RecordDate.objects.get_or_create(project_id=project_id, file_group=FileGroup.objects.get(flag=flag), date=timezone.now())
        ghsform.instance.record_date = record
        record.num += 1
        record.last_create_user = request.user

    if not ghsform.is_valid():
        if create:
            record.delete()
        return getErrorFormResult(ghsform)
    ghsform.instance.project_id = int(project_id)
    ghsform.instance.file_group = get_object_or_404(FileGroup, flag=flag)
    ghsform.instance.user = request.user
    gys = ghsform.save()

    record.save()
    result = MyEncoder.default(record)
    result.update(MyEncoder.default(gys))

    # if flag:
        # alias = list(set(get_alias_by_project_id_flag(project_id, flag)))
        # NeedPush.send_jpush(flag=flag,
        #                 project_id=project_id,
        #                 title=Project.get_project_name_by_id(project_id),
        #                 msg=FileGroup.objects.get(flag=flag).name,
        #                 alias=alias,
        #                 file_group=FileGroup.objects.get(flag=flag).toJSON()
        #                 )
    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)
    file_group_id = all_flag['flags2'][flag]
    alias = get_alias_by_project_id_flag(project_id, flag, file_group_id)
    alias = list(set(alias))
    NeedPush.send_jpush(flag=flag,
                        project_id=project_id,
                        title=Project.get_project_name_by_id(project_id),
                        msg=all_flag['file_group'][file_group_id]['name'],
                        alias=alias,
                        file_group=all_flag['file_group'][file_group_id]
    )

    # UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=request.user.pk)
    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    cache.set(RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE % (project_id, ghsform.instance.file_group_id), record.timeline, settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id, record.timeline, settings.CACHES_TIMEOUT)
    cache.delete(USER_ACTIVITY % (user_id, project_id, ghsform.instance.create_time.strftime('%Y-%m-%d')))

    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, ghsform.instance.file_group_id, user_id))
    UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=user_id)
    UserLastReadTimeline.update_last_read_timeline(project_id, 0, user_id)
    return getResult(True, u'创建物资记录成功', result, jifen=create_data_jifen(request, CREATE_DATA))
Ejemplo n.º 5
0
def update_userinfo(request):
    """
    修改个人信息
    by:王健 at:2015-1-3
    修改个人相关的信息,新增加了UserInfo表
    by:王健 at:2015-1-18
    修复只传递一个参数时,把其他参数覆盖为空的bug
    by:王健 at:2015-1-19
    修改个人信息返回值
    by:王健 at:2015-1-20
    user 修改过后都更新person的timeline
    by:王健 at:2015-1-25
    user 修改导致的 person更新,插入到 user的save方法中
    by:王健 at:2015-1-28
    添加 nickname的修改
    by:王健 at:2015-3-2
    优化个人信息更新和获取
    by:王健 at:2015-3-9
    解决 缓存不一致问题
    by:王健 at:2015-3-10
    解决缩进错误
    by:尚宗凯 at:2015-3-26
    学历为空做特殊处理
    by:尚宗凯 at:2015-05-13
    项目的超级管理员名字改变,项目的信息也会变,项目的时间戳更新
    by:王健 at:2015-05-21
    is None 判断错误
    by:王健 at:2015-05-21
    增加realname设置
    by:尚宗凯 at:2015-06-26
    """
    user = request.user
    user_flag = False
    if request.REQUEST.has_key('name'):
        user.name = request.REQUEST.get('name')
        for p in Project.objects.filter(manager_id=user.pk):
            p.updatetimeline()
        user_flag = True
    if request.REQUEST.has_key('nickname'):
        user.nickname = request.REQUEST.get('nickname')
        user_flag = True
    if request.REQUEST.has_key('realname'):
        user.realname = request.REQUEST.get('realname')
        user_flag = True
    if request.REQUEST.has_key('sex'):
        if request.REQUEST.get('sex') == 'true':
            user.sex = True
        else:
            user.sex = False
        user_flag = True
    if user_flag:
        user.save()
    userinfo_flag = False
    if hasattr(user, 'userinfo') and user.userinfo:
        userinfo = user.userinfo
        post = {}
        for att in USERINFOATTR:
            if request.REQUEST.has_key(att):
                # setattr(userinfo,att, request.REQUEST.get(att))
                userinfo_flag = True
                post[att] = request.REQUEST.get(att)
            else:
                # setattr(request.POST, att, getattr(userinfo, att))
                if att == "xueli":
                    post[att] = None
                else:
                    post[att] = getattr(userinfo, att)
        userinfoform = UserInfoForm(post, instance=user.userinfo)
    else:
        userinfo_flag = True
        userinfoform = UserInfoForm(request.POST)

    if userinfo_flag:
        if not userinfoform.is_valid():
            return getErrorFormResult(userinfoform)
        userinfoform.instance.user = user
        userinfo = userinfoform.save()
        userinfo.save()
    if not user_flag and not userinfo_flag:
        u = cache.get(USERINFO_INFO % user.pk)
    else:
        u = None
        cache.delete(USERINFO_INFO % user.pk)
    if u is None:
        u = MyEncoder.default(userinfo)
        u.update(user.get_user_map(True))
        cache.set(USERINFO_INFO % user.pk, u, settings.CACHES_TIMEOUT)

    return getResult(True, u'修改个人信息成功', u)
Ejemplo n.º 6
0
def create_gysaddress_by_group(request, project_id=None):
    """
    创建一个供应商名录
    by:王健 at:2015-1-14
    增加积分
    by:王健 at:2015-2-5
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加修改时判断是否是当前用户创建的逻辑
    by:尚宗凯 at:2015-3-26
    增加极光推送
    by:尚宗凯 at:2015-4-8
    极光推送别名
    by:尚宗凯 at:2015-4-13
	极光推送IOS增加字段
	by:尚宗凯 at:2015-4-23
    提交日志时刷新阅读时间
    by:尚宗凯 at:2015-05-06
    增加最新数据时间缓存
    by:尚宗凯 at:2015-05-20
    修复小红点bug
    by:尚宗凯 at:2015-05-27
    增加项目状态为 0 装饰器
    by:尚宗凯 at:2015-05-31
    变更极光推送方法
    by:尚宗凯 at:2015-05-31
    添加用户活跃度缓存
    by:尚宗凯 at:2015-06-04
    """
    flag = request.REQUEST.get('flag')
    id = request.REQUEST.get('id')
    if id:
        ghsform = GYSAddressForm(request.POST,
                                 instance=GYSAddress.objects.get(pk=id))
        if ghsform.instance.user.pk != request.user.pk:
            return getResult(False, u'不是您发布的数据,不能修改', status_code=2)
    else:
        ghsform = GYSAddressForm(request.POST)
    if not ghsform.is_valid():
        return getErrorFormResult(ghsform)
    ghsform.instance.project_id = int(project_id)
    ghsform.instance.file_group = get_object_or_404(FileGroup, flag=flag)
    ghsform.instance.user = request.user
    gys = ghsform.save()
    # if flag:
    #     alias = list(set(get_alias_by_project_id_flag(project_id, flag)))
    #     NeedPush.send_jpush(flag=flag,
    #                     project_id=project_id,
    #                     title=Project.get_project_name_by_id(project_id),
    #                     msg=FileGroup.objects.get(flag=flag).name,
    #                     alias=alias,
    #                     file_group=FileGroup.objects.get(flag=flag).toJSON()
    #                     )

    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)
    file_group_id = all_flag['flags2'][flag]
    alias = get_alias_by_project_id_flag(project_id, flag, file_group_id)
    alias = list(set(alias))
    NeedPush.send_jpush(flag=flag,
                        project_id=project_id,
                        title=Project.get_project_name_by_id(project_id),
                        msg=all_flag['file_group'][file_group_id]['name'],
                        alias=alias,
                        file_group=all_flag['file_group'][file_group_id])

    # UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=request.user.pk)
    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    cache.set(
        RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE %
        (project_id, ghsform.instance.file_group_id), gys.timeline,
        settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id,
              gys.timeline, settings.CACHES_TIMEOUT)
    cache.delete(USER_ACTIVITY %
                 (user_id, project_id,
                  ghsform.instance.create_time.strftime('%Y-%m-%d')))

    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, ghsform.instance.file_group_id, user_id))
    UserLastReadTimeline.update_last_read_timeline(
        project_id=project_id,
        file_group_id=FileGroup.objects.get(flag=flag).pk,
        user_id=user_id)
    UserLastReadTimeline.update_last_read_timeline(project_id, 0, user_id)
    return getResult(True,
                     u'创建供应商名录成功',
                     MyEncoder.default(gys),
                     jifen=create_data_jifen(request, CREATE_DATA))
Ejemplo n.º 7
0
def create_wuzirecord_by_group(request, project_id=None):
    """
    创建一个物资记录
    by:王健 at:2015-1-14
    num bug修复
    by:王健 at:2015-2-3
    增加积分
    by:王健 at:2015-2-5
    优化物资记录 增加方法
    by:王健 at:2015-2-10
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加采购出库入库修改记录
    by:尚宗凯 at:2015-3-26
    添加极光推送
    by:尚宗凯 at:2015-4-8
	极光推送别名
	by:尚宗凯 at:2015-4-13
	极光推送IOS增加字段
	by:尚宗凯 at:2015-4-23
    提交日志时刷新阅读时间
    by:尚宗凯 at:2015-05-06
    优化查询
    by:尚宗凯 at:2015-05-20
    增加项目状态为 0 装饰器
    by:尚宗凯 at:2015-05-31
    添加用户活跃度缓存
    by:尚宗凯 at:2015-06-04
    """
    flag = request.REQUEST.get('flag')
    id = request.REQUEST.get('id')
    create = False
    if id:
        ghsform = WuZiRecordForm(request.POST,
                                 instance=WuZiRecord.objects.get(pk=id))
        record = ghsform.instance.record_date
        if ghsform.instance.user.pk != request.user.pk:
            return getResult(False, u'不是您发布的数据,不能修改', status_code=2)
        now = datetime.datetime.now().date()
        if record.date + datetime.timedelta(days=1) < now:
            return getResult(False, u'已超过24小时,不能修改', status_code=2)
    else:
        ghsform = WuZiRecordForm(request.POST)
        record, create = RecordDate.objects.get_or_create(
            project_id=project_id,
            file_group=FileGroup.objects.get(flag=flag),
            date=timezone.now())
        ghsform.instance.record_date = record
        record.num += 1
        record.last_create_user = request.user

    if not ghsform.is_valid():
        if create:
            record.delete()
        return getErrorFormResult(ghsform)
    ghsform.instance.project_id = int(project_id)
    ghsform.instance.file_group = get_object_or_404(FileGroup, flag=flag)
    ghsform.instance.user = request.user
    gys = ghsform.save()

    record.save()
    result = MyEncoder.default(record)
    result.update(MyEncoder.default(gys))

    # if flag:
    # alias = list(set(get_alias_by_project_id_flag(project_id, flag)))
    # NeedPush.send_jpush(flag=flag,
    #                 project_id=project_id,
    #                 title=Project.get_project_name_by_id(project_id),
    #                 msg=FileGroup.objects.get(flag=flag).name,
    #                 alias=alias,
    #                 file_group=FileGroup.objects.get(flag=flag).toJSON()
    #                 )
    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)
    file_group_id = all_flag['flags2'][flag]
    alias = get_alias_by_project_id_flag(project_id, flag, file_group_id)
    alias = list(set(alias))
    NeedPush.send_jpush(flag=flag,
                        project_id=project_id,
                        title=Project.get_project_name_by_id(project_id),
                        msg=all_flag['file_group'][file_group_id]['name'],
                        alias=alias,
                        file_group=all_flag['file_group'][file_group_id])

    # UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=request.user.pk)
    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    cache.set(
        RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE %
        (project_id, ghsform.instance.file_group_id), record.timeline,
        settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id,
              record.timeline, settings.CACHES_TIMEOUT)
    cache.delete(USER_ACTIVITY %
                 (user_id, project_id,
                  ghsform.instance.create_time.strftime('%Y-%m-%d')))

    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, ghsform.instance.file_group_id, user_id))
    UserLastReadTimeline.update_last_read_timeline(
        project_id=project_id,
        file_group_id=FileGroup.objects.get(flag=flag).pk,
        user_id=user_id)
    UserLastReadTimeline.update_last_read_timeline(project_id, 0, user_id)
    return getResult(True,
                     u'创建物资记录成功',
                     result,
                     jifen=create_data_jifen(request, CREATE_DATA))
Ejemplo n.º 8
0
def update_userinfo(request):
    """
    修改个人信息
    by:王健 at:2015-1-3
    修改个人相关的信息,新增加了UserInfo表
    by:王健 at:2015-1-18
    修复只传递一个参数时,把其他参数覆盖为空的bug
    by:王健 at:2015-1-19
    修改个人信息返回值
    by:王健 at:2015-1-20
    user 修改过后都更新person的timeline
    by:王健 at:2015-1-25
    user 修改导致的 person更新,插入到 user的save方法中
    by:王健 at:2015-1-28
    添加 nickname的修改
    by:王健 at:2015-3-2
    优化个人信息更新和获取
    by:王健 at:2015-3-9
    解决 缓存不一致问题
    by:王健 at:2015-3-10
    解决缩进错误
    by:尚宗凯 at:2015-3-26
    学历为空做特殊处理
    by:尚宗凯 at:2015-05-13
    项目的超级管理员名字改变,项目的信息也会变,项目的时间戳更新
    by:王健 at:2015-05-21
    is None 判断错误
    by:王健 at:2015-05-21
    增加realname设置
    by:尚宗凯 at:2015-06-26
    """
    user = request.user
    user_flag = False
    if request.REQUEST.has_key('name'):
        user.name = request.REQUEST.get('name')
        for p in Project.objects.filter(manager_id=user.pk):
            p.updatetimeline()
        user_flag = True
    if request.REQUEST.has_key('nickname'):
        user.nickname = request.REQUEST.get('nickname')
        user_flag = True
    if request.REQUEST.has_key('realname'):
        user.realname = request.REQUEST.get('realname')
        user_flag = True
    if request.REQUEST.has_key('sex'):
        if request.REQUEST.get('sex') == 'true':
            user.sex = True
        else:
            user.sex = False
        user_flag = True
    if user_flag:
        user.save()
    userinfo_flag = False
    if hasattr(user, 'userinfo') and user.userinfo:
        userinfo = user.userinfo
        post = {}
        for att in USERINFOATTR:
            if request.REQUEST.has_key(att):
                # setattr(userinfo,att, request.REQUEST.get(att))
                userinfo_flag = True
                post[att] = request.REQUEST.get(att)
            else:
                # setattr(request.POST, att, getattr(userinfo, att))
                if att == "xueli":
                    post[att] = None
                else:
                    post[att] = getattr(userinfo, att)
        userinfoform = UserInfoForm(post, instance=user.userinfo)
    else:
        userinfo_flag = True
        userinfoform = UserInfoForm(request.POST)

    if userinfo_flag:
        if not userinfoform.is_valid():
            return getErrorFormResult(userinfoform)
        userinfoform.instance.user = user
        userinfo = userinfoform.save()
        userinfo.save()
    if not user_flag and not userinfo_flag:
        u = cache.get(USERINFO_INFO % user.pk)
    else:
        u = None
        cache.delete(USERINFO_INFO % user.pk)
    if u is None:
        u = MyEncoder.default(userinfo)
        u.update(user.get_user_map(True))
        cache.set(USERINFO_INFO % user.pk, u, settings.CACHES_TIMEOUT)

    return getResult(True, u'修改个人信息成功', u)