Add notes
This commit is contained in:
@@ -11,7 +11,10 @@ from sqlalchemy_utils import database_exists, create_database
|
||||
|
||||
from .. import app
|
||||
|
||||
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], echo=True)
|
||||
engine = create_engine(
|
||||
app.config['SQLALCHEMY_DATABASE_URI'],
|
||||
echo=app.config['SQLDEBUG']
|
||||
)
|
||||
if not database_exists(engine.url):
|
||||
create_database(engine.url)
|
||||
|
||||
@@ -30,6 +33,9 @@ from .tag import Tag
|
||||
# Статьи
|
||||
from .page import Page, TagPage
|
||||
|
||||
# Заметки
|
||||
from .note import Note, TagNote
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
|
||||
__all__ = []
|
||||
|
||||
73
myapp/models/note.py
Normal file
73
myapp/models/note.py
Normal file
@@ -0,0 +1,73 @@
|
||||
__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.orm import relationship
|
||||
|
||||
from . import Base
|
||||
|
||||
|
||||
class Note(Base):
|
||||
"""Заметки
|
||||
"""
|
||||
__tablename__ = "note"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
user_id = Column(Integer, ForeignKey('user.id'))
|
||||
title = Column(String)
|
||||
body = Column(String, default='')
|
||||
created = Column(DateTime) # Дата создания
|
||||
updated = Column(DateTime) # Дата обновления
|
||||
|
||||
# Связи
|
||||
user = relationship(
|
||||
"User",
|
||||
primaryjoin="Note.user_id==User.id",
|
||||
uselist=False
|
||||
)
|
||||
tags = relationship("TagNote", primaryjoin="Note.id==TagNote.note_id")
|
||||
|
||||
|
||||
def __init__(self, user, title):
|
||||
assert type(user).__name__=='User', app.logger.info('Не передан объект User')
|
||||
self.user_id = user.id
|
||||
self.title = title
|
||||
self.created = datetime.datetime.now()
|
||||
self.updated = datetime.datetime.now()
|
||||
|
||||
def __repr__(self):
|
||||
return "<Note({}, '{}')>".format(self.id, self.title)
|
||||
|
||||
def as_dict(self):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
||||
|
||||
class TagNote(Base):
|
||||
"""Теги к заметкам"""
|
||||
__tablename__ = "tagnote"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
note_id = Column(Integer, ForeignKey('note.id'))
|
||||
tag_id = Column(Integer, ForeignKey('tag.id'))
|
||||
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)
|
||||
|
||||
def __init__(self, note, tag):
|
||||
assert type(note).__name__=='Note', app.logger.info('Не передан объект Note')
|
||||
assert type(tag).__name__=='Tag', app.logger.info('Не передан объект Tag')
|
||||
self.note_id = note.id
|
||||
self.tag_id = tag.id
|
||||
self.created = datetime.datetime.now()
|
||||
|
||||
def __repr__(self):
|
||||
return "<TagNote('%s')>" % (self.id)
|
||||
|
||||
def as_dict(self):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
Reference in New Issue
Block a user