74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
from flask import g
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import HiddenField, IntegerField, StringField, validators
|
|
|
|
from ereuse_devicehub.db import db
|
|
from ereuse_devicehub.resources.device.models import Device
|
|
from ereuse_devicehub.resources.tag.model import Tag
|
|
|
|
|
|
class TagForm(FlaskForm):
|
|
code = StringField('Code', [validators.length(min=1)])
|
|
|
|
def validate(self, extra_validators=None):
|
|
error = ["This value is being used"]
|
|
is_valid = super().validate(extra_validators)
|
|
if not is_valid:
|
|
return False
|
|
tag = Tag.query.filter(Tag.id == self.code.data).all()
|
|
if tag:
|
|
self.code.errors = error
|
|
return False
|
|
|
|
return True
|
|
|
|
def save(self):
|
|
self.instance = Tag(id=self.code.data)
|
|
db.session.add(self.instance)
|
|
db.session.commit()
|
|
return self.instance
|
|
|
|
def remove(self):
|
|
if not self.instance.device and not self.instance.provider:
|
|
self.instance.delete()
|
|
db.session.commit()
|
|
return self.instance
|
|
|
|
|
|
class TagUnnamedForm(FlaskForm):
|
|
amount = IntegerField('amount')
|
|
|
|
def save(self):
|
|
num = self.amount.data
|
|
tags_id, _ = g.tag_provider.post('/', {}, query=[('num', num)])
|
|
tags = [Tag(id=tag_id, provider=g.inventory.tag_provider) for tag_id in tags_id]
|
|
db.session.add_all(tags)
|
|
db.session.commit()
|
|
return tags
|
|
|
|
|
|
class PrintLabelsForm(FlaskForm):
|
|
devices = HiddenField(render_kw={'class': "devicesList"})
|
|
|
|
def validate(self, extra_validators=None):
|
|
is_valid = super().validate(extra_validators)
|
|
|
|
if not self.devices.data:
|
|
return False
|
|
|
|
device_ids = self.devices.data.split(",")
|
|
self._devices = (
|
|
Device.query.filter(Device.id.in_(device_ids))
|
|
.filter(Device.owner_id == g.user.id)
|
|
.distinct()
|
|
.all()
|
|
)
|
|
|
|
# print only tags that are DHID
|
|
dhids = [x.devicehub_id for x in self._devices]
|
|
self._tags = (
|
|
Tag.query.filter(Tag.owner_id == g.user.id).filter(Tag.id.in_(dhids)).all()
|
|
)
|
|
|
|
return is_valid
|