__author__ = 'RemiZOffAlex' __copyright__ = '(c) RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' import datetime from sqlalchemy import Column, 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', 'Не передан объект User' self.user_id = user.id self.title = title self.created = datetime.datetime.now() self.updated = datetime.datetime.now() def __repr__(self): return "".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')) # Связи 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', 'Не передан объект Note' assert type(tag).__name__ == 'Tag', 'Не передан объект Tag' self.note_id = note.id self.tag_id = tag.id def __repr__(self): return "" % (self.id) def as_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns}