audioform_script.py 1.5 KB

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