added stream checks
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
"""
|
||||
Import all models...
|
||||
"""
|
||||
from backend.models.access_control_model import *
|
||||
from backend.models.example_model import *
|
||||
from backend.models.user_model import *
|
||||
from backend.models.post_model import *
|
||||
from backend.models.recorder_model import *
|
||||
from backend.models.access_control_model import *
|
||||
from backend.models.room_model import *
|
||||
from backend.models.user_model import *
|
||||
from backend.models.virtual_command_model import *
|
||||
|
||||
@@ -10,7 +10,7 @@ import os
|
||||
import re
|
||||
from typing import Union
|
||||
|
||||
from sqlalchemy import MetaData
|
||||
from sqlalchemy import MetaData, ForeignKeyConstraint
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.ext.hybrid import hybrid_property
|
||||
from sqlalchemy.orm import validates
|
||||
@@ -24,6 +24,41 @@ from backend.models.virtual_command_model import virtual_command_recorder_comman
|
||||
|
||||
metadata = MetaData()
|
||||
|
||||
# This is the association table for the many-to-many relationship between
|
||||
# recorders and permissions.
|
||||
recorder_permission_table = db.Table('recorder_permission',
|
||||
db.Column('recorder_id', db.Integer,
|
||||
db.ForeignKey('recorder.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
db.Column('permission_id', db.Integer,
|
||||
db.ForeignKey('permission.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
extend_existing=True)
|
||||
|
||||
# This is the association table for the many-to-many relationship between
|
||||
# recorders and recorderCommands and permissions.
|
||||
recorder_rec_commands_permission_table = db.Table('recorder_rec_command_permission',
|
||||
db.Column('recorder_id', db.Integer,
|
||||
db.ForeignKey('recorder.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
db.Column('recorder_command_id', db.Integer,
|
||||
db.ForeignKey('recorder_command.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
db.Column('permission_id', db.Integer,
|
||||
db.ForeignKey('permission.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
extend_existing=True)
|
||||
|
||||
|
||||
class RecorderModel(db.Model, ModelBase):
|
||||
__table_args__ = {'extend_existing': True}
|
||||
@@ -116,6 +151,9 @@ class Recorder(db.Model, ModelBase):
|
||||
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_table,
|
||||
back_populates='recorders')
|
||||
|
||||
required_read_permissions = db.relationship('Permission', secondary=recorder_permission_table)
|
||||
required_write_permissions = db.relationship('Permission', secondary=recorder_permission_table)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(Recorder, self).__init__(**kwargs)
|
||||
|
||||
@@ -215,9 +253,19 @@ class Recorder(db.Model, ModelBase):
|
||||
sort_keys=True, indent=4)
|
||||
|
||||
|
||||
class RecorderCommandPermission(db.Model, ModelBase):
|
||||
__table_args__ = {'extend_existing': True}
|
||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||
recorder = db.relationship('Recorder')
|
||||
recorder_id = db.Column(db.Integer, db.ForeignKey('recorder.id'))
|
||||
recorder_command = db.relationship('RecorderCommand')
|
||||
recorder_command_id = db.Column(db.Integer, db.ForeignKey('recorder_command.id'))
|
||||
permission = db.relationship('Permission')
|
||||
permission_id = db.Column(db.Integer, db.ForeignKey('permission.id'))
|
||||
|
||||
|
||||
class RecorderCommand(db.Model, ModelBase):
|
||||
__table_args__ = {'extend_existing': True}
|
||||
"""Table containing permissions associated with groups."""
|
||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||
last_time_modified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow())
|
||||
@@ -231,6 +279,9 @@ class RecorderCommand(db.Model, ModelBase):
|
||||
virtual_commands = db.relationship('VirtualCommand', secondary=virtual_command_recorder_command_table,
|
||||
back_populates='recorder_commands')
|
||||
|
||||
required_show_permissions = db.relationship('RecorderCommandPermission')
|
||||
required_execute_permissions = db.relationship('RecorderCommandPermission')
|
||||
|
||||
@staticmethod
|
||||
def get_all():
|
||||
return RecorderCommand.query.all()
|
||||
@@ -248,3 +299,7 @@ class RecorderCommand(db.Model, ModelBase):
|
||||
@parameters.setter
|
||||
def parameters(self, parameters_dict: dict):
|
||||
self.parameters_string = json.dumps(parameters_dict)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Recorder(name="RecTest")
|
||||
|
||||
@@ -71,6 +71,20 @@ group_permission_table = db.Table('group_permission',
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True))
|
||||
|
||||
# This is the association table for the many-to-many relationship between
|
||||
# users and permissions.
|
||||
user_permission_table = db.Table('user_permission',
|
||||
db.Column('user_id', db.Integer,
|
||||
db.ForeignKey('user.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True),
|
||||
db.Column('permission_id', db.Integer,
|
||||
db.ForeignKey('permission.id',
|
||||
onupdate="CASCADE",
|
||||
ondelete="CASCADE"),
|
||||
primary_key=True))
|
||||
|
||||
|
||||
class User(UserMixin, db.Model):
|
||||
"""
|
||||
@@ -90,6 +104,7 @@ class User(UserMixin, db.Model):
|
||||
about_me = db.Column(db.Unicode(255))
|
||||
role = db.Column(db.Unicode(63))
|
||||
groups = db.relationship('Group', secondary=user_group_table, back_populates='users')
|
||||
permissions = db.relationship('Permission', secondary=user_permission_table, back_populates='users')
|
||||
password = db.Column(db.String(255), nullable=True)
|
||||
registered_on = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
|
||||
external_user = db.Column(db.Boolean, default=False)
|
||||
@@ -482,10 +497,14 @@ class Permission(db.Model):
|
||||
id = db.Column(db.Integer, autoincrement=True, primary_key=True)
|
||||
name = db.Column(db.Unicode(63), unique=True, nullable=False)
|
||||
description = db.Column(db.Unicode(511))
|
||||
#read_only = db.Column(db.Boolean, default=False)
|
||||
groups = db.relationship(Group, secondary=group_permission_table,
|
||||
back_populates='permissions')
|
||||
users = db.relationship(User, secondary=user_permission_table,
|
||||
back_populates='permissions')
|
||||
access_control_entry = db.relationship('AccessControlEntry', back_populates='required_permission')
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_by_name(name):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user