Files
myapp-full/myapp/models/note.py

74 lines
2.3 KiB
Python
Raw Normal View History

2020-02-16 22:58:39 +03:00
__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}