def group_user_detail_query(self,**kw): res = utils.init_response_data() res["data"] = [] try: group_id = int(kw.get('group_id',0)) if not group_id : res["code"] = status.Status.PARMAS_ERROR return res response = Rong.rongyun_group_user_query(group_id=group_id) if response.has_key("data"): user_data = response["data"]["users"] for user in user_data: user_id = user["id"] res_users = request.registry("res.users") user_obj = res_users.search_read(request.cr,request.uid,[["user_id","=",user_id]]) if len(user_obj) : user_obj = user_obj[0] del user_obj["password"] del user_obj["image_medium"] del user_obj["image"] del user_obj["image_small"] res["data"].append(user_obj) else : continue else : res["code"] = status.Status.DHuiRongyunServerError return res except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def group_user_detail_query(self, **kw): res = utils.init_response_data() res["data"] = [] try: group_id = int(kw.get('group_id', 0)) if not group_id: res["code"] = status.Status.PARMAS_ERROR return res response = Rong.rongyun_group_user_query(group_id=group_id) if response.has_key("data"): user_data = response["data"]["users"] for user in user_data: user_id = user["id"] res_users = request.registry("res.users") user_obj = res_users.search_read( request.cr, request.uid, [["user_id", "=", user_id]]) if len(user_obj): user_obj = user_obj[0] del user_obj["password"] del user_obj["image_medium"] del user_obj["image"] del user_obj["image_small"] res["data"].append(user_obj) else: continue else: res["code"] = status.Status.DHuiRongyunServerError return res except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def goods(self, **kw): res = utils.init_response_data() try: env = request.env goods = [] phone = kw.get("phone") donators = env['res.partner'].sudo().search_read([ ("partner_type", "=", "donator"), ("phone", "=", phone) ]) if len(donators) == 0: domain = [("number", "=", phone), ("pay_state", "=", "yes")] else: donator = donators[0] domain = [("donator_id", "=", donator["id"]), ("pay_state", "=", "yes")] goods = env["odootask.task"].sudo().search_read(domain) if goods: goods.sort(key=lambda obj: obj["create_date"]) goods.reverse() for good in goods: good["create_date"] = str( datetime.datetime.strptime(good["create_date"], "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=8)).split(".")[0] res["data"]["goods"] = goods except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def nearby_donate(self, **kw): res = utils.init_response_data() try: env = request.env goods = env['odootask.task'].sudo().search_read() goods.sort(key=lambda obj: obj["create_date"]) goods.reverse() goods = goods[0:5] for good in goods: create_date = good["create_date"] create_date = str( datetime.datetime.strptime(create_date, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=8)).split(".")[0] date = create_date.split(" ")[0] time = create_date.split(" ")[1] curr_date = str(datetime.datetime.now()).split(" ")[0] if date == curr_date: show_date = "今天" else: show_date = date.split("-")[1] + "-" + date.split("-")[2] show_time = time.split(":")[0] + ":" + time.split(":")[1] good["create_date"] = create_date good["show_date"] = show_date good["show_time"] = show_time res["data"]["goods"] = goods except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def good(self, **kw): res = utils.init_response_data() try: env = request.env good_number = kw.get("good_number", "10001") task = env['odootask.task'].sudo().search_read([("number", "=", good_number)]) if len(task) == 0: return res category_id = task[0]["category_id"][0] category_obj = env['odootask.task_category'].sudo().search_read([ ("id", "=", category_id) ])[0] if category_obj["unit"]: unit = category_obj["unit"] else: unit = [False, ""] good = task[0] good["unit"] = unit good["create_date"] = str( datetime.datetime.strptime(good["create_date"], "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=8)).split(".")[0] tracks = env['odootask.track'].sudo().search_read( [("id", "in", task[0]["track"])], order="%s desc" % "create_date") res["data"]["good"] = task[0] res["data"]["tracks"] = tracks except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def wxpay_notify(self, **kw): res = utils.init_response_data() try: env = request.env notify_info = request.httprequest.data notify_params = self.parse_notify_xml(notify_info) return_code = notify_params["return_code"] result_code = notify_params["result_code"] out_trade_no = notify_params["out_trade_no"] order_obj = env['odootask.task'].sudo().search_read([ ("out_trade_no", "=", out_trade_no) ])[0] order_update_obj = {} if return_code == "SUCCESS" and result_code == "SUCCESS" and order_obj[ "pay_state"] != "yes": order_update_obj["pay_state"] = "yes" order_update_obj["id"] = order_obj["id"] order_update_obj["donate_time"] = str( datetime.datetime.now()).split(".")[0] env["odootask.task"].sudo().write(order_update_obj) order_obj = env['odootask.task'].sudo().search_read([ ("out_trade_no", "=", out_trade_no) ])[0] mobile = env['res.partner'].sudo().search_read([ ("id", "=", order_obj["donator_id"][0]) ])[0]["phone"] order_no = order_obj["number"] requests.get( "http://dszyicang.com:8600/api/donate/success?mobile=%s&order_no=%s" % (mobile, order_no)) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def create_group(self, **kw): res = utils.init_response_data() try: name = kw.get("name", "") except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def create_group(self,**kw): res = utils.init_response_data() try : name = kw.get("name","") except Exception ,e : res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def units(self, **kw): res = utils.init_response_data() try: env = request.env units = env['odootask.unit'].sudo().search_read() res["data"]["units"] = units except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def tasks(self, **kw): res = utils.init_response_data() try: env = request.env tasks = env['project.task'].sudo().search_read() res["data"]["tasks"] = tasks except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def get(self): result = utils.init_response_data() try : user_id = self.get_argument("user_id") except Exception ,e : result = utils.reset_response_data(status.Status.PARMAS_ERROR,error_info=str(e)) self.write(result) return
def tasks(self, **kw): res = utils.init_response_data() try: env = request.env tasks = env['project.task'].sudo().search_read() res["data"]["tasks"] = tasks except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def good_types(self, **kw): res = utils.init_response_data() try: env = request.env good_types = env['odootask.task_category'].sudo().search_read() res["data"]["good_types"] = good_types except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def projects(self, **kw): res = utils.init_response_data() try: env = request.env domain = [] projects = env['project.project'].sudo().search_read(domain) res["data"]["projects"] = projects except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def projects(self, **kw): res = utils.init_response_data() try: env = request.env domain = [] projects = env['project.project'].sudo().search_read(domain) res["data"]["projects"] = projects except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def donators(self, **kw): res = utils.init_response_data() try: env = request.env donators = env['res.partner'].sudo().search_read([ ("partner_type", "=", "donator") ]) res["data"]["donators"] = donators except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def get(self) : result = utils.init_response_data() coll = models.get_coll("UserAddress") try : address_id = self.get_argument("address_id") except Exception ,e : result = utils.reset_response_data(status.Status.PARMAS_ERROR,error_info=str(e)) self.write(result) return
def put(self) : result = utils.init_response_data() coll = models.get_coll("UserAddress") try : alter_params = self.get_argument("alter_params") alter_params = json.loads(alter_params) except Exception ,e : result = utils.reset_response_data(status.Status.PARMAS_ERROR,error_info=str(e)) self.write(result) return
def wrap(*args, **kwargs): res = utils.init_response_data() try: res = f(*args, **kwargs) res["message"] = status.Status().getReason(res["code"]) except Exception, e: res["code"] = status.Status.ERROR res["message"] = status.Status().getReason(res["code"]) _logger.exception("An exception occured during an http request") se = _serialize_exception(e) error = {'code': 200, 'message': "Odoo Server Error", 'data': se} res["error_info"] = error return simplejson.dumps(res)
def post(self) : result = utils.init_response_data() try : user_id = self.get_argument("user_id") province = self.get_argument("province") city = self.get_argument("city") area = self.get_argument("area") address = self.get_argument("address") is_default_flag = self.get_argument("is_default_flag") except Exception ,e : result = utils.reset_response_data(status.Status.PARMAS_ERROR,error_info=str(e)) self.write(result) return
def group_quit(self,**kw): res = utils.init_response_data() try : project_task = request.registry("project.task") uid = request.uid group_id = int(kw.get("group_id",0)) if not group_id : res["code"] = status.Status.PARMAS_ERROR return res join_user_id_list = json.loads(kw.get("uid_list",'[]')) project_task.quit_group(request,uid,group_id,join_user_id_list) except Exception,e : res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def wrap(*args, **kwargs): res = utils.init_response_data() try: res = f(*args, **kwargs) res["message"] = status.Status().getReason(res["code"]) except Exception, e: res["code"] = status.Status.ERROR res["message"] = status.Status().getReason(res["code"]) _logger.exception("An exception occured during an http request") se = _serialize_exception(e) error = {'code': 200, 'message': "Odoo Server Error", 'data': se} res["error_info"] = error response = request.make_response( json.dumps(res), headers={"Access-Control-Allow-Origin": "*"}) return response
def group_quit(self, **kw): res = utils.init_response_data() try: project_task = request.registry("project.task") uid = request.uid group_id = int(kw.get("group_id", 0)) if not group_id: res["code"] = status.Status.PARMAS_ERROR return res join_user_id_list = json.loads(kw.get("uid_list", '[]')) project_task.quit_group(request, uid, group_id, join_user_id_list) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def user_group(self, **kw): res = utils.init_response_data() res["data"] = [] try: user_id = kw.get("user_id", None) if not user_id: res["code"] = status.Status.PARMAS_ERROR return res res_users = request.registry("res.users") user = res_users.search_read(request.cr, request.uid, [["user_id", "=", user_id]]) if not len(user): user = user[0] res["code"] = status.Status.NOT_EXIST return res else: user = user[0] request.cr.execute( "select task_id from project_task_rel where uid=%s" % (user["id"])) row_list = request.cr.fetchall() project_task = request.registry("project.task") task_id_list = [] for row in row_list: task_id = row[0] task_id_list.append(task_id) task_list = project_task.read(request.cr, request.uid, task_id_list) for task in task_list: res["data"].append( dict( id=task["id"], create_uid=task["create_uid"], create_date=task["create_date"], user_id=task["user_id"], parent=task["project_id"], description=task["description"], name=task["name"], group_type=task["group_type"], members=task["members"], )) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def wrap(*args, **kwargs): res = utils.init_response_data() try: res = f(*args, **kwargs) res["message"] = status.Status().getReason(res["code"]) except Exception, e: res["code"] = status.Status.ERROR res["message"] = status.Status().getReason(res["code"]) _logger.exception("An exception occured during an http request") se = _serialize_exception(e) error = { 'code': 200, 'message': "Odoo Server Error", 'data': se } res["error_info"] = error return simplejson.dumps(res)
def get_access_token(self, **kw): res = utils.init_response_data() try: env = request.env code = kw.get("code", "") import requests import json response_result = json.loads( requests.get( "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx5686b4e04b2a4f66&secret=93270e940e047d7e1154f7863a6a9b93&code=%s&grant_type=authorization_code" % code).text) res["data"] = response_result print(res) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def hot_good_types(self, **kw): res = utils.init_response_data() try: env = request.env good_types = env['odootask.task_category'].sudo().search_read() good_types.sort(key=lambda obj: obj["donator_amount"]) good_types.reverse() good_types = good_types[0:3] for good in good_types: del good["image"] del good["image_medium"] del good["image_small"] res["data"]["good_types"] = good_types except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def donator(self, **kw): res = utils.init_response_data() try: env = request.env phone = kw.get("mobile", "") donators = env['res.partner'].sudo().search_read( ["&", ("partner_type", "=", "donator"), ("phone", "=", phone)]) if len(donators): donator = donators[0] else: donator = {} res["data"]["donator"] = {} res["data"]["donator"]["donator_name"] = donator.get("name", "") res["data"]["donator"]["cardid"] = donator.get("cardid", "") except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def members(self, **kw): res = utils.init_response_data() try: env = request.env domain = [] members = env['hr.employee'].sudo().search_read(domain) member_list = [] for member in members: member_list.append( dict( id=member.get("id", 0), name=member.get("name", ""), )) res["data"]["member_list"] = member_list except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def donator_number(self, **kw): res = utils.init_response_data() try: env = request.env mobile = kw.get("mobile", "") if mobile == "": raise Exception("请输入手机号") donators = env['res.partner'].sudo().search_read([("phone", "=", mobile)]) if len(donators): donator = donators[0] else: donator = {} res["data"]["donator"] = donator except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def nearby_donate(self, **kw): res = utils.init_response_data() try: env = request.env goods = env['odootask.task'].sudo().search_read( ["|", ("pay_state", "=", "yes"), ("state", "=", "done")]) goods.sort(key=lambda obj: obj["create_date"]) goods.reverse() more = kw.get("more", False) page = kw.get("page", 1) page_size = kw.get("page_size", 10) if more: length = len(goods) pager = utils.count_page(length, page, page_size) goods = goods[pager['skip']:pager['skip'] + pager['page_size']] else: pager = {} goods = goods[0:5] for good in goods: create_date = good["create_date"] create_date = str( datetime.datetime.strptime(create_date, "%Y-%m-%d %H:%M:%S") + datetime.timedelta(hours=8)).split(".")[0] date = create_date.split(" ")[0] time = create_date.split(" ")[1] curr_date = str(datetime.datetime.now()).split(" ")[0] if date == curr_date: show_date = "今天" else: show_date = date.split("-")[1] + "-" + date.split("-")[2] show_time = time.split(":")[0] + ":" + time.split(":")[1] good["create_date"] = create_date good["show_date"] = show_date good["show_time"] = show_time res["data"]["goods"] = goods res["pager"] = pager except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def group_user_query(self, **kw): res = utils.init_response_data() res["data"] = [] try: group_id = int(kw.get('group_id', 0)) if not group_id: res["code"] = status.Status.PARMAS_ERROR return res response = Rong.rongyun_group_user_query(group_id=group_id) if response.has_key("data"): user_data = response["data"]["users"] res["data"] = user_data else: res["code"] = status.Status.DHuiRongyunServerError return res except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def group_user_query(self,**kw): res = utils.init_response_data() res["data"] = [] try: group_id = int(kw.get('group_id',0)) if not group_id : res["code"] = status.Status.PARMAS_ERROR return res response = Rong.rongyun_group_user_query(group_id=group_id) if response.has_key("data"): user_data = response["data"]["users"] res["data"] = user_data else : res["code"] = status.Status.DHuiRongyunServerError return res except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def user_group(self,**kw): res = utils.init_response_data() res["data"] = [] try: user_id = kw.get("user_id",None) if not user_id : res["code"] = status.Status.PARMAS_ERROR return res res_users = request.registry("res.users") user = res_users.search_read(request.cr,request.uid,[["user_id","=",user_id]]) if not len(user) : user = user[0] res["code"] = status.Status.NOT_EXIST return res else : user = user[0] request.cr.execute("select task_id from project_task_rel where uid=%s"%(user["id"])) row_list = request.cr.fetchall() project_task = request.registry("project.task") task_id_list = [] for row in row_list: task_id = row[0] task_id_list.append(task_id) task_list = project_task.read(request.cr,request.uid,task_id_list) for task in task_list: res["data"].append(dict( id = task["id"], create_uid = task["create_uid"], create_date = task["create_date"], user_id = task["user_id"], parent = task["project_id"], description = task["description"], name = task["name"], group_type = task["group_type"], members =task["members"], )) except Exception,e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def projects(self, **kw): res = utils.init_response_data() try: env = request.env domain = [("worksheet", "=", True)] projects = env['project.project'].sudo().search_read(domain) for project in projects: domain = kw.get("domain", [("project_id", "=", project.get("id", 0))]) tasks = env['project.task'].sudo().search_read(domain) task_list = [] for task in tasks: curr_time = str(datetime.datetime.now()).split(" ")[0] start_time = curr_time + " " + "00:00:00.000" end_time = curr_time + " " + "23:59:59.999" domain = [("create_date", ">", start_time), ("create_date", "<", end_time), ("task_id", "=", task.get("id", 0))] works = env['project.task.work'].sudo().search_read(domain) work_list = [] for work in works: work_list.append( dict( content=work.get("hr_analytic_timesheet_id") [1], hour=work.get("hours", 8), username=work.get("user_id")[1], date=str(work.get("create_date", "")).split(" ")[0], )) task_list.append( dict( name=task.get("name", ""), id=task.get("id", 0), work_list=work_list, )) project["task_list"] = task_list res["data"]["projects"] = projects except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def good_type(self, **kw): res = utils.init_response_data() try: env = request.env category_id = kw.get("category_id", "") if category_id != "": category_id = int(category_id) domain = [("id", "=", category_id)] good_types = env['odootask.task_category'].sudo().search_read( domain) for good in good_types: del good["image"] del good["image_medium"] del good["image_small"] res["data"]["good_type"] = good_types[0] except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def works(self, **kw): res = utils.init_response_data() try: env = request.env domain = [("worksheet", "=", True)] projects = env['project.project'].sudo().search_read(domain) task_ids = [] for project in projects: task_ids.extend(project.get("task_ids",[])) curr_time = str(datetime.datetime.now()).split(" ")[0] start_time = curr_time + " " + "00:00:00.000" end_time = curr_time + " " + "23:59:59.999" domain = [("create_date",">",start_time),("create_date","<",end_time),("task_id","in",task_ids)] works = env['project.task.work'].sudo().search_read(domain) res["data"]["works"] = works except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def work_create(self, **kw): res = utils.init_response_data() try: env = request.env name = kw.get("content", "") date = datetime.datetime.now() task_id = kw.get("task_id") hours = kw.get("hours", 8) user_id = kw.get("user_id") work = dict( name=name, date=date, task_id=task_id, hours=hours, user_id=user_id, ) env['project.task.work'].sudo().create(work) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def works(self, **kw): res = utils.init_response_data() try: env = request.env domain = [("worksheet", "=", True)] projects = env['project.project'].sudo().search_read(domain) task_ids = [] for project in projects: task_ids.extend(project.get("task_ids", [])) curr_time = str(datetime.datetime.now()).split(" ")[0] start_time = curr_time + " " + "00:00:00.000" end_time = curr_time + " " + "23:59:59.999" domain = [("create_date", ">", start_time), ("create_date", "<", end_time), ("task_id", "in", task_ids)] works = env['project.task.work'].sudo().search_read(domain) res["data"]["works"] = works except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def good_types(self, **kw): res = utils.init_response_data() try: env = request.env community_id = kw.get("community_id", "") if community_id != "": domain = [("community", "=", int(community_id))] else: domain = [] domain.append(("status", "=", "used")) good_types = env['odootask.task_category'].sudo().search_read( domain, order="priority asc") for good in good_types: del good["image"] del good["image_small"] del good["image_medium"] res["data"]["good_types"] = good_types except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def more_good_types(self, **kw): res = utils.init_response_data() try: env = request.env more = kw.get("more", False) page = kw.get("page", 1) page_size = kw.get("page_size", 10) community_name = kw.get("community_name", "") if community_name != "": domain = [("community.name", "ilike", community_name)] else: domain = [] good_types = env['odootask.task_category'].sudo().search_read( domain) for good in good_types: del good["image"] del good["image_medium"] del good["image_small"] if len(good_types): good_types.sort(key=lambda obj: obj["donator_amount"]) good_types.reverse() if more: length = len(good_types) pager = utils.count_page(length, page, page_size) good_types = good_types[pager['skip']:pager['skip'] + pager['page_size']] res["data"]["good_types"] = good_types res["pager"] = pager else: res["data"]["good_types"] = [] res["pager"] = {} except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def order(self, **kw): res = utils.init_response_data() try: env = request.env openid = kw.get("openid") number = kw.get("number") order_obj = env['odootask.task'].sudo().search_read([ ("number", "=", number) ])[0] pay_state = order_obj["pay_state"] if pay_state == "yes": return res amount = order_obj["amount"] category_id = order_obj["category_id"][0] good_obj = env['odootask.task_category'].sudo().search_read([ ("id", "=", category_id) ])[0] price = good_obj["price"] good_name = good_obj["name"] import requests appid = "wx5686b4e04b2a4f66" body = "dszyicang-good" mch_id = "1401655702" device_info = "WEB" nonce_str = self.random_str(16) out_trade_no = self.md5_data(mch_id + str(datetime.datetime.now()) + nonce_str) order_update_obj = {} order_update_obj["id"] = order_obj["id"] order_update_obj["out_trade_no"] = out_trade_no order_update_obj["pay_state"] = "no" env["odootask.task"].sudo().write(order_update_obj) total_fee = int(amount * price * 100) #total_fee = 1 spbill_create_ip = "139.224.26.81" notify_url = "http://dszyicang.com/notify" trade_type = "JSAPI" stringA = self.generate_sign(appid=appid, body=body, mch_id=mch_id, device_info=device_info, nonce_str=nonce_str, out_trade_no=out_trade_no, total_fee=total_fee, spbill_create_ip=spbill_create_ip, notify_url=notify_url, trade_type=trade_type, openid=openid) secret = "06a9b2dd1d526476ffde40b13419c142" stringSignTemp = stringA + "&key=%s" % secret sign = self.md5_data(stringSignTemp).upper() headers = {'Content-Type': 'application/xml'} xml_data = """<xml> <appid>%s</appid> <body>%s</body> <device_info>%s</device_info> <mch_id>%s</mch_id> <nonce_str>%s</nonce_str> <notify_url>%s</notify_url> <out_trade_no>%s</out_trade_no> <spbill_create_ip>%s</spbill_create_ip> <total_fee>%s</total_fee> <trade_type>%s</trade_type> <sign>%s</sign> <openid>%s</openid> </xml>""" % ( appid, body, device_info, mch_id, nonce_str, notify_url, out_trade_no, spbill_create_ip, total_fee, trade_type, sign, openid) xml_data = xml_data.replace(" ", "").replace("\n", "") response = requests.post( "https://api.mch.weixin.qq.com/pay/unifiedorder", data=xml_data, headers=headers) res["data"] = response.text print(openid, res) except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res
def task_statistic(self, **kw): res = utils.init_response_data() try: env = request.env start_time = kw.get("start_time") or "1970-01-01 00:00:00" end_time = kw.get("end_time") or str( datetime.datetime.now()).split(".")[0] year = int(start_time.split(" ")[0].split("-")[0]) month = int(start_time.split(" ")[0].split("-")[1]) day = int(start_time.split(" ")[0].split("-")[2]) start_time = str( datetime.datetime(year, month, day) - datetime.timedelta(hours=8)).split(".")[0] year = int(end_time.split(" ")[0].split("-")[0]) month = int(end_time.split(" ")[0].split("-")[1]) day = int(end_time.split(" ")[0].split("-")[2]) end_time = str( datetime.datetime(year, month, day, 23, 59, 59) - datetime.timedelta(hours=8)).split(".")[0] tasks = env['odootask.task'].sudo().search_read([ "|", ("state", "=", "done"), ("pay_state", "=", "yes"), ("donate_time", ">=", start_time), ("donate_time", "<=", end_time) ]) res["data"] = {} task_list = [] for task in tasks: community = task.get("community") donator_id = task.get("donator_id") donate_time = task.get("donate_time") amount = task.get("amount") pay_state = task.get("pay_state") category_id = task.get("category_id") good_type = env['odootask.task_category'].sudo().search_read([ ("id", "=", category_id[0]) ])[0] price = good_type.get("price") or 0.0 task_list.append( dict( community_id=community[0], community=community[1], donator_id=donator_id[0], donator=donator_id[1], donate_time=donate_time, amount=amount, pay_state=pay_state, category_id=category_id[0], category=category_id[1], total_fee=round(price * amount, 1), )) category_ids = [] category_dict = {} category_id_dict = {} community_ids = [] community_dict = {} community_id_dict = {} for task in task_list: category_id = task.get("category_id") category = task.get("category") community = task.get("community") community_id = task.get("community_id") amount = task.get("amount") total_fee = task.get("total_fee") if category_id not in category_ids: category_dict[category_id] = amount else: category_dict[category_id] += amount category_ids.append(category_id) category_id_dict[category_id] = category if community_id not in community_ids: community_dict[community_id] = total_fee else: community_dict[community_id] += total_fee community_ids.append(community_id) community_id_dict[community_id] = community category_data = sorted(category_dict.iteritems(), key=lambda x: x[1], reverse=True) temp_category_data = [[category_id_dict[obj[0]], obj[1], obj[0]] for obj in category_data] category_data = temp_category_data community_data = sorted(community_dict.iteritems(), key=lambda x: x[1], reverse=True) temp_community_data = [[community_id_dict[obj[0]], obj[1], obj[0]] for obj in community_data] community_data = temp_community_data res["data"] = [category_data, community_data] except Exception, e: res["code"] = status.Status.ERROR res["error_info"] = str(e) return res