コード例 #1
0
ファイル: views_org.py プロジェクト: wangjian2254/CalendarOA
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)
コード例 #2
0
ファイル: views_user.py プロジェクト: cash2one/ESNS
def guanzhu_project(request):
    """
    关注项目
    by:王健 at:2015-1-30
    元祖改为字符串
    by:王健 at:2015-1-31
    增加缓存
    by:王健 at:2015-3-9
    清空个人信息
    by:王健 at:2015-3-16
    """
    cache.delete(MY_PROJECT_QUERY_LIST % request.user.pk)
    project_id = request.REQUEST.get('project_id', '')
    do = request.REQUEST.get('do', 'join')
    try:
        project = Project.objects.get(id=project_id)
        if do == 'join':
            if not project.nsuser_set.filter(id=request.user.id).exists():
                project.nsuser_set.add(request.user)
                project.guanzhu_num += 1
                project.save()
                msg = u'关注%s成功'
                cache.delete(USERINFO_INFO % request.user.pk)
            else:
                msg = u'已经关注过%s'
            return getResult(
                True, msg % project.name, {
                    'project':
                    MyEncoder.default(project),
                    'guanzhuprojectlist':
                    [p[0] for p in request.user.guanzhu.values_list('id')]
                })
        else:
            if project.nsuser_set.filter(id=request.user.id).exists():
                project.nsuser_set.remove(request.user)
                project.guanzhu_num -= 1
                project.save()
                cache.delete(USERINFO_INFO % request.user.pk)
            return getResult(
                True, u'取消关注%s成功' % project.name, {
                    'project':
                    MyEncoder.default(project),
                    'guanzhuprojectlist':
                    [p[0] for p in request.user.guanzhu.values_list('id')]
                })
    except Project.DoesNotExist:
        return getResult(False, u'项目不存在')
    except ValueError:
        return getResult(False, u'参数格式错误')
コード例 #3
0
def query_sysmessage(request, project_id=None):
    """
    根据项目查询系统消息
    by:王健 at:2015-2-26
    优化系统消息查询接口
    by:王健 at:2015-4-13
    增加刷新最后阅读系统消息时间
    by:尚宗凯 at:2015-05-08
    删除缓存
    by:尚宗凯 at:2105-05-22
    """
    timeline = int(request.REQUEST.get('timeline', '0'))
    group_id = request.REQUEST.get('group_id')
    l = SysMessage.objects.filter(project_id=project_id)
    if timeline:
        l = l.filter(timeline__gt=int(timeline)).order_by('timeline')
    else:
        l = l.order_by('-timeline')
    if group_id:
        l = l.filter(Q(user_id=request.user.pk) | Q(user=None) | Q(to_group_id=group_id))
    else:
        l = l.filter(to_group_id=None).filter(Q(user_id=request.user.pk) | Q(user=None))
    user_id = request.user.pk
    LastReadTimeProjectSysMessage.update_last_read_timeline(type="sysmessage", user_id=user_id, project_id=project_id,group_id=group_id)
    cache.delete(RED_DOT_PROJECT_SYS_MESSAGE_UNREAD_NUMBER % ("sysmessage", user_id, project_id, None))
    return getResult(True, u'获取系统消息', MyEncoder.default(l[:20]))
コード例 #4
0
ファイル: views_wzgl.py プロジェクト: appleface2050/ESNS
def query_wuzirecord_by_group(request, project_id=None):
    """
    查询物资记录,根据应用节点,和时间戳
    by:王健 at:2015-1-14
    添加记录日期id,获取全部信息
    by:王健 at:2015-1-31
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加开始结束时间搜索
    by:尚宗凯 at:2015-05-14
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    record_date_id = request.REQUEST.get('record_date_id')
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = WuZiRecord.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = WuZiRecord.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id, record_date_id=record_date_id, file_group__flag=flag).order_by('-timeline')
    else:
        l = l.filter(project_id=project_id, record_date_id=record_date_id, file_group__flag=flag, timeline__gt=int(timeline)).order_by('timeline')
    return getResult(True, None, MyEncoder.default(l))
コード例 #5
0
def create_project_message(request, project_id=None):
    """
    创建项目公告,根据分组
    by:王健 at:2015-2-26
    标题和内容不能为空
    by:尚宗凯 at:2015-05-04
    创建项目公告时刷新最后一次阅读时间
    by: 尚宗凯 at:2015-05-08
    创建项目公告更新最后阅读时间
    by:尚宗凯 at:2105-05-21
    """
    group_id = request.REQUEST.get('group_id')
    text = request.REQUEST.get('text')
    title = request.REQUEST.get('title')
    if title == "":
        return getResult(False, u'标题不能为空', status_code=2)
    if text == "":
        return getResult(False, u'内容不能为空', status_code=2)

    group = Group.objects.get(pk=group_id, project_id=project_id)
    if group.say_members.filter(id=request.user.id).exists():
        msg = ProjectMessage()
        msg.project_id = int(project_id)
        msg.to_group = group
        msg.user = request.user
        msg.title = title
        msg.text = text
        msg.save()
        LastReadTimeProjectSysMessage.update_last_read_timeline(type="project_message", user_id=request.user.pk, project_id=project_id,group_id=group_id)
        cache.set(RED_DOT_PROJECT_SYS_MESSAGE_LAST_NEW_DATA_TIMELINE % ("project_message", project_id, group_id), msg.timeline, settings.CACHES_TIMEOUT)
        return getResult(True, u'发布公告成功', MyEncoder.default(msg))
    else:
        return getResult(False, u'您不具有发布公告的权限', status_code=8)
コード例 #6
0
ファイル: views_user.py プロジェクト: appleface2050/ESNS
def get_userinfo(request, project_id):
    """
    根据id获取用户基础信息
    by:王健 at:2015-1-16
    修改个人信息返回值
    by:王健 at:2015-1-20
    修复id值不对的bug
    by:王健 at:2015-2-17
    查询视图替代查询表
    by:尚宗凯 at:2015-3-6
    查询表替代视图
    by:尚宗凯 at:2015-3-8
    :param request:
    :return:
    """
    userid = request.REQUEST.get('user_id')
    if Person.objects.filter(user_id=userid, project_id=project_id).exists():
        person = Person.objects.get(user_id=userid, project_id=project_id)
        user = person.user
        p = user.get_user_map()
        if hasattr(user, 'userinfo') and user.userinfo:
            p.update(MyEncoder.default(user.userinfo))
        p['id'] = user.pk
        return getResult(True, '', p)
    else:
        return getResult(False, u'不是项目组内成员')
コード例 #7
0
ファイル: views_gcjc.py プロジェクト: appleface2050/ESNS
def query_enginecheck_by_group_old(request, project_id=None):
    """
    查询工程检查,根据应用节点,和时间戳 旧数据
    by:王健 at:2015-1-13
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
	增加根据开始时间结束时间搜索
	by:尚宗凯 at:2015-05-13
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """

    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = EngineCheck.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = EngineCheck.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id, file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id, file_group__flag=flag, timeline__lt=int(timeline)).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #8
0
    def send_jpush(flag, project_id, title, msg, alias, file_group):
        """
        项目状态为关闭,已删除的情况不发
        by:尚宗凯 at:2015-05-31
        """

        project = cache.get(PROJECT_INFO % project_id)
        if project is None:
            from needserver.models import Project
            if Project.objects.filter(pk=project_id).exists():
                project = Project.objects.get(pk=project_id)
                project = MyEncoder.default(project)
                cache.set(PROJECT_INFO % project_id, project,
                          settings.CACHES_TIMEOUT)
            else:
                return False
        if int(project["status"]) not in (0, 1):
            return False
        else:
            msg_content = msg + JPUSH_MESSAGE
            data = {
                "title": title,
                'message': msg_content,
                "project_id": project_id,
                "type": "refresh",
                "flag": flag,
                "push_type": "jpush",
                "file_group": file_group
            }
            NeedPush.new().send2(msg_content=msg_content,
                                 title=title,
                                 content_type=u"content_type",
                                 extras=data,
                                 alias=alias)
コード例 #9
0
ファイル: views_user.py プロジェクト: cash2one/ESNS
def get_userinfo(request, project_id):
    """
    根据id获取用户基础信息
    by:王健 at:2015-1-16
    修改个人信息返回值
    by:王健 at:2015-1-20
    修复id值不对的bug
    by:王健 at:2015-2-17
    查询视图替代查询表
    by:尚宗凯 at:2015-3-6
    查询表替代视图
    by:尚宗凯 at:2015-3-8
    :param request:
    :return:
    """
    userid = request.REQUEST.get('user_id')
    if Person.objects.filter(user_id=userid, project_id=project_id).exists():
        person = Person.objects.get(user_id=userid, project_id=project_id)
        user = person.user
        p = user.get_user_map()
        if hasattr(user, 'userinfo') and user.userinfo:
            p.update(MyEncoder.default(user.userinfo))
        p['id'] = user.pk
        return getResult(True, '', p)
    else:
        return getResult(False, u'不是项目组内成员')
コード例 #10
0
ファイル: views_app.py プロジェクト: appleface2050/ESNS
def query_file_by_group_old(request, project_id=None):
    """
    根据应用标记,查询应用内容。查询旧数据
    by:王健 at:2015-1-12
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    过滤is_active字段
    by:尚宗凯 at:2015-3-30
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    dt = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = FileRecord.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = FileRecord.objects.all()
    if not dt:
        l = l.filter(project_id=project_id, file_group__flag=flag,is_active=True).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id, file_group__flag=flag, timeline__lt=int(dt), is_active=True).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #11
0
ファイル: views_app.py プロジェクト: appleface2050/ESNS
def query_app_list(request, project_id=None):
    """
    根据缓存的json串,输出
    by:王健 at:2015-1-11
    组装成带有包含关系的json数据
    by:王健 at:2015-1-12
    组装成不带有包含关系的json数据,填充上project、timeline字段
    by:王健 at:2015-1-13
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    修改为网络图
    by:王健 at:2015-2-12
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    """
    timeline = int(request.REQUEST.get('timeline', '0'))
    if timeline:
        if FileGroupJSON.objects.filter(project_id=project_id, timeline=timeline).exists():
            return getResult(True, u'已经是最新的数据了')

    fgroupjson, create = FileGroupJSON.objects.get_or_create(project_id=project_id)
    if create:
        fgroupjson.timeline = int(time.time())
        filegroup = FileGroup.objects.filter(Q(project_id=project_id) | Q(project_id=None)).order_by('sorted')
        jsongroup = MyEncoder.default(filegroup)
        for g in jsongroup:
            if not g['project'] or not g['icon_url']:
                g['icon_url'] = 'http://needserver.duapp.com/static/icon/%s' % g['icon']
            g['project']=int(project_id)
            g['timeline'] = fgroupjson.timeline
        fgroupjson.jsontext = json.dumps(jsongroup)
        fgroupjson.save()
    return getResult(True, None, json.loads(fgroupjson.jsontext))
コード例 #12
0
ファイル: needpush.py プロジェクト: appleface2050/ESNS
    def send_jpush(flag, project_id, title, msg, alias, file_group):
        """
        项目状态为关闭,已删除的情况不发
        by:尚宗凯 at:2015-05-31
        """

        project = cache.get(PROJECT_INFO % project_id)
        if project is None:
            from needserver.models import Project
            if Project.objects.filter(pk=project_id).exists():
                project = Project.objects.get(pk=project_id)
                project = MyEncoder.default(project)
                cache.set(PROJECT_INFO % project_id, project, settings.CACHES_TIMEOUT)
            else:
                return False
        if int(project["status"]) not in (0,1):
            return False
        else:
            msg_content = msg + JPUSH_MESSAGE
            data = {"title":title,
                    'message':msg_content,
                    "project_id":project_id,
                    "type":"refresh",
                    "flag":flag,
                    "push_type":"jpush",
                    "file_group":file_group
                    }
            NeedPush.new().send2(msg_content=msg_content,title=title,content_type=u"content_type",extras=data,alias=alias)
コード例 #13
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
def query_gysaddress_by_group_old(request, project_id=None):
    """
    查询供应商名录,根据应用节点,和时间戳 旧数据
    by:王健 at:2015-1-14
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = GYSAddress.objects.filter(create_time__gte=start_date,
                                      create_time__lte=end_date)
    else:
        l = GYSAddress.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag,
                     timeline__lt=int(timeline)).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #14
0
ファイル: views_gcjc.py プロジェクト: appleface2050/ESNS
def query_enginecheck_by_group(request, project_id=None):
    """
    查询工程检查,根据应用节点,和时间戳
    by:王健 at:2015-1-13
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    记录最后阅读时间
    by:尚宗凯 at:2015-05-06
	增加开始结束时间搜索
	by:尚宗凯 at:2015-05-06
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = EngineCheck.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = EngineCheck.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id, file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id, file_group__flag=flag, timeline__gt=int(timeline)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=user_id)
    cache.set(RED_DOT_UNREAD_NUMBER % (flag, user_id, project_id), 0, settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #15
0
def query_log_list_by_date(request, project_id=None):
    """
    查询项目的施工日志根据日期
    by:王健 at:2015-1-6
    datetime 进行时间点刷新
    by:王健 at:2015-1-8
    有datetime的情况下 查询日志
    by:王健 at:2015-1-12
    datetime 改为 create_time
    by:王健 at:2015-1-12
    修改Model名字,去除下划线, 优化带有日期查询的排序问题,防止隔过数据
    by:王健 at:2015-1-13
    没有时间参数时,一次获取全部数据
    by:王健 at:2015-1-20
    日志正序输出
    by:王健 at:2015-1-30
    日志也使用timeline
    by:王健 at:2015-2-10
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-4
    增加最后阅读时间
    by:尚宗凯 at:2015-05-06
	增加根据开始时间结束时间搜索
	by:尚宗凯 at:2015-05-13
    优化查询
    by:尚宗凯 at:2015-05-20
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    sg_tq_id = request.REQUEST.get('sg_tq_id', '0')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = SGlog.objects.filter(create_time__gte=start_date,
                                 create_time__lte=end_date)
    else:
        l = SGlog.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id,
                     sg_tq_log_id=sg_tq_id).order_by('timeline')
    else:
        l = l.filter(project_id=project_id,
                     sg_tq_log_id=sg_tq_id,
                     timeline__gt=int(timeline)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(
        project_id=project_id,
        file_group_id=FileGroup.objects.get(flag="gong_cheng_ri_zhi").pk,
        user_id=user_id)
    cache.set(
        RED_DOT_UNREAD_NUMBER % ("gong_cheng_ri_zhi", user_id, project_id), 0,
        settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #16
0
ファイル: views_org.py プロジェクト: wangjian2254/CalendarOA
def getAllDepart(request):
    '''
    获取组织下所有部门
    '''
    cache_name = 'alldepart_%s' % get_current_org().pk
    response = getCacheResult(cache_name)
    if response:
        return response
    result = []
    for depart in get_current_org().department_set.all():
        d = MyEncoder.default(depart)
        # 外键是如何 序列化的 ?todo

        d['managers'] = MyEncoder.default(depart.managers)
        d['members'] = MyEncoder.default(depart.members)

        result.append(d)

    return getResult(True, None, result, None, cache_name)
コード例 #17
0
ファイル: test.py プロジェクト: appleface2050/ESNS
 def query_company_by_bigcompnay(self):
     """
     单元测试
     by:尚宗凯 at:2015-07-02
     """
     resonse = self.client.post('/cp/query_company_by_bigcompnay')
     c = Company.objects.all()
     c = MyEncoder.default(c)
     self.assertEqual(200, resonse.status_code, u'错误')
     self.assertJSONEqual(resonse.content, getTestResult(True, u"success", c),
                          u'错误')
コード例 #18
0
ファイル: view_paper.py プロジェクト: wangjian2254/CalendarOA
def getPaper(request):
    '''
    根据 id 获取一张试卷的完整信息,包括题目
    '''
    id = request.REQUEST.get('id', '')
    if id:
        paper = Paper.objects.get(pk=id)
        pdict = MyEncoder.default(paper)
        return getResult(True, u'获取试卷成功', pdict)
    else:
        return getResult(False, u'试卷不存在', id)
コード例 #19
0
ファイル: test.py プロジェクト: appleface2050/ESNS
 def query_company_by_name(self):
     """
     测试
     by:尚宗凯 at:2015-07-02
     """
     resonse = self.client.post('/cp/query_company_by_name')
     l = Company.objects.all()
     l = l.order_by('-create_time')[0:20]
     l = MyEncoder.default(l)
     self.assertEqual(200, resonse.status_code, u'错误')
     self.assertJSONEqual(resonse.content, getTestResult(True, u"success", l),
                          u'错误')
コード例 #20
0
ファイル: views_gcjc.py プロジェクト: appleface2050/ESNS
def update_enginecheck_by_group(request, project_id=None):
    """
    修改一个工程检查
    by:王健 at:2015-1-13
    修改时 不用提交处理意见
    by:王健 at:2015-1-16
    处理意见,在本接口填写
    by:王健 at:2015-1-21
    完成工程检查,保存完成时间
    by:王健 at:2015-2-10
    修改权限校验 函数
    by:王健 at:2015-3-5
	工程检查回复添加极光推送
	by:尚宗凯 at:2015-4-8
    """
    fileid = request.REQUEST.get('fileid')
    if fileid:
        fileobj = get_object_or_404(File, pk=fileid, project_id=project_id)
        fileobj.file_status = True
        fileobj.save()

    pk = request.REQUEST.get('id')
    fucha = request.REQUEST.get('fucha')
    status = request.REQUEST.get('status')
    chuli = request.REQUEST.get('chuli')
    enginecheck = get_object_or_404(EngineCheck, pk=pk, project_id=project_id)
    flag = False
    if fileid:
        enginecheck.chuli_pic = fileobj
        flag = True
    if fucha:
        enginecheck.fucha = fucha
        flag = True
    if chuli:
        enginecheck.chuli = chuli
        flag = True
    if status == 'true':
        enginecheck.status = True
        if not enginecheck.finish_time:
            enginecheck.finish_time = timezone.now()
        flag = True
    if flag:
        try:
            tmp = fileobj.img_size.strip().split("x")
            x = float(tmp[0])
            y = float(tmp[1])
            enginecheck.chuli_pic_scale = "%.02f" % (x/y)
        except Exception as e:
            pass
        enginecheck.save()
    return getResult(True, None, MyEncoder.default(enginecheck))
コード例 #21
0
ファイル: views_gcjc.py プロジェクト: cash2one/ESNS
def update_enginecheck_by_group(request, project_id=None):
    """
    修改一个工程检查
    by:王健 at:2015-1-13
    修改时 不用提交处理意见
    by:王健 at:2015-1-16
    处理意见,在本接口填写
    by:王健 at:2015-1-21
    完成工程检查,保存完成时间
    by:王健 at:2015-2-10
    修改权限校验 函数
    by:王健 at:2015-3-5
	工程检查回复添加极光推送
	by:尚宗凯 at:2015-4-8
    """
    fileid = request.REQUEST.get('fileid')
    if fileid:
        fileobj = get_object_or_404(File, pk=fileid, project_id=project_id)
        fileobj.file_status = True
        fileobj.save()

    pk = request.REQUEST.get('id')
    fucha = request.REQUEST.get('fucha')
    status = request.REQUEST.get('status')
    chuli = request.REQUEST.get('chuli')
    enginecheck = get_object_or_404(EngineCheck, pk=pk, project_id=project_id)
    flag = False
    if fileid:
        enginecheck.chuli_pic = fileobj
        flag = True
    if fucha:
        enginecheck.fucha = fucha
        flag = True
    if chuli:
        enginecheck.chuli = chuli
        flag = True
    if status == 'true':
        enginecheck.status = True
        if not enginecheck.finish_time:
            enginecheck.finish_time = timezone.now()
        flag = True
    if flag:
        try:
            tmp = fileobj.img_size.strip().split("x")
            x = float(tmp[0])
            y = float(tmp[1])
            enginecheck.chuli_pic_scale = "%.02f" % (x / y)
        except Exception as e:
            pass
        enginecheck.save()
    return getResult(True, None, MyEncoder.default(enginecheck))
コード例 #22
0
def create_sysmessage(request):
    """
    创建系统消息
    by:王健 at:2015-2-26
    """
    project_id = request.REQUEST.get('project_id')
    group_id = request.REQUEST.get('group_id')
    user_id = request.REQUEST.get('user_id')
    title = request.REQUEST.get('title')
    text = request.REQUEST.get('text')

    msg = create_sysmessage_and_push(project_id, group_id, user_id, title, text)

    return getResult(True, u'创建系统消息成功', MyEncoder.default(msg))
コード例 #23
0
def query_user(request):
    """
    查询用户列表
    by: 范俊伟 at:2015-05-14
    :param request:
    :return:
    """
    last_id = request.REQUEST.get('last_id', None)
    if last_id == None:
        query = NSUser.objects.all().order_by('id')[:100]
    else:
        query = NSUser.objects.filter(id__gt=last_id).order_by('id')[:100]

    return getResult(True, '', MyEncoder.default(query))
コード例 #24
0
ファイル: views_app.py プロジェクト: cash2one/ESNS
def query_file_by_group(request, project_id=None):
    """
    根据应用标记,查询应用内容
    by:王健 at:2015-1-12
    修改Model名字,去除下划线, 优化带有日期查询的排序问题,防止隔过数据
    by:王健 at:2015-1-13
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    过滤is_active字段
    by:尚宗凯 at:2015-3-30
    去掉过滤is_active字段
    by:尚宗凯 at:2015-3-30
    记录最后阅读时间
    by:尚宗凯 at:2015-05-06
    增加开始结束时间搜索
    by:尚宗凯 at:2015-05-14
    更新用户项目应用节点未读数量缓存
    by:尚宗凯 at:2105-05-20
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    dt = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = FileRecord.objects.filter(create_time__gte=start_date,
                                      create_time__lte=end_date)
    else:
        l = FileRecord.objects.all()
    if not dt:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag,
                     timeline__gt=int(dt)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(
        project_id=project_id,
        file_group_id=FileGroup.objects.get(flag=flag).pk,
        user_id=user_id)
    cache.set(RED_DOT_UNREAD_NUMBER % (flag, user_id, project_id), 0,
              settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #25
0
ファイル: test.py プロジェクト: appleface2050/ESNS
 def cancel_delete_project(self, project_id):
     """
     单元测试
     by:尚宗凯 at:2015-07-03
     """
     resonse = self.client.post('/cp/cancel_delete_project',{"project_id":project_id})
     if Project.objects.filter(id=project_id).exists():
         p = Project.objects.get(id=project_id)
         p.status = 0
         p.delete_project_time = None
         p.save()
         p = MyEncoder.default(p)
     self.assertJSONEqual(resonse.content, getTestResult(True, u'成功恢复项目'),
                          u'错误')
コード例 #26
0
 def test(request, *args, **kwargs):
     project_id = int(kwargs.get('project_id'))
     if project_id == settings.SHOW_PROJECT_ID:
         return func(request, *args, **kwargs)
     project = cache.get(PROJECT_INFO % project_id)
     if project is None:
         if Project.objects.filter(pk=project_id).exists():
             project = Project.objects.get(pk=project_id)
             project = MyEncoder.default(project)
             cache.set(PROJECT_INFO % project_id, project, settings.CACHES_TIMEOUT)
     if int(project["status"]) == 0:
         return func(request, *args, **kwargs)
     else:
         return getResult(False, u"项目状态非正常,不能操作")
コード例 #27
0
ファイル: views_user.py プロジェクト: appleface2050/ESNS
def guanzhu_project(request):
    """
    关注项目
    by:王健 at:2015-1-30
    元祖改为字符串
    by:王健 at:2015-1-31
    增加缓存
    by:王健 at:2015-3-9
    清空个人信息
    by:王健 at:2015-3-16
    """
    cache.delete(MY_PROJECT_QUERY_LIST % request.user.pk)
    project_id = request.REQUEST.get('project_id', '')
    do = request.REQUEST.get('do', 'join')
    try:
        project = Project.objects.get(id=project_id)
        if do == 'join':
            if not project.nsuser_set.filter(id=request.user.id).exists():
                project.nsuser_set.add(request.user)
                project.guanzhu_num += 1
                project.save()
                msg = u'关注%s成功'
                cache.delete(USERINFO_INFO % request.user.pk)
            else:
                msg = u'已经关注过%s'
            return getResult(True, msg % project.name, {'project': MyEncoder.default(project), 'guanzhuprojectlist': [p[0] for p in request.user.guanzhu.values_list('id')]})
        else:
            if project.nsuser_set.filter(id=request.user.id).exists():
                project.nsuser_set.remove(request.user)
                project.guanzhu_num -= 1
                project.save()
                cache.delete(USERINFO_INFO % request.user.pk)
            return getResult(True, u'取消关注%s成功' % project.name, {'project': MyEncoder.default(project), 'guanzhuprojectlist': [p[0] for p in request.user.guanzhu.values_list('id')]})
    except Project.DoesNotExist:
        return getResult(False, u'项目不存在')
    except ValueError:
        return getResult(False, u'参数格式错误')
コード例 #28
0
ファイル: views_sglog.py プロジェクト: appleface2050/ESNS
def query_log_list_by_date(request, project_id=None):
    """
    查询项目的施工日志根据日期
    by:王健 at:2015-1-6
    datetime 进行时间点刷新
    by:王健 at:2015-1-8
    有datetime的情况下 查询日志
    by:王健 at:2015-1-12
    datetime 改为 create_time
    by:王健 at:2015-1-12
    修改Model名字,去除下划线, 优化带有日期查询的排序问题,防止隔过数据
    by:王健 at:2015-1-13
    没有时间参数时,一次获取全部数据
    by:王健 at:2015-1-20
    日志正序输出
    by:王健 at:2015-1-30
    日志也使用timeline
    by:王健 at:2015-2-10
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-4
    增加最后阅读时间
    by:尚宗凯 at:2015-05-06
	增加根据开始时间结束时间搜索
	by:尚宗凯 at:2015-05-13
    优化查询
    by:尚宗凯 at:2015-05-20
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    sg_tq_id = request.REQUEST.get('sg_tq_id', '0')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = SGlog.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = SGlog.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id, sg_tq_log_id=sg_tq_id).order_by('timeline')
    else:
        l = l.filter(project_id=project_id, sg_tq_log_id=sg_tq_id, timeline__gt=int(timeline)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag="gong_cheng_ri_zhi").pk, user_id=user_id)
    cache.set(RED_DOT_UNREAD_NUMBER % ("gong_cheng_ri_zhi", user_id, project_id), 0, settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #29
0
ファイル: test.py プロジェクト: appleface2050/ESNS
 def delete_project(self, project_id):
     """
     单元测试
     by:尚宗凯 at:2015-07-03
     """
     resonse = self.client.post('/cp/delete_project',{"project_id":project_id})
     if Project.objects.filter(id=project_id).exists():
         p = Project.objects.get(id=project_id)
         p.status = 5
         p.delete_project_time = datetime.datetime.now()
         p.save()
         receiver_user_ids = [i.pk for i in p.group_set.filter(is_active=True)]
         p = MyEncoder.default(p)
     self.assertJSONEqual(resonse.content, getTestResult(True, u'项目公示期,%s日以后项目删除' % DELETE_PROJECT_PUBLICITY_PERIOD),
                          u'错误')
コード例 #30
0
ファイル: test.py プロジェクト: appleface2050/ESNS
 def close_project(self, project_id):
     """
     单元测试
     by:尚宗凯 at:2015-07-03
     """
     resonse = self.client.post('/cp/close_project', {"project_id":project_id})
     if Project.objects.filter(id=project_id).exists():
         p = Project.objects.get(id=project_id)
         p.status = 2
         p.save()
         receiver_user_ids = [i.pk for i in p.group_set.filter(is_active=True)]
         # NeedMessage.create_multiple_sys_message(receiver_user_ids, "title", SYS_MESSAGE['project_close'] % (p.total_name))
         p = MyEncoder.default(p)
     self.assertJSONEqual(resonse.content, getTestResult(True, u"成功关闭项目"),
                          u'错误')
コード例 #31
0
def get_project_info(request):
    """
    查询项目信息
    by: 范俊伟 at:2015-05-14
    :param request:
    :return:
    """
    id = request.REQUEST.get('id')
    if not id:
        return getResult(False, '未提供项目id')
    try:
        project = Project.objects.get(id=id)
    except Project.DoesNotExist:
        return getResult(False, '项目不存在')

    return getResult(True, '', MyEncoder.default(project))
コード例 #32
0
ファイル: views_org.py プロジェクト: wangjian2254/CalendarOA
def getAllOrg(request):
    '''
    获取用户参与的所有组织
    '''
    cache_name = 'allorg_%s' % request.user.pk
    response = getCacheResult(cache_name)
    if response:
        return response
    result = []
    for person in request.user.person_set.all().order_by('-is_active'):
        p = MyEncoder.default(person.org)
        p['person_active'] = person.is_active
        p['pid'] = person.pk
        p['person_name'] = person.name
        result.append(p)

    return getResult(True, None, result, None, cache_name)
コード例 #33
0
ファイル: views_wzgl.py プロジェクト: appleface2050/ESNS
def query_record_date_by_group_old(request, project_id=None):
    """
    查询供应商名录,根据应用节点,和时间戳 旧数据
    by:王健 at:2015-1-14
    修改排序错误
    by:王健 at:2015-1-29
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    if not timeline:
        l = RecordDate.objects.filter(project_id=project_id, file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = RecordDate.objects.filter(project_id=project_id, file_group__flag=flag, timeline__lt=int(timeline)).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #34
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
def query_gysaddress_by_group(request, project_id=None):
    """
    查询供应商名录,根据应用节点,和时间戳
    by:王健 at:2015-1-14
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    记录最后阅读时间
    by:尚宗凯 at:2015-05-06
	增加根据开始时间结束时间搜索
	by:尚宗凯 at:2015-05-13
    优化查询
    by:尚宗凯 at:2015-05-20
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = GYSAddress.objects.filter(create_time__gte=start_date,
                                      create_time__lte=end_date)
    else:
        l = GYSAddress.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag,
                     timeline__gt=int(timeline)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(
        project_id=project_id,
        file_group_id=FileGroup.objects.get(flag=flag).pk,
        user_id=user_id)
    cache.set(RED_DOT_UNREAD_NUMBER % (flag, user_id, project_id), 0,
              settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #35
0
def read_needmessage(request):
    """
    读取need消息
    by:尚宗凯 at:2015-04-14
    """
    try:
        nmr ,create = NeedMessageRead.objects.get_or_create(user_id=request.user.pk)
        if create:
            nmr = NeedMessageRead()
            nmr.user = NSUser.objects.get(pk=request.user.pk)
            nmr.timeline = int(time.time())
            nmr.save()
        else:
            nmr.timeline = int(time.time())
            nmr.save()
        return getResult(True, u'成功上传刷新阅读时间', MyEncoder.default(nmr))
    except Exception as e:
        print e
        return getResult(False, u'上传刷新阅读时间失败', status_code=4)
コード例 #36
0
def query_project_message_old(request, project_id=None):
    """
    根据项目查询分组公告旧数据
    by:王健 at:2015-2-26
    增加刷新最后一次阅读项目公告时间
    by:尚宗凯 at:2015-05-08
    删除缓存
    by:尚宗凯 at:2105-05-22
    """
    timeline = int(request.REQUEST.get('timeline', '0'))
    group_id = request.REQUEST.get('group_id')
    l = ProjectMessage.objects.filter(project_id=project_id, to_group_id=group_id)
    if timeline:
        l = l.filter(timeline__lt=int(timeline)).order_by('-timeline')
    else:
        l = l.order_by('-timeline')
    user_id = request.user.pk
    LastReadTimeProjectSysMessage.update_last_read_timeline(type="project_message", user_id=user_id, project_id=project_id,group_id=group_id)
    cache.delete(RED_DOT_PROJECT_SYS_MESSAGE_UNREAD_NUMBER % ("project_message", user_id, project_id, group_id))
    return getResult(True, u'获取公告', MyEncoder.default(l[:20]))
コード例 #37
0
ファイル: views_app.py プロジェクト: appleface2050/ESNS
def query_file_by_group(request, project_id=None):
    """
    根据应用标记,查询应用内容
    by:王健 at:2015-1-12
    修改Model名字,去除下划线, 优化带有日期查询的排序问题,防止隔过数据
    by:王健 at:2015-1-13
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    过滤is_active字段
    by:尚宗凯 at:2015-3-30
    去掉过滤is_active字段
    by:尚宗凯 at:2015-3-30
    记录最后阅读时间
    by:尚宗凯 at:2015-05-06
    增加开始结束时间搜索
    by:尚宗凯 at:2015-05-14
    更新用户项目应用节点未读数量缓存
    by:尚宗凯 at:2105-05-20
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    dt = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = FileRecord.objects.filter(create_time__gte=start_date, create_time__lte=end_date)
    else:
        l = FileRecord.objects.all()
    if not dt:
        l = l.filter(project_id=project_id, file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id, file_group__flag=flag, timeline__gt=int(dt)).order_by('timeline')[:20]
    user_id = request.user.pk
    UserLastReadTimeline.update_last_read_timeline(project_id=project_id, file_group_id=FileGroup.objects.get(flag=flag).pk, user_id=user_id)
    cache.set(RED_DOT_UNREAD_NUMBER % (flag, user_id, project_id), 0, settings.CACHES_TIMEOUT)
    return getResult(True, None, MyEncoder.default(l))
コード例 #38
0
ファイル: views_sglog.py プロジェクト: appleface2050/ESNS
def query_log_date_list_old(request, project_id=None):
    """
    根据date字段排序,分页,查询旧数据
    by:王健 at:2015-1-8
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    改用时间戳 筛选
    by:王健 at:2015-1-20
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-4
    """
    date = int(request.REQUEST.get('timeline', '0'))
    if not date:
        l = SGTQlog.objects.filter(project_id=project_id).order_by('-date')[0:20]
    else:
        l = SGTQlog.objects.filter(project_id=project_id, timeline__lt=int(date)).order_by('-date')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #39
0
ファイル: views_app.py プロジェクト: cash2one/ESNS
def query_app_list(request, project_id=None):
    """
    根据缓存的json串,输出
    by:王健 at:2015-1-11
    组装成带有包含关系的json数据
    by:王健 at:2015-1-12
    组装成不带有包含关系的json数据,填充上project、timeline字段
    by:王健 at:2015-1-13
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    修改为网络图
    by:王健 at:2015-2-12
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    """
    timeline = int(request.REQUEST.get('timeline', '0'))
    if timeline:
        if FileGroupJSON.objects.filter(project_id=project_id,
                                        timeline=timeline).exists():
            return getResult(True, u'已经是最新的数据了')

    fgroupjson, create = FileGroupJSON.objects.get_or_create(
        project_id=project_id)
    if create:
        fgroupjson.timeline = int(time.time())
        filegroup = FileGroup.objects.filter(
            Q(project_id=project_id) | Q(project_id=None)).order_by('sorted')
        jsongroup = MyEncoder.default(filegroup)
        for g in jsongroup:
            if not g['project'] or not g['icon_url']:
                g['icon_url'] = 'http://needserver.duapp.com/static/icon/%s' % g[
                    'icon']
            g['project'] = int(project_id)
            g['timeline'] = fgroupjson.timeline
        fgroupjson.jsontext = json.dumps(jsongroup)
        fgroupjson.save()
    return getResult(True, None, json.loads(fgroupjson.jsontext))
コード例 #40
0
ファイル: views_app.py プロジェクト: cash2one/ESNS
def query_file_by_group_old(request, project_id=None):
    """
    根据应用标记,查询应用内容。查询旧数据
    by:王健 at:2015-1-12
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    过滤is_active字段
    by:尚宗凯 at:2015-3-30
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    dt = int(request.REQUEST.get('timeline', '0'))
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = FileRecord.objects.filter(create_time__gte=start_date,
                                      create_time__lte=end_date)
    else:
        l = FileRecord.objects.all()
    if not dt:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag,
                     is_active=True).order_by('-timeline')[:20]
    else:
        l = l.filter(project_id=project_id,
                     file_group__flag=flag,
                     timeline__lt=int(dt),
                     is_active=True).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #41
0
 def test(request, *args, **kwargs):
     """
     优化缓存结果的非空判断
     by:王健 at:2015-05-21
     修改控制校验
     by:王健 at:2015-05-21
     增加删除MY_PROJECT_QUERY_LIST缓存
     by:尚宗凯 at:2015-07-01
     欠费时为管理员和超级管理员发消息
     """
     project_id = int(kwargs.get('project_id'))
     if project_id == settings.SHOW_PROJECT_ID:
         return func(request, *args, **kwargs)
     today = timezone.now().strftime('%Y-%m-%d')
     project_active = cache.get(PROJECT_IS_ACTIVE % (project_id, today))
     if project_active is None:
         record_list = ProjectPersonChangeRecord.objects.filter(project_id=project_id).order_by('-create_date')[:1]
         if len(record_list) > 0:
             pre = record_list[0]
         else:
             pre = None
         project_active = 1 # 不可用
         if pre:
             project_active = pre.commit_days_real() + 2
             if project_active < 1:
                 if Project.objects.filter(pk=project_id).exists():
                     p = Project.objects.get(pk=project_id)
                     p.status = 1
                     p.save()
                     receiver_user_ids = [i.pk for i in p.group_set.filter(Q(type="root")|Q(type="sys_manage"))]
                     NeedMessage.create_multiple_sys_message(receiver_user_ids, "title", SYS_MESSAGE['project_arrears'] % (p.total_name))
                     cache.set(PROJECT_INFO % project_id, MyEncoder.default(p), settings.CACHES_TIMEOUT)
                     cache.delete(MY_PROJECT_QUERY_LIST % request.user.pk)
         cache.set(PROJECT_IS_ACTIVE % (project_id, today), project_active, settings.CACHES_TIMEOUT)
     if project_active and project_active > 1:
         return func(request, *args, **kwargs)
     else:
         return getResult(False, u'%s 的可使用额度不足,请续费后继续使用。' % Project.objects.get(pk=kwargs.get('project_id')).total_name, None, 7)
コード例 #42
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
def query_wuzirecord_by_group(request, project_id=None):
    """
    查询物资记录,根据应用节点,和时间戳
    by:王健 at:2015-1-14
    添加记录日期id,获取全部信息
    by:王健 at:2015-1-31
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    增加开始结束时间搜索
    by:尚宗凯 at:2015-05-14
	修改搜索结束时间逻辑
	by:尚宗凯 at:2015-05-28
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    record_date_id = request.REQUEST.get('record_date_id')
    start_date = request.REQUEST.get('start_date', '')
    end_date = request.REQUEST.get('end_date', '')
    if start_date and end_date:
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + datetime.timedelta(days=1)
        end_date = end_date.strftime('%Y-%m-%d')
        l = WuZiRecord.objects.filter(create_time__gte=start_date,
                                      create_time__lte=end_date)
    else:
        l = WuZiRecord.objects.all()
    if not timeline:
        l = l.filter(project_id=project_id,
                     record_date_id=record_date_id,
                     file_group__flag=flag).order_by('-timeline')
    else:
        l = l.filter(project_id=project_id,
                     record_date_id=record_date_id,
                     file_group__flag=flag,
                     timeline__gt=int(timeline)).order_by('timeline')
    return getResult(True, None, MyEncoder.default(l))
コード例 #43
0
def query_sysmessage_old(request, project_id=None):
    """
    根据项目查询系统消息旧数据
    by:王健 at:2015-2-26
    优化系统消息查询接口
    by:王健 at:2015-4-13
    增加刷新最后阅读系统消息时间
    by:尚宗凯 at:2015-05-08
    """
    timeline = int(request.REQUEST.get('timeline', '0'))
    group_id = request.REQUEST.get('group_id')
    l = SysMessage.objects.filter(project_id=project_id)
    if timeline:
        l = l.filter(timeline__lt=int(timeline)).order_by('-timeline')
    else:
        l = l.order_by('-timeline')

    if group_id:
        l = l.filter(Q(user_id=request.user.pk) | Q(user=None) | Q(to_group_id=group_id))
    else:
        l = l.filter(to_group_id=None).filter(Q(user_id=request.user.pk) | Q(user=None))
        LastReadTimeProjectSysMessage.update_last_read_timeline(type="sysmessage", user_id=request.user.pk, project_id=project_id,group_id=group_id)
    return getResult(True, u'获取系统消息', MyEncoder.default(l[:20]))
コード例 #44
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
def query_record_date_by_group_old(request, project_id=None):
    """
    查询供应商名录,根据应用节点,和时间戳 旧数据
    by:王健 at:2015-1-14
    修改排序错误
    by:王健 at:2015-1-29
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-5
    """
    flag = request.REQUEST.get('flag')
    timeline = int(request.REQUEST.get('timeline', '0'))
    if not timeline:
        l = RecordDate.objects.filter(
            project_id=project_id,
            file_group__flag=flag).order_by('-timeline')[:20]
    else:
        l = RecordDate.objects.filter(
            project_id=project_id,
            file_group__flag=flag,
            timeline__lt=int(timeline)).order_by('-timeline')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #45
0
def query_log_date_list(request, project_id=None):
    """
    查询项目的日志天气列表
    by:王健 at:2015-1-6
    根据date字段排序,分页
    by:王健 at:2015-1-8
    修改Model名字,去除下划线, 优化带有日期查询的排序问题,防止隔过数据
    by:王健 at:2015-1-13
    改用时间戳 筛选
    by:王健 at:2015-1-20
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-4
    """
    date = int(request.REQUEST.get('timeline', '0'))
    if not date:
        l = SGTQlog.objects.filter(
            project_id=project_id).order_by('-date')[0:20]
    else:
        l = SGTQlog.objects.filter(
            project_id=project_id,
            timeline__gt=int(date)).order_by('date')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #46
0
def query_log_date_list_old(request, project_id=None):
    """
    根据date字段排序,分页,查询旧数据
    by:王健 at:2015-1-8
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    改用时间戳 筛选
    by:王健 at:2015-1-20
    修改排序错误
    by:王健 at:2015-1-26
    优化URL参数 timeline 0 和空 一致
    by:王健 at:2015-2-26
    修改权限校验 函数
    by:王健 at:2015-3-4
    """
    date = int(request.REQUEST.get('timeline', '0'))
    if not date:
        l = SGTQlog.objects.filter(
            project_id=project_id).order_by('-date')[0:20]
    else:
        l = SGTQlog.objects.filter(
            project_id=project_id,
            timeline__lt=int(date)).order_by('-date')[:20]
    return getResult(True, None, MyEncoder.default(l))
コード例 #47
0
ファイル: views_user.py プロジェクト: cash2one/ESNS
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)
コード例 #48
0
ファイル: views_gcjc.py プロジェクト: cash2one/ESNS
def create_enginecheck_by_group(request, project_id=None):
    """
    创建一个工程检查
    by:王健 at:2015-1-13
    创建时 添加一个处理意见 参数“chuli”
    by:王健 at:2015-1-16
    处理意见,不在本接口填写
    by:王健 at:2015-1-21
    增加积分
    by:王健 at:2015-2-
    修改权限校验 函数
    by:王健 at:2015-3-5
    优化settings 使用
    by:王健 at:2015-3-9
    工程检查增加极光推送
    by:尚宗凯 at:2015-4-8
    提交日志时刷新阅读时间
    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-02
    添加用户活跃度缓存
    by:尚宗凯 at:2015-06-04
    """
    fileid = request.REQUEST.get('fileid')
    fileobj = get_object_or_404(File, pk=fileid, project_id=project_id)
    fileobj.file_status = True
    fileobj.save()

    flag = request.REQUEST.get('flag')
    # title = request.REQUEST.get('title')

    desc = request.REQUEST.get('desc')
    # path = request.REQUEST.get('path')
    enginecheck = EngineCheck()
    # enginecheck.title = title
    enginecheck.desc = desc

    enginecheck.project_id = int(project_id)
    enginecheck.user = request.user
    enginecheck.file_group = get_object_or_404(FileGroup, flag=flag)
    enginecheck.user = request.user
    # enginecheck.path = path
    enginecheck.pre_pic = fileobj
    try:
        tmp = fileobj.img_size.strip().split("x")
        x = float(tmp[0])
        y = float(tmp[1])
        enginecheck.pre_pic_scale = "%.02f" % (x / y)
    except Exception as e:
        pass
    enginecheck.save()

    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)
    file_group_id = all_flag['flags2'][flag]

    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    cache.set(
        RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE %
        (project_id, enginecheck.file_group_id), enginecheck.timeline,
        settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id,
              enginecheck.timeline, settings.CACHES_TIMEOUT)
    cache.delete(
        USER_ACTIVITY %
        (user_id, project_id, enginecheck.create_time.strftime('%Y-%m-%d')))
    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, enginecheck.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)

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

    return getResult(True,
                     u'创建工程检查成功',
                     MyEncoder.default(enginecheck),
                     jifen=create_data_jifen(request, settings.CREATE_DATA))
コード例 #49
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
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))
コード例 #50
0
ファイル: views_wzgl.py プロジェクト: cash2one/ESNS
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))
コード例 #51
0
    def setUp(self):
        """
        所有单元测试前的 基础设置,注册用户、创建项目
        by:王健 at:2015-1-10
        增加了smsdebug 参数,方便测试
        by:王健 at:2015-1-15
        修改个人信息返回值
        by:王健 at:2015-1-20
        :return:
        """
        # 注册新用户
        newuserdata = {"password": '******', 'tel': username,
                       'name': truename, 'smsdebug': 'sdf' }
        response = self.client.post('/ns/reg_user', newuserdata)

        self.assertEqual(200, response.status_code, u'注册新用户报错')
        user = get_user_model().objects.get(tel=username)
        self.assertJSONEqual(response.content, getTestResult(True, u'注册成功', user.get_user_map(True)), u'注册新用户,返回结果有变化,需要确认,或修改单元测试')

        # 创建项目
        newuserdata = {"name": u'测试项目1', 'total_name': u'单元测试创建的项目',  'jzmj': 300, 'jglx': u'钢结构',
                       'jzcs': 3, 'htzj': 340000, 'kg_date': '2015-12-01', 'days': 50, 'address': 1,
                       'jsdw': u'水水水水是建设六局',  'jsdw_fzr': u'小刘', 'jsdw_fzr_tel': '18632234548',
                       'kcdw': u'勘察第一分院', 'kcdw_fzr': u'喜洋洋', 'kcdw_fzr_tel': '321313',
                       'sjdw': u'设计第二院', 'sjdw_fzr': u'灰太狼', 'sjdw_fzr_tel': '5455',
                       'sgdw': u'施工第三局', 'sgdw_fzr': u'美羊羊', 'sgdw_fzr_tel': '741165',
                       'jldw': u'监理第二单位', 'jldw_fzr': u'村长', 'jldw_fzr_tel': '7881131',
        }
        response = self.client.post('/ns/reg_project', newuserdata)


        self.assertEqual(200, response.status_code, u'注册新用户报错')
        project = Project.objects.filter(manager=user)[0]
        self.assertJSONEqual(response.content, getTestResult(True, u'成功创建:%s' % project.total_name, MyEncoder.default(project)), u'创建项目,返回结果有变化,需要确认,或修改单元测试')
コード例 #52
0
def update_log_by_date(request, project_id=None):
    """
    更新或添加新的施工日志根据日期、天气
    by:王健 at:2015-1-6
    修改属性名
    by:王健 at:2015-1-8
    修改属性名,天气和风力
    by:王健 at:2015-1-12
    修改Model名字,去除下划线
    by:王健 at:2015-1-13
    天气表增加 timeline、num、create_time 字段
    by:王健 at:2015-1-20
    返回的数据,包括施工天气信息
    by:王健 at:2015-1-28
    增加积分
    by:王健 at:2015-2-5
    记录日志最后上传人
    by:王健 at:2015-2-10
    修改权限校验 函数
    by:王健 at:2015-3-4
    提交日志时刷新阅读时间
    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
    """
    if not request.REQUEST.get('text'):
        return getResult(False, u'日志内容不能为空', None)
    sg_tq_id = request.REQUEST.get('sg_tq_id', '')
    if not sg_tq_id:
        sg_tq_log, create = SGTQlog.objects.get_or_create(
            project_id=project_id,
            file_group=FileGroup.objects.get(flag='gong_cheng_ri_zhi'),
            date=timezone.now())

    else:
        sg_tq_log = SGTQlog.objects.get(pk=sg_tq_id)
    f = False
    if not sg_tq_log.weather:
        sg_tq_log.weather = request.REQUEST.get('weather', '')
        f = True
    if not sg_tq_log.wind:
        sg_tq_log.wind = request.REQUEST.get('wind')
        f = True
    if not sg_tq_log.qiwen:
        sg_tq_log.qiwen = request.REQUEST.get('qiwen')
        f = True
    if f:
        sg_tq_log.save()
    pk = request.REQUEST.get('id')
    if pk:
        sg_log = SGlog.objects.get(pk=pk)
        if sg_log.project_id != int(
                project_id) or sg_log.user_id != request.user.pk:
            return getResult(False, u'不是一个项目的日志', status_code=2)
    else:
        sg_log = SGlog()
        sg_tq_log.create_time = timezone.now()
        sg_tq_log.num += 1
        sg_tq_log.last_create_user = request.user
        sg_tq_log.save()
    sgtqlog = MyEncoder.default(sg_tq_log)
    sg_log.project_id = int(project_id)
    sg_log.sg_tq_log = sg_tq_log
    sg_log.text = request.REQUEST.get('text', '')
    sg_log.user = request.user
    sg_log.save()
    sgtqlog.update(MyEncoder.default(sg_log))

    #更新项目应用节点最新数据时间
    user_id = request.user.pk
    flag = "gong_cheng_ri_zhi"
    from util.cache_handle import query_project_filegroup_data_
    all_flag = query_project_filegroup_data_(project_id)

    # file_group_id = get_file_group_id_by_flag_from_cache(project_id=project_id, flag="gong_cheng_ri_zhi")
    file_group_id = all_flag['flags2'][flag]
    cache.set(
        RED_DOT_PROJECT_FILE_GROUP_LAST_NEW_DATA_TIMELINE %
        (project_id, file_group_id), sg_log.timeline, settings.CACHES_TIMEOUT)
    cache.set(RED_DOT_PROJECT_LAST_NEW_DATA_TIMELINE % project_id,
              sg_log.timeline, settings.CACHES_TIMEOUT)
    # cache.delete(RED_DOT_USER_LAST_READ_TIMELINE % (project_id, file_group_id, user_id))
    UserLastReadTimeline.update_last_read_timeline(project_id, file_group_id,
                                                   user_id)
    UserLastReadTimeline.update_last_read_timeline(project_id, 0, user_id)

    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])
    cache.delete(
        USER_ACTIVITY %
        (user_id, project_id, sg_log.create_time.strftime('%Y-%m-%d')))
    return getResult(True,
                     u'保存日志成功',
                     sgtqlog,
                     jifen=create_data_jifen(request, CREATE_DATA))