environment.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 flask_wtf 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_login import current_user
  13. from walle.model.environment import EnvironmentModel
  14. from wtforms import StringField
  15. from wtforms import validators, ValidationError
  16. from datetime import datetime
  17. class EnvironmentForm(FlaskForm):
  18. env_name = StringField('env_name', [validators.Length(min=1, max=100)])
  19. status = StringField('status', [])
  20. space_id = None
  21. env_id = None
  22. def set_env_id(self, env_id):
  23. self.env_id = env_id
  24. def set_space_id(self, space_id):
  25. self.space_id = space_id
  26. def validate_env_name(self, field):
  27. filters = {
  28. EnvironmentModel.status.notin_([EnvironmentModel.status_remove]),
  29. EnvironmentModel.name == field.data,
  30. EnvironmentModel.space_id == current_user.space_id(),
  31. }
  32. env = EnvironmentModel.query.filter(*filters).first()
  33. # 新建时,环境名不可与
  34. if env and env.id != self.env_id:
  35. raise ValidationError('该环境已经配置过')
  36. def validate_status(self, field):
  37. if field.data and int(field.data) not in [1, 2]:
  38. raise ValidationError('非法的状态')
  39. def form2dict(self):
  40. return {
  41. 'name': self.env_name.data,
  42. 'space_id': current_user.space_id(),
  43. 'status': 1,
  44. 'created_at': datetime.now(),
  45. 'updated_at': datetime.now(),
  46. }