Move stub filtering to the Document model manager
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
* Add dashboard app.
|
||||
* Remove queryset slicing hack from the Document list view.
|
||||
And slice the Recently Added Document queryset itself.
|
||||
* Move stub filtering to the Document model manager.
|
||||
|
||||
3.1.11 (2019-04-XX)
|
||||
===================
|
||||
|
||||
@@ -69,6 +69,7 @@ Other changes
|
||||
* Add dashboard app.
|
||||
* Remove queryset slicing hack from the Document list view.
|
||||
And slice the Recently Added Document queryset itself.
|
||||
* Move stub filtering to the Document model manager.
|
||||
|
||||
|
||||
Removals
|
||||
|
||||
@@ -55,7 +55,7 @@ class DashboardWidgetDocumentsTotal(DashboardWidgetNumeric):
|
||||
)
|
||||
self.count = AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_view, user=request.user,
|
||||
queryset=Document.objects.filter(is_stub=False)
|
||||
queryset=Document.objects.all()
|
||||
).count()
|
||||
return super(DashboardWidgetDocumentsTotal, self).render(request)
|
||||
|
||||
|
||||
@@ -17,17 +17,13 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DocumentManager(models.Manager):
|
||||
def delete_stubs(self):
|
||||
for stale_stub_document in self.filter(is_stub=True, date_added__lt=now() - timedelta(seconds=STUB_EXPIRATION_INTERVAL)):
|
||||
stale_stub_document.delete(trash=False)
|
||||
|
||||
def get_by_natural_key(self, uuid):
|
||||
return self.model.passthrough.get(uuid=force_text(uuid))
|
||||
|
||||
def get_queryset(self):
|
||||
return TrashCanQuerySet(
|
||||
self.model, using=self._db
|
||||
).filter(in_trash=False)
|
||||
).filter(in_trash=False).filter(is_stub=False)
|
||||
|
||||
def invalidate_cache(self):
|
||||
for document in self.model.objects.all():
|
||||
@@ -237,7 +233,9 @@ class FavoriteDocumentManager(models.Manager):
|
||||
|
||||
|
||||
class PassthroughManager(models.Manager):
|
||||
pass
|
||||
def delete_stubs(self):
|
||||
for stale_stub_document in self.filter(is_stub=True, date_added__lt=now() - timedelta(seconds=STUB_EXPIRATION_INTERVAL)):
|
||||
stale_stub_document.delete(to_trash=False)
|
||||
|
||||
|
||||
class RecentDocumentManager(models.Manager):
|
||||
|
||||
@@ -71,7 +71,7 @@ def task_delete_stubs():
|
||||
)
|
||||
|
||||
logger.info('Executing')
|
||||
Document.objects.delete_stubs()
|
||||
Document.passthrough.delete_stubs()
|
||||
logger.info('Finshed')
|
||||
|
||||
|
||||
|
||||
@@ -258,18 +258,18 @@ class DocumentManagerTestCase(BaseTestCase):
|
||||
document_type=self.document_type
|
||||
)
|
||||
|
||||
Document.objects.delete_stubs()
|
||||
Document.passthrough.delete_stubs()
|
||||
|
||||
self.assertEqual(Document.objects.count(), 1)
|
||||
self.assertEqual(Document.passthrough.count(), 1)
|
||||
|
||||
document_stub.date_added = document_stub.date_added - timedelta(
|
||||
seconds=STUB_EXPIRATION_INTERVAL + 1
|
||||
)
|
||||
document_stub.save()
|
||||
|
||||
Document.objects.delete_stubs()
|
||||
Document.passthrough.delete_stubs()
|
||||
|
||||
self.assertEqual(Document.objects.count(), 0)
|
||||
self.assertEqual(Document.passthrough.count(), 0)
|
||||
|
||||
|
||||
class DuplicatedDocumentsTestCase(GenericDocumentTestCase):
|
||||
|
||||
@@ -102,7 +102,7 @@ class DocumentListView(SingleObjectListView):
|
||||
}
|
||||
|
||||
def get_object_list(self):
|
||||
return self.get_document_queryset().filter(is_stub=False)
|
||||
return self.get_document_queryset()
|
||||
|
||||
|
||||
class DocumentDocumentTypeEditView(MultipleObjectFormActionView):
|
||||
@@ -203,7 +203,7 @@ class DocumentDownloadFormView(FormView):
|
||||
|
||||
return self.model.objects.filter(
|
||||
pk__in=id_list.split(',')
|
||||
).filter(is_stub=False)
|
||||
)
|
||||
|
||||
def get_extra_context(self):
|
||||
subtemplates_list = [
|
||||
|
||||
@@ -80,9 +80,7 @@ class IndexFilesystem(Operations):
|
||||
if access_only:
|
||||
return True
|
||||
else:
|
||||
return Document.objects.get(
|
||||
is_stub=False, pk=document_pk
|
||||
)
|
||||
return Document.objects.get(pk=document_pk)
|
||||
|
||||
for count, part in enumerate(parts[1:]):
|
||||
try:
|
||||
@@ -95,9 +93,7 @@ class IndexFilesystem(Operations):
|
||||
else:
|
||||
try:
|
||||
if node.index_template_node.link_documents:
|
||||
document = node.documents.get(
|
||||
is_stub=False, label=part
|
||||
)
|
||||
document = node.documents.get(label=part)
|
||||
logger.debug(
|
||||
'path %s is a valid file path', path
|
||||
)
|
||||
@@ -207,7 +203,7 @@ class IndexFilesystem(Operations):
|
||||
|
||||
# Documents
|
||||
if node.index_template_node.link_documents:
|
||||
queryset = node.documents.filter(is_stub=False).values('label').exclude(
|
||||
queryset = node.documents.values('label').exclude(
|
||||
label__contains='/'
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user