@@ -24,7 +24,7 @@ def handle(self, verbosity, *args, **options):
2424
2525 def forward (self ):
2626 site = Site .objects .get (id = settings .SITE_ID )
27- owner = FilerFolder .objects .filter (parent__isnull = True , owner__isnull = False ).first ().owner
27+ owner = FilerFolder .objects .filter (parent__isnull = True ).first ().owner
2828 try :
2929 realm = FinderRealmModel .objects .get (site = site , slug = admin_site .name )
3030 except FinderRealmModel .DoesNotExist :
@@ -35,16 +35,17 @@ def forward(self):
3535 self .migrate_folder (filer_folder , realm .root_folder )
3636
3737 def migrate_folder (self , filer_folder , finder_parent ):
38- finder_folder = finder_parent .listdir (name = filer_folder .name , is_folder = True ).first ()
39- if finder_folder is None :
38+ if finder_folder := finder_parent .listdir (name = filer_folder .name , is_folder = True ).first ():
39+ finder_folder = FinderFolder .objects .get (id = finder_folder ['id' ])
40+ else :
4041 finder_folder = FinderFolder .objects .create (
4142 name = filer_folder .name ,
4243 parent = finder_parent ,
4344 created_at = filer_folder .created_at ,
4445 last_modified_at = filer_folder .modified_at ,
4546 owner_id = filer_folder .owner_id ,
4647 )
47- self .stdout .write (f"Create folder { finder_folder } in { finder_parent } " )
48+ self .stdout .write (f"Create folder “ { finder_folder } ” in “ { finder_parent } ”. " )
4849
4950 allowed_image_types = ['image/gif' , 'image/jpeg' , 'image/png' , 'image/webp' , 'image/svg+xml' ]
5051 for filer_file in filer_folder .files .all ():
@@ -60,8 +61,11 @@ def migrate_file(self, filer_file, finder_parent):
6061 path = Path (filer_file .file .name )
6162 inode_id = path .parent .stem
6263 try :
63- finder_file = FinderFile .objects .get_inode (id = inode_id )
64+ finder_file = FinderFile .objects .get (id = inode_id )
6465 except FinderFile .DoesNotExist :
66+ if not filer_file ._file_size :
67+ self .stderr .write (f"File { filer_file } has no file size." )
68+ return
6569 FinderFile .objects .create (
6670 id = inode_id ,
6771 name = filer_file .name if filer_file .name else filer_file .original_filename ,
@@ -91,15 +95,19 @@ def migrate_image(self, filer_image, finder_parent):
9195 meta_data = {'alt_text' : getattr (filer_image , 'default_alt_text' , '' )}
9296 try :
9397 center_x , center_y = map (float , filer_image .subject_location .split (',' ))
94- # since Filer does not store the area of interest, we assume it is 10px
95- meta_data ['crop_x' ] = center_x - 5
96- meta_data ['crop_y' ] = center_y - 5
97- meta_data ['crop_size' ] = 10
98+ # since Filer does not store the area of interest, we assume it's 20% of its width or height
99+ crop_size = int (round (max (filer_image .width , filer_image .height ) * 0.2 ))
100+ meta_data ['crop_x' ] = center_x - crop_size / 2
101+ meta_data ['crop_y' ] = center_y - crop_size / 2
102+ meta_data ['crop_size' ] = crop_size
98103 except ValueError :
99104 pass
100105 try :
101- finder_image = FinderImage .objects .get_inode (id = inode_id )
102- except FinderFile .DoesNotExist :
106+ finder_image = FinderImage .objects .get (id = inode_id )
107+ except FinderImage .DoesNotExist :
108+ if not filer_image ._file_size :
109+ self .stderr .write (f"Image { filer_image } has no file size." )
110+ return
103111 FinderImage .objects .create (
104112 id = inode_id ,
105113 name = filer_image .name if filer_image .name else filer_image .original_filename ,
0 commit comments