62 lines
2.7 KiB
Python
62 lines
2.7 KiB
Python
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 "<id: {}, name={}>".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"<id: {self.id}, path_prefix: {self.path_prefix}, num_files={self.num_files}, type={self.type}>"
|
|
|
|
|
|
################################################################################
|
|
# 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
|