add kangaroo form
This commit is contained in:
parent
ce09de4133
commit
a54942a8a8
|
@ -0,0 +1,47 @@
|
|||
from flask import g
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import StringField, validators
|
||||
|
||||
from ereuse_devicehub.db import db
|
||||
from ereuse_devicehub.resources.device.models import Placeholder
|
||||
|
||||
|
||||
class KangarooForm(FlaskForm):
|
||||
phid = StringField('Phid', [validators.length(min=1)])
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.placeholder = None
|
||||
self.kangaroos = Placeholder.query.filter(
|
||||
Placeholder.kangaroo.is_(True)
|
||||
).filter(Placeholder.owner_id == g.user.id)
|
||||
|
||||
def validate(self, extra_validators=None):
|
||||
is_valid = super().validate(extra_validators)
|
||||
if not is_valid:
|
||||
return False
|
||||
|
||||
if not self.placeholder:
|
||||
self.placeholder = (
|
||||
Placeholder.query.filter(Placeholder.phid == self.phid.data)
|
||||
.filter(Placeholder.owner_id == g.user.id)
|
||||
.first()
|
||||
)
|
||||
if self.placeholder:
|
||||
if self.placeholder.status not in ['Snapshot', 'Twin']:
|
||||
self.placeholder = None
|
||||
|
||||
if not self.placeholder:
|
||||
self.phid.errors = ["Device not exist"]
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def save(self):
|
||||
if not self.placeholder or self.placeholder.kangaroo:
|
||||
return
|
||||
|
||||
self.placeholder.kangaroo = True
|
||||
db.session.commit()
|
||||
return self.placeholder
|
Reference in New Issue