def verify_user(session, name="", email="", telephone=""): """ 验证用户名、邮箱、手机号码不能重复 :param name: :param email: :param telephone: :return: 0:没有重复;1:邮箱重复;2:用户名重复;3:电话号码重复;4:代码错误 """ try: if email: query = api.model_query(session, "User", {"email": [email]}) if query.count() > 0: return 1 if name: query = api.model_query(session, "User", {"name": [name]}) if query.count() > 0: return 2 if telephone: query = api.model_query(session, "User", {"telephone": [telephone]}) if query.count() > 0: return 3 if not email and not name and not telephone: return 4 return 0 except Exception as ex: gen_log.error("get available user error:%r" % ex) raise ex
def delete_student(student_id=""): session = get_session() with session.begin(): try: # del relation query = model_query(models.RelationInfo, session=session, student_id=student_id) relative_ids = [relation.relative_id for relation in query.all()] query.delete(synchronize_session=False) # del student query = model_query(models.StudentInfo, session=session, id=student_id) query.update({"deleted": True}, synchronize_session=False) # del relative query = model_query(models.RelativeInfo, session=session, id=relative_ids) query.update({"deleted": True}, synchronize_session=False) except Exception as ex: session.rollback() raise ex
def get_creating_user(**kwargs): email = kwargs.get("email", "") user_name = kwargs.get("name", "") gen_log.info("user name:%s" % user_name) try: #email = bs2unicode(email) session = get_session() if email: gen_log.info(1) query = api.model_query(session, "User", { "email": [email], "status": ["creating"] }) result = query.first() return result if user_name: gen_log.info(2) query = api.model_query(session, "User", { "name": [user_name], "status": ["creating"] }) result = query.first() return result except Exception as ex: gen_log.error("get creating user error:%r" % ex) finally: session.close()
def get_product(**kwargs): id = kwargs.get("id", "") name = kwargs.get("name", "") offset = kwargs.get("offset", 0) limit = kwargs.get("limit", 0) try: session = get_session() results = [] if id: query = api.model_query(session, "Product", {"id": [id]}) result = query.first() if result: results.append(result.to_dict()) return init_like_count(session, results) if name: query = api.model_query(session, "Product", {"name": [name]}) result = query.first() if result: results.append(result.to_dict()) return init_like_count(session, results) query = api.model_query(session, "Product", {}) results = query.order_by("sort_num").all() results = [result.to_dict() for result in results] return init_like_count(session, results) except Exception as ex: gen_log.error("Get product error:%r" % ex) return [] finally: session.close()
def get_keyword_like_count(keyword_id): try: session = get_session() query = api.model_query(session, "ProductKeyword", {"id": [keyword_id]}) result = query.first() if not result: return 0 query = api.model_query(session, "User_Like", {"keyword_id": [keyword_id]}) real_count = query.count() return real_count + result.like_add_count except Exception as ex: gen_log.error("Query keyword like count error:%r."%ex) return 0 finally: session.close()
def pu_add(ip, html, product_id="", product_name=""): try: session = get_session() current_month = datetime.datetime.now().strftime('%Y-%m-%d')+" 00:00:00" query = api.model_query(session, "Product_PU", {"ip": [ip], "html": [html], "visit_date": [current_month]}) if query.count() == 0: data = { "ip": ip, "html": html, "product_id": product_id, "product_name": product_name, "pu_count": 1, "visit_date": current_month } data = api.convert_model("Product_PU", data) session.add(data) else: current_pu = query.first() current_pu.pu_count += 1 #query.update({ # models.Product_PU.pu_count: current_pu.pu_count +1 #}) session.commit() return True except Exception as ex: gen_log.error("pu add error:%r" % ex) return False finally: session.close()
def update_product(productinfo, con_dic): """ 更新产品 :param productinfo:{"name": "sdfds"} :param con_dic: {"name": ["sdfdsd"]} :return: """ try: session = get_session() sort_num = productinfo.get("sort_num", 10000) if sort_num == 0: productinfo.update({"sort_num": 10000}) if sort_num > 0 and sort_num < 10000: api.set_product_sort_num(session, sort_num) name = productinfo.get("name", "") _ = verify_product(session, name) if _ != 0: return False query = api.model_query(session, "Product", con_dic) query.update(productinfo, synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("update user error:%r" % ex) return False finally: session.close()
def init_like_count(session, keyword_list): result = [] for keyword in keyword_list: query = api.model_query(session, "User_Like", {"keyword_id": [keyword.get("id")]}) keyword.update({"like_count": query.count()}) result.append(keyword) return result
def init_like_count(session, product_list): result = [] for product in product_list: query = api.model_query(session, "User_Like", {"product_id": [product.get("id")]}) product.update({"like_count": query.count()}) result.append(product) return result
def get_company(): try: session = get_session() query = api.model_query(session, "Company", {}) _ = query.first() return _.to_dict() except Exception as ex: gen_log.error("get all company error:%r"%ex) return {} finally: session.close()
def verify_keyword(session, name): """ :param session: :param name: :return: """ if not name: return 0 query = api.model_query(session, "ProductKeyword", {"name": [name]}) if query.count() > 0: return 1 return 0
def del_user(user_name): try: session = get_session() query = api.model_query(session, "User", {"name": [user_name]}) query.delete(synchronize_session=False) session.commit() return 0 except Exception as ex: gen_log.error("del user error:%r" % ex) return 1 finally: session.close()
def update_company(company_info, company_name): try: session = get_session() query = api.model_query(session, "Company", {"name": [company_name]}) query.update(company_info, synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("update company error:%r" % ex) return False finally: session.close()
def verify_product(session, name): """ 验证产品名是否已经存在 :param session: :param name: :return: """ if not name: return 0 query = api.model_query(session, "Product", {"name": [name]}) if query.count() > 0: return 1 return 0
def get_available_user(**kwargs): email = kwargs.get("email", "") user_name = kwargs.get("name", "") try: session = get_session() if email: query = api.model_query(session, "User", { "email": [email], "status": ["available"] }) result = query.first() return result if user_name: query = api.model_query(session, "User", { "name": [user_name], "status": ["available"] }) result = query.first() return result except Exception as ex: gen_log.error("get available user error:%r" % ex) finally: session.close()
def get_product_by_names(product_names): try: session = get_session() query = api.model_query( session, "Product", { "name": product_names if isinstance(product_names, list) else [product_names] }) results = query.all() return [result.to_dict() for result in results] except Exception as ex: gen_log.error("Get product by name error:%r" % ex) finally: session.close()
def like_product(product_id, user_name): try: session = get_session() query = api.model_query(session, "User_Like", {"product_id": [product_id], "user_name": [user_name]}) if query.count() > 0: gen_log.log("The user has already clicked.") return False query = api.model_query(session, "Product", {"id": [product_id]}) if query.count() == 0: gen_log.log("Product id no exist.") return False data = { "user_name": user_name, "product_id": product_id } model_like = api.convert_model("User_Like", data) session.add(model_like) session.commit() return True except Exception as ex: gen_log.error("like product error:%r" % ex) return False finally: session.close()
def del_product(product_names): try: session = get_session() query = api.model_query( session, "Product", { "name": product_names if isinstance(product_names, list) else [product_names] }) query.delete(synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("del product error:%r" % ex) return False finally: session.close()
def del_keyword(keyword_name): try: session = get_session() query = api.model_query( session, "ProductKeyword", { "name": keyword_name if isinstance(keyword_name, list) else [keyword_name] }) query.delete(synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("del keyword error:%r" % ex) return False finally: session.close()
def update_user(userinfo, con_dic): """ 更新用户 :param userinfo: 字典,key必须和models.User匹配,待更新的用户信息 :param con_dic: 字典,待更新的条件 :return: """ try: session = get_session() query = api.model_query(session, "User", con_dic) query.update(userinfo, synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("update user error:%r" % ex) return False finally: session.close()
def get_all_user(): """ 获取所有的用户 :return: """ try: session = get_session() query = api.model_query(session, "User", {}) results = query.all() _result = [] for result in results: result.pwd = "" _result.append(result.to_dict()) return _result except Exception as ex: gen_log.error("get all user error:%r" % ex) return [] finally: session.close()
def is_exit_avai_email(email=""): if not email: raise ValueError('email is none') try: #email = bs2unicode(email) session = get_session() query = api.model_query(session, "User", { "email": [email], "status": ["available"] }) result = query.first() if result: return True return False except Exception as ex: gen_log.error("exit email error:%r" % ex) raise ex finally: session.close()
def update_keyword(keywordinfo, con_dic): try: session = get_session() name = keywordinfo.get("name", "") _ = verify_keyword(session, name) if _ != 0: return False sort_num = keywordinfo.get("sort_num", 10000) if sort_num == 0: keywordinfo.update({"sort_num": 10000}) if sort_num > 0 and sort_num < 10000: api.set_keyword_sort_num(session, sort_num) query = api.model_query(session, "ProductKeyword", con_dic) query.update(keywordinfo, synchronize_session=False) session.commit() return True except Exception as ex: gen_log.error("update keyword error:%r" % ex) return False finally: session.close()
def info_userid(self, user_id): query = api.model_query(self.model) result = query.filter_by(user_id=user_id).first() if not result: return None return result
def info_by_index(self, index): query = api.model_query(self.model) result = query.filter_by(chapter_index=index).first() if not result: return None return result