You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.5 KiB

  1. from flask import (
  2. request,
  3. jsonify,
  4. current_app,
  5. render_template,
  6. Blueprint
  7. )
  8. from .npc_party import (
  9. create_party,
  10. create_npc
  11. )
  12. from .models import (
  13. Spell,
  14. CharacterClass
  15. )
  16. npc_views = Blueprint(
  17. 'npc_views',
  18. __name__,
  19. template_folder='templates',
  20. url_prefix='/npc'
  21. )
  22. @npc_views.route('/party')
  23. @npc_views.route('/party/<int:base_level>')
  24. def generate_npc_party(base_level=None):
  25. party = None
  26. if base_level:
  27. party = create_party(base_level)
  28. # If asked for JSON, return the party, otherwise render HTML template
  29. if request.args.get('format', 'html') == 'json':
  30. return jsonify([npc.roll20_format for npc in party])
  31. return render_template('generate_npc_party.html', party=party, base_level=base_level)
  32. @npc_views.route('/single')
  33. @npc_views.route('/single/<int:base_level>/<int:guild_id>')
  34. def generate_single_npc(base_level=None, guild_id=0):
  35. guilds = CharacterClass.query.filter(CharacterClass.bucket.notin_(['Demi-Human'])).all()
  36. npc = None
  37. if base_level:
  38. npc = create_npc(base_level, guild_id)
  39. # If asked for JSON, return the npc, otherwise render HTML template
  40. if request.args.get('format', 'html') == 'json':
  41. return jsonify(npc)
  42. return render_template('generate_single_npc.html', npc=npc, base_level=base_level, guilds=guilds, guild_id=guild_id)
  43. @npc_views.route('/spells')
  44. def spell_list():
  45. spells = Spell.query.all()
  46. return render_template('spell_list.html', spells=spells)