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)
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'参数格式错误')
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]))
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))
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)
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'不是项目组内成员')
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))
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)
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))
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))
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)
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))
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))
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))
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)
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'错误')
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)
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'错误')
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))
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))
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))
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))
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))
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'错误')
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"项目状态非正常,不能操作")
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'参数格式错误')
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))
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'错误')
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'错误')
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))
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)
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))
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))
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)
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]))
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))
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))
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))
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))
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)
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))
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]))
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))
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))
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))
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)
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))
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))
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))
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'创建项目,返回结果有变化,需要确认,或修改单元测试')
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))