__author__ = 'RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' __url__ = 'https://remizoffalex.ru' from . import jsonrpc, login_required from .. import app, lib, models @jsonrpc.method('note(id=int)') def note_id(id): """Заметка """ note = models.db_session.query( models.Note ).filter( models.Note.id==id ).first() if note is None: raise ValueError result = note.as_dict() result['user'] = note.user.as_dict() result['tags'] = [] for tagLink in note.tags: result['tags'].append(tagLink.tag.as_dict()) return result @jsonrpc.method('note.update(title=str, body=str)') @login_required def note_update(title, body): """Обновить заметку """ note = models.db_session.query( models.Note ).filter( models.Note.id==id ).first() if note is None: raise ValueError note.title = title note.body = body result = note.as_dict() result['user'] = note.user.as_dict() result['tags'] = [] for tagLink in note.tags: result['tags'].append(tagLink.tag.as_dict()) return result @jsonrpc.method('note.add(title=str, body=str)') @login_required def note_add(title, body): """Добавление новой заметки """ newNote = models.Note( lib.get_user(), title ) newNote.body = body models.db_session.add(newNote) models.db_session.commit() result = newNote.as_dict() result['user'] = newNote.user.as_dict() result['tags'] = [] return result @jsonrpc.method('note.destroy(id=int)') @login_required def note_destroy(id): """Полное уничтожение заметки Аргументы: id -- ID заметки """ note = models.db_session.query( models.Note ).filter( models.Note.id==id ).first() if note is None: raise ValueError models.db_session.delete(note) models.db_session.commit() return 'ok' @jsonrpc.method('notes(page=int)') def notes_list(page): """Список заметок """ notes = models.db_session.query( models.Note ).order_by( models.Note.title.asc() ) notes = lib.getpage( notes, page, app.config['ITEMS_ON_PAGE'] ).all() result = [] for note in notes: newRow = note.as_dict() newRow['user'] = note.user.as_dict() newRow['tags'] = [] for tagLink in note.tags: newRow['tags'].append(tagLink.tag.as_dict()) result.append(newRow) return result @jsonrpc.method('notes.count') def notes_count(): """Количество заметок """ result = models.db_session.query( models.Note ).count() return result