示例#1
0
 def update_article(self):
     inputs = self.get_input()
     if web.ctx.method == "GET":
         article_id = inputs.get("article_id")
         category_list = Categories.select().where(Categories.status == 0)
         article = Articles.get_or_none(Articles.id == article_id)
         print(article.id)
         self.private_data["article"] = article
         self.private_data["category_list"] = category_list
         return self.display("admin/update_article")
     else:
         article_id = inputs.get("article_id")
         name = inputs.get('name')
         content = inputs.get('content')
         summary = inputs.get("summary")
         category_id = inputs.get("category_id")
         source_url = inputs.get("source_url", "")
         keywords = str(inputs.get("keywords", "")).strip()
         article = Articles.get_or_none(Articles.id == article_id)
         try:
             tags_list = keywords.split(",") if keywords else []
             if tags_list:
                 got_tags = Tags.select().where(Tags.name.in_(tags_list))
                 tmp_list = []
                 for tag in got_tags:
                     tmp_list.append(tag.name)
                 for tag_str in tags_list:
                     tag_str.strip()
                     if tag_str not in tmp_list:
                         t = Tags(name=tag_str)
                         t.save()
                 db = TinyDB('settings/db.json')
                 db.truncate()
                 db.close()
             article.update(name=name,
                            content=content,
                            summary=summary,
                            category_id=category_id,
                            original_address=source_url,
                            keywords=keywords,
                            updateTime=time()).where(
                                Articles.id == article_id).execute()
             self.private_data["update_success"] = True
             return web.seeother(self.make_url('articles'))
         except Exception as e:
             log.error('update article failed %s' % traceback.format_exc())
             log.error('input params %s' % inputs)
             self.private_data["update_success"] = False
             return web.seeother(self.make_url('update_article'))
示例#2
0
 def search_list(self):
     """
     文章搜索列表
     :return:
     """
     inputs = self.get_input()
     page = int(inputs.get('page', 1))
     page_size = int(inputs.get('page_size', 20))
     keywords = inputs.get('keywords', None)
     self.private_data['article_list'] = []
     self.private_data['current_page'] = 1
     self.private_data['total_page'] = 0
     self.private_data['category_list'] = []
     self.private_data['keywords'] = keywords
     try:
         category_list = Categories.select().where(Categories.status == 0). \
             order_by(Categories.id.desc())
         if keywords:
             article_query = Articles.select().where(
                 Articles.name.contains(keywords))
             total_count = article_query.count()
             total_page = (total_count + page_size - 1) / page_size
             self.private_data['total_page'] = total_page
             self.private_data['current_page'] = page
             self.private_data['category_list'] = category_list
             self.private_data['article_list'] = article_query.\
                 paginate(page, page_size)
             return self.display('front/search_list')
     except Exception as e:
         log.info('Failed to get search result. Keywords is %s. Error msg is',
                  keywords, e)
         log.error(traceback.format_exc())
     return self.display('front/search_list')
示例#3
0
文件: referer.py 项目: XinMa1/work
    def save(self):
        userInput = self.getInput()
        try:
            if not self.isAdmin():
                return self.error(msg="权限不足!", url=self.makeUrl("/admin/articles/list"))

            thumbnail = int(userInput["thumbnail"])
            Articles.create(
                category=int(userInput["category"]),
                name=userInput["name"],
                thumbnail=thumbnail,
                content=userInput["content"],
            )

        except Exception, e:
            return self.error(msg="新增文章失败: %s" % e, url=self.makeUrl("/admin/articles/list"))
示例#4
0
def test_get_article_by_id_with_nonexistent_id():
    articles_data = [{
        'id': 1,
        'name': 'water',
        'price': 100
    }, {
        'id': 2,
        'name': 'honey',
        'price': 200
    }, {
        'id': 3,
        'name': 'mango',
        'price': 400
    }]
    articles = Articles(data=articles_data)

    assert articles.get_article_by_id(article_id=4) == {}
def articles_index_show(feed_id):
    if feed_id is None:
        abort(404)
    else:
        articles = Articles.articles_for_feed(feed_id)
        if articles is None:
            abort(404)
        return json.dumps({"articles": articles})
示例#6
0
def seed_data():
    try:
        articles = Articles(title='Test Post',
                            description='This is a description')
        db.session.add(articles)
        db.session.commit()
        print("success seed data")
    except Exception as err:
        exit(err)
示例#7
0
文件: referer.py 项目: XinMa1/work
    def delete(self):
        inputParams = self.getInput()

        try:
            current_user = Users.get(Users.name == self.isLogin())
            if not self.isAdmin():
                return self.error(msg="权限不足!", url=self.makeUrl("/admin/articles/list"))
            article = Articles.get(Articles.id == int(inputParams["id"]))
            article.delete_instance()
        except Exception, e:
            return self.error(msg="删除文章失败: %s" % e, url=self.makeUrl("/admin/articles/list"))
示例#8
0
def stores():
    try:
        data = request.get_json()
        title = data['title']
        description = data['description']
        article = Articles(title=title, description=description)
        db.session.add(article)
        db.session.commit()
        article_data = get_articles()
        return response(data=article_data, code=200, message="success")
    except Exception as err:
        return response(code=202, message=str(err))
示例#9
0
文件: referer.py 项目: XinMa1/work
    def search(self):
        inputParams = self.getInput()
        keywords = inputParams["keywords"].strip().lower() if inputParams.has_key("keywords") else ""

        page = int(inputParams["page"]) if inputParams.has_key("page") else 1
        count = config.COUNT_PER_PAGE

        articlesList = Articles.select().where(Articles.name.contains(keywords))
        pageString = self.getPageStr(self.makeUrl("/admin/articles/list"), page, count, articlesList.count())
        articlesList = articlesList.order_by(Articles.id.desc())
        self.privData["ARTICLES_LIST"] = articlesList.paginate(page, page + count)
        self.privData["PAGE_STRING"] = pageString
        self.privData["ARTICLES_LIST"] = articlesList
        return self.display("articlesList")
示例#10
0
文件: referer.py 项目: XinMa1/work
    def list(self):
        inputParams = self.getInput()
        page = int(inputParams["page"]) if inputParams.has_key("page") else 1
        count = config.COUNT_PER_PAGE

        articlesList = Articles.select()

        pageString = self.getPageStr(self.makeUrl("/admin/articles/list"), page, count, articlesList.count())
        articlesList = articlesList.order_by(Articles.id.desc())
        self.privData["ARTICLES_LIST"] = articlesList.paginate(page, page + count)
        self.privData["PAGE_STRING"] = pageString
        self.privData["ARTICLES_LIST"] = articlesList

        return self.display("articlesList")
示例#11
0
 def get_articles_center(self):
     inputs = self.get_input()
     try:
         page = int(inputs['page']) if inputs.has_key('page') else 1
         category_id = inputs['category_id']
         articles = Articles.select().where(
             Articles.category == category_id).order_by(Articles.id.desc())
         return json.dumps([{
             'id': it.id,
             'name': it.name,
             'thumbnail': it.thumbnail.thumbnail,
             'content': self.htmlunquote(it.content),
         } for it in articles.paginate(page, PAGINATE_COUNT_10)])
     except Exception as e:
         log.error('get_articles_center%s' % traceback.format_exc())
         return self.error()
示例#12
0
文件: referer.py 项目: XinMa1/work
    def modify(self):
        inputParams = self.getInput()

        try:
            print inputParams["category"]
            print inputParams["id"]
            articleId = int(inputParams["id"])
            q = Articles.update(
                category=int(inputParams["category"]),
                name=inputParams["name"],
                content=inputParams["content"],
                thumbnail=int(inputParams["thumbnail"]),
            ).where(Articles.id == articleId)
            q.execute()
        except Exception, e:
            return self.error(msg="文章修改失败: %s" % e, url=self.makeUrl("/admin/articles/list"))
示例#13
0
    def generate_output(self):
        articles = Articles(data=self.input_data.get('articles', []))
        delivery = DeliveryFee(data=self.input_data.get('delivery_fees', []))
        discount = Discount(data=self.input_data.get('discounts', []))

        checkout_list = []

        for cart_data in self.input_data.get('carts', []):
            cart = Cart(cart_id=cart_data.get('id'),
                        items=cart_data.get('items'),
                        articles=articles,
                        delivery=delivery,
                        discount=discount)

            checkout_list.append({'id': cart.id, 'total': cart.total})

        return {'carts': checkout_list}
示例#14
0
文件: referer.py 项目: XinMa1/work
    def edit(self):
        inputParams = self.getInput()
        userName = self.isLogin()
        if userName != "admin":
            return self.error(msg="权限不足!", url=self.makeUrl("/admin/articles/list"))

        articleID = int(inputParams["id"])
        article = Articles.get(Articles.id == articleID)

        self.privData["ARTICLE"] = article

        user = Users.get(Users.name == userName)
        albumsList = Albums().select().where(Albums.owner == user.id)
        imagesList = Images().select().where(Images.owner == user.id)
        categoriesList = Categories().select()

        # 确认当前用户是否至少有一个包含图片的专辑
        if not albumsList.count():
            return self.error(msg="请创建至少一个专辑!", url=self.makeUrl("/admin/albums/list"))
        if not imagesList.count():
            return self.error(msg="请创建至少一个图片!", url=self.makeUrl("/admin/images/list"))

        # 分类列表
        self.privData["CATEGORIES_LIST"] = categoriesList

        # 构建{album: images}, 同时排除不包括任何图片的专辑
        album_images_map = {}
        excluded_albums = []
        for album in albumsList:
            album_images = imagesList.where(Images.album == album.id)
            if album_images.count():
                album_images_map[album.id] = album_images
            else:
                excluded_albums.append(album.id)

        self.privData["ALBUMS_LIST"] = [album for album in albumsList if album.id not in excluded_albums]
        self.privData["IMG_ALBUMS_LIST"] = album_images_map

        self.privData["CURRENT_ARTICLE"] = article
        self.privData["CURRENT_ALBUM"] = article.thumbnail.album
        self.privData["CURRENT_IMG"] = article.thumbnail
        self.privData["SUBMIT_NAME"] = "thumbnail"

        return self.display("articleEdit")
示例#15
0
 def article_tag_list(self):
     """标签下文章列表:return:"""
     inputs = self.get_input()
     tag = inputs.get('tag', None)
     self.private_data['category_list'] = []
     self.private_data['tag'] = tag
     self.private_data['article_list'] = []
     try:
         category_list = Categories.select().where(Categories.status == 0).\
             order_by(Categories.id.desc())
         if tag:
             article_query = Articles.select().where(Articles.keywords.contains(tag))
             self.private_data['category_list'] = category_list
             self.private_data['article_list'] = article_query.paginate(1, 20)
         return self.display('front/tags_list')
     except Exception as e:
         log.info('Failed to get search result.tag is%s.Error msg is', tag, e)
         log.error(traceback.format_exc())
     return self.display('front/tags_list')    \
示例#16
0
 def get_tags(self):
     db = TinyDB('settings/db.json')
     table = db.table('_default')
     res = table.get(where('name') == 'tags')
     if res:
         data = res.get("data")
         tags_dict_list = json.loads(data)
     else:
         tags_list = Tags.select().where(Tags.status == 0)
         tags_dict_list = []
         for tag in tags_list:
             count = Articles.select().where(
                 Articles.keywords.contains(str(tag.name))).count()
             tags_dict_list.append({tag.name: count})
         db.truncate()
         table = db.table('_default')
         table.insert({"name": "tags", "data": json.dumps(tags_dict_list)})
         db.close()
     return tags_dict_list
示例#17
0
 def articles(self):
     inputs = self.get_input()
     page = int(inputs.get('page', 1))
     page_size = int(inputs.get('page_size', 20))
     self.private_data['current_page'] = page
     self.private_data['total_page'] = 0
     self.private_data['article_list'] = []
     try:
         article_query = Articles.select().where(Articles.status == 0) \
             .order_by(Articles.id.asc())
         total_count = article_query.count()
         total_page = (total_count + page_size - 1) / page_size
         self.private_data['total_page'] = total_page
         self.private_data['article_list'] = \
             article_query.paginate(page, page_size).execute()
         return self.display('admin/article_list')
     except Exception as e:
         log.error('Failed to get article list data. Error msg %s', e)
         log.error(traceback.format_exc())
         return self.display('admin/article_list')
示例#18
0
def process_articles(article_list):
    '''
    Function that processes the article results and transform them to a list of objects
    Args:
        article_list: A list of dictionaries that contain article details
    Returns :
        article_results: A list of article objects
    '''
    article_results = []
    for article_item in article_list:
        source = article_item.get('source')
        title = article_item.get('title')
        urlToImage = article_item.get('urlToImage')
        description = article_item.get('description')
        urlToArticle = article_item.get('url')
        publishedAt = article_item.get('publishedAt')
        article_object = Articles(source, title, description, urlToImage,
                                  urlToArticle, publishedAt)
        article_results.append(article_object)
    return article_results
示例#19
0
 def GET(self):
     """
     首页
     :return:
     """
     inputs = self.get_input()
     page = int(inputs.get('page', 1))
     page_size = int(inputs.get('page_size', 20))
     self.private_data['article_list'] = []
     self.private_data['current_page'] = 1
     self.private_data['total_page'] = 0
     self.private_data['category_list'] = []
     try:
         album = Albums.get(Albums.is_show == 1)
         images = Images.select().where(Images.status == 0,
                                             Images.album == album.id)
         images_dict_list = []
         for image in images.dicts().iterator():
             image_dict = {
                 'link': image.get("link"),
                 'url': config.WEB_URL + 'static/uploads/' +
                        image.get("uuid") + '.jpeg'
             }
             images_dict_list.append(image_dict)
         category_list = Categories.select().where(
             Categories.status == 0). \
             order_by(Categories.id.desc())
         article_query = Articles.select().where(Articles.status == 0). \
             order_by(Articles.id.desc())
         article_list = article_query.paginate(page, page_size)
         total_count = article_query.count()
         total_page = (total_count + page_size - 1) / page_size
         self.private_data['article_list'] = article_list.execute()
         self.private_data['current_page'] = page
         self.private_data['total_page'] = total_page
         self.private_data['images_list'] = images_dict_list
         self.private_data['category_list'] = category_list.execute()
     except Exception as e:
         log.error('Failed to get home data. Error msg %s', e)
         log.error(traceback.format_exc())
     return self.display('front/index')
示例#20
0
 def article_info(self):
     """
     文章详情信息
     :return:
     """
     inputs = self.get_input()
     article_id = int(inputs.get('article_id', 1))
     self.private_data['article'] = None
     self.private_data['category_list'] = []
     try:
         category_list = Categories.select().where(Categories.status == 0). \
             order_by(Categories.id.desc()).execute()
         article = Articles.get(Articles.id == article_id)
         self.private_data['article'] = article
         self.private_data['category_list'] = category_list
         return self.display('front/article_info')
     except Exception as e:
         log.info('Failed to get article info. Article id is %s. Error msg '
                  'is', article_id, e)
         log.error(traceback.format_exc())
     return self.display('front/article_info')
示例#21
0
def test__calculate_items_total():
    articles = Articles(data=ARTICLES_DATA)
    delivery = DeliveryFee(data=DELIVERY_DATA)
    discount = Discount(data=[])

    items = [
        {
            'article_id': 1,
            'quantity': 6
        },
        {
            'article_id': 2,
            'quantity': 2
        },
    ]

    cart = Cart(cart_id=1,
                items=items,
                articles=articles,
                delivery=delivery,
                discount=discount)

    assert cart._calculate_items_total() == 100 * 6 + 200 * 2
示例#22
0
def test_total_with_delivery_fee():
    articles = Articles(data=ARTICLES_DATA)
    delivery = DeliveryFee(data=DELIVERY_DATA)
    discount = Discount(data=[])

    items = [
        {
            'article_id': 1,
            'quantity': 6
        },
        {
            'article_id': 2,
            'quantity': 2
        },
    ]

    cart = Cart(cart_id=1,
                items=items,
                articles=articles,
                delivery=delivery,
                discount=discount)

    assert cart.total == (100 * 6 + 200 * 2) + 400
示例#23
0
def test__apply_delivery_fee():
    articles = Articles(data=ARTICLES_DATA)
    delivery = DeliveryFee(data=DELIVERY_DATA)
    discount = Discount(data=[])

    items = [
        {
            'article_id': 1,
            'quantity': 6
        },
        {
            'article_id': 2,
            'quantity': 2
        },
    ]

    cart = Cart(cart_id=1,
                items=items,
                articles=articles,
                delivery=delivery,
                discount=discount)

    cart_price = 1000
    assert cart._apply_delivery_fee(price=cart_price) == cart_price + 400
示例#24
0
    def articles(self):
        """
        文章分类列表
        :return:
        """
        inputs = self.get_input()
        page = int(inputs.get('page', 1))
        page_size = int(inputs.get('page_size', 20))
        category_id = int(inputs.get('category_id', 2))
        self.private_data['article_list'] = []
        self.private_data['current_page'] = 1
        self.private_data['total_page'] = 0
        self.private_data['category_list'] = []
        self.private_data['current_category'] = None
        try:
            category = Categories.get(Categories.id == category_id)
            category_list = Categories.select().where(Categories.status == 0).\
                order_by(Categories.id.desc())

            article_query = Articles.select().where(
                Articles.category == category.id).order_by(Articles.id.desc())
            article_list = article_query.paginate(page, page_size)
            total_count = article_query.count()
            total_page = (total_count + page_size - 1) / page_size
            self.private_data['article_list'] = article_list
            self.private_data['current_category'] = category
            self.private_data['current_page'] = page
            self.private_data['category_list'] = category_list
            self.private_data['total_page'] = total_page
            return self.display('front/article_list')
        except Exception as e:
            log.error('Failed to get category articles data. '
                      'Category_id is %s Error msg %s', category_id, e)
            log.error(traceback.format_exc())
        # return self.error(msg="获取列表信息失败!", url=self.make_url('/views/home'))
        return self.display('front/article_list')
def articles_show(feed_id, article_id):
    article = Articles.get(feed_id, article_id)
    if article is None:
        abort(404)
    else:
        return json.dumps(article)
示例#26
0
def test_get_article_by_id_with_empty_data():
    articles_data = []
    articles = Articles(data=articles_data)

    assert articles.get_article_by_id(article_id=4) == {}
示例#27
0
def by_article(feed_id, article_id):
    article = Articles.get(feed_id, article_id)
    articles = Articles.articles_for_feed(feed_id)
    rank = ArticleRecommender(article['classification'], articles)
    return json.dumps(rank.recommend(10, exclude_ids=[article_id]))
示例#28
0
def for_user():
    user_affinity = Config.user_affinity
    articles = Articles.all_articles()
    rank = ArticleRecommender(user_affinity, articles)
    return json.dumps(rank.recommend(10))