def post(self, request): user_id = get_user_id(request) content = {"id": 0} data = request.POST insert_field = [ "full_name", "short_name", "contact_post", "contact_name", "contact_mdn", "contact_tel_num", "sale_customer_remark" ] result = {} for t in insert_field: field_value = data.get(t, None) if field_value: result[t] = field_value.strip() customer_exist = SaleCustomer.objects.filter( full_name=result.get('full_name')).all() if customer_exist: return my_response(code=1, msg=u"客户已存在") result['sale_customer_owner_id'] = user_id if result: insert_process = SaleCustomer(**result) try: insert_process.save() content = {"id": insert_process.id} response = my_response(code=0, msg=u'恭喜你,新增成功', content=content) except: response = my_response(code=1, msg=u'插入失败', content=content) return response
def post(self, request): user_id = get_user_id(request) data = request.POST insert_field = [ "visit_date", "cus_con_post", "cus_con_mdn", "cus_con_tel_num", "cus_con_wechart", "communicate_record", "sale_event_remark", "sale_phase_id", "active_type_id", "sale_customer_id" ] result = {} for t in insert_field: field_value = data.get(t, None) if field_value: result[t] = field_value.strip() result['sale_event_owner_id'] = user_id content = {"id": 0} if result: insert_process = SaleEvent(**result) try: insert_process.save() content = {"id": insert_process.id} response = my_response(code=0, msg=u"新增拜访记录成功", content=content) except: response = my_response(code=1, msg=u"新增失败,可能漏填项目", content=content) return response
def post(self, request): user_id = get_user_id(request) data = request.POST insert_field = ["natural_week", "summary", "self_evaluation", "plan"] result = {} for t in insert_field: result[t] = data.get(t, None).strip() natural_week = result['natural_week'][:7] __match = re.compile('^\d{4}-\d{2}').match(natural_week) if __match: result['natural_week'] = __match.group() else: return my_response(code=1, msg=u"自然周填写格式错误", content='') result['summary_owner_id'] = user_id if result: content = {"id": 0} insert_process = WeekSummary(**result) try: insert_process.save() content = {"id": insert_process.id} response = my_response(code=0, msg=u"插入成功", content=content) except: response = my_response(code=1, msg=u"插入失败", content=content) return response
def get(self, request): user_id = get_user_id(request) data = request.GET delID = data.get("delID", -1) del_queryset = WeekSummary.objects.filter(id=delID).first() if not del_queryset: return my_response(code=1, msg=u"删除失败,可能已经不存在") if del_queryset.summary_owner_id == user_id: deleted_id = del_queryset.delete() content = {"id": deleted_id} response = my_response(code=0, msg=u"删除成功", content=content) else: response = my_response(code=1, msg=u"你不是该记录的所有人") return response
def get(self, request): getParams = request.GET natural_week = getParams.get('natural_week', '') employee_name = getParams.get('employee_name', '') department_name = request.user.department.department_name # 创建查询条件 if employee_name: plain_sql = filter_dev_event_sql(natural_week=natural_week, project_id='', department_name=department_name, employee_name=employee_name) else: return my_response(code=1, msg=u"缺少雇员姓名条件") #统计分析 group_sql = u'select event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child group by event_type_name '.format( plain_sql) data = fetch_data(plain_sql) #先变换数据 alternation_list = [] event_date_list = [] #保存所有不重复的日期 for key, value in enumerate(data): ''' 获取所有日期字段保存为list,并将需要的字段放入alternation_list备用 ''' event_date = value.get('event_date').strftime("%Y-%m-%d") event_date_list.append(event_date) data_list = [ 'project_name', 'event_type_name', 'description', 'up_reporter_id', 'down_reporter_ids', 'fin_percentage', 'dev_event_remark' ] field_data = {key: value.get(key) for key in data_list} field_data['duration_time'] = round( value.get('duration_time') / 3600, 1) field_data['event_date'] = event_date field_data['which_day'] = day_of_week(field_data['event_date']) field_data['up_reporter_name'] = userid_to_chinesename( value.get('up_reporter_id')) field_data['down_reporter_name'] = userid_to_chinesename( value.get('down_reporter_ids')) alternation_list.append(field_data) content = dict_to_json(alternation_list) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET filter_date = getParams.get('filter_date', '') employee_name = getParams.get('employee_name', '') if not employee_name: employee_name = u'空姓名' #error department_name = request.user.department.department_name # 创建查询条件 plain_sql = filter_dev_event_sql(filter_date=filter_date, employee_name=employee_name, project_id='', project_name='', department_name='', user_id='') #统计分析 group_sql = u'select event_date,event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child group by event_date,event_type_name order by event_date,event_type_name '.format( plain_sql) row = fetch_data(group_sql) #转换数据为echarts能接受的格式 event_date_list = list( {i['event_date'].strftime("%Y-%m-%d") for i in row}) #取不重复的日期 event_type_name_list = list({i['event_type_name'] for i in row}) #取不重复的类型名称 event_date_list.sort() result = {} for event_date in event_date_list: result[event_date] = {} for type_name in event_type_name_list: result[event_date][type_name] = 0 for value in row: if value.get('event_date').strftime( "%Y-%m-%d") == event_date and value.get( 'event_type_name') == type_name: result[event_date][type_name] = value.get( 'date_diff', 0) date_list = [] time_count_list = {} for event_date in event_date_list: date_list.append(event_date) for type_name in event_type_name_list: if time_count_list.get(type_name): time_count_list[type_name].append( result[event_date].get(type_name)) else: time_count_list[type_name] = [ result[event_date].get(type_name) ] content = dict_to_json({ 'date_list': date_list, 'time_count_list': time_count_list }) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): user_id = get_user_id(request) getParams = request.GET filter_date = getParams.get('filter_date', '') customer_id = getParams.get('customer_id', '') natural_week = getParams.get('natural_week', '') #如果传入了周数,则转成日期段 # if filter_date: # filter_date='-'.join(getfirstday(filter_date)) plain_sql = filter_sale_event_sql(filter_date=filter_date, natural_week=natural_week, user_id=user_id, customer_id=customer_id, department_name='') data = fetch_data(plain_sql) result_list = [] for row in data: result_dict = {} for key, value in row.items(): result_dict[key] = value result_dict['which_day'] = day_of_week(str(row['visit_date'])) result_list.append(result_dict) content = dict_to_json(result_list) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET # employee_name= getParams.get('employee_name', '').strip() natural_week = getParams.get('natural_week', '') # department_name =u'销售部' #验证日期是否符合 2017-01的格式 __match = re.compile('^\d{4}-\d{2}').match(natural_week) if __match: natural_week = __match.group() else: natural_week = get_day_of_week() user_id = get_user_id(request) data = WeekSummary.objects.filter(summary_owner=user_id).filter( natural_week=natural_week).all() result_field = [ "id", "natural_week", "summary", "self_evaluation", "plan" ] data_dict = queryset_to_dict(data, result_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET filter_date = getParams.get('filter_date', '') department_name = request.user.department.department_name if not department_name: department_name = u"空部门" # 创建查询条件 plain_sql = filter_dev_event_sql(filter_date=filter_date, project_id='', project_name='', department_name=department_name, employee_name='', user_id='') #统计分析 group_sql = u'select event_type_name,ROUND(sum(duration_time/3600)::numeric,2) as date_diff from ({0}) as child group by event_type_name '.format( plain_sql) row = fetch_data(group_sql) #转换数据为echarts能接受的格式 type_list = [i['event_type_name'] for i in row] type_count = [{ 'name': i['event_type_name'], 'value': i['date_diff'] } for i in row] content = dict_to_json({ 'type_list': type_list, 'type_count': type_count }) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET natural_week = getParams.get('natural_week', '') employee_name = getParams.get('employee_name', '') # project_name = getParams.get('project_name', '') department_name = request.user.department.department_name user_id = chinesename_to_userid(employee_name) # 创建查询条件 plain_sql = filter_sale_event_sql(natural_week=natural_week, user_id=user_id, department_name='') #统计分析 # group_sql = u'select event_type_name,ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,2) as date_diff from ({0}) as child group by event_type_name '.format(plain_sql) data = fetch_data(plain_sql) result_list = [] for row in data: result_dict = {} for key, value in row.items(): result_dict[key] = value result_dict['which_day'] = day_of_week(str(row['visit_date'])) result_list.append(result_dict) content = dict_to_json(result_list) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET filter_date = getParams.get('filter_date', '') project_name = getParams.get('project_name', '') department_name = request.user.department.department_name if not project_name: project_name = -1 # 创建查询条件 plain_sql = filter_dev_event_sql(filter_date=filter_date, project_name=project_name, project_id='', department_name=department_name) #统计分析select dev_event_project_id, count((end_time-start_time)) as time_diff from api_devevent group by dev_event_project_id group_sql = u'select chinese_name,ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,2) as date_diff from ({0}) as child group by chinese_name order by date_diff desc '.format( plain_sql) row = fetch_data(group_sql) #转换数据为echarts能接受的格式 x_data = [i['chinese_name'] for i in row] y_data = [i['date_diff'] for i in row] content = dict_to_json({'x_data': x_data, 'y_data': y_data}) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): data = SaleActiveType.objects.filter(closed_status=0).all() result_field = [ "id", "active_type_name", "sale_active_type_remark", "create_time" ] data_dict = queryset_to_dict(data, result_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): data = DevProject.objects.filter(closed_status=0).all() result_field = [ "id", "creater_id", "status", "dev_project_remark", "project_name", "create_time" ] data_dict = queryset_to_dict(data, result_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def post(self, request): form = RegisterForm(request.POST) if form.is_valid(): data = form.cleaned_data username = data['username'] # chinese_name = data['chinese_name'] # group_name = data['group_name'] password = data['password'] password2 = data['password'] if not User.objects.all().filter(username=username): user = User.objects.create_user(username, '', password) user.save() # login_validate(request, username, password) return my_response(code=0, msg="注册成功", content="") else: return my_response(code=1, msg="用户已存在", content="") return my_response(code=1, msg="用户已存在", content="")
def get(self, request): data = SalePhase.objects.filter(closed_status=0).all() result_field = [ "id", "phase_name", "description", "phase_count", "sale_phase_remark", "create_time" ] data_dict = queryset_to_dict(data, result_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def post(self, request): uf = UserForm(request.POST) if uf.is_valid(): # 获取表单用户密码 username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] # 获取的表单数据与数据库进行比较 user = authenticate(username=username, password=password) if user is not None and user.is_active: # login(request, user) sid = get_random() auth.login(request, user) user_object = User.objects.get(username=username) try: chinese_name = user_object.chinese_name position_id = user_object.position.id department_id = user_object.department.id except: chinese_name = '' position_id = '' department_id = '' user_id = user_object.id userGroup_sql = "select * from accounts_user_groups as ug join auth_group as auth on auth.id=ug.group_id where ug.user_id={0}".format( user_id) row = fetch_data(userGroup_sql) group_list = [v.get("name") for v in row] content = {"username": username, "chinese_name": chinese_name,\ "position_id": position_id, "user_id": user_id,\ "department_id":department_id,"group_list":group_list} response = my_response(code=0, msg="登录成功!", content=content) # login(request, user) cache.set(sid, content, timeout=self.cookie_timeout) response.set_cookie("sid", sid) # , max_age=self.cookie_timeout) return response else: return my_response(code=1, msg="账号密码错误!") return my_response(code=1, msg="输入内容不合法")
def post(self, request): user_id = get_user_id(request) data = request.POST insert_field = [ "description", "event_date", "start_time", "end_time", "fin_percentage", "up_reporter_id", "down_reporter_ids", "dev_event_remark", "dev_event_project_id", "dev_event_type_id" ] #查询是否有user_id,如果没有则认为未登录 content = {"id": 0} result = {} for t in insert_field: field_value = data.get(t, None) if field_value: result[t] = field_value.strip() if result['fin_percentage'].isdigit(): if not (int(result['fin_percentage']) > 0 and int(result['fin_percentage']) <= 100): return my_response(code=1, msg=u"数字范围取值错误", content=content) else: return my_response(code=1, msg=u"百分比需要填写数字", content=content) result['dev_event_owner_id'] = user_id result['duration_time'] = ( datetime.datetime.strptime(result['end_time'], "%H:%M:%S") - datetime.datetime.strptime(result['start_time'], "%H:%M:%S")).total_seconds() print(result['end_time'], result['start_time'], result['duration_time']) try: insert_process = DevEvent(**result) insert_process.save() content = {"id": insert_process.id} response = my_response(code=0, msg=u"success", content=content) except: response = my_response(code=1, msg=u"插入数据失败", content=content) return response
def get(self, request): getParams = request.GET filter_date = getParams.get('filter_date', '') project_name = getParams.get('project_name', '') if not project_name: employee_name = u'空项目' #error department_name = request.user.department.department_name # 创建查询条件 plain_sql = filter_dev_event_sql(filter_date=filter_date, project_name=project_name, project_id='', employee_name='', department_name=department_name, user_id='') #统计分析 group_sql = u'select position_id, ROUND(sum(extract(EPOCH from child.end_time - child.start_time)/3600)::numeric,3) as date_diff from ({0}) as child group by position_id order by date_diff desc'.format( plain_sql) #加上职位的中文名称 position_sql = u'select * from ({0}) as group_sql left join accounts_position as pos on pos.id=group_sql.position_id'.format( group_sql) row = fetch_data(position_sql) #转换数据为echarts能接受的格式 x_data = [i['position_name'] for i in row] y_data = [i['date_diff'] for i in row] sum_y = sum(y_data) #做累加后减去总值然后 def change(param, tempSum=0, result=[]): ''' 累加器 ''' for i in param: tempSum = i + tempSum result.append(tempSum) return result y_change = change(y_data) y_change_data = [abs(i - sum_y) for i in y_change] y_change_data.insert(0, 0) y_data.insert(0, sum_y) x_data.insert(0, u'总时间') content = dict_to_json({ 'x_data': x_data, 'y_data': y_data, 'y_change_data': y_change_data }) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): user_id = get_user_id(request) result_field = [ "id", "full_name", "short_name", "contact_post", "contact_name", "contact_mdn", "contact_tel_num", "sale_customer_remark", "create_time" ] data = SaleCustomer.objects.filter( sale_customer_owner_id=user_id).all() data_dict = queryset_to_dict(data, result_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET natural_week = getParams.get('natural_week', '') __match = re.compile('^\d{4}-\d{2}').match(natural_week) if __match: natural_week = __match.group() else: natural_week = get_day_of_week() data_dict = SaleTarget.objects.filter(natural_week=natural_week).values("id","phase_name__phase_name",\ "natural_week", "target", "phase_count","sale_target_remark",'sale_target_owner__chinese_name') \ .order_by('-natural_week','sale_target_owner__chinese_name','phase_name__phase_name') result_dict = list(data_dict) content = dict_to_json(result_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def process_request(request): """ :param request: :return: """ # print "start", time.time() if "login" in request.path: return # request.COOKIES["sid"] = "9342c00a6cb65a2d35e2bd48cc2ab163" sid = request.COOKIES.get("sid") content = cache.get(sid) if content: chinese_name = content.get("chinese_name") Logger.debug("{0}: request, url is: {1}".format( username, request.path.encode("utf-8"))) request.COOKIES["chinese_name"] = chinese_name else: return my_response(code=-1, msg="登录超时!")
def get(self, request): getParams = request.GET # department_id = getParams.get('department_id', '') # if department_id: # user_queryset=User.objects.filter(department_id=department_id).all() # else: user_queryset = User.objects.all() user_ids = tuple([i.id for i in user_queryset]) data = User.objects.filter(pk__in=user_ids).all() query_field = [ "id", "username", "chinese_name", "department", "position" ] data_dict = queryset_to_dict(data, query_field) content = dict_to_json(data_dict) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET natural_week = getParams.get('natural_week', '') department_name = request.user.department.department_name try: natural_week = natural_week[:7] except: natural_week = '2017-1' filter_sql = filter_sale_event_sql(natural_week=natural_week, department_name=department_name) # 联合目标和实际记录 pivot_sql = pivot_target_actual_sql(natural_week=natural_week, filter_sql=filter_sql, department_name=department_name) data = fetch_data(pivot_sql) content = dict_to_json(data) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): user_id = get_user_id(request) getParams = request.GET project_id = getParams.get('project_id', '') filter_date = getParams.get('filter_date', '') natural_week = getParams.get('natural_week', '') plain_sql = filter_dev_event_sql(filter_date=filter_date, natural_week=natural_week, project_id=project_id, user_id=user_id) query_result = fetch_data(plain_sql) alternation_list = [] event_date_list = [] #保存所有不重复的日期 for key, value in enumerate(query_result): ''' 获取所有日期字段保存为list,并将需要的字段放入alternation_list备用 ''' event_date = value.get('event_date').strftime("%Y-%m-%d") event_date_list.append(event_date) #限定返回给前端的字段 data_list = [ "dev_event_id", 'project_name', "start_time", "end_time", 'duration_time', 'event_type_name', 'description', 'up_reporter_id', 'down_reporter_ids', 'fin_percentage', 'dev_event_remark' ] field_data = {key: value.get(key) for key in data_list} field_data['duration_time'] = round( field_data.get('duration_time') / 3600, 1) #把秒数转成取一位小数的小时数 field_data['event_date'] = event_date field_data['which_day'] = day_of_week(field_data.get('event_date')) field_data['up_reporter_name'] = userid_to_chinesename( value.get('up_reporter_id')) field_data['down_reporter_name'] = userid_to_chinesename( value.get('down_reporter_ids')) alternation_list.append(field_data) content = dict_to_json(alternation_list) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): getParams = request.GET filter_date = getParams.get('filter_date', '') department_name = request.user.department.department_name # 创建查询条件 plain_sql = filter_dev_event_sql(filter_date=filter_date, project_id='', project_name='', department_name=department_name, employee_name='', user_id='') group_sql = u'select t1.chinese_name,(sum(t1.sum_time)/count(t1.event_date)) as avg_time from \ (select t.chinese_name,sum(t.duration_time/3600) as sum_time,t.event_date from ({0}) as t group by chinese_name,event_date) as t1 \ group by t1.chinese_name order by avg_time desc'.format(plain_sql) row = fetch_data(group_sql) print(row) #转换数据为echarts能接受的格式 x_data = [i['chinese_name'] for i in row] y_data = [round(i['avg_time'], 2) for i in row] content = dict_to_json({'x_data': x_data, 'y_data': y_data}) response = my_response(code=0, msg=u"查询成功", content=content) return response
def get(self, request): # username = request.get("username") auth.logout(request) response = my_response(code=0, msg="用户登出成功", content="") response.set_cookie("sid", "", expires=0) return response