group.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. import json
  13. from flask import current_app
  14. from walle.model.tag import TagModel
  15. from walle.model.user import UserModel
  16. from wtforms import StringField
  17. from wtforms import validators, ValidationError
  18. class GroupForm(FlaskForm):
  19. group_name = StringField('group_name', [validators.Length(min=1, max=100)])
  20. uid_roles = StringField('uid_roles', [validators.Length(min=1)])
  21. group_id = None
  22. def set_group_id(self, group_id):
  23. self.group_id = group_id
  24. def validate_user_ids(self, field):
  25. current_app.logger.info(field.data)
  26. self.uid_roles = json.loads(field.data)
  27. user_ids = [uid_role['user_id'] for uid_role in self.uid_roles]
  28. roles = [uid_role['role'] for uid_role in self.uid_roles]
  29. # TODO validator roles
  30. # current_app.logger.info(user_ids)
  31. if UserModel.query.filter(UserModel.id.in_(user_ids)).count() != len(user_ids):
  32. raise ValidationError('存在未记录的用户添加到用户组')
  33. def validate_group_name(self, field):
  34. env = TagModel.query.filter_by(name=field.data).filter_by(label='user_group').first()
  35. # 新建时,环境名不可与
  36. if env and env.id != self.group_id:
  37. raise ValidationError('该用户组已经配置过')
  38. def validate_members(self, field):
  39. pass