from datetime import datetime as dt
from sqlalchemy import ForeignKey, UniqueConstraint
from sqlalchemy import Column, Integer, String, DateTime, Unicode, Binary, Boolean
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
CBase = declarative_base()
[docs]class Client(CBase):
"""Таблица с клиентами"""
__tablename__ = 'client'
id = Column(Integer(), primary_key=True)
username = Column(String(50), unique=True, nullable=False)
password = Column(Binary(), nullable=False)
info = Column(String(255), default='')
online_status = Column(Boolean(), default=False)
def __repr__(self):
return "Client(" \
"id='{self.id}'," \
"username='{self.username}'," \
"information='{self.info}')".format(self=self)
[docs]class History(CBase):
"""Таблица с историей входов клиентов"""
__tablename__ = 'history'
id = Column(Integer(), primary_key=True)
time = Column(DateTime(), default=dt.now(), nullable=False)
ip_addr = Column(String(255))
client_id = Column(Integer(), ForeignKey('client.id'))
client = relationship('Client', backref=backref('history', order_by=client_id))
def __repr__(self):
return "History(" \
"client='{self.client}'," \
"entrance_time='{self.time}'," \
"ip_address='{self.ip_addr}')".format(self=self)
"contact_username='{self.contact.username}')".format(self=self)
[docs]class Messages(CBase):
"""История сообщений клиента"""
__tablename__ = 'messages'
id = Column(Integer(), primary_key=True)
client_id = Column(Integer(), ForeignKey('client.id'))
contact_id = Column(Integer(), ForeignKey('client.id'))
time = Column(DateTime(), default=dt.now(), nullable=False)
client = relationship("Client", foreign_keys=[client_id])
contact = relationship("Client", foreign_keys=[contact_id])
message = Column(Unicode())
def __repr__(self):
return "Messages(" \
"client_id='{self.client_id}'," \
"contact_id='{self.contact_id}'," \
"time='{self.time}'," \
"message='{self.message}')".format(self=self)