Add keyword arguments to checkouts app
Add keyword arguments to calls and view parameters. Add missing icons. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -14,7 +14,7 @@ from .permissions import permission_document_checkout_detail_view
|
||||
class DashboardWidgetTotalCheckouts(DashboardWidgetNumeric):
|
||||
icon_class = icon_dashboard_checkouts
|
||||
label = _('Checkedout documents')
|
||||
link = reverse_lazy('checkouts:checkout_list')
|
||||
link = reverse_lazy(viewname='checkouts:checkout_list')
|
||||
|
||||
def render(self, request):
|
||||
AccessControlList = apps.get_model(
|
||||
@@ -25,12 +25,14 @@ class DashboardWidgetTotalCheckouts(DashboardWidgetNumeric):
|
||||
)
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_checkout_detail_view,
|
||||
queryset=DocumentCheckout.objects.checked_out_documents(),
|
||||
user=request.user,
|
||||
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||
)
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_view, user=request.user,
|
||||
queryset=queryset
|
||||
permission=permission_document_view, queryset=queryset,
|
||||
user=request.user
|
||||
)
|
||||
self.count = queryset.count()
|
||||
return super(DashboardWidgetTotalCheckouts, self).render(request)
|
||||
return super(DashboardWidgetTotalCheckouts, self).render(
|
||||
request=request
|
||||
)
|
||||
|
||||
@@ -4,19 +4,19 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.events import EventTypeNamespace
|
||||
|
||||
namespace = EventTypeNamespace(name='checkouts', label=_('Checkouts'))
|
||||
namespace = EventTypeNamespace(label=_('Checkouts'), name='checkouts')
|
||||
|
||||
event_document_auto_check_in = namespace.add_event_type(
|
||||
name='document_auto_check_in',
|
||||
label=_('Document automatically checked in')
|
||||
label=_('Document automatically checked in'),
|
||||
name='document_auto_check_in'
|
||||
)
|
||||
event_document_check_in = namespace.add_event_type(
|
||||
name='document_check_in', label=_('Document checked in')
|
||||
label=_('Document checked in'), name='document_check_in'
|
||||
)
|
||||
event_document_check_out = namespace.add_event_type(
|
||||
name='document_check_out', label=_('Document checked out')
|
||||
label=_('Document checked out'), name='document_check_out'
|
||||
)
|
||||
event_document_forceful_check_in = namespace.add_event_type(
|
||||
name='document_forceful_check_in',
|
||||
label=_('Document forcefully checked in')
|
||||
label=_('Document forcefully checked in'),
|
||||
name='document_forceful_check_in'
|
||||
)
|
||||
|
||||
@@ -13,6 +13,6 @@ def handler_check_new_version_creation(sender, instance, **kwargs):
|
||||
app_label='checkouts', model_name='NewVersionBlock'
|
||||
)
|
||||
|
||||
if NewVersionBlock.objects.is_blocked(instance.document) and not instance.pk:
|
||||
if NewVersionBlock.objects.is_blocked(document=instance.document) and not instance.pk:
|
||||
# Block only new versions (no pk), not existing version being updated.
|
||||
raise NewDocumentVersionNotAllowed
|
||||
|
||||
@@ -2,6 +2,14 @@ from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from mayan.apps.appearance.classes import Icon
|
||||
|
||||
icon_checkin_document = Icon(
|
||||
driver_name='fontawesome-dual', primary_symbol='shopping-cart',
|
||||
secondary_symbol='minus'
|
||||
)
|
||||
icon_checkout_document = Icon(
|
||||
driver_name='fontawesome-dual', primary_symbol='shopping-cart',
|
||||
secondary_symbol='plus'
|
||||
)
|
||||
icon_checkout_info = Icon(driver_name='fontawesome', symbol='shopping-cart')
|
||||
icon_dashboard_checkouts = Icon(
|
||||
driver_name='fontawesome', symbol='shopping-cart'
|
||||
|
||||
@@ -4,7 +4,9 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.navigation import Link
|
||||
|
||||
from .icons import icon_checkout_info
|
||||
from .icons import (
|
||||
icon_checkin_document, icon_checkout_document, icon_checkout_info
|
||||
)
|
||||
from .permissions import (
|
||||
permission_document_checkin, permission_document_checkin_override,
|
||||
permission_document_checkout
|
||||
@@ -33,11 +35,13 @@ link_checkout_list = Link(
|
||||
)
|
||||
link_checkout_document = Link(
|
||||
args='object.pk', condition=is_not_checked_out,
|
||||
permissions=(permission_document_checkout,),
|
||||
text=_('Check out document'), view='checkouts:checkout_document',
|
||||
icon_class=icon_checkout_document,
|
||||
permissions=(permission_document_checkout,), text=_('Check out document'),
|
||||
view='checkouts:checkout_document',
|
||||
)
|
||||
link_checkin_document = Link(
|
||||
args='object.pk', condition=is_checked_out, permissions=(
|
||||
args='object.pk', condition=is_checked_out,
|
||||
icon_class=icon_checkin_document, permissions=(
|
||||
permission_document_checkin, permission_document_checkin_override
|
||||
), text=_('Check in document'), view='checkouts:checkin_document',
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ logger = logging.getLogger(__name__)
|
||||
class DocumentCheckoutManager(models.Manager):
|
||||
def are_document_new_versions_allowed(self, document, user=None):
|
||||
try:
|
||||
checkout_info = self.document_checkout_info(document)
|
||||
checkout_info = self.document_checkout_info(document=document)
|
||||
except DocumentNotCheckedOut:
|
||||
return True
|
||||
else:
|
||||
@@ -34,7 +34,7 @@ class DocumentCheckoutManager(models.Manager):
|
||||
raise DocumentNotCheckedOut
|
||||
else:
|
||||
if user:
|
||||
if self.get_document_checkout_info(document).user != user:
|
||||
if self.get_document_checkout_info(document=document).user != user:
|
||||
event_document_forceful_check_in.commit(
|
||||
actor=user, target=document
|
||||
)
|
||||
@@ -51,8 +51,8 @@ class DocumentCheckoutManager(models.Manager):
|
||||
|
||||
def checkout_document(self, document, expiration_datetime, user, block_new_version=True):
|
||||
return self.create(
|
||||
document=document, expiration_datetime=expiration_datetime,
|
||||
user=user, block_new_version=block_new_version
|
||||
block_new_version=block_new_version, document=document,
|
||||
expiration_datetime=expiration_datetime, user=user
|
||||
)
|
||||
|
||||
def checked_out_documents(self):
|
||||
@@ -80,7 +80,7 @@ class DocumentCheckoutManager(models.Manager):
|
||||
raise DocumentNotCheckedOut
|
||||
|
||||
def get_document_checkout_state(self, document):
|
||||
if self.is_document_checked_out(document):
|
||||
if self.is_document_checked_out(document=document):
|
||||
return STATE_CHECKED_OUT
|
||||
else:
|
||||
return STATE_CHECKED_IN
|
||||
|
||||
@@ -73,7 +73,9 @@ class DocumentCheckout(models.Model):
|
||||
super(DocumentCheckout, self).delete(*args, **kwargs)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('checkout:checkout_info', args=(self.document.pk,))
|
||||
return reverse(
|
||||
viewname='checkout:checkout_info', kwargs={'pk': self.document.pk}
|
||||
)
|
||||
|
||||
def natural_key(self):
|
||||
return self.document.natural_key()
|
||||
|
||||
@@ -7,14 +7,14 @@ from mayan.apps.permissions import PermissionNamespace
|
||||
namespace = PermissionNamespace(label=_('Document checkout'), name='checkouts')
|
||||
|
||||
permission_document_checkin = namespace.add_permission(
|
||||
name='checkin_document', label=_('Check in documents')
|
||||
label=_('Check in documents'), name='checkin_document'
|
||||
)
|
||||
permission_document_checkin_override = namespace.add_permission(
|
||||
name='checkin_document_override', label=_('Forcefully check in documents')
|
||||
label=_('Forcefully check in documents'), name='checkin_document_override'
|
||||
)
|
||||
permission_document_checkout = namespace.add_permission(
|
||||
name='checkout_document', label=_('Check out documents')
|
||||
label=_('Check out documents'), name='checkout_document'
|
||||
)
|
||||
permission_document_checkout_detail_view = namespace.add_permission(
|
||||
name='checkout_detail_view', label=_('Check out details view')
|
||||
label=_('Check out details view'), name='checkout_detail_view'
|
||||
)
|
||||
|
||||
@@ -5,9 +5,9 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from mayan.apps.task_manager.classes import CeleryQueue
|
||||
|
||||
queue_checkouts_periodic = CeleryQueue(
|
||||
name='checkouts_periodic', label=_('Checkouts periodic'), transient=True
|
||||
label=_('Checkouts periodic'), name='checkouts_periodic', transient=True
|
||||
)
|
||||
queue_checkouts_periodic.add_task_type(
|
||||
name='mayan.apps.task_check_expired_check_outs',
|
||||
label=_('Check expired checkouts')
|
||||
label=_('Check expired checkouts'),
|
||||
name='mayan.apps.task_check_expired_check_outs'
|
||||
)
|
||||
|
||||
@@ -43,7 +43,7 @@ class NewDocumentCheckoutSerializer(serializers.ModelSerializer):
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_checkout,
|
||||
user=self.context['request'].user, obj=document
|
||||
obj=document, user=self.context['request'].user
|
||||
)
|
||||
|
||||
validated_data['document'] = document
|
||||
|
||||
@@ -25,7 +25,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def _request_checkedout_document_view(self):
|
||||
return self.get(
|
||||
viewname='rest_api:checkedout-document-view',
|
||||
args=(self.checkout.pk,)
|
||||
kwargs={'document_pk': self.checkout.pk}
|
||||
)
|
||||
|
||||
def _checkout_document(self):
|
||||
@@ -44,7 +44,8 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkedout_document_view_with_checkout_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_checkout_detail_view, obj=self.document
|
||||
obj=self.document,
|
||||
permission=permission_document_checkout_detail_view
|
||||
)
|
||||
response = self._request_checkedout_document_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
@@ -52,7 +53,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkedout_document_view_with_document_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_view, obj=self.document
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
response = self._request_checkedout_document_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
@@ -60,14 +61,17 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkedout_document_view_with_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_view, obj=self.document
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
self.grant_access(
|
||||
permission=permission_document_checkout_detail_view, obj=self.document
|
||||
obj=self.document,
|
||||
permission=permission_document_checkout_detail_view
|
||||
)
|
||||
response = self._request_checkedout_document_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data['document']['uuid'], force_text(self.document.uuid))
|
||||
self.assertEqual(
|
||||
response.data['document']['uuid'], force_text(self.document.uuid)
|
||||
)
|
||||
|
||||
def _request_document_checkout_view(self):
|
||||
return self.post(
|
||||
@@ -83,7 +87,9 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
self.assertEqual(DocumentCheckout.objects.count(), 0)
|
||||
|
||||
def test_document_checkout_with_access(self):
|
||||
self.grant_access(permission=permission_document_checkout, obj=self.document)
|
||||
self.grant_access(
|
||||
obj=self.document, permission=permission_document_checkout
|
||||
)
|
||||
response = self._request_document_checkout_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
self.assertEqual(
|
||||
@@ -102,7 +108,7 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkout_list_view_with_document_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_view, obj=self.document
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
response = self._request_checkout_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
@@ -111,7 +117,8 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkout_list_view_with_checkout_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_checkout_detail_view, obj=self.document
|
||||
obj=self.document,
|
||||
permission=permission_document_checkout_detail_view
|
||||
)
|
||||
response = self._request_checkout_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
@@ -120,10 +127,11 @@ class CheckoutsAPITestCase(DocumentTestMixin, BaseAPITestCase):
|
||||
def test_checkout_list_view_with_access(self):
|
||||
self._checkout_document()
|
||||
self.grant_access(
|
||||
permission=permission_document_view, obj=self.document
|
||||
obj=self.document, permission=permission_document_view
|
||||
)
|
||||
self.grant_access(
|
||||
permission=permission_document_checkout_detail_view, obj=self.document
|
||||
obj=self.document,
|
||||
permission=permission_document_checkout_detail_view
|
||||
)
|
||||
response = self._request_checkout_list_view()
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
@@ -23,7 +23,8 @@ from ..permissions import (
|
||||
class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
def _request_document_check_in_view(self):
|
||||
return self.post(
|
||||
viewname='checkouts:checkin_document', args=(self.document.pk,),
|
||||
viewname='checkouts:checkin_document',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
def test_checkin_document_view_no_permission(self):
|
||||
@@ -72,7 +73,8 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def _request_document_checkout_view(self):
|
||||
return self.post(
|
||||
viewname='checkouts:checkout_document', args=(self.document.pk,),
|
||||
viewname='checkouts:checkout_document',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
data={
|
||||
'expiration_datetime_0': 2,
|
||||
'expiration_datetime_1': TIME_DELTA_UNIT_DAYS,
|
||||
@@ -125,7 +127,8 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
self.assertTrue(self.document.is_checked_out())
|
||||
|
||||
response = self.post(
|
||||
'sources:upload_version', args=(self.document.pk,),
|
||||
viewname='sources:upload_version',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
@@ -135,7 +138,8 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self.get(
|
||||
'documents:document_version_list', args=(self.document.pk,),
|
||||
viewname='documents:document_version_list',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
@@ -176,7 +180,9 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
response = self.post(
|
||||
'checkouts:checkin_document', args=(self.document.pk,), follow=True
|
||||
viewname='checkouts:checkin_document',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
self.assertContains(
|
||||
@@ -212,7 +218,9 @@ class DocumentCheckoutViewTestCase(GenericDocumentViewTestCase):
|
||||
permission_document_checkout_detail_view.stored_permission
|
||||
)
|
||||
response = self.post(
|
||||
'checkouts:checkin_document', args=(self.document.pk,), follow=True
|
||||
viewname='checkouts:checkin_document',
|
||||
kwargs={'document_pk': self.document.pk},
|
||||
follow=True
|
||||
)
|
||||
|
||||
self.assertContains(
|
||||
|
||||
@@ -9,28 +9,32 @@ from .views import (
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^list/$', CheckoutListView.as_view(), name='checkout_list'),
|
||||
url(
|
||||
r'^(?P<pk>\d+)/check/out/$', CheckoutDocumentView.as_view(),
|
||||
name='checkout_document'
|
||||
regex=r'^documents/$', name='checkout_list',
|
||||
view=CheckoutListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^(?P<pk>\d+)/check/in/$', DocumentCheckinView.as_view(),
|
||||
name='checkin_document'
|
||||
regex=r'^documents/(?P<document_pk>\d+)/check/out/$',
|
||||
name='checkout_document', view=CheckoutDocumentView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^(?P<pk>\d+)/check/info/$', CheckoutDetailView.as_view(),
|
||||
name='checkout_info'
|
||||
regex=r'^documents/(?P<document_pk>\d+)/check/in/$',
|
||||
name='checkin_document', view=DocumentCheckinView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^documents/(?P<document_pk>\d+)/check/info/$',
|
||||
name='checkout_info', view=CheckoutDetailView.as_view()
|
||||
),
|
||||
]
|
||||
|
||||
api_urls = [
|
||||
url(
|
||||
r'^checkouts/$', APICheckedoutDocumentListView.as_view(),
|
||||
name='checkout-document-list'
|
||||
regex=r'^checkouts/$', name='checkout-document-list',
|
||||
view=APICheckedoutDocumentListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^checkouts/(?P<pk>[0-9]+)/checkout_info/$', APICheckedoutDocumentView.as_view(),
|
||||
name='checkedout-document-view'
|
||||
regex=r'^checkouts/(?P<document_pk>[0-9]+)/checkout_info/$',
|
||||
name='checkedout-document-view',
|
||||
view=APICheckedoutDocumentView.as_view()
|
||||
),
|
||||
]
|
||||
|
||||
@@ -28,11 +28,13 @@ class CheckoutDocumentView(SingleObjectCreateView):
|
||||
form_class = DocumentCheckoutForm
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.document = get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
self.document = get_object_or_404(
|
||||
klass=Document, pk=self.kwargs['document_pk']
|
||||
)
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_checkout, user=request.user,
|
||||
obj=self.document
|
||||
obj=self.document, permissions=permission_document_checkout,
|
||||
user=request.user
|
||||
)
|
||||
|
||||
return super(
|
||||
@@ -46,19 +48,24 @@ class CheckoutDocumentView(SingleObjectCreateView):
|
||||
instance.document = self.document
|
||||
instance.save()
|
||||
except DocumentAlreadyCheckedOut:
|
||||
messages.error(self.request, _('Document already checked out.'))
|
||||
messages.error(
|
||||
request=self.request,
|
||||
message=_('Document already checked out.')
|
||||
)
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request,
|
||||
_('Error trying to check out document; %s') % exception
|
||||
request=self.request,
|
||||
message=_('Error trying to check out document; %s') % exception
|
||||
)
|
||||
else:
|
||||
messages.success(
|
||||
self.request,
|
||||
_('Document "%s" checked out successfully.') % self.document
|
||||
request=self.request,
|
||||
message=_(
|
||||
'Document "%s" checked out successfully.'
|
||||
) % self.document
|
||||
)
|
||||
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
return HttpResponseRedirect(redirect_to=self.get_success_url())
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
@@ -67,15 +74,18 @@ class CheckoutDocumentView(SingleObjectCreateView):
|
||||
}
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse('checkouts:checkout_info', args=(self.document.pk,))
|
||||
return reverse(
|
||||
viewname='checkouts:checkout_info',
|
||||
kwargs={'document_pk': self.document.pk}
|
||||
)
|
||||
|
||||
|
||||
class CheckoutListView(DocumentListView):
|
||||
def get_document_queryset(self):
|
||||
return AccessControlList.objects.filter_by_access(
|
||||
permission=permission_document_checkout_detail_view,
|
||||
user=self.request.user,
|
||||
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||
queryset=DocumentCheckout.objects.checked_out_documents(),
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
def get_extra_context(self):
|
||||
@@ -129,7 +139,7 @@ class CheckoutDetailView(SingleObjectDetailView):
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
|
||||
class DocumentCheckinView(ConfirmView):
|
||||
@@ -151,38 +161,43 @@ class DocumentCheckinView(ConfirmView):
|
||||
return context
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
|
||||
return get_object_or_404(klass=Document, pk=self.kwargs['document_pk'])
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse('checkouts:checkout_info', args=(self.get_object().pk,))
|
||||
return reverse(
|
||||
viewname='checkouts:checkout_info',
|
||||
kwargs={'document_pk': self.get_object().pk}
|
||||
)
|
||||
|
||||
def view_action(self):
|
||||
document = self.get_object()
|
||||
|
||||
if document.get_checkout_info().user == self.request.user:
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_checkin,
|
||||
user=self.request.user, obj=document
|
||||
obj=document, permissions=permission_document_checkin,
|
||||
user=self.request.user
|
||||
)
|
||||
else:
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_checkin_override,
|
||||
user=self.request.user, obj=document
|
||||
obj=document, permissions=permission_document_checkin_override,
|
||||
user=self.request.user
|
||||
)
|
||||
|
||||
try:
|
||||
document.check_in(user=self.request.user)
|
||||
except DocumentNotCheckedOut:
|
||||
messages.error(
|
||||
self.request, _('Document has not been checked out.')
|
||||
request=self.request, message=_(
|
||||
'Document has not been checked out.'
|
||||
)
|
||||
)
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
self.request,
|
||||
_('Error trying to check in document; %s') % exception
|
||||
request=self.request,
|
||||
message=_('Error trying to check in document; %s') % exception
|
||||
)
|
||||
else:
|
||||
messages.success(
|
||||
self.request,
|
||||
_('Document "%s" checked in successfully.') % document
|
||||
request=self.request,
|
||||
message=_('Document "%s" checked in successfully.') % document
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user