From b1fbffbc400d272d021335138cc4e1560aff0b78 Mon Sep 17 00:00:00 2001 From: RemiZOffAlex Date: Sat, 8 Feb 2020 20:35:02 +0300 Subject: [PATCH] Update api tag --- myapp/ns_api/tag.py | 68 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/myapp/ns_api/tag.py b/myapp/ns_api/tag.py index b97358d..2e7c2d9 100644 --- a/myapp/ns_api/tag.py +++ b/myapp/ns_api/tag.py @@ -5,7 +5,7 @@ __email__ = 'remizoffalex@mail.ru' __url__ = 'https://remizoffalex.ru' from . import jsonrpc, login_required -from .. import lib, models +from .. import app, lib, models @jsonrpc.method('tag.add(name=str)') @@ -67,8 +67,72 @@ def tag_exist(name): return result +@jsonrpc.method('tag.pages(id=int, page=int)') +def tag_pages_list(id, page): + """ + Список статей + """ + tag = models.db_session.query( + models.Tag + ).filter( + models.Tag.id==id + ).first() + if tag is None: + raise ValueError + indexes = models.db_session.query( + models.TagPage.page_id + ).filter( + models.TagPage.tag_id==id + ) + pages = models.db_session.query( + models.Page + ).filter( + models.Page.id.in_(indexes) + ).order_by( + models.Page.title.asc() + ) + pages = lib.getpage( + pages, + page, + app.config['ITEMS_ON_PAGE'] + ).all() + + result = [] + for page in pages: + newRow = page.as_dict() + newRow['user'] = page.user.as_dict() + newRow['tags'] = [] + for tagLink in page.tags: + newRow['tags'].append(tagLink.tag.as_dict()) + result.append(newRow) + return result + + +@jsonrpc.method('tag.pages.count(id=int)') +def tag_pages_count(id): + """Общее количество статей + """ + tag = models.db_session.query( + models.Tag + ).filter( + models.Tag.id==id + ).first() + if tag is None: + raise ValueError + indexes = models.db_session.query( + models.TagPage.page_id + ).filter( + models.TagPage.tag_id==id + ) + result = models.db_session.query( + models.Page + ).filter( + models.Page.id.in_(indexes) + ).count() + return result + + @jsonrpc.method('tags()') -@login_required def tags_list(): """ Список тегов