Convert the checkout detail view to use the DetailView CBV. Update usage the DetailView CBV in the DocumentProperties view. Add checkout details view permission.

This commit is contained in:
Roberto Rosario
2016-03-09 23:27:02 -04:00
parent 6f02d96212
commit 45e90da219
7 changed files with 119 additions and 99 deletions
+46
View File
@@ -1,7 +1,11 @@
from __future__ import unicode_literals
from django import forms
from django.utils.translation import ugettext_lazy as _
from common.forms import DetailForm
from .literals import STATE_LABELS
from .models import DocumentCheckout
from .widgets import SplitTimeDeltaWidget
@@ -13,3 +17,45 @@ class DocumentCheckoutForm(forms.ModelForm):
widgets = {
'expiration_datetime': SplitTimeDeltaWidget()
}
class DocumentCheckoutDefailForm(DetailForm):
def __init__(self, *args, **kwargs):
instance = kwargs['instance']
extra_fields = (
{
'label': _('Document status'),
'field': lambda instance: STATE_LABELS[instance.checkout_state()]
},
)
if instance.is_checked_out():
checkout_info = instance.checkout_info()
extra_fields += (
{
'label': _('User'),
'field': lambda instance: checkout_info.user.get_full_name() or checkout_info.user
},
{
'label': _('Check out time'),
'field': lambda instance: checkout_info.checkout_datetime,
'widget': forms.widgets.DateTimeInput
},
{
'label': _('Check out expiration'),
'field': lambda instance: checkout_info.expiration_datetime,
'widget': forms.widgets.DateTimeInput
},
{
'label': _('New versions allowed?'),
'field': lambda instance: _('Yes') if not checkout_info.block_new_version else _('No')
},
)
kwargs['extra_fields'] = extra_fields
super(DocumentCheckoutDefailForm, self).__init__(*args, **kwargs)
class Meta:
fields = ()
model = DocumentCheckout