Add dividers and rearrange some of the table column parsing.
This commit is contained in:
		
							parent
							
								
									2f83bc2808
								
							
						
					
					
						commit
						c37b54b456
					
				
					 1 changed files with 33 additions and 30 deletions
				
			
		|  | @ -9,6 +9,8 @@ import string | |||
| import traceback | ||||
| import warnings | ||||
| 
 | ||||
| # FFmpeg ########################################################################################### | ||||
| 
 | ||||
| FFMPEG_NOT_FOUND = ''' | ||||
| ffmpeg or ffprobe not found. | ||||
| Add them to your PATH or use symlinks such that they appear in: | ||||
|  | @ -37,11 +39,7 @@ def _load_ffmpeg(): | |||
| 
 | ||||
| ffmpeg = _load_ffmpeg() | ||||
| 
 | ||||
| FILENAME_BADCHARS = '\\/:*?<>|"' | ||||
| 
 | ||||
| # Note: Setting user_version pragma in init sequence is safe because it only | ||||
| # happens after the out-of-date check occurs, so no chance of accidentally | ||||
| # overwriting it. | ||||
| # Database ######################################################################################### | ||||
| 
 | ||||
| DATABASE_VERSION = 14 | ||||
| DB_PRAGMAS = f''' | ||||
|  | @ -53,7 +51,6 @@ PRAGMA user_version = {DATABASE_VERSION}; | |||
| 
 | ||||
| DB_INIT = f''' | ||||
| {DB_PRAGMAS} | ||||
| 
 | ||||
| ---------------------------------------------------------------------------------------------------- | ||||
| CREATE TABLE IF NOT EXISTS users( | ||||
|     id TEXT PRIMARY KEY NOT NULL, | ||||
|  | @ -186,20 +183,6 @@ CREATE INDEX IF NOT EXISTS index_tag_synonyms_name on tag_synonyms(name); | |||
| ---------------------------------------------------------------------------------------------------- | ||||
| ''' | ||||
| 
 | ||||
| def _extract_columns(create_table_statement): | ||||
|     column_names = create_table_statement.split('(')[1].rsplit(')', 1)[0] | ||||
|     column_names = column_names.split(',') | ||||
|     column_names = [x.strip() for x in column_names] | ||||
|     column_names = [x.split(' ')[0] for x in column_names] | ||||
|     column_names = [c for c in column_names if c.lower() != 'foreign'] | ||||
|     return column_names | ||||
| 
 | ||||
| def _extract_table_name(create_table_statement): | ||||
|         # CREATE TABLE table_name( | ||||
|         table_name = create_table_statement.split('(')[0].strip() | ||||
|         table_name = table_name.split()[-1] | ||||
|         return table_name | ||||
| 
 | ||||
| def _extract_table_statements(script): | ||||
|     for statement in script.split(';'): | ||||
|         if 'create table' not in statement.lower(): | ||||
|  | @ -207,21 +190,37 @@ def _extract_table_statements(script): | |||
| 
 | ||||
|         yield statement | ||||
| 
 | ||||
| def _extract_table_name(create_table_statement): | ||||
|     # CREATE TABLE table_name(...) | ||||
|     table_name = create_table_statement.split('(')[0].strip() | ||||
|     table_name = table_name.split()[-1] | ||||
|     return table_name | ||||
| 
 | ||||
| def _extract_columns_from_table(create_table_statement): | ||||
|     # CREATE TABLE table_name(column_name TYPE MODIFIERS, ...) | ||||
|     column_names = create_table_statement.split('(')[1].rsplit(')', 1)[0] | ||||
|     column_names = column_names.split(',') | ||||
|     column_names = [x.strip() for x in column_names] | ||||
|     column_names = [x.split(' ')[0] for x in column_names] | ||||
|     column_names = [c for c in column_names if c.lower() != 'foreign'] | ||||
|     return column_names | ||||
| 
 | ||||
| def _reverse_index(columns): | ||||
|     ''' | ||||
|     A dictionary where the key is the item and the value is the index. | ||||
|     Used to convert a stringy name into the correct number to then index into | ||||
|     an sql row. | ||||
|     Given an iterable, return a dictionary where the key is the item and the | ||||
|     value is the index. Used to convert a stringy name into the correct number | ||||
|     to then index into an sql row. | ||||
|     ['test', 'toast'] -> {'test': 0, 'toast': 1} | ||||
|     ''' | ||||
|     return {column: index for (index, column) in enumerate(columns)} | ||||
| 
 | ||||
| SQL_COLUMNS = { | ||||
|     _extract_table_name(table): _extract_columns(table) | ||||
|     for table in _extract_table_statements(DB_INIT) | ||||
| } | ||||
| SQL_INDEX = {table: _reverse_index(columns) for (table, columns) in SQL_COLUMNS.items()} | ||||
| SQL_COLUMNS = {} | ||||
| for table_statement in _extract_table_statements(DB_INIT): | ||||
|     table_name = _extract_table_name(table_statement) | ||||
|     columns = _extract_columns_from_table(table_statement) | ||||
|     SQL_COLUMNS[table_name] = columns | ||||
| 
 | ||||
| SQL_INDEX = {table: _reverse_index(columns) for (table, columns) in SQL_COLUMNS.items()} | ||||
| 
 | ||||
| ALLOWED_ORDERBY_COLUMNS = [ | ||||
|     'extension', | ||||
|  | @ -236,8 +235,8 @@ ALLOWED_ORDERBY_COLUMNS = [ | |||
|     'random', | ||||
| ] | ||||
| 
 | ||||
| # Errors and warnings ############################################################################## | ||||
| 
 | ||||
| # Errors and warnings | ||||
| WARNING_MINMAX_INVALID = 'Field "{field}": "{value}" is not a valid request. Ignored.' | ||||
| WARNING_ORDERBY_INVALID = 'Invalid orderby request "{request}". Ignored.' | ||||
| WARNING_ORDERBY_BADCOL = '"{column}" is not a sorting option. Ignored.' | ||||
|  | @ -245,7 +244,9 @@ WARNING_ORDERBY_BADDIRECTION = ''' | |||
| You can\'t order "{column}" by "{direction}". Defaulting to descending. | ||||
| ''' | ||||
| 
 | ||||
| # Operational info | ||||
| # Janitorial stuff ################################################################################# | ||||
| 
 | ||||
| FILENAME_BADCHARS = '\\/:*?<>|"' | ||||
| TRUTHYSTRING_TRUE = {s.lower() for s in ('1', 'true', 't', 'yes', 'y', 'on')} | ||||
| TRUTHYSTRING_NONE = {s.lower() for s in ('null', 'none')} | ||||
| 
 | ||||
|  | @ -269,6 +270,8 @@ ADDITIONAL_MIMETYPES = { | |||
|     'srt': 'text/plain', | ||||
| } | ||||
| 
 | ||||
| # Photodb ########################################################################################## | ||||
| 
 | ||||
| DEFAULT_DATADIR = '.\\_etiquette' | ||||
| DEFAULT_DBNAME = 'phototagger.db' | ||||
| DEFAULT_CONFIGNAME = 'config.json' | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue