Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
 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
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #8
0
 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
Beispiel #9
0
 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
Beispiel #10
0
 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
Beispiel #12
0
 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
Beispiel #13
0
 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
Beispiel #14
0
 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
Beispiel #15
0
 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
Beispiel #16
0
 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
Beispiel #19
0
 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
Beispiel #21
0
 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
Beispiel #22
0
 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
Beispiel #23
0
 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
Beispiel #24
0
    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
Beispiel #25
0
 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)
Beispiel #26
0
 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
Beispiel #27
0
    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
Beispiel #28
0
 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
Beispiel #29
0
 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
Beispiel #30
0
    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
Beispiel #31
0
    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
Beispiel #32
0
 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
Beispiel #33
0
 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
Beispiel #34
0
    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
Beispiel #35
0
 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
Beispiel #36
0
    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
Beispiel #37
0
    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
Beispiel #38
0
 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
Beispiel #39
0
    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
Beispiel #40
0
    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
Beispiel #41
0
    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
Beispiel #42
0
    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
Beispiel #43
0
    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