pre commit

This commit is contained in:
Cayo Puigdefabregas 2022-03-09 10:30:28 +01:00
commit 40abcd6b67
5 changed files with 80 additions and 26 deletions

View file

@ -270,7 +270,7 @@ class UploadSnapshotForm(FlaskForm):
return True
def save(self):
def save(self, commit=True):
if any([x == 'Error' for x in self.result.values()]):
return
# result = []
@ -292,6 +292,7 @@ class UploadSnapshotForm(FlaskForm):
move_json(self.tmp_snapshots, path_snapshot, g.user.email)
if commit:
db.session.commit()
return response
@ -462,7 +463,7 @@ class NewDeviceForm(FlaskForm):
return True
def save(self):
def save(self, commit=True):
json_snapshot = {
'type': 'Snapshot',
@ -518,6 +519,7 @@ class NewDeviceForm(FlaskForm):
snapshot.device.resolution = self.resolution.data
snapshot.device.screen = self.screen.data
if commit:
db.session.commit()
return snapshot

View file

@ -41,14 +41,9 @@ devices = Blueprint('inventory.devices', __name__, url_prefix='/inventory')
logger = logging.getLogger(__name__)
class DeviceListMix(View):
decorators = [login_required]
template_name = 'inventory/device_list.html'
def get_context(self, lot_id):
form_filter = FilterForm()
filter_types = form_filter.search()
lots = (
class GenericMixView(View):
def get_lots(self):
return (
Lot.query.outerjoin(Trade)
.filter(
or_(
@ -59,6 +54,16 @@ class DeviceListMix(View):
)
.distinct()
)
class DeviceListMix(GenericMixView):
decorators = [login_required]
template_name = 'inventory/device_list.html'
def get_context(self, lot_id):
form_filter = FilterForm()
filter_types = form_filter.search()
lots = self.get_lots()
lot = None
tags = (
Tag.query.filter(Tag.owner_id == current_user.id)
@ -128,12 +133,12 @@ class DeviceListView(DeviceListMix):
return flask.render_template(self.template_name, **self.context)
class DeviceDetailView(View):
class DeviceDetailView(GenericMixView):
decorators = [login_required]
template_name = 'inventory/device_detail.html'
def dispatch_request(self, id):
lots = Lot.query.filter(Lot.owner_id == current_user.id)
lots = self.get_lots()
device = (
Device.query.filter(Device.owner_id == current_user.id)
.filter(Device.devicehub_id == id)
@ -188,7 +193,7 @@ class LotDeviceDeleteView(View):
return flask.redirect(next_url)
class LotCreateView(View):
class LotCreateView(GenericMixView):
methods = ['GET', 'POST']
decorators = [login_required]
template_name = 'inventory/lot.html'
@ -201,7 +206,7 @@ class LotCreateView(View):
next_url = url_for('inventory.devices.lotdevicelist', lot_id=form.id)
return flask.redirect(next_url)
lots = Lot.query.filter(Lot.owner_id == current_user.id)
lots = self.get_lots()
context = {'form': form, 'title': self.title, 'lots': lots}
return flask.render_template(self.template_name, **context)
@ -242,33 +247,56 @@ class LotDeleteView(View):
return flask.redirect(next_url)
class UploadSnapshotView(View):
class UploadSnapshotView(GenericMixView):
methods = ['GET', 'POST']
decorators = [login_required]
template_name = 'inventory/upload_snapshot.html'
def dispatch_request(self):
lots = Lot.query.filter(Lot.owner_id == current_user.id).all()
def dispatch_request(self, lot_id=None):
lots = self.get_lots()
form = UploadSnapshotForm()
context = {'page_title': 'Upload Snapshot', 'lots': lots, 'form': form}
context = {
'page_title': 'Upload Snapshot',
'lots': lots,
'form': form,
'lot_id': lot_id,
}
if form.validate_on_submit():
form.save()
snapshot = form.save(commit=False)
if lot_id:
lot = lots.filter(Lot.id == lot_id).one()
lot.devices.add(snapshot.device)
db.session.add(lot)
db.session.commit()
return flask.render_template(self.template_name, **context)
class DeviceCreateView(View):
class DeviceCreateView(GenericMixView):
methods = ['GET', 'POST']
decorators = [login_required]
template_name = 'inventory/device_create.html'
def dispatch_request(self):
lots = Lot.query.filter(Lot.owner_id == current_user.id).all()
def dispatch_request(self, lot_id=None):
lots = self.get_lots()
form = NewDeviceForm()
context = {'page_title': 'New Device', 'lots': lots, 'form': form}
context = {
'page_title': 'New Device',
'lots': lots,
'form': form,
'lot_id': lot_id,
}
if form.validate_on_submit():
form.save()
snapshot = form.save(commit=False)
next_url = url_for('inventory.devices.devicelist')
if lot_id:
next_url = url_for('inventory.devices.lotdevicelist', lot_id=lot_id)
lot = lots.filter(Lot.id == lot_id).one()
lot.devices.add(snapshot.device)
db.session.add(lot)
db.session.commit()
messages.success('Device "{}" created successfully!'.format(form.type.data))
return flask.redirect(next_url)
return flask.render_template(self.template_name, **context)
@ -656,7 +684,15 @@ devices.add_url_rule('/lot/<string:id>/', view_func=LotUpdateView.as_view('lot_e
devices.add_url_rule(
'/upload-snapshot/', view_func=UploadSnapshotView.as_view('upload_snapshot')
)
devices.add_url_rule(
'/lot/<string:lot_id>/upload-snapshot/',
view_func=UploadSnapshotView.as_view('lot_upload_snapshot'),
)
devices.add_url_rule('/device/add/', view_func=DeviceCreateView.as_view('device_add'))
devices.add_url_rule(
'/lot/<string:lot_id>/device/add/',
view_func=DeviceCreateView.as_view('lot_device_add'),
)
devices.add_url_rule('/tag/', view_func=TagListView.as_view('taglist'))
devices.add_url_rule('/tag/add/', view_func=TagAddView.as_view('tag_add'))
devices.add_url_rule(

View file

@ -370,7 +370,11 @@
</div>
<div>
{% if lot_id %}
<a href="{{ url_for('inventory.devices.lotdevicelist', lot_id=lot_id) }}" class="btn btn-danger">Cancel</a>
{% else %}
<a href="{{ url_for('inventory.devices.devicelist') }}" class="btn btn-danger">Cancel</a>
{% endif %}
<button class="btn btn-primary" type="submit">Save</button>
</div>
</form>

View file

@ -245,13 +245,21 @@
</button>
<ul class="dropdown-menu" aria-labelledby="btnSnapshot">
<li>
{% if lot %}
<a href="{{ url_for('inventory.devices.lot_upload_snapshot', lot_id=lot.id) }}" class="dropdown-item">
{% else %}
<a href="{{ url_for('inventory.devices.upload_snapshot') }}" class="dropdown-item">
{% endif %}
<i class="bi bi-plus"></i>
Upload a new Snapshot
</a>
</li>
<li>
{% if lot %}
<a href="{{ url_for('inventory.devices.lot_device_add', lot_id=lot.id) }}" class="dropdown-item">
{% else %}
<a href="{{ url_for('inventory.devices.device_add') }}" class="dropdown-item">
{% endif %}
<i class="bi bi-plus"></i>
Create a new Device
</a>

View file

@ -55,7 +55,11 @@
</div>
<div>
{% if lot_id %}
<a href="{{ url_for('inventory.devices.lotdevicelist', lot_id=lot_id) }}" class="btn btn-danger">Cancel</a>
{% else %}
<a href="{{ url_for('inventory.devices.devicelist') }}" class="btn btn-danger">Cancel</a>
{% endif %}
<button class="btn btn-primary" type="submit">Send</button>
</div>
</form>