Give each object class a table and centralize db_row normer.
				
					
				
			This commit is contained in:
		
							parent
							
								
									fa97dd5d3c
								
							
						
					
					
						commit
						ebde5c7ee8
					
				
					 1 changed files with 21 additions and 11 deletions
				
			
		|  | @ -18,6 +18,12 @@ from . import exceptions | |||
| from . import helpers | ||||
| 
 | ||||
| 
 | ||||
| def normalize_db_row(db_row, table): | ||||
|     if isinstance(db_row, (list, tuple)): | ||||
|         db_row = dict(zip(constants.SQL_COLUMNS[table], db_row)) | ||||
|     return db_row | ||||
| 
 | ||||
| 
 | ||||
| class ObjectBase: | ||||
|     def __init__(self, photodb): | ||||
|         super().__init__() | ||||
|  | @ -228,13 +234,13 @@ class GroupableMixin: | |||
| 
 | ||||
| 
 | ||||
| class Album(ObjectBase, GroupableMixin): | ||||
|     table = 'albums' | ||||
|     group_table = 'album_group_rel' | ||||
|     group_sql_index = constants.SQL_INDEX[group_table] | ||||
| 
 | ||||
|     def __init__(self, photodb, db_row): | ||||
|         super().__init__(photodb) | ||||
|         if isinstance(db_row, (list, tuple)): | ||||
|             db_row = dict(zip(constants.SQL_COLUMNS['albums'], db_row)) | ||||
|         db_row = normalize_db_row(db_row, self.table) | ||||
| 
 | ||||
|         self.id = db_row['id'] | ||||
|         self.title = self.normalize_title(db_row['title']) | ||||
|  | @ -549,10 +555,11 @@ class Album(ObjectBase, GroupableMixin): | |||
| 
 | ||||
| 
 | ||||
| class Bookmark(ObjectBase): | ||||
|     table = 'bookmarks' | ||||
| 
 | ||||
|     def __init__(self, photodb, db_row): | ||||
|         super().__init__(photodb) | ||||
|         if isinstance(db_row, (list, tuple)): | ||||
|             db_row = dict(zip(constants.SQL_COLUMNS['bookmarks'], db_row)) | ||||
|         db_row = normalize_db_row(db_row, self.table) | ||||
| 
 | ||||
|         self.id = db_row['id'] | ||||
|         self.title = self.normalize_title(db_row['title']) | ||||
|  | @ -634,10 +641,11 @@ class Photo(ObjectBase): | |||
|     Photo objects cannot exist without a corresponding PhotoDB object, because | ||||
|     Photos are not the actual image data, just the database entry. | ||||
|     ''' | ||||
|     table = 'photos' | ||||
| 
 | ||||
|     def __init__(self, photodb, db_row): | ||||
|         super().__init__(photodb) | ||||
|         if isinstance(db_row, (list, tuple)): | ||||
|             db_row = dict(zip(constants.SQL_COLUMNS['photos'], db_row)) | ||||
|         db_row = normalize_db_row(db_row, self.table) | ||||
| 
 | ||||
|         self.real_path = db_row['filepath'] | ||||
|         self.real_path = helpers.remove_path_badchars(self.real_path, allowed=':\\/') | ||||
|  | @ -1127,15 +1135,15 @@ class Tag(ObjectBase, GroupableMixin): | |||
|     ''' | ||||
|     A Tag, which can be applied to Photos for organization. | ||||
|     ''' | ||||
|     table = 'tags' | ||||
|     group_table = 'tag_group_rel' | ||||
|     group_sql_index = constants.SQL_INDEX[group_table] | ||||
| 
 | ||||
|     def __init__(self, photodb, db_row): | ||||
|         super().__init__(photodb) | ||||
|         if isinstance(db_row, (list, tuple)): | ||||
|             db_row = dict(zip(constants.SQL_COLUMNS['tags'], db_row)) | ||||
|         self.id = db_row['id'] | ||||
|         db_row = normalize_db_row(db_row, self.table) | ||||
| 
 | ||||
|         self.id = db_row['id'] | ||||
|         # Do not pass the name through the normalizer. It may be grandfathered | ||||
|         # from previous character / length rules. | ||||
|         self.name = db_row['name'] | ||||
|  | @ -1407,10 +1415,12 @@ class User(ObjectBase): | |||
|     ''' | ||||
|     A dear friend of ours. | ||||
|     ''' | ||||
|     table = 'users' | ||||
| 
 | ||||
|     def __init__(self, photodb, db_row): | ||||
|         super().__init__(photodb) | ||||
|         if isinstance(db_row, (list, tuple)): | ||||
|             db_row = dict(zip(constants.SQL_COLUMNS['users'], db_row)) | ||||
|         db_row = normalize_db_row(db_row, self.table) | ||||
| 
 | ||||
|         self.id = db_row['id'] | ||||
|         self.username = db_row['username'] | ||||
|         self.created = db_row['created'] | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue