diff --git a/ereuse_devicehub/inventory/forms.py b/ereuse_devicehub/inventory/forms.py index 7e2c349a..16c15b96 100644 --- a/ereuse_devicehub/inventory/forms.py +++ b/ereuse_devicehub/inventory/forms.py @@ -150,6 +150,7 @@ class UploadSnapshotForm(FlaskForm): move_json(self.tmp_snapshots, path_snapshot, g.user.email) db.session.commit() + return response def build(self, snapshot_json): # this is a copy adaptated from ereuse_devicehub.resources.action.views.snapshot @@ -216,8 +217,8 @@ class NewDeviceForm(FlaskForm): serial_number = StringField(u'Seria Number', [validators.DataRequired()]) model = StringField(u'Model', [validators.DataRequired()]) manufacturer = StringField(u'Manufacturer', [validators.DataRequired()]) - appearance = StringField(u'Appearance') - functionality = StringField(u'Functionality') + appearance = StringField(u'Appearance', [validators.Optional()]) + functionality = StringField(u'Functionality', [validators.Optional()]) brand = StringField(u'Brand') generation = IntegerField(u'Generation') version = StringField(u'Version') @@ -225,13 +226,13 @@ class NewDeviceForm(FlaskForm): width = FloatField(u'Width', [validators.DataRequired()]) height = FloatField(u'Height', [validators.DataRequired()]) depth = FloatField(u'Depth', [validators.DataRequired()]) - variant = StringField(u'Variant') - sku = StringField(u'SKU') + variant = StringField(u'Variant', [validators.Optional()]) + sku = StringField(u'SKU', [validators.Optional()]) image = StringField(u'Image', [validators.Optional(), validators.URL()]) - imei = StringField(u'IMEI') - meid = StringField(u'MEID') - resolution = StringField(u'Resolution width') - screen = StringField(u'Screen size') + imei = IntegerField(u'IMEI', [validators.Optional()]) + meid = StringField(u'MEID', [validators.Optional()]) + resolution = IntegerField(u'Resolution width', [validators.Optional()]) + screen = FloatField(u'Screen size', [validators.Optional()]) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -260,24 +261,45 @@ class NewDeviceForm(FlaskForm): self.depth.data = 0.1 def validate(self, extra_validators=None): + error = ["Not a correct value"] is_valid = super().validate(extra_validators) - if not is_valid: - return False - if self.generation.data < 1: - return False + self.generation.errors = error + is_valid = False if self.weight.data < 0.1: - return False + self.weight.errors = error + is_valid = False if self.height.data < 0.1: - return False + self.height.errors = error + is_valid = False if self.width.data < 0.1: - return False + self.width.errors = error + is_valid = False if self.depth.data < 0.1: + self.depth.errors = error + is_valid = False + + if self.imei.data: + if not 13 < len(str(self.imei.data)) < 17: + self.imei.errors = error + is_valid = False + + if self.meid.data: + meid = self.meid.data + if not 13 < len(meid) < 17: + is_valid = False + try: + int(meid, 16) + except ValueError: + self.meid.errors = error + is_valid = False + + if not is_valid: return False if self.image.data == '': @@ -315,14 +337,6 @@ class NewDeviceForm(FlaskForm): } } - if self.imei.data or self.meid.data: - json_snapshot['device']['imei'] = self.imei.data - json_snapshot['device']['meid'] = self.meid.data - - if self.resolution.data or self.screen.data: - json_snapshot['device']['resolution'] = self.resolution.data - json_snapshot['device']['screen'] = self.screen.data - if self.appearance.data or self.functionality.data: json_snapshot['device']['actions'] = [{ 'type': 'VisualTest', @@ -331,9 +345,30 @@ class NewDeviceForm(FlaskForm): }] upload_form = UploadSnapshotForm() - upload_form.snapshots = [("Web", json_snapshot)] - upload_form.result = {} - upload_form.save() + upload_form.sync = Sync() + + schema = SnapshotSchema() + self.tmp_snapshots = '/tmp/' + path_snapshot = save_json(json_snapshot, self.tmp_snapshots, g.user.email) + snapshot_json = schema.load(json_snapshot) + + if self.type.data == 'Monitor': + snapshot_json['device'].resolution_width = self.resolution.data + snapshot_json['device'].size = self.screen.data + + if self.type.data in ['Smartphone', 'Tablet', 'Cellphone']: + snapshot_json['device'].imei = self.imei.data + snapshot_json['device'].meid = self.meid.data + + snapshot = upload_form.build(snapshot_json) + + move_json(self.tmp_snapshots, path_snapshot, g.user.email) + if self.type.data == 'Monitor': + snapshot.device.resolution = self.resolution.data + snapshot.device.screen = self.screen.data + + db.session.commit() + return snapshot class NewActionForm(FlaskForm): diff --git a/ereuse_devicehub/static/js/create_device.js b/ereuse_devicehub/static/js/create_device.js index d34be039..1c9e0655 100644 --- a/ereuse_devicehub/static/js/create_device.js +++ b/ereuse_devicehub/static/js/create_device.js @@ -1,9 +1,6 @@ $(document).ready(function() { $("#type").on("change", deviceInputs); - $("#screen").hide(); - $("#resolution").hide(); - $("#imei").hide(); - $("#meid").hide(); + deviceInputs(); }) function deviceInputs() { diff --git a/ereuse_devicehub/templates/inventory/create_device.html b/ereuse_devicehub/templates/inventory/create_device.html index 9f21c68a..5a0380ca 100644 --- a/ereuse_devicehub/templates/inventory/create_device.html +++ b/ereuse_devicehub/templates/inventory/create_device.html @@ -38,18 +38,26 @@ Type of devices