from shared import PA, ICON from flask import url_for from flask_wtf import FlaskForm from main import db, app, ma from sqlalchemy import Sequence from sqlalchemy.exc import SQLAlchemyError # pylint: disable=no-member ################################################################################ # Class describing File in the database, and via sqlalchemy, connected to the DB as well # This has to match one-for-one the DB table ################################################################################ class PathType(db.Model): __tablename__ = "path_type" id = db.Column(db.Integer, db.Sequence('path_type_id_seq'), primary_key=True ) name = db.Column(db.String, unique=True, nullable=False ) def __repr__(self): return "".format(self.id, self.name ) ################################################################################ # Class describing Path & in the database via sqlalchemy ################################################################################ class Path(db.Model): __tablename__ = "path" id = db.Column(db.Integer, db.Sequence('path_id_seq'), primary_key=True ) type_id = db.Column(db.Integer, db.ForeignKey("path_type.id")) type = db.relationship("PathType") path_prefix = db.Column(db.String, unique=True, nullable=False ) num_files = db.Column(db.Integer) def __repr__(self): return f"" ################################################################################ # Class describing PathDeatil (quick connvenence class for MovePathDetails()) ################################################################################ class PathDetail(PA): def __init__(self,type,path): self.type=type self.path=path self.icon_url=url_for('internal', filename='icons.svg') + '#' + ICON[self.type] return ################################################################################ # helper function to find oath details for move destinations - used in html # for move DBox to show potential storage paths to move files into ################################################################################ def MovePathDetails(): ret=[] sps=Path.query.join(PathType).filter(PathType.name=='Storage').all() for p in sps: obj = PathDetail( type='Storage', path=p.path_prefix.replace('static/Storage/','') ) ret.append( obj ) ips=Path.query.join(PathType).filter(PathType.name=='Import').all() for p in ips: obj = PathDetail( type='Import', path=p.path_prefix.replace('static/Import/','') ) ret.append( obj ) return ret