Skip to content

Commit b1dfb6a

Browse files
committed
adopt management command filer_to_finder to changed interface
1 parent c5aa02c commit b1dfb6a

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

finder/management/commands/filer_to_finder.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

finder/management/commands/finder.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ def handle(self, verbosity, subcommand, *args, **options):
2020
self.reorganize()
2121
elif subcmd == 'reorder':
2222
self.reorder()
23-
elif subcmd == 'migrate-filer':
24-
call_command('filer_to_finder', verbosity=verbosity)
2523
else:
2624
self.stderr.write(f"Unknown subcommand ‘{subcmd}’")
2725

0 commit comments

Comments
 (0)