user prefs now in table (per user/path combo) and works
This commit is contained in:
2
TODO
2
TODO
@@ -1,8 +1,6 @@
|
|||||||
## GENERAL
|
## GENERAL
|
||||||
* delete key bound to del dbox
|
* delete key bound to del dbox
|
||||||
|
|
||||||
* user preferences stored in User record/DB, for pagesize, sort order, etc.
|
|
||||||
|
|
||||||
* ai search, should put 'all' at top of drop-down
|
* ai search, should put 'all' at top of drop-down
|
||||||
|
|
||||||
* add an option on the person menu to run_ai_on all photos (or at least import/storage)
|
* add an option on the person menu to run_ai_on all photos (or at least import/storage)
|
||||||
|
|||||||
86
options.py
86
options.py
@@ -1,6 +1,29 @@
|
|||||||
from settings import Settings, SettingsRBPath, SettingsIPath, SettingsSPath
|
from settings import Settings, SettingsRBPath, SettingsIPath, SettingsSPath
|
||||||
|
from flask_login import current_user
|
||||||
|
from main import db, app, ma
|
||||||
from shared import PA
|
from shared import PA
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# PA_PREF: preference data for a given user / path_type combo, so a given user
|
||||||
|
# and their prefs for say the import path(s) and storage path(s) etc, each
|
||||||
|
# path_type has different defaults, and keeping those works better
|
||||||
|
################################################################################
|
||||||
|
class PA_PREF(db.Model):
|
||||||
|
__tablename__ = "pa_pref"
|
||||||
|
pa_user_dn = db.Column(db.String, db.ForeignKey('pa_user.dn'), primary_key=True )
|
||||||
|
path_type = db.Column(db.String, primary_key=True, unique=False, nullable=False )
|
||||||
|
noo = db.Column(db.String, unique=False, nullable=False )
|
||||||
|
grouping = db.Column(db.String, unique=False, nullable=False )
|
||||||
|
how_many = db.Column(db.Integer, unique=False, nullable=False )
|
||||||
|
st_offset = db.Column(db.Integer, unique=False, nullable=False )
|
||||||
|
size = db.Column(db.Integer, unique=False, nullable=False )
|
||||||
|
folders = db.Column(db.Boolean, unique=False, nullable=False )
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"<pa_user_dn: {self.pa_user_dn}, path_type: {self.path_type}, noo: {self.noo}, grouping: {self.grouping}, how_many: {self.how_many}, st_offset: {self.st_offset}, size: {self.size}, folders: {self.folders}>"
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Options: class to store set of default values for viewing (order/size, etc.)
|
# Options: class to store set of default values for viewing (order/size, etc.)
|
||||||
# and if a request object (from a POST) is passed in, it returns those instead
|
# and if a request object (from a POST) is passed in, it returns those instead
|
||||||
@@ -8,35 +31,59 @@ from shared import PA
|
|||||||
################################################################################
|
################################################################################
|
||||||
class Options(PA):
|
class Options(PA):
|
||||||
def __init__(self, request):
|
def __init__(self, request):
|
||||||
self.noo="Oldest"
|
# pref=None
|
||||||
self.grouping="None"
|
|
||||||
self.how_many="50"
|
|
||||||
self.offset="0"
|
|
||||||
self.size="128"
|
|
||||||
|
|
||||||
self.folders=True
|
|
||||||
settings=Settings.query.first()
|
|
||||||
if 'orig_url' in request.form:
|
if 'orig_url' in request.form:
|
||||||
url = request.form['orig_url']
|
url = request.form['orig_url']
|
||||||
else:
|
else:
|
||||||
url = request.path
|
url = request.path
|
||||||
if 'files_sp' in url:
|
if 'files_sp' in url:
|
||||||
self.noo="A to Z"
|
|
||||||
self.path_type = 'Storage'
|
self.path_type = 'Storage'
|
||||||
self.paths = SettingsSPath()
|
self.paths = SettingsSPath()
|
||||||
|
pref=PA_PREF.query.filter(PA_PREF.pa_user_dn==current_user.dn,PA_PREF.path_type==self.path_type).first()
|
||||||
|
if pref:
|
||||||
|
self.folders=pref.folders
|
||||||
|
self.noo=pref.noo
|
||||||
|
else:
|
||||||
|
self.folders=True
|
||||||
|
self.noo="A to Z"
|
||||||
elif 'files_rbp' in url:
|
elif 'files_rbp' in url:
|
||||||
self.path_type = 'Bin'
|
self.path_type = 'Bin'
|
||||||
self.paths = []
|
self.paths = []
|
||||||
self.paths.append(SettingsRBPath())
|
self.paths.append(SettingsRBPath())
|
||||||
|
pref=PA_PREF.query.filter(PA_PREF.pa_user_dn==current_user.dn,PA_PREF.path_type==self.path_type).first()
|
||||||
|
if pref:
|
||||||
|
self.folders=pref.folders
|
||||||
|
self.noo=pref.noo
|
||||||
|
else:
|
||||||
|
self.folders=True
|
||||||
|
self.noo="A to Z"
|
||||||
else:
|
else:
|
||||||
self.folders=False
|
|
||||||
self.path_type = 'Import'
|
self.path_type = 'Import'
|
||||||
self.cwd='static/Import'
|
|
||||||
self.paths = SettingsIPath()
|
self.paths = SettingsIPath()
|
||||||
|
pref=PA_PREF.query.filter(PA_PREF.pa_user_dn==current_user.dn,PA_PREF.path_type==self.path_type).first()
|
||||||
|
if pref:
|
||||||
|
self.folders=pref.folders
|
||||||
|
self.noo=pref.noo
|
||||||
|
else:
|
||||||
|
self.folders=False
|
||||||
|
self.noo="Oldest"
|
||||||
|
|
||||||
|
print( f"2={pref}" )
|
||||||
|
if pref:
|
||||||
|
self.grouping=pref.grouping
|
||||||
|
self.how_many=pref.how_many
|
||||||
|
self.offset=pref.st_offset
|
||||||
|
self.size=pref.size
|
||||||
|
else:
|
||||||
|
self.grouping="None"
|
||||||
|
self.how_many="50"
|
||||||
|
self.offset="0"
|
||||||
|
self.size="128"
|
||||||
|
|
||||||
self.cwd='static/' + self.path_type
|
self.cwd='static/' + self.path_type
|
||||||
self.root=self.cwd
|
self.root=self.cwd
|
||||||
|
|
||||||
|
print( f"2={self}" )
|
||||||
# the above are defaults, if we are here, then we have current values, use them instead
|
# the above are defaults, if we are here, then we have current values, use them instead
|
||||||
if request.method=="POST":
|
if request.method=="POST":
|
||||||
self.noo=request.form['noo']
|
self.noo=request.form['noo']
|
||||||
@@ -63,3 +110,20 @@ class Options(PA):
|
|||||||
self.offset=0
|
self.offset=0
|
||||||
if 'next' in request.form:
|
if 'next' in request.form:
|
||||||
self.offset += int(self.how_many)
|
self.offset += int(self.how_many)
|
||||||
|
|
||||||
|
pref=PA_PREF.query.filter(PA_PREF.pa_user_dn==current_user.dn,PA_PREF.path_type==self.path_type).first()
|
||||||
|
if not pref:
|
||||||
|
pref=PA_PREF( pa_user_dn=current_user.dn, path_type=self.path_type, noo=self.noo, grouping=self.grouping, how_many=self.how_many,
|
||||||
|
st_offset=self.offset, size=self.size, folders=self.folders)
|
||||||
|
else:
|
||||||
|
pref.noo=self.noo
|
||||||
|
pref.grouping=self.grouping
|
||||||
|
pref.how_many=self.how_many
|
||||||
|
pref.st_offset=self.offset
|
||||||
|
pref.size=self.size
|
||||||
|
pref.folders=self.folders
|
||||||
|
|
||||||
|
db.session.add(pref)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
print( self )
|
||||||
|
|||||||
@@ -12,7 +12,11 @@ create table SETTINGS(
|
|||||||
constraint FK_DEFAULT_REFIMG_MODEL foreign key (DEFAULT_REFIMG_MODEL) references AI_MODEL(ID),
|
constraint FK_DEFAULT_REFIMG_MODEL foreign key (DEFAULT_REFIMG_MODEL) references AI_MODEL(ID),
|
||||||
constraint FK_DEFAULT_SCAN_MODEL foreign key (DEFAULT_SCAN_MODEL) references AI_MODEL(ID) );
|
constraint FK_DEFAULT_SCAN_MODEL foreign key (DEFAULT_SCAN_MODEL) references AI_MODEL(ID) );
|
||||||
|
|
||||||
create table PA_USER( ID integer, dn varchar, constraint PK_PA_USER_ID primary key(ID) );
|
create table PA_PREF ( PA_USER_ID integer, PATH_TYPE varchar(16), NOO varchar(16), GROUPING varchar(16), HOW_MANY integer, ST_OFFSET integer, SIZE integer, FOLDERS Boolean,
|
||||||
|
constraint PK_PA_USER_ID_PATH_TYPE primary key(PA_USER_ID, PATH_TYPE ) );
|
||||||
|
|
||||||
|
create table PA_USER( ID integer, dn varchar,
|
||||||
|
constraint PK_PA_USER_ID primary key(ID) );
|
||||||
|
|
||||||
create table FILE_TYPE ( ID integer, NAME varchar(32) unique, constraint PK_FILE_TYPE_ID primary key(ID) );
|
create table FILE_TYPE ( ID integer, NAME varchar(32) unique, constraint PK_FILE_TYPE_ID primary key(ID) );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user