コード例 #1
0
    def get_users(cls, queryParams):
        queryParams = json.loads(queryParams)
        if "f" in queryParams:
            # Give only selected columns
            f = queryParams["f"].split(',')
            del queryParams["f"]
            sql, args = data_adaptor.create_select("users", queryParams, f)
            res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
        else:
            # Give all columns
            sql, args = data_adaptor.create_select("users", queryParams, "*")
            res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
            if data is not None:
                # Compute links for each returned user
                for x in data:
                    x["links"] = [{
                        "rel": "profile",
                        "href": "/api/profile?userid=" + x["id"],
                        "method": "GET"
                    }, {
                        "rel": "profile",
                        "href": "/api/profile",
                        "method": "POST"
                    }]
                    del x['auto_id']
        if data is not None:
            result = data
        else:
            result = None

        return result
コード例 #2
0
ファイル: RDBDataObject.py プロジェクト: jz3071/bugfreepandas
 def retrieve_by_key(cls, key_fields, fields):
     t_name = cls.get_table_name()
     kcs = cls.get_primary_key_columns()
     tmp = dict(zip(kcs, key_fields))
     sql, args = da.create_select(t_name, template=tmp,
                                  fields=fields)
     res, d = da.run_q(sql, args=args, fetch=True)
     return d
コード例 #3
0
ファイル: DataObject.py プロジェクト: KathyLau/thinkerkoala
 def get_users(cls, params, fields):
     sql, args = data_adaptor.create_select(table_name="users",
                                            template=params,
                                            fields=fields)
     res, data = data_adaptor.run_q(sql, args)
     if data is not None and len(data) > 0:
         return data
     else:
         return None
コード例 #4
0
    def get_profile_by_params_and_fields(cls, params=None, fields=None):

        sql, args = data_adaptor.create_select("ebdb.profile", params, fields)
        res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
        if data is not None and len(data) > 0:
            result = data
        else:
            result = None

        return result
コード例 #5
0
 def get_user_by_email(cls, email):
     sql, args = data_adaptor.create_select(table_name="users",
                                            template={"email": email},
                                            fields=["*"])
     res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
     if data is not None and len(data) > 0:
         result = data[0]
     else:
         result = None
     return result
コード例 #6
0
 def get_profile_by_id(cls, pid):
     sql, args = data_adaptor.create_select(
         table_name="profile",
         template={"profile_id": pid},
         fields=[
             "user_id", "profile_id", "element_type AS type",
             "element_subtype AS subtype", "element_value AS value"
         ])
     res, data = data_adaptor.run_q(sql, args=args)
     return data
コード例 #7
0
    def update_profile(cls, param_profile, update_template, data):
        result = None
        conn = None
        cursor = None

        try:
            conn = data_adaptor._get_default_connection()
            cursor = conn.cursor()

            # a wrapper function helps to pass params
            def run_q(sql_, args_):
                return data_adaptor.run_q(sql_,
                                          args_,
                                          cur=cursor,
                                          conn=conn,
                                          commit=False)

            sql, args = data_adaptor.create_select(
                table_name="profile_entries", template=update_template)

            _, prev_data = run_q(sql, args)

            if prev_data is not None and len(prev_data) > 0:

                sql, args = data_adaptor.create_update(
                    table_name="profile_entries",
                    new_values=data,
                    template=update_template)
                res, _ = run_q(sql, args)
                if res != 1:
                    raise Exception('cannot update data!')
                else:
                    # get new Etag
                    new_data = prev_data[0]
                    for k, v in data.items():
                        new_data[k] = v
                    result = new_data['profile_entry_id']

                conn.commit()
            else:
                raise Exception('cannot retrieve data')

        except Exception as e:
            # rollback
            conn.rollback()
            raise e
        finally:
            # closing database connection.
            if cursor:
                cursor.close()
            if conn:
                conn.close()
            return result
コード例 #8
0
    def get_user(cls, user_info):
        try:
            sql, args = data_adaptor.create_select(table_name="users",template=user_info)
            res, data = data_adaptor.run_q(sql, args)
        except pymysql.err.IntegrityError as ie:
            if ie.args[0] == 1062:
                raise (DataException(DataException.duplicate_key))
            else:
                raise DataException()
        except Exception as e:
            raise DataException()

        return res
コード例 #9
0
    def get_by_email(cls, email, fields):
        try:
            sql, args = data_adaptor.create_select(table_name="users", template={"email":email}, fields=fields)
            res, data = data_adaptor.run_q(sql, args)
        except Exception as e:
            raise DataException()

        if data is not None and len(data) > 0:
            result = data[0]
        else:
            result = None

        return result
コード例 #10
0
    def query_by_parameters(cls, params, fields):
        try:
            sql, args = data_adaptor.create_select(table_name="users", template=params, fields=fields)
            res, data = data_adaptor.run_q(sql, args)
        except pymysql.err.IntegrityError as ie:
            if ie.args[0] == 1062:
                raise (DataException(DataException.duplicate_key))
            else:
                raise DataException()
        except Exception as e:
            raise DataException()

        return data
コード例 #11
0
    def get_user_profile(cls, params, fields):

        sql, args = data_adaptor.create_select(table_name="profile_entries",
                                               template=params,
                                               fields=fields)
        res, data = data_adaptor.run_q(sql, args)

        if data is not None and len(data) > 0:
            result = data
        else:
            result = None

        return result
コード例 #12
0
    def get_by_query(cls, temp, cols):

        query = data_adaptor.create_select('baseball.users',
                                           template=temp,
                                           fields=cols)
        res, data = data_adaptor.run_q(sql=query[0],
                                       args=(query[1]),
                                       fetch=True)
        if data is not None and len(data) > 0:
            result = data[0]
        else:
            result = None

        return result
コード例 #13
0
    def validate_info(cls, user_info):
        try:
            sql, args = data_adaptor.create_select(
                table_name="users",
                template={"email": user_info},
                fields=["password"])
            res, data = data_adaptor.run_q(sql, args=args)
            if res != 1:
                res = None
            else:
                res = data[0].get("password")
        except Exception as exp:
            print("Error: validate_info\n", exp)
            raise DataException()

        return res
コード例 #14
0
def resource_by_template(primary_key_value=None):
    try:
        # Parse the incoming request into an application specific format.
        context = log_and_extract_input()
        template = {
            'email': primary_key_value
        } if primary_key_value else context.get('query_params', {})
        fields = context.get('query_params', {}).pop('f', None)
        if fields:
            fields = fields.split(',')

        if request.method == 'GET':
            sql, args = DataAdaptor.create_select(table_name='users',
                                                  template=template,
                                                  fields=fields)
            res, data = DataAdaptor.run_q(sql, args)
            if res and len(data) > 0:

                result = json.dumps(data, default=str)

                rsp_data = result
                rsp_status = 200
                rsp_txt = str(rsp_data)

                full_rsp = Response(rsp_txt,
                                    status=rsp_status,
                                    content_type="application/json")

                return full_rsp
            else:
                rsp_status = 404
                rsp_txt = "Not Found"
                full_rsp = Response(rsp_txt,
                                    status=rsp_status,
                                    content_type="application/json")

                return full_rsp
    except Exception as e:
        print(e)
        rsp_txt = "Internal Error"
        rsp_status = 504
        full_rsp = Response(rsp_txt,
                            status=rsp_status,
                            content_type="application/json")

        return full_rsp
コード例 #15
0
    def get_comments_of_post(cls, post_id):
        try:
            sql, args = data_adaptor.create_select(
                table_name="comments",
                fields="*",
                template={"to_post": post_id})
            res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
            if res == 0:
                result = json.dumps([])
            else:
                result = json.dumps(data,
                                    indent=4,
                                    sort_keys=True,
                                    default=str)
        except Exception as exp:
            raise DataException()

        return result
コード例 #16
0
ファイル: app.py プロジェクト: jz3071/bugfreepandas
def resource_by_template(primary_key_value=None):
    try:
        inputs = log_and_extract_input(demo)
        template = {"email":primary_key_value} if primary_key_value else inputs.get("query_params", {})

        if "f" in template:
            fields = template["f"]
            template.pop("f")
        else:
            fields = None

        if fields:
            fields = fields.split(',')
        else:
            fields = ["*"]

        if request.method == "GET":
            sql, args = DataAdaptor.create_select(table_name="users", template=template, fields=fields)
            res, data = DataAdaptor.run_q(sql, args)
            if res and len(data) > 0:
                result = json.dumps(data, default=str)
                rsp_data = result
                rsp_status = 200
                rsp_txt = str(rsp_data)

                full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json")
                full_rsp.headers["Access-Control-Allow-Origin"] = "*"

                return full_rsp
            else:
                rsp_status = 404
                rsp_txt = "Not Found"
                full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json")
                full_rsp.headers["Access-Control-Allow-Origin"] = "*"
                return full_rsp

    except Exception as e:
        print(e)
        rsp_txt = "Internal Error"
        rsp_status = 504
        full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json")
        full_rsp.headers["Access-Control-Allow-Origin"] = "*"

        return full_rsp
コード例 #17
0
    def delete_profile(cls, profile_id):
        result = None

        sql, args = data_adaptor.create_select(
            table_name="profile_entries",
            template={"profile_entry_id": profile_id})
        _, prev_data = data_adaptor.run_q(sql, args)

        if prev_data is not None and len(prev_data) > 0:
            sql, args = data_adaptor.delete(
                table_name="profile_entries",
                template={"profile_entry_id": profile_id})
            result, _ = data_adaptor.run_q(sql, args)
            if result != 1:
                result = None
        else:
            return result

        return "Completed"
コード例 #18
0
 def get_user_status(cls, email):
     sql, args = data_adaptor.create_select(table_name="users",
                                            template={"email": email},
                                            fields=["status"])
     res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True)
     return data[0]['status'] if res == 1 else None
コード例 #19
0
ファイル: RDBDataObject.py プロジェクト: jz3071/bugfreepandas
 def retrieve(cls, template, fields=None, limit=None, offset=None, orderby=None):
     t_name = cls.get_table_name()
     sql, args = da.create_select(t_name, template=template,
                                  fields=fields)
     res, d = da.run_q(sql, args=args, fetch=True)
     return d