def create_profile(cls, profile_info, commit=False): result = None try: for el in profile_info['entries']: el['userid'] = profile_info['userid'] el['profileid'] = profile_info['profileid'] #res = cls.create_profile_element(el, commit=False, conn=conn, cur=cur) sql, args = data_adaptor.create_insert(table_name="profile", row=el) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = profile_info 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 result
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
def create_profile_entry(cls, entry_info): required = { "userid", "element_type", "element_subtype", "element_value", "profileid" } entry_info = {key: entry_info[key] for key in required} result = None try: sql, args = data_adaptor.create_insert(table_name="profiles", row=entry_info) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = "Profile Entry Created" 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 result
def update_profile_entry(cls, profile_entry): required = { "userid", "element_type", "element_subtype", "element_value", "profileid" } cleaned_info = {key: profile_entry[key] for key in required} result = None try: sql, args = data_adaptor.create_update( "profiles", cleaned_info, {"element_value": profile_entry["old_element_value"]}) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = "Updated successfully" 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 result
def update_user(cls, email, user_info): result = None user_info.pop("override", None) try: sql, args = data_adaptor.create_update(table_name="e6156.users", new_values=user_info, template={"email": email}) # sql, args = data_adaptor.create_insert(table_name="users", row=user_info) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = user_info['id'] 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 result
def create_user(cls, user_info): result = None try: sql, args = data_adaptor.create_insert(table_name="users", row=user_info) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = user_info['email'] except pymysql.err.IntegrityError as ie: print(ie) if ie.args[0] == 1062: raise (DataException(DataException.duplicate_key)) else: raise DataException() except Exception as e: log_msg = "DataObjectCreate_user: Exception = " + str(e) print(log_msg) raise DataException() return result
def create_user(cls, user_info): result = None try: sql, args = data_adaptor.create_insert(table_name="users", row=user_info) res, data = data_adaptor.run_q(sql, args) msg = {"customers_email": user_info['email']} notification.publish_it(msg) if res != 1: result = None else: result = user_info['id'] 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 result
def update_user(cls, email, new_values): result = None # this makes sure we don't update a value marked as 'DELETED'. get_by_email() user_info = UsersRDB.get_by_email(email) if not user_info: return "No such user exists, homie." try: sql, args = data_adaptor.create_update(table_name="users", new_values=new_values, template={"email": email}) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = user_info['id'] 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 result
def registrations(): status = "PENDING" id = str(uuid4()) last_name = request.json.get("last_name") first_name = request.json.get("first_name") email = request.json.get("email") password = request.json.get("password") new_usr = { "last_name": last_name, "first_name": first_name, "id": id, "email": email, "status": status, "password": password } try: sql, args = data_adaptor.create_insert(table_name="users", row=new_usr) res, data = data_adaptor.run_q(sql, args) message = {"result": res, "data": data} response = Response(json.dumps(message), status=200, content_type="application/json") return response 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()
def delete_by_uid(cls, uid): try: sql = data_adaptor.create_delete(table_name="profile",template={"uid":uid}) res, data = data_adaptor.run_q(sql, args=uid) except Exception as e: raise DataException() return res
def delete_profile(cls, uuid): try: sql = "delete from ebdb.profile where user_id=%s" data_adaptor.run_q(sql=sql, args=(uuid), fetch=False) return "User deleted successfully" except Exception as e: print(e) return None
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
def create_post(cls, content): try: sql, args = data_adaptor.create_insert(table_name="posts", row=content) res, data = data_adaptor.run_q(sql, args) except Exception as e: raise DataException() return res
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
def update_user(cls, email, data): try: template = {"email": email} sql, args = data_adaptor.create_update("ebdb.users", data, template) data_adaptor.run_q(sql=sql, args=args, fetch=True) return "Resource updated successfully" except Exception as e: print(e) return None
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
def update_profile(cls, data, uuid, stype, maintype): try: template = {"user_id": uuid, "subtype": stype, "type": maintype} sql, args = data_adaptor.create_update("ebdb.profile", data, template) data_adaptor.run_q(sql=sql, args=args, fetch=True) return "Resource updated successfully" except Exception as e: print(e) return None
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
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
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
def update_user(cls, user_info, email): sql, arg = data_adaptor.create_update(table_name="users", new_values=user_info, template={'email': email}) res, data = data_adaptor.run_q(sql=sql, args=arg, fetch=True) if res: res = "Successful update" else: res = "Failed" return res
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
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
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
def delete_user(cls, user_info): if not user_info or not user_info["email"]: raise ValueError("Error: User must be deleted by a given email.") try: sql, args = data_adaptor.create_delete(table_name="users", template=user_info) res, data = data_adaptor.run_q(sql, args) result = res except Exception as exp: raise exp return result
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
def delete_user(cls,user_info): try: sql, args = data_adaptor.create_update(table_name="users",new_values={"status":"deleted"},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
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
def update_user(cls, user_info, template): try: sql, args = data_adaptor.create_update(table_name="users", new_values=user_info, template=template) res, data = data_adaptor.run_q(sql, args) if res != 1: result = None else: result = res except Exception as exp: raise DataException() return result
def update_by_email(cls, new_values, email): try: sql, args = data_adaptor.create_update(table_name="users",new_values=new_values,template={"email":email}) 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