Fix flake8

This commit is contained in:
RemiZOffAlex
2020-08-17 19:57:37 +03:00
parent a9736c09fe
commit ae5c629782
46 changed files with 229 additions and 336 deletions

View File

@@ -1,7 +1,5 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
CONFIG = 'config.demo'

View File

@@ -1,11 +1,8 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import sys
# Конфигурация
DEBUG = True

View File

@@ -5,6 +5,6 @@ server {
error_log /var/log/nginx/myapp-error.log info;
location / {
include uwsgi_params;
uwsgi_pass unix:///var/run/uwsgi/myapp.sock;
uwsgi_pass unix:///run/uwsgi/myapp.sock;
}
}

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import config
import logging
@@ -28,6 +26,7 @@ app.logger.addHandler(handler)
from . import lib, models
@app.context_processor
def inject_data():
result = {}
@@ -38,29 +37,30 @@ def inject_data():
return result
@app.teardown_appcontext
def shutdown_session(exception=None):
models.db_session.close_all()
# API
from . import ns_api
from . import ns_api # noqa F401
# Авторизация
from . import ns_login
from . import ns_login # noqa F401
# Заметки
from . import ns_note
from . import ns_note # noqa F401
# Статьи
from . import ns_page
from . import ns_page # noqa F401
# Профиль
from . import ns_profile
from . import ns_profile # noqa F401
# Метки
from . import ns_tag
from . import ns_tag # noqa F401
# Пользователи
from . import ns_user
from . import ns_user # noqa F401
from . import views
from . import views # noqa F401

View File

@@ -2,9 +2,7 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
import datetime
@@ -21,7 +19,7 @@ def login_required(func):
user = models.db_session.query(
models.User
).filter(
models.User.id==session['user_id']
models.User.id == session['user_id']
).first()
if user:
user.last_activity = datetime.datetime.now()

View File

@@ -1,10 +0,0 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from .users import LoginForm
from .page import PageEdit
__all__ = []

View File

@@ -1,16 +0,0 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from wtforms import (
Form,
TextField,
TextAreaField
)
class PageEdit(Form):
title = TextField('Заголовок')
text = TextAreaField('Текст')

View File

@@ -1,12 +0,0 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from wtforms import Form, TextField, PasswordField
class LoginForm(Form):
username = TextField('Имя пользователя')
password = PasswordField('Пароль')

View File

@@ -1,12 +1,10 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from .pagination import Pagination, getpage
from .passwd import pwgen, get_hash_password
from .storage import gettree, gethashtree
from .info import get_user
from .pagination import Pagination, getpage # noqa F401
from .passwd import pwgen, get_hash_password # noqa F401
from .storage import gettree, gethashtree # noqa F401
from .info import get_user # noqa F401
__all__ = []

View File

@@ -1,22 +1,20 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import session, request
from .. import app, models
from flask import session
from .. import models
def get_user():
"""
Получить текущего пользователя
"""Получить текущего пользователя
"""
result = None
if 'user_id' in session:
result = models.db_session.query(
models.User
).filter(
models.User.id==session['user_id']
models.User.id == session['user_id']
).first()
if result is None:
session.pop('logged_in', None)

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from math import ceil

View File

@@ -1,16 +1,14 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import uuid
import random
import hashlib
def pwgen(length=15, hex=False):
"""
Генератор пароля
"""Генератор пароля
"""
keylist = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
if hex:
@@ -22,9 +20,9 @@ def pwgen(length=15, hex=False):
password.append(a_char)
return ''.join(password)
def get_hash_password(password, salt=None):
"""
Получить хеш пароля SHA-512
"""Получить хеш пароля SHA-512
"""
if salt is None:
salt = uuid.uuid4().hex

View File

@@ -1,8 +1,7 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
def gettree(number, count=3):
"""
@@ -16,6 +15,7 @@ def gettree(number, count=3):
result.append(newline[i*count:i*count+count])
return result
def gethashtree(hash, count=3):
"""
Сформировать дерево каталогов

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
@@ -25,16 +23,16 @@ Base = declarative_base()
Base.query = db_session.query_property()
# Пользователи
from .users import User
from .users import User # noqa F401
# Метки
from .tag import Tag
from .tag import Tag # noqa F401
# Статьи
from .page import Page, TagPage
from .page import Page, TagPage # noqa F401
# Заметки
from .note import Note, TagNote
from .note import Note, TagNote # noqa F401
Base.metadata.create_all(engine)

View File

@@ -1,11 +1,9 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
import datetime
from sqlalchemy import Column, Boolean, Integer, ForeignKey, String, DateTime
from sqlalchemy import Column, Integer, ForeignKey, String, DateTime
from sqlalchemy.orm import relationship
from . import Base
@@ -31,9 +29,8 @@ class Note(Base):
)
tags = relationship("TagNote", primaryjoin="Note.id==TagNote.note_id")
def __init__(self, user, title):
assert type(user).__name__=='User', app.logger.info('Не передан объект User')
assert type(user).__name__ == 'User', 'Не передан объект User'
self.user_id = user.id
self.title = title
self.created = datetime.datetime.now()
@@ -56,12 +53,20 @@ class TagNote(Base):
created = Column(DateTime) # Дата создания
# Связи
note = relationship("Note", primaryjoin="TagNote.note_id==Note.id", uselist=False)
tag = relationship("Tag", primaryjoin="TagNote.tag_id==Tag.id", uselist=False)
note = relationship(
"Note",
primaryjoin="TagNote.note_id==Note.id",
uselist=False
)
tag = relationship(
"Tag",
primaryjoin="TagNote.tag_id==Tag.id",
uselist=False
)
def __init__(self, note, tag):
assert type(note).__name__=='Note', app.logger.info('Не передан объект Note')
assert type(tag).__name__=='Tag', app.logger.info('Не передан объект Tag')
assert type(note).__name__ == 'Note', 'Не передан объект Note'
assert type(tag).__name__ == 'Tag', 'Не передан объект Tag'
self.note_id = note.id
self.tag_id = tag.id
self.created = datetime.datetime.now()

View File

@@ -1,19 +1,16 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
import datetime
from sqlalchemy import Column, Boolean, Integer, ForeignKey, String, DateTime
from sqlalchemy import Column, Integer, ForeignKey, String, DateTime
from sqlalchemy.orm import relationship
from . import Base
class Page(Base):
"""
Страницы
"""Страницы
"""
__tablename__ = "page"
@@ -32,9 +29,8 @@ class Page(Base):
)
tags = relationship("TagPage", primaryjoin="Page.id==TagPage.page_id")
def __init__(self, user, title):
assert type(user).__name__=='User', app.logger.info('Не передан объект User')
assert type(user).__name__ == 'User', 'Не передан объект User'
self.user_id = user.id
self.title = title
self.created = datetime.datetime.now()
@@ -57,12 +53,20 @@ class TagPage(Base):
created = Column(DateTime) # Дата создания
# Связи
page = relationship("Page", primaryjoin="TagPage.page_id==Page.id", uselist=False)
tag = relationship("Tag", primaryjoin="TagPage.tag_id==Tag.id", uselist=False)
page = relationship(
"Page",
primaryjoin="TagPage.page_id==Page.id",
uselist=False
)
tag = relationship(
"Tag",
primaryjoin="TagPage.tag_id==Tag.id",
uselist=False
)
def __init__(self, page, tag):
assert type(page).__name__=='Page', app.logger.info('Не передан объект Page')
assert type(tag).__name__=='Tag', app.logger.info('Не передан объект Tag')
assert type(page).__name__ == 'Page', 'Не передан объект Page'
assert type(tag).__name__ == 'Tag', 'Не передан объект Tag'
self.page_id = page.id
self.tag_id = tag.id
self.created = datetime.datetime.now()

View File

@@ -6,21 +6,16 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
import datetime
from sqlalchemy import Column, Integer, ForeignKey, String, DateTime
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from . import Base
from .. import app
class Tag(Base):
"""
Теги, метки
"""Теги, метки
"""
__tablename__ = "tag"
@@ -37,7 +32,6 @@ class Tag(Base):
return "<Tag('%s')>" % (self.name)
def as_dict(self):
"""
Возвращает словарь
"""Возвращает словарь
"""
return {c.name: getattr(self, c.name) for c in self.__table__.columns}

View File

@@ -1,12 +1,9 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import datetime
from sqlalchemy import (
Table,
Column,
Boolean,
Integer,
@@ -20,8 +17,7 @@ from . import Base
class User(Base):
"""
Пользователи
"""Пользователи
"""
__tablename__ = "user"
@@ -31,11 +27,16 @@ class User(Base):
disabled = Column(Boolean, default=True)
created = Column(DateTime)
# Связи
pages = relationship("Page", primaryjoin="Page.user_id==User.id")
def __init__(self, name):
self.name = name
self.created = datetime.datetime.utcnow()
def as_dict(self):
return {c.name: getattr(self, c.name)
return {
c.name: getattr(self, c.name)
for c in self.__table__.columns
if c.name!='password'}
if c.name != 'password'
}

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from functools import wraps
from flask_jsonrpc import JSONRPC
@@ -10,6 +8,7 @@ from flask import session
from .. import app, models
def login_required(func):
@wraps(func)
def decorated_function(*args, **kwargs):
@@ -17,7 +16,7 @@ def login_required(func):
user = models.db_session.query(
models.User
).filter(
models.User.id==session['user_id']
models.User.id == session['user_id']
).first()
if user:
return func(*args, **kwargs)
@@ -29,9 +28,10 @@ def login_required(func):
raise Exception('Необходима авторизация')
return decorated_function
jsonrpc = JSONRPC(app, '/api')
from . import (
from . import ( # noqa F401
login,
note,
page,

View File

@@ -2,26 +2,23 @@ __author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru/'
import string
from flask import session
from flask_jsonrpc.exceptions import InvalidRequestError
from . import jsonrpc
from .. import app, lib, models
@jsonrpc.method('login')
def login(username: str, password: str)->bool:
def login(username: str, password: str) -> bool:
user = models.db_session.query(
models.User
).filter(
models.User.name==username,
models.User.password==lib.get_hash_password(
models.User.name == username,
models.User.password == lib.get_hash_password(
password,
app.config['SECRET_KEY']
),
models.User.disabled==False
models.User.disabled == False
).first()
if user is None:
raise ValueError

View File

@@ -1,19 +1,18 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from . import jsonrpc, login_required
from .. import app, lib, models
@jsonrpc.method('note')
def note_id(id: int)->dict:
def note_id(id: int) -> dict:
"""Заметка
"""
note = models.db_session.query(
models.Note
).filter(
models.Note.id==id
models.Note.id == id
).first()
if note is None:
raise ValueError
@@ -28,7 +27,7 @@ def note_id(id: int)->dict:
@jsonrpc.method('note.add')
@login_required
def note_add(title: str, body: str)->dict:
def note_add(title: str, body: str) -> dict:
"""Добавление новой заметки
"""
newNote = models.Note(
@@ -47,7 +46,7 @@ def note_add(title: str, body: str)->dict:
@jsonrpc.method('note.destroy')
@login_required
def note_destroy(id: int)->bool:
def note_destroy(id: int) -> bool:
"""Полное уничтожение заметки
Аргументы:
@@ -56,7 +55,7 @@ def note_destroy(id: int)->bool:
note = models.db_session.query(
models.Note
).filter(
models.Note.id==id
models.Note.id == id
).first()
if note is None:
raise ValueError
@@ -69,13 +68,13 @@ def note_destroy(id: int)->bool:
@jsonrpc.method('note.update')
@login_required
def note_update(id: int, title: str, body: str)->dict:
def note_update(id: int, title: str, body: str) -> dict:
"""Обновить заметку
"""
note = models.db_session.query(
models.Note
).filter(
models.Note.id==id
models.Note.id == id
).first()
if note is None:
raise ValueError
@@ -92,7 +91,7 @@ def note_update(id: int, title: str, body: str)->dict:
@jsonrpc.method('notes')
def notes_list(page: int)->list:
def notes_list(page: int) -> list:
"""Список заметок
"""
notes = models.db_session.query(
@@ -118,7 +117,7 @@ def notes_list(page: int)->list:
@jsonrpc.method('notes.count')
def notes_count()->int:
def notes_count() -> int:
"""Количество заметок
"""
result = models.db_session.query(

View File

@@ -1,19 +1,18 @@
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from . import jsonrpc, login_required
from .. import app, lib, models
@jsonrpc.method('page')
def page_id(id: int)->dict:
def page_id(id: int) -> dict:
"""Статья
"""
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
raise ValueError
@@ -28,7 +27,7 @@ def page_id(id: int)->dict:
@jsonrpc.method('page.add')
@login_required
def page_add(title: str, body: str)->dict:
def page_add(title: str, body: str) -> dict:
"""Добавление новой статьи
"""
newPage = models.Page(
@@ -47,7 +46,7 @@ def page_add(title: str, body: str)->dict:
@jsonrpc.method('page.destroy')
@login_required
def page_destroy(id: int)->bool:
def page_destroy(id: int) -> bool:
"""Полное уничтожение статьи
Аргументы:
@@ -56,7 +55,7 @@ def page_destroy(id: int)->bool:
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
raise ValueError
@@ -69,13 +68,13 @@ def page_destroy(id: int)->bool:
@jsonrpc.method('page.update')
@login_required
def page_update(id: int, title: str, text: str)->dict:
def page_update(id: int, title: str, text: str) -> dict:
"""Обновить статью
"""
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
raise ValueError
@@ -92,7 +91,7 @@ def page_update(id: int, title: str, text: str)->dict:
@jsonrpc.method('pages')
def pages_list(page: int)->list:
def pages_list(page: int) -> list:
"""Список статей
"""
pages = models.db_session.query(
@@ -118,7 +117,7 @@ def pages_list(page: int)->list:
@jsonrpc.method('pages.count')
def pages_count()->int:
def pages_count() -> int:
"""Общее количество статей
"""
result = models.db_session.query(

View File

@@ -1,11 +1,9 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from . import (
from . import ( # noqa F401
note,
page,
tag

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from .. import jsonrpc, login_required
from ... import app, lib, models
@@ -10,29 +8,29 @@ from ... import app, lib, models
@jsonrpc.method('tag.note.add')
@login_required
def tag_note_add(tag: int, id: int)->dict:
def tag_note_add(tag: int, id: int) -> dict:
"""Добавление тега в заметку
"""
noteRow = models.db_session.query(
models.Note
).filter(
models.Note.id==id,
models.Note.user_id==lib.get_user().id
models.Note.id == id,
models.Note.user_id == lib.get_user().id
).first()
if noteRow is None:
raise ValueError
tagRow = models.db_session.query(
models.Tag
).filter(
models.Tag.id==tag
models.Tag.id == tag
).first()
if tagRow is None:
raise ValueError
exist = models.db_session.query(
models.TagNote
).filter(
models.TagNote.tag_id==tagRow.id,
models.TagNote.note_id==noteRow.id
models.TagNote.tag_id == tagRow.id,
models.TagNote.note_id == noteRow.id
).first()
if exist:
raise ValueError
@@ -48,29 +46,29 @@ def tag_note_add(tag: int, id: int)->dict:
@jsonrpc.method('tag.note.delete')
@login_required
def tag_note_delete(tag: int, id: int)->bool:
def tag_note_delete(tag: int, id: int) -> bool:
"""Удаление тега из заметки
"""
noteRow = models.db_session.query(
models.Note
).filter(
models.Note.id==id,
models.Note.user_id==lib.get_user().id
models.Note.id == id,
models.Note.user_id == lib.get_user().id
).first()
if noteRow is None:
raise ValueError
tagRow = models.db_session.query(
models.Tag
).filter(
models.Tag.id==tag
models.Tag.id == tag
).first()
if tagRow is None:
raise ValueError
exist = models.db_session.query(
models.TagNote
).filter(
models.TagNote.tag_id==tag,
models.TagNote.note_id==id
models.TagNote.tag_id == tag,
models.TagNote.note_id == id
).first()
if exist is None:
raise ValueError
@@ -81,25 +79,25 @@ def tag_note_delete(tag: int, id: int)->bool:
@jsonrpc.method('tag.notes')
@login_required
def tag_notes_list(id: int, page: int)->list:
def tag_notes_list(id: int, page: int) -> list:
"""Список заметок
"""
tag = models.db_session.query(
models.Tag
).filter(
models.Tag.id==id
models.Tag.id == id
).first()
if tag is None:
raise ValueError
indexes = models.db_session.query(
models.TagNote.note_id
).filter(
models.TagNote.tag_id==id
models.TagNote.tag_id == id
)
notes = models.db_session.query(
models.Note
).filter(
models.Note.user_id==lib.get_user().id,
models.Note.user_id == lib.get_user().id,
models.Note.id.in_(indexes)
).order_by(
models.Note.title.asc()
@@ -122,25 +120,25 @@ def tag_notes_list(id: int, page: int)->list:
@jsonrpc.method('tag.notes.count')
@login_required
def tag_notes_count(id: int)->int:
def tag_notes_count(id: int) -> int:
"""Общее количество заметок
"""
tag = models.db_session.query(
models.Tag
).filter(
models.Tag.id==id
models.Tag.id == id
).first()
if tag is None:
raise ValueError
indexes = models.db_session.query(
models.TagNote.note_id
).filter(
models.TagNote.tag_id==id
models.TagNote.tag_id == id
)
result = models.db_session.query(
models.Note
).filter(
models.Note.user_id==lib.get_user().id,
models.Note.user_id == lib.get_user().id,
models.Note.id.in_(indexes)
).count()
return result

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from .. import jsonrpc, login_required
from ... import app, lib, models
@@ -10,28 +8,28 @@ from ... import app, lib, models
@jsonrpc.method('tag.page.add')
@login_required
def tag_page_add(tag: int, id: int)->dict:
def tag_page_add(tag: int, id: int) -> dict:
"""Добавление тега на страницы
"""
tagRow = models.db_session.query(
models.Tag
).filter(
models.Tag.id==tag
models.Tag.id == tag
).first()
if tagRow is None:
raise ValueError
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
raise ValueError
exist = models.db_session.query(
models.TagPage
).filter(
models.TagPage.tag_id==tagRow.id,
models.TagPage.page_id==page.id
models.TagPage.tag_id == tagRow.id,
models.TagPage.page_id == page.id
).first()
if exist:
raise ValueError
@@ -47,14 +45,14 @@ def tag_page_add(tag: int, id: int)->dict:
@jsonrpc.method('tag.page.delete)')
@login_required
def tag_page_delete(tag: int, id: int)->bool:
def tag_page_delete(tag: int, id: int) -> bool:
"""Удаление тега со страницы
"""
exist = models.db_session.query(
models.TagPage
).filter(
models.TagPage.tag_id==tag,
models.TagPage.page_id==id
models.TagPage.tag_id == tag,
models.TagPage.page_id == id
).first()
if exist is None:
raise ValueError
@@ -64,20 +62,20 @@ def tag_page_delete(tag: int, id: int)->bool:
@jsonrpc.method('tag.pages')
def tag_pages_list(id: int, page: int)->list:
def tag_pages_list(id: int, page: int) -> list:
"""Список статей
"""
tag = models.db_session.query(
models.Tag
).filter(
models.Tag.id==id
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
models.TagPage.tag_id == id
)
pages = models.db_session.query(
models.Page
@@ -104,20 +102,20 @@ def tag_pages_list(id: int, page: int)->list:
@jsonrpc.method('tag.pages.count')
def tag_pages_count(id: int)->int:
def tag_pages_count(id: int) -> int:
"""Общее количество статей
"""
tag = models.db_session.query(
models.Tag
).filter(
models.Tag.id==id
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
models.TagPage.tag_id == id
)
result = models.db_session.query(
models.Page

View File

@@ -1,16 +1,14 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from .. import jsonrpc, login_required
from ... import app, lib, models
from ... import models
@jsonrpc.method('tag.add')
@login_required
def tag_add(name: str)->dict:
def tag_add(name: str) -> dict:
"""Добавить новый тег
"""
exist = models.db_session.query(
@@ -29,13 +27,13 @@ def tag_add(name: str)->dict:
@jsonrpc.method('tag.delete')
@login_required
def tag_delete(id: int)->bool:
def tag_delete(id: int) -> bool:
"""Удалить тег
"""
exist = models.db_session.query(
models.Tag
).filter(
models.Tag.id==id
models.Tag.id == id
).first()
if exist is None:
raise ValueError
@@ -46,14 +44,14 @@ def tag_delete(id: int)->bool:
@jsonrpc.method('tag.exist')
def tag_exist(name: str)->dict:
def tag_exist(name: str) -> dict:
"""Проверить существует ли тег и вернуть информацию о нём
"""
text = name.lower().strip()
tagRow = models.db_session.query(
models.Tag
).filter(
models.Tag.name==text
models.Tag.name == text
).first()
if tagRow is None:
raise ValueError
@@ -65,7 +63,7 @@ def tag_exist(name: str)->dict:
@jsonrpc.method('tags')
def tags_list()->list:
def tags_list() -> list:
"""Список тегов
"""
tags = models.db_session.query(
@@ -80,7 +78,7 @@ def tags_list()->list:
@jsonrpc.method('tags.groups')
def tags_groups()->dict:
def tags_groups() -> dict:
"""Облако тегов
"""
tags = models.db_session.query(

View File

@@ -1,28 +1,26 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from . import jsonrpc, login_required
from . import jsonrpc
from .. import app, lib, models
@jsonrpc.method('user.pages')
def user_pages_list(id: int, page: int)->list:
def user_pages_list(id: int, page: int) -> list:
"""Список статей пользователя
"""
user = models.db_session.query(
models.User
).filter(
models.User.id==id
models.User.id == id
).first()
if user is None:
raise ValueError
pages = models.db_session.query(
models.Page
).filter(
models.Page.user_id==id
models.Page.user_id == id
).order_by(
models.Page.title.asc()
)
@@ -44,26 +42,26 @@ def user_pages_list(id: int, page: int)->list:
@jsonrpc.method('user.pages.count')
def user_pages_count(id: int)->int:
def user_pages_count(id: int) -> int:
"""Общее количество статей
"""
user = models.db_session.query(
models.User
).filter(
models.User.id==id
models.User.id == id
).first()
if user is None:
raise ValueError
result = models.db_session.query(
models.Page
).filter(
models.Page.user_id==id
models.Page.user_id == id
).count()
return result
@jsonrpc.method('users')
def users_list(page: int)->list:
def users_list(page: int) -> list:
"""Показать список пользователей
"""
users = models.db_session.query(
@@ -82,7 +80,7 @@ def users_list(page: int)->list:
@jsonrpc.method('users.count')
def users_count()->int:
def users_count() -> int:
"""Количество список пользователей
"""
result = models.db_session.query(

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import views
from . import views # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -1,18 +1,15 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template, escape, request, session, redirect
from flask import render_template, session, redirect
from .. import app, lib, models
from .. import app
@app.route('/login')
def login():
"""
Логин
"""Вход
"""
pagedata = {}
body = render_template('login.html', pagedata=pagedata)
@@ -21,6 +18,8 @@ def login():
@app.route('/logout')
def logout():
"""Выход
"""
session.pop('logged_in', None)
session.pop('user_id', None)
return redirect("/", code=302)

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import views
from . import views # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -1,12 +1,10 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template, escape, request, session, redirect
from flask import abort, render_template
from .. import app, lib, models
from .. import app, models
@app.route('/note/<int:id>')
@@ -15,7 +13,7 @@ def note_id(id):
note = models.db_session.query(
models.Note
).filter(
models.Note.id==id
models.Note.id == id
).first()
if note is None:
abort(404)

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import routes
from . import routes # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -6,7 +6,6 @@ from flask import abort
from . import views_user, views_guest
from .. import app, lib
from ..decorators import login_required
@app.route('/page/<int:id>')

View File

@@ -2,12 +2,9 @@ __author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru/'
from flask import (
abort,
render_template
)
from flask import abort, render_template
from .. import app, lib, models
from .. import app, models
def pages(page):
@@ -25,13 +22,12 @@ def pages(page):
def page_id(id):
"""
Документ
"""Документ
"""
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
abort(404)

View File

@@ -2,18 +2,9 @@ __author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru/'
import datetime
from flask import abort, render_template
from flask import (
abort,
render_template,
request,
redirect,
escape,
session
)
from .. import app, lib, models
from .. import app, models
def pages(page):
@@ -33,17 +24,19 @@ def pages(page):
def page_id(id):
"""Статья
"""
Статья
"""
pagedata = {}
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
abort(404)
pagedata = {}
pagedata['title'] = '{} - {}'.format(page.title, app.config['TITLE'])
pagedata['page'] = page.as_dict()
pagedata['page']['user'] = page.user.as_dict()
@@ -60,38 +53,14 @@ def page_id(id):
return body
def page_id(id):
"""Документ"""
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
).first()
if page is None:
abort(404)
pagedata = {}
pagedata['title'] = '{} - {}'.format(page.title, app.config['TITLE'])
pagedata['page'] = page.as_dict()
pagedata['page']['user'] = page.user.as_dict()
pagedata['page']['tags'] = []
for tagLink in page.tags:
pagedata['page']['tags'].append(tagLink.tag.as_dict())
body = render_template('user/page.html', pagedata=pagedata)
return body
def page_edit(id):
"""
Редактирование статьи
"""Редактирование статьи
"""
pagedata = {'title': app.config['TITLE']}
page = models.db_session.query(
models.Page
).filter(
models.Page.id==id
models.Page.id == id
).first()
if page is None:
abort(404)
@@ -102,7 +71,8 @@ def page_edit(id):
def page_add():
"""Добавление нового документа"""
"""Добавление нового документа
"""
pagedata = {}
pagedata['title'] = 'Новый документ - ' + app.config['TITLE']
body = render_template('user/page_add.html', pagedata=pagedata)

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
import os
import jinja2
from . import views
from . import views # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -1,8 +1,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'http://remizoffalex.ru'
from flask import render_template

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import routes
from . import routes # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -1,10 +1,8 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template
from flask import abort, render_template
from .. import app, models

View File

@@ -1,10 +1,8 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template
from flask import abort, render_template
from .. import app, models

View File

@@ -1,18 +1,18 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import jinja2
from . import views
from . import views # noqa F401
from .. import app
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(os.path.dirname(os.path.abspath(__file__)) + "/templates"),
jinja2.FileSystemLoader(
os.path.dirname(os.path.abspath(__file__)) + "/templates"
),
])
app.jinja_loader = my_loader

View File

@@ -1,10 +1,8 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from flask import render_template
from flask import abort, render_template
from .. import app, models
@@ -17,7 +15,7 @@ def user_id(id):
user = models.db_session.query(
models.User
).filter(
models.User.id==id
models.User.id == id
).first()
if user is None:
abort(404)
@@ -35,7 +33,7 @@ def user_pages(id):
user = models.db_session.query(
models.User
).filter(
models.User.id==id
models.User.id == id
).first()
if user is None:
abort(404)

View File

@@ -1,13 +1,9 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from myapp import app
from flask import Flask, render_template, request, Response
from . import forms, models
from flask import render_template, Response
@app.route('/')
@@ -30,7 +26,12 @@ def robots_txt():
def error_missing(exception):
pagedata = {}
error_message = "Не судьба..."
return render_template("error.html", error_code=404, error_message=error_message, pagedata=pagedata), 404
return render_template(
"error.html",
error_code=404,
error_message=error_message,
pagedata=pagedata
), 404
# noinspection PyUnusedLocal
@@ -38,7 +39,12 @@ def error_missing(exception):
def error_unauthorized(exception):
pagedata = {}
error_message = "У вас нет прав"
return render_template("error.html", error_code=403, error_message=error_message, pagedata=pagedata), 403
return render_template(
"error.html",
error_code=403,
error_message=error_message,
pagedata=pagedata
), 403
# noinspection PyUnusedLocal
@@ -46,4 +52,9 @@ def error_unauthorized(exception):
def error_crash(exception):
pagedata = {}
error_message = "Вот незадача..."
return render_template("error.html", error_code=500, error_message=error_message, pagedata=pagedata), 500
return render_template(
"error.html",
error_code=500,
error_message=error_message,
pagedata=pagedata
), 500

2
run.py
View File

@@ -2,9 +2,7 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from myapp import app as application

View File

@@ -2,9 +2,7 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
import os
import sys

View File

@@ -2,8 +2,6 @@
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__license__ = 'MIT'
__email__ = 'remizoffalex@mail.ru'
__url__ = 'https://remizoffalex.ru'
from myapp import app as application
from myapp import app as application # noqa F401