added stream checks
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user