Change the way new document version are blocked, moving the logic to the documents app from the checkouts app signal handler. Disable the upload new document version button and have the new version upload view redirect to the document version list with a message. GitLab issue #231.

This commit is contained in:
Roberto Rosario
2015-10-23 06:06:59 -04:00
parent 414c55f824
commit da4c41c5b2
16 changed files with 395 additions and 141 deletions
+45 -34
View File
@@ -13,29 +13,22 @@ from .settings import setting_recent_count
logger = logging.getLogger(__name__)
class RecentDocumentManager(models.Manager):
def add_document_for_user(self, user, document):
if user.is_authenticated():
new_recent, created = self.model.objects.get_or_create(
user=user, document=document
)
if not created:
# document already in the recent list, just save to force
# accessed date and time update
new_recent.save()
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)
recent_to_delete = self.filter(user=user).values_list('pk', flat=True)[setting_recent_count.value:]
self.filter(pk__in=list(recent_to_delete)).delete()
def get_by_natural_key(self, uuid):
return self.get(uuid=uuid)
def get_for_user(self, user):
document_model = apps.get_model('documents', 'document')
def get_queryset(self):
return TrashCanQuerySet(
self.model, using=self._db
).filter(in_trash=False)
if user.is_authenticated():
return document_model.objects.filter(
recentdocument__user=user
).order_by('-recentdocument__datetime_accessed')
else:
return document_model.objects.none()
def invalidate_cache(self):
for document in self.model.objects.all():
document.invalidate_cache()
class DocumentTypeManager(models.Manager):
@@ -105,28 +98,46 @@ class DocumentTypeManager(models.Manager):
return self.get(label=label)
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)
class NewVersionBlockManager(models.Manager):
def block(self, document):
self.get_or_create(document=document)
def get_by_natural_key(self, uuid):
return self.get(uuid=uuid)
def unblock(self, document):
self.filter(document=document).delete()
def get_queryset(self):
return TrashCanQuerySet(
self.model, using=self._db
).filter(in_trash=False)
def invalidate_cache(self):
for document in self.model.objects.all():
document.invalidate_cache()
def is_blocked(self, document):
return self.filter(document=document).exists()
class PassthroughManager(models.Manager):
pass
class RecentDocumentManager(models.Manager):
def add_document_for_user(self, user, document):
if user.is_authenticated():
new_recent, created = self.model.objects.get_or_create(
user=user, document=document
)
if not created:
# document already in the recent list, just save to force
# accessed date and time update
new_recent.save()
recent_to_delete = self.filter(user=user).values_list('pk', flat=True)[setting_recent_count.value:]
self.filter(pk__in=list(recent_to_delete)).delete()
def get_for_user(self, user):
document_model = apps.get_model('documents', 'document')
if user.is_authenticated():
return document_model.objects.filter(
recentdocument__user=user
).order_by('-recentdocument__datetime_accessed')
else:
return document_model.objects.none()
class TrashCanManager(models.Manager):
def get_queryset(self):
return super(