Add reservations parameters for the lease update form
Change-Id: I67ec602e25d02be38ae6673b0c3cb132d9729494 Closes-Bug: #1714119
This commit is contained in:
parent
1b1f50f470
commit
e43b1e9957
|
@ -236,6 +236,21 @@ class UpdateForm(forms.SelfHandlingForm):
|
|||
widget=forms.TextInput(
|
||||
attrs={'placeholder': _('Valid suffix are d/h/m (e.g. +1h)')}),
|
||||
required=False)
|
||||
reservations = forms.CharField(
|
||||
label=_("Reservation values to update"),
|
||||
help_text=_('Enter reservation values to update as JSON'),
|
||||
widget=forms.Textarea(
|
||||
attrs={'rows': 8,
|
||||
'placeholder':
|
||||
'e.g.\n'
|
||||
'[\n'
|
||||
' {\n'
|
||||
' "id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",\n'
|
||||
' "max": 3\n'
|
||||
' }\n'
|
||||
']'}),
|
||||
max_length=511,
|
||||
required=False)
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
super(UpdateForm, self).__init__(request, *args, **kwargs)
|
||||
|
@ -247,6 +262,7 @@ class UpdateForm(forms.SelfHandlingForm):
|
|||
# reservation gets to support update of the start/end_time.
|
||||
del self.fields['start_time']
|
||||
del self.fields['end_time']
|
||||
del self.fields['reservations']
|
||||
return
|
||||
|
||||
def handle(self, request, data):
|
||||
|
@ -271,6 +287,10 @@ class UpdateForm(forms.SelfHandlingForm):
|
|||
elif end_time[0] == '-':
|
||||
fields['reduce_by'] = end_time[1:]
|
||||
|
||||
reservations = data.get('reservations', None)
|
||||
if reservations:
|
||||
fields['reservations'] = reservations
|
||||
|
||||
try:
|
||||
api.client.lease_update(self.request, lease_id=lease_id, **fields)
|
||||
messages.success(request, _("Lease update started."))
|
||||
|
@ -287,6 +307,7 @@ class UpdateForm(forms.SelfHandlingForm):
|
|||
lease_name = cleaned_data.get("lease_name", None)
|
||||
start_time = cleaned_data.get("start_time", None)
|
||||
end_time = cleaned_data.get("end_time", None)
|
||||
reservations = cleaned_data.get("reservations", None)
|
||||
|
||||
if start_time:
|
||||
valid = re.match('^[+-]\d+[dhm]$', start_time)
|
||||
|
@ -302,5 +323,14 @@ class UpdateForm(forms.SelfHandlingForm):
|
|||
"a form of +/- number d/h/m. "
|
||||
"(e.g. +1h)")
|
||||
|
||||
if not (lease_name or start_time or end_time):
|
||||
if reservations:
|
||||
try:
|
||||
reservations = eval(reservations)
|
||||
cleaned_data['reservations'] = reservations
|
||||
except (SyntaxError, NameError):
|
||||
raise forms.ValidationError(
|
||||
_('Reservation values must written in JSON')
|
||||
)
|
||||
|
||||
if not (lease_name or start_time or end_time or reservations):
|
||||
raise forms.ValidationError("Nothing to update.")
|
||||
|
|
|
@ -204,7 +204,7 @@ class LeasesTests(test.TestCase):
|
|||
self.assertContains(res, 'An error occurred while creating')
|
||||
|
||||
@test.create_stubs({api.client: ('lease_get', 'lease_update')})
|
||||
def test_update_lease(self):
|
||||
def test_update_lease_name_and_date(self):
|
||||
lease = self.leases.get(name='lease-1')
|
||||
api.client.lease_get(
|
||||
IsA(http.HttpRequest),
|
||||
|
@ -229,6 +229,32 @@ class LeasesTests(test.TestCase):
|
|||
self.assertMessageCount(success=1)
|
||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||
|
||||
@test.create_stubs({api.client: ('lease_get', 'lease_update')})
|
||||
def test_update_lease_reservations(self):
|
||||
lease = self.leases.get(name='lease-1')
|
||||
api.client.lease_get(
|
||||
IsA(http.HttpRequest),
|
||||
lease['id']
|
||||
).AndReturn(lease)
|
||||
api.client.lease_update(
|
||||
IsA(http.HttpRequest),
|
||||
lease_id=lease['id'],
|
||||
reservations=[{"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
|
||||
"max": 3}]
|
||||
)
|
||||
form_data = {
|
||||
'lease_id': lease['id'],
|
||||
'reservations': '[{"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",'
|
||||
' "max": 3}]'
|
||||
}
|
||||
self.mox.ReplayAll()
|
||||
|
||||
res = self.client.post(reverse(UPDATE_URL_BASE, args=[lease['id']]),
|
||||
form_data)
|
||||
self.assertNoFormErrors(res)
|
||||
self.assertMessageCount(success=1)
|
||||
self.assertRedirectsNoFollow(res, INDEX_URL)
|
||||
|
||||
@test.create_stubs({api.client: ('lease_get', 'lease_update')})
|
||||
def test_update_lease_error(self):
|
||||
lease = self.leases.get(name='lease-1')
|
||||
|
|
Loading…
Reference in New Issue