audioform_script.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from flask_wtf import Form
  2. from wtforms import StringField, validators, SubmitField, ValidationError
  3. class ScriptAudioForm(Form):
  4. nick = StringField('Audio nick', validators=[validators.required()],
  5. description='A simple name to recognize this audio')
  6. name = StringField('Name', validators=[validators.required()],
  7. description='filename (NOT path) of the script')
  8. args = StringField('Arguments',
  9. description='arguments, separated by ";"')
  10. submit = SubmitField('Submit')
  11. def populate_from_audiospec(self, audiospec):
  12. if 'nick' in audiospec:
  13. self.nick.data = audiospec['nick']
  14. if 'name' in audiospec:
  15. self.name.data = audiospec['name']
  16. if 'args' in audiospec:
  17. if type(audiospec['args']) is str: # legacy compatibility
  18. self.args.data = audiospec['args'].replace(' ', ';')
  19. else:
  20. self.args.data = ';'.join(audiospec['args'])
  21. def validate_name(form, field):
  22. if '/' in field.data:
  23. raise ValidationError("Name cannot have slashes: "
  24. "it's a name, not a path")
  25. def scriptaudio_receive(form):
  26. return {
  27. 'kind': 'script',
  28. 'nick': form.nick.data,
  29. 'name': form.name.data,
  30. 'args': form.args.data.split(';')
  31. }