Esempio n. 1
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()
Esempio n. 2
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()
Esempio n. 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()
Esempio n. 4
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()
Esempio n. 5
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()
Esempio n. 6
0
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
Esempio n. 7
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()
Esempio n. 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()
Esempio n. 9
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()
Esempio n. 10
0
def convert_model(class_name, info_dic):
    """
    字典->model
    :param class_name:
    :param info_dic:
    :return:
    """
    try:
        class_model = getattr(models, class_name)
        model = class_model()
        for k, v in info_dic.iteritems():
            setattr(model, k, v)
        return model
    except Exception as ex:
        gen_log.error("%s convert error: %r" % (class_name, ex))
Esempio n. 11
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()
Esempio n. 12
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()
Esempio n. 13
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()
Esempio n. 14
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()
Esempio n. 15
0
def model_query(session, class_name, query_dict):
    """
    通用查询,单元测试ut
    :param session:
    :param class_name: 实体名
    :param query_dict: 查询条件,格式:{'device_name':['FWQSB'], 'device_sn':['27350626']}
    :return: query
    """
    try:
        class_model = getattr(models, class_name)
        query = session.query(class_model)
        for key, value in query_dict.iteritems():
            column_name = getattr(class_model, key)
            query = query.filter(getattr(column_name, 'in_')(value))
        return query
    except Exception as ex:
        gen_log.error("%s query error: %r" % (class_name, ex))
        raise ex
Esempio n. 16
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()
Esempio n. 17
0
    def post(self):
        product_name = self.get_argument("product_name")
        _p_names = product_name.split("|")
        _all_product = loc_product.get_product_by_names(_p_names)
        _ = loc_product.del_product(_p_names)
        if not _:
            self.finish({'state': '1', 'message': 'delete product faild'})
            return
        # del img
        try:
            upload_path = os.path.abspath(os.path.dirname(__file__) + os.path.sep + "..")
            upload_path = os.path.join(upload_path, 'static')
            for product in _all_product:
                os.remove(os.path.join(upload_path, product.get("img_path")))
        except Exception as ex:
            gen_log.error("del product img error:%r"%ex)

        self.finish({'state': '0', 'message': 'delete product ok'})
Esempio n. 18
0
 def post(self):
     keyword_name = self.get_argument("keyword_name")
     _k_names = keyword_name.split("|")
     _all_keyword = loc_keywod.get_keyword_by_names(_k_names)
     _ = loc_keywod.del_keyword(_k_names)
     if not _:
         self.finish({'state': '1', 'message': 'delete keyword faild'})
         return
     # del img
     try:
         upload_path = os.path.abspath(
             os.path.dirname(__file__) + os.path.sep + "..")
         upload_path = os.path.join(upload_path, 'static')
         for keyword in _all_keyword:
             os.remove(os.path.join(upload_path, keyword.get("img_path")))
     except Exception as ex:
         gen_log.error("del product img error:%r" % ex)
     self.finish({'state': '0', 'message': 'delete keyword ok'})
Esempio n. 19
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()
Esempio n. 20
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()
Esempio n. 21
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()
Esempio n. 22
0
    def get(self):
        user_name = self.get_argument('user_name', '')
        val_code = self.get_argument("val_code", "")
        redirect_url = self.get_argument("redirect_url", "")

        if not redirect_url:
            redirect_url = "home.html"

        user_info = loc_user.get_available_user(name=user_name)
        if not user_info:
            gen_log.error("user info is none")
            redirect_url = "login.html"
            self.redirect(self.prefix + redirect_url, permanent=True)
            return

        #判断验证码
        if user_info.valcode != val_code:
            gen_log.error("val code:%s,%s" % (user_info.valcode, val_code))
            redirect_url = "login.html"
            self.redirect(self.prefix + redirect_url, permanent=True)
            return

        #更新用户密码
        loc_user.update_user(
            {
                "pwd": encry_md5(user_info.reset_pwd),
                "reset_pwd": ""
            }, {"name": [user_name]})

        # 设置cookie,注册的,默认都是1
        self.set_secure_cookie("user_name",
                               user_name,
                               expires=time.time() + float(com_cookie_time))
        self.set_secure_cookie("user_level",
                               str(user_info.level),
                               expires=time.time() + float(com_cookie_time))

        # 管理员跳转管理页面
        if user_info.level == 0:
            self.redirect(self.manage_prefix + "manproduct.html")
            return
        self.redirect(self.prefix + redirect_url, permanent=True)
Esempio n. 23
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()
Esempio n. 24
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()
Esempio n. 25
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()
Esempio n. 26
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()
Esempio n. 27
0
def hot_send_email(to_email, message, subject, msg_type="plain"):
    global _LOCK
    with _LOCK:
        try:
            #service_smtp = smtplib.SMTP("smtp-mail.outlook.com", 587)
            service_smtp = smtplib.SMTP("smtp.live.com", 587)
            msg = MIMEText(message, msg_type)
            msg["Subject"] = subject
            msg["From"] = hot_email_user
            msg["To"] = to_email
            service_smtp.ehlo(
            )  # Hostname to send for this command defaults to the fully qualified domain name of the local host.
            service_smtp.starttls(
            )  #Puts connection to SMTP server in TLS mode
            service_smtp.ehlo()
            service_smtp.login(hot_email_user, hot_email_pwd)
            service_smtp.sendmail(hot_email_user, to_email, msg.as_string())
            service_smtp.close()
            return True
        except smtplib.SMTPException, e:
            gen_log.error("send email error:%r" % e)
            return False
        finally:
Esempio n. 28
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()
Esempio n. 29
0
def gmail_send_email(to_email, message, subject, msg_type="plain"):
    global _LOCK
    with _LOCK:
        try:
            # Create SMTP Object
            msg = MIMEText(message, msg_type)
            msg['From'] = gmail_email_user
            msg['To'] = to_email
            msg['Subject'] = subject
            service_smtp = smtplib.SMTP('smtp.gmail.com', 587)
        except Exception, e:
            gen_log.error("send email conncet error:%r" % e)
            return False

        try:
            service_smtp.starttls()
            # login with username & password
            service_smtp.login(gmail_email_user, gmail_email_pwd)
            service_smtp.sendmail(gmail_email_user, to_email, msg.as_string())
            return True
        except smtplib.SMTPException, e:
            gen_log.error("send email smtp error:%r" % e)
            return False
Esempio n. 30
0
def qq_send_email(to_email, message, subject, msg_type="plain"):
    """
    发送邮件
    :param to_email: 接收邮箱
    :param message: 发送内容
    :param subject: 邮件标题
    :return:
    """
    global _LOCK
    with _LOCK:
        try:
            service_smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
            msg = MIMEText(message, msg_type)
            msg["Subject"] = subject
            msg["From"] = qq_email_user
            msg["To"] = to_email
            service_smtp.login(qq_email_user, qq_email_pwd)
            service_smtp.sendmail(qq_email_user, to_email, msg.as_string())
            service_smtp.close()
            return True
        except smtplib.SMTPException, e:
            gen_log.error("send email error:%r" % e)
            return False
        finally: