beavyHQ/beavy

View on GitHub
beavy_modules/private_messaging/models.py

Summary

Maintainability
A
0 mins
Test Coverage
from beavy.models.object import Object
from beavy.models.object import User
from beavy.common.payload_property import PayloadProperty
from beavy.utils.url_converters import ModelConverter

from beavy.app import db

PM_ID = "private_message"


# Define models
PMParticipants = db.Table('{}_participants'.format(PM_ID),
                          db.Column('user_id',
                                    db.Integer(),
                                    db.ForeignKey(User.id),
                                    nullable=False),
                          db.Column('pm_id',
                                    db.Integer(),
                                    db.ForeignKey("objects.id"),
                                    nullable=False))


class PrivateMessage(Object):
    __mapper_args__ = {
        'polymorphic_identity': PM_ID
    }

    title = PayloadProperty('title')
    # db.Column(db.String(255), nullable=False)

    participants = db.relationship('User', secondary=PMParticipants,
                                   backref=db.backref('{}s'.format(PM_ID),
                                                      lazy='dynamic'))

ModelConverter.__OBJECTS__['private_message'] = PrivateMessage

# def filter_private_messages_for_view(cls, method):
#     if not current_user or current_user.is_anonymous:
#         return
#     return and_(cls.discriminator == PM_ID,
#                 cls.id.in_(current_user.private_messages))

# Object.__access_filters['view'].append(filter_private_messages_for_view)