예제 #1
0
def get_pu(ip="", html="", start="", end=""):
    try:
        session = get_session()
        # verify date
        if start and not is_date(start):
            gen_log.info("start format error:%s, %s"%(start, type(start)))
            return []
        if end and not is_date(end):
            gen_log.info("end format error:%s, %s" % (end, type(start)))
            return []
        query = api.get_pu_count(session, ip, html, start, end)
        results = query.all()
        _ = []
        for result in results:
            _.append({
                "ip": result.ip,
                "html": result.html,
                "count": int(result[2])
            })
        return _
    except Exception as ex:
        gen_log.error("pu query error:%r"%ex)
        return []
    finally:
        session.close()
예제 #2
0
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()
예제 #3
0
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()
예제 #4
0
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()
예제 #5
0
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()
예제 #6
0
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()
예제 #7
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()
예제 #8
0
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()
예제 #9
0
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()
예제 #10
0
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()
예제 #11
0
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()
예제 #12
0
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()
예제 #13
0
def get_product_like_theme(product_keyword, offset=0, limit=0):
    """
    获取产品列表,根据关键字模糊查询
    :param product_keyword:
    :return:
    """
    if not product_keyword:
        return
    try:
        session = get_session()
        query = api.get_product_like_theme(session, product_keyword)
        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("like query product error: %r" % ex)
    finally:
        session.close()
예제 #14
0
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()
예제 #15
0
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()
예제 #16
0
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()
예제 #17
0
def add_product(productinfo):
    try:
        name = productinfo.get("name", "")
        session = get_session()
        _ = verify_product(session, name)
        if _ != 0:
            return False
        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)
        model_user = api.convert_model("Product", productinfo)
        session.add(model_user)
        session.commit()
        return True
    except Exception as ex:
        gen_log.error("add user error:%r" % ex)
        raise ex
    finally:
        session.close()
예제 #18
0
def add_keyword(keywordinfo):
    try:
        name = keywordinfo.get("name", "")
        session = get_session()
        _ = 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)

        model_keyword = api.convert_model("ProductKeyword", keywordinfo)
        session.add(model_keyword)
        session.commit()
        return True
    except Exception as ex:
        gen_log.error("add keyword error:%r" % ex)
        raise ex
    finally:
        session.close()
예제 #19
0
def add_user(userinfo):
    """
    添加用户
    :param userinfo: 字典,key必须和models.User匹配
    :return:
    """
    try:
        email = userinfo.get("email", "")
        name = userinfo.get("name", "")
        telephone = userinfo.get("telephone", "")
        session = get_session()
        _ = verify_user(session, name, email, telephone)
        if _ != 0:
            return False
        model_user = api.convert_model("User", userinfo)
        session.add(model_user)
        session.commit()
        return True
    except Exception as ex:
        gen_log.error("add user error:%r" % ex)
        return False
    finally:
        session.close()
예제 #20
0
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()
예제 #21
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()
예제 #22
0
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()