mirror of https://github.com/veops/cmdb.git
feat(api): Attributes support regular check (#379)
feat(api): Attributes support regular check
This commit is contained in:
parent
4a4b9e6ef0
commit
6bc5c1516d
|
@ -5,10 +5,10 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import imp
|
import imp
|
||||||
import os
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
import jinja2
|
import jinja2
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import tempfile
|
||||||
from flask import abort
|
from flask import abort
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from jinja2schema import infer
|
from jinja2schema import infer
|
||||||
|
@ -117,6 +117,11 @@ class AttributeValueManager(object):
|
||||||
if type_attr and type_attr.is_required and not value and value != 0:
|
if type_attr and type_attr.is_required and not value and value != 0:
|
||||||
return abort(400, ErrFormat.attribute_value_required.format(attr.alias))
|
return abort(400, ErrFormat.attribute_value_required.format(attr.alias))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _check_re(expr, value):
|
||||||
|
if not re.compile(expr).match(str(value)):
|
||||||
|
return abort(400, ErrFormat.attribute_value_invalid.format(value))
|
||||||
|
|
||||||
def _validate(self, attr, value, value_table, ci=None, type_id=None, ci_id=None, type_attr=None):
|
def _validate(self, attr, value, value_table, ci=None, type_id=None, ci_id=None, type_attr=None):
|
||||||
ci = ci or {}
|
ci = ci or {}
|
||||||
v = self._deserialize_value(attr.value_type, value)
|
v = self._deserialize_value(attr.value_type, value)
|
||||||
|
@ -130,6 +135,9 @@ class AttributeValueManager(object):
|
||||||
if v == "" and attr.value_type not in (ValueTypeEnum.TEXT,):
|
if v == "" and attr.value_type not in (ValueTypeEnum.TEXT,):
|
||||||
v = None
|
v = None
|
||||||
|
|
||||||
|
if attr.re_check and value:
|
||||||
|
self._check_re(attr.re_check, value)
|
||||||
|
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -93,6 +93,8 @@ class Attribute(Model):
|
||||||
_choice_web_hook = db.Column('choice_web_hook', db.JSON)
|
_choice_web_hook = db.Column('choice_web_hook', db.JSON)
|
||||||
choice_other = db.Column(db.JSON)
|
choice_other = db.Column(db.JSON)
|
||||||
|
|
||||||
|
re_check = db.Column(db.Text)
|
||||||
|
|
||||||
uid = db.Column(db.Integer, index=True)
|
uid = db.Column(db.Integer, index=True)
|
||||||
|
|
||||||
option = db.Column(db.JSON)
|
option = db.Column(db.JSON)
|
||||||
|
|
Loading…
Reference in New Issue