Merge pull request #251 from eReuse/bugfix/allocate-#3304

add checks of device.allocated
This commit is contained in:
cayop 2022-05-05 11:37:06 +02:00 committed by GitHub
commit 34f7989553
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 8 deletions

View File

@ -593,10 +593,14 @@ class NewActionForm(ActionFormMix):
class AllocateForm(ActionFormMix): class AllocateForm(ActionFormMix):
start_time = DateField('Start time') start_time = DateField('Start time')
end_time = DateField('End time') end_time = DateField('End time', [validators.Optional()])
final_user_code = StringField('Final user code', [validators.length(max=50)]) final_user_code = StringField(
transaction = StringField('Transaction', [validators.length(max=50)]) 'Final user code', [validators.Optional(), validators.length(max=50)]
end_users = IntegerField('End users') )
transaction = StringField(
'Transaction', [validators.Optional(), validators.length(max=50)]
)
end_users = IntegerField('End users', [validators.Optional()])
def validate(self, extra_validators=None): def validate(self, extra_validators=None):
is_valid = super().validate(extra_validators) is_valid = super().validate(extra_validators)
@ -608,13 +612,29 @@ class AllocateForm(ActionFormMix):
end_time = self.end_time.data end_time = self.end_time.data
if start_time and end_time and end_time < start_time: if start_time and end_time and end_time < start_time:
error = ['The action cannot finish before it starts.'] error = ['The action cannot finish before it starts.']
self.start_time.errors = error
self.end_time.errors = error self.end_time.errors = error
is_valid = False is_valid = False
if not self.end_users.data: if is_valid and not end_time:
self.end_users.errors = ["You need to specify a number of users"] self.end_time.data = self.start_time.data
is_valid = False
if self.type.data == 'Allocate':
txt = "You need deallocate before allocate this device again"
for device in self._devices:
if device.allocated:
self.devices.errors = [txt]
return False
device.allocated = True
if self.type.data == 'Deallocate':
txt = "Sorry some of this devices are actually deallocate"
for device in self._devices:
if not device.allocated:
self.devices.errors = [txt]
return False
device.allocated = False
return is_valid return is_valid