Skip to content

Commit cfc913a

Browse files
committed
adopt finder_to_filer for modified inode models
1 parent 6789780 commit cfc913a

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

filer/models/foldermodels.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,10 @@ class Folder(models.Model, mixins.IconsMixin):
9797
related_name='children',
9898
on_delete=models.CASCADE,
9999
)
100-
101100
name = models.CharField(
102101
_('name'),
103102
max_length=255,
104103
)
105-
106104
owner = models.ForeignKey(
107105
getattr(settings, 'AUTH_USER_MODEL', 'auth.User'),
108106
verbose_name=_('owner'),
@@ -111,17 +109,14 @@ class Folder(models.Model, mixins.IconsMixin):
111109
null=True,
112110
blank=True,
113111
)
114-
115112
uploaded_at = models.DateTimeField(
116113
_('uploaded at'),
117114
auto_now_add=True,
118115
)
119-
120116
created_at = models.DateTimeField(
121117
_('created at'),
122118
auto_now_add=True,
123119
)
124-
125120
modified_at = models.DateTimeField(
126121
_('modified at'),
127122
auto_now=True,

finder/management/commands/filer_to_finder.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
from pathlib import Path
22

3-
from django.contrib.admin import site
3+
from django.contrib.admin import site as admin_site
4+
from django.contrib.sites.models import Site
45
from django.core.management.base import BaseCommand
6+
from easy_thumbnails.conf import settings
57

68
from filer.models.filemodels import Folder as FilerFolder
79
from filer.models.imagemodels import Image as FilerImage
810

11+
from finder.contrib.image.models import ImageFileModel as FinderImage
912
from finder.models.file import FileModel as FinderFile
1013
from finder.models.folder import FolderModel as FinderFolder
11-
from finder.contrib.image.models import ImageFileModel as FinderImage
14+
from finder.models.realm import RealmModel as FinderRealmModel
1215

1316

1417
class Command(BaseCommand):
@@ -20,13 +23,20 @@ def handle(self, verbosity, *args, **options):
2023
self.forward()
2124

2225
def forward(self):
26+
site = Site.objects.get(id=settings.SITE_ID)
27+
owner = FilerFolder.objects.filter(parent__isnull=True, owner__isnull=False).first().owner
28+
try:
29+
realm = FinderRealmModel.objects.get(site=site, slug=admin_site.name)
30+
except FinderRealmModel.DoesNotExist:
31+
root_folder = FinderFolder.objects.create(name='__root__', owner=owner)
32+
realm = FinderRealmModel.objects.create(site=site, slug=admin_site.name, root_folder=root_folder)
33+
2334
for filer_folder in FilerFolder.objects.filter(parent__isnull=True):
24-
self.migrate_folder(filer_folder, FinderFolder.objects.get_root_folder(site))
35+
self.migrate_folder(filer_folder, FinderFolder.objects.get_root_folder(realm))
2536

2637
def migrate_folder(self, filer_folder, finder_parent):
27-
try:
28-
finder_folder = next(finder_parent.listdir(name=filer_folder.name, is_folder=True))
29-
except StopIteration:
38+
finder_folder = finder_parent.listdir(name=filer_folder.name, is_folder=True).first()
39+
if finder_folder is None:
3040
finder_folder = FinderFolder.objects.create(
3141
name=filer_folder.name,
3242
parent=finder_parent,
@@ -50,8 +60,8 @@ def migrate_file(self, filer_file, finder_parent):
5060
path = Path(filer_file.file.name)
5161
inode_id = path.parent.stem
5262
try:
53-
finder_file = next(FinderFile.objects.filter_inodes(id=inode_id))
54-
except StopIteration:
63+
finder_file = FinderFile.objects.get_inode(id=inode_id)
64+
except FinderFile.DoesNotExist:
5565
FinderFile.objects.create(
5666
id=inode_id,
5767
name=filer_file.name if filer_file.name else filer_file.original_filename,
@@ -88,8 +98,8 @@ def migrate_image(self, filer_image, finder_parent):
8898
except ValueError:
8999
pass
90100
try:
91-
finder_image = next(FinderImage.objects.filter_inodes(id=inode_id))
92-
except StopIteration:
101+
finder_image = FinderImage.objects.get_inode(id=inode_id)
102+
except FinderFile.DoesNotExist:
93103
FinderImage.objects.create(
94104
id=inode_id,
95105
name=filer_image.name if filer_image.name else filer_image.original_filename,
@@ -106,7 +116,7 @@ def migrate_image(self, filer_image, finder_parent):
106116
meta_data=meta_data,
107117
)
108118
else:
109-
if True or filer_image.modified_at > finder_image.last_modified_at:
119+
if filer_image.modified_at > finder_image.last_modified_at:
110120
finder_image.name = filer_image.name if filer_image.name else filer_image.original_filename
111121
finder_image.file_name = path.name
112122
finder_image.last_modified_at = filer_image.modified_at

finder/models/inode.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,12 @@ def get_inode(self, **lookup):
135135
folder_qs = FolderModel.objects.none()
136136
elif (folder_qs := FolderModel.objects.filter(**lookup)).exists():
137137
return folder_qs.get()
138-
values = folder_qs.values('id', mime_type=Value(None, output_field=models.CharField())).union(*[
139-
model.objects.values('id', 'mime_type').filter(**lookup) for model in FileModel.get_models()
140-
]).get()
138+
try:
139+
values = folder_qs.values('id', mime_type=Value(None, output_field=models.CharField())).union(*[
140+
model.objects.values('id', 'mime_type').filter(**lookup) for model in FileModel.get_models()
141+
]).get()
142+
except FolderModel.DoesNotExist as exc:
143+
raise FileModel.DoesNotExist(exc)
141144
return FileModel.objects.get_model_for(values['mime_type']).objects.get(id=values['id'])
142145

143146
@classmethod

0 commit comments

Comments
 (0)