group.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # -*- coding: utf-8 -*-
  2. """
  3. walle-web
  4. :copyright: © 2015-2017 walle-web.io
  5. :created time: 2017-03-19 15:50:07
  6. :author: wushuiyong@walle-web.io
  7. """
  8. try:
  9. from FlaskForm import FlaskForm # Try Flask-WTF v0.13+
  10. except ImportError:
  11. from flask_wtf import Form as FlaskForm # Fallback to Flask-WTF v0.12 or older
  12. from flask_wtf import Form
  13. from wtforms import TextField
  14. from wtforms import validators, ValidationError
  15. from walle.model.user import UserModel
  16. from walle.model.tag import TagModel
  17. import json
  18. from flask import current_app
  19. class GroupForm(Form):
  20. group_name = TextField('group_name', [validators.Length(min=1, max=100)])
  21. uid_roles = TextField('uid_roles', [validators.Length(min=1)])
  22. group_id = None
  23. def set_group_id(self, group_id):
  24. self.group_id = group_id
  25. def validate_user_ids(self, field):
  26. current_app.logger.info(field.data)
  27. self.uid_roles = json.loads(field.data)
  28. user_ids = [uid_role['user_id'] for uid_role in self.uid_roles]
  29. roles = [uid_role['role'] for uid_role in self.uid_roles]
  30. # TODO validator roles
  31. # current_app.logger.info(user_ids)
  32. if UserModel.query.filter(UserModel.id.in_(user_ids)).count() != len(user_ids):
  33. raise ValidationError('存在未记录的用户添加到用户组')
  34. def validate_group_name(self, field):
  35. env = TagModel.query.filter_by(name=field.data).filter_by(label='user_group').first()
  36. # 新建时,环境名不可与
  37. if env and env.id != self.group_id:
  38. raise ValidationError('该用户组已经配置过')
  39. def validate_members(self, field):
  40. pass