__author__ = 'RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' __url__ = 'https://remizoffalex.ru' from . import jsonrpc, login_required from .. import app, lib, models @jsonrpc.method('page(id=int)') def page_id(id): """ Статья """ page = models.db_session.query( models.Page ).filter( models.Page.id==id ).first() if page is None: raise ValueError result = page.as_dict() result['user'] = page.user.as_dict() result['tags'] = [] for tagLink in page.tags: result['tags'].append(tagLink.tag.as_dict()) return result @jsonrpc.method('page.update(title=str, text=str)') @login_required def page_update(title, text): """ Обновить статью """ page = models.db_session.query( models.Page ).filter( models.Page.id==id ).first() if page is None: raise ValueError page.title = title page.text = text result = page.as_dict() result['user'] = page.user.as_dict() result['tags'] = [] for tagLink in page.tags: result['tags'].append(tagLink.tag.as_dict()) return result @jsonrpc.method('page.add(title=str, body=str)') @login_required def page_add(title, body): """ Добавление новой статьи """ newPage = models.Page( lib.get_user(), title ) newPage.body = body models.db_session.add(newPage) models.db_session.commit() result = newPage.as_dict() result['user'] = newPage.user.as_dict() result['tags'] = [] return result @jsonrpc.method('page.destroy(id=int)') @login_required def page_destroy(id): """Полное уничтожение статьи Аргументы: id -- ID статьи """ page = models.db_session.query( models.Page ).filter( models.Page.id==id ).first() if page is None: raise ValueError models.db_session.delete(page) models.db_session.commit() return 'Статья #{} уничтожена'.format(id) @jsonrpc.method('pages(page=int)') def pages_list(page): """ Список статей """ pages = models.db_session.query( models.Page ).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('pages.count') def pages_count(): """Общее количество статей """ result = models.db_session.query( models.Page ).count() return result