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')
def update_category(self): inputs = self.get_input() if web.ctx.method == "GET": category_id = inputs.get("category_id") category = Categories.get_or_none(Categories.id == category_id) category_list = Categories.select().where(Categories.status == 0) self.private_data["category"] = category self.private_data["category_list"] = category_list return self.display("admin/update_category") else: category_id = inputs.get('category_id') name = inputs.get('name') desc = inputs.get('desc') parent_id = inputs.get("parent_id") category = Categories.get_or_none(Categories.id == category_id) try: category.update(name=name, description=desc, parent_id=parent_id). \ where(Categories.id == category_id).execute() self.private_data["create_success"] = True return web.seeother(self.make_url('category_list')) except Exception as e: log.error('update category failed %s' % traceback.format_exc()) log.error('input params %s' % inputs) self.private_data["update_success"] = False return self.display("admin/update_category")
def _lastcateids(parent, iditem): try: id_item = iditem cate = Categories.select().where(Categories.id == parent) for item in cate: if item.children.count() == 0: id_item.append(item.id) elif item.children.count(): _getchildren(item, id_item) return id_item except Exception: return False
def categories(self): inputParams = self.getInput() try: parent = inputParams['parent'] order = int(inputParams['order']) if inputParams.has_key('order') else -1 categoriesList = Categories.select().where(Categories.parent==parent) self.privData['CATEGORIES_LIST'] = categoriesList self.privData['ORDER'] = order return self.display('categories-list') except Exception, e: return self.error(msg='获取分类列表失败: %s' % e)
def resume(self): """标签下文章列表:return:""" self.private_data['category_list'] = [] try: category_list = Categories.select().where(Categories.status == 0).\ order_by(Categories.id.desc()) self.private_data['category_list'] = category_list return self.display('front/resume') except Exception as e: log.info('Failed to get search result.tag is%s.Error msg is', e) log.error(traceback.format_exc()) return self.display('front/resume')
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'))
def about(self): """ 文章详情信息 :return: """ self.private_data['category_list'] = [] try: category_list = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()).execute() self.private_data['category_list'] = category_list return self.display('front/about') except Exception as e: log.info('Failed to get article info. Error msg ' 'is', e) log.error(traceback.format_exc()) return self.display('front/about')
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') \
def category_list(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['category_list'] = [] try: category_query = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()) total_count = category_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['category_list'] = \ category_query.paginate(page, page_size).execute() self.private_data['total_page'] = total_page return self.display("admin/category_list") except Exception as e: log.error('Failed to get category list data. Error msg %s', e) log.error(traceback.format_exc()) return self.display('admin/category_list')
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')
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')
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 get_ca_count(self, category_id): return Categories.select().join(Articles).\ where(Articles.category.id == int(category_id)).count()