Compare commits
1 Commits
9f939fe57c
...
fd5773b521
Author | SHA1 | Date |
---|---|---|
Tim Van Baak | fd5773b521 |
|
@ -50,7 +50,7 @@ def add_subcommand(subparsers, module) -> None:
|
|||
command_parser: ArgumentParser = subparsers.add_parser(
|
||||
command_name, help=command_help
|
||||
)
|
||||
command_parser.set_defaults(func=lambda args: command_parser.print_usage())
|
||||
command_parser.set_defaults(func=lambda args: command_parser.print_help())
|
||||
|
||||
# Add all subcommands in the command module
|
||||
subcommands = command_parser.add_subparsers(metavar="SUBCOMMAND")
|
||||
|
@ -97,7 +97,7 @@ def main():
|
|||
parser = ArgumentParser()
|
||||
parser.set_defaults(
|
||||
parser=parser,
|
||||
func=lambda args: parser.print_usage(),
|
||||
func=lambda args: parser.print_help(),
|
||||
get_db=None,
|
||||
)
|
||||
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output")
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
{% block sb_logo %}{% endblock %}
|
||||
{% block sb_home %}<a href="{{ url_for('home.home') }}">Home</a>
|
||||
{% endblock %}
|
||||
{% block sb_characters %}<a
|
||||
{% if current_page == "characters" %}class="current-page"
|
||||
{% else %}href="{{ url_for('lexicon.characters.characters', name=g.lexicon.name) }}"
|
||||
{% endif %}>Characters</a>{% endblock %}
|
||||
{% block sb_contents %}<a
|
||||
{% if current_page == "contents" %}class="current-page"
|
||||
{% else %}href="{{ url_for('lexicon.contents', name=g.lexicon.name) }}"
|
||||
|
@ -33,6 +37,7 @@
|
|||
{# self.sb_logo(), #}
|
||||
{% set template_sidebar_rows = [
|
||||
self.sb_home(),
|
||||
self.sb_characters(),
|
||||
self.sb_contents(),
|
||||
self.sb_rules(),
|
||||
self.sb_session(),
|
||||
|
@ -41,6 +46,7 @@
|
|||
{# self.sb_logo(), #}
|
||||
{% set template_sidebar_rows = [
|
||||
self.sb_home(),
|
||||
self.sb_characters(),
|
||||
self.sb_contents(),
|
||||
self.sb_rules(),
|
||||
self.sb_stats()] %}
|
||||
|
|
|
@ -6,10 +6,12 @@ from amanuensis.db import DbContext, Lexicon, User
|
|||
from amanuensis.errors import ArgumentError
|
||||
from amanuensis.server.helpers import lexicon_param, player_required_if_not_public
|
||||
|
||||
from .characters import bp as characters_bp
|
||||
from .forms import LexiconJoinForm
|
||||
|
||||
|
||||
bp = Blueprint("lexicon", __name__, url_prefix="/lexicon/<name>", template_folder=".")
|
||||
bp.register_blueprint(characters_bp)
|
||||
|
||||
|
||||
@bp.route("/join/", methods=["GET", "POST"])
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
from flask import Blueprint, render_template
|
||||
|
||||
from amanuensis.server.helpers import lexicon_param, player_required
|
||||
|
||||
|
||||
bp = Blueprint("characters", __name__, url_prefix="/characters", template_folder=".")
|
||||
|
||||
|
||||
@bp.route('/', methods=['GET', 'POST'])
|
||||
@lexicon_param
|
||||
@player_required
|
||||
def characters(name):
|
||||
return render_template("characters.jinja")
|
||||
# form = LexiconCharacterForm()
|
||||
# cid = request.args.get('cid')
|
||||
# if not cid:
|
||||
# # No character specified, creating a new character
|
||||
# return create_character(name, form)
|
||||
|
||||
# character = g.lexicon.cfg.character.get(cid)
|
||||
# if not character:
|
||||
# # Bad character id, abort
|
||||
# flash('Character not found')
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
# if current_user.uid not in (character.player, g.lexicon.cfg.editor):
|
||||
# # Only its owner and the editor can edit a character
|
||||
# flash('Access denied')
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
# # Edit allowed
|
||||
# return edit_character(name, form, character)
|
||||
|
||||
|
||||
# def edit_character(name, form, character):
|
||||
# if not form.is_submitted():
|
||||
# # GET, populate with values
|
||||
# return render_template(
|
||||
# 'session.character.jinja', form=form.for_character(character))
|
||||
|
||||
# if not form.validate():
|
||||
# # POST with invalid data, return unchanged
|
||||
# return render_template('session.character.jinja', form=form)
|
||||
|
||||
# # POST with valid data, update character
|
||||
# with g.lexicon.ctx.edit_config() as cfg:
|
||||
# char = cfg.character[character.cid]
|
||||
# char.name = form.characterName.data
|
||||
# char.signature = form.defaultSignature.data
|
||||
# flash('Character updated')
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
|
||||
|
||||
# def create_character(name: str, form: LexiconCharacterForm):
|
||||
# # Characters can't be created if the game has already started
|
||||
# if g.lexicon.status != LexiconModel.PREGAME:
|
||||
# flash("Characters can't be added after the game has started")
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
# # Characters can't be created beyond the per-player limit
|
||||
# player_characters = get_player_characters(g.lexicon, current_user.uid)
|
||||
# if len(list(player_characters)) >= g.lexicon.cfg.join.chars_per_player:
|
||||
# flash("Can't create more characters")
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
|
||||
# if not form.is_submitted():
|
||||
# # GET, populate with default values
|
||||
# return render_template(
|
||||
# 'session.character.jinja', form=form.for_new())
|
||||
|
||||
# if not form.validate():
|
||||
# # POST with invalid data, return unchanged
|
||||
# return render_template('session.character.jinja', form=form)
|
||||
|
||||
# # POST with valid data, create character
|
||||
# char_name = form.characterName.data
|
||||
# cid = create_character_in_lexicon(current_user, g.lexicon, char_name)
|
||||
# with g.lexicon.ctx.edit_config() as cfg:
|
||||
# cfg.character[cid].signature = form.defaultSignature.data
|
||||
# flash('Character created')
|
||||
# return redirect(url_for('session.session', name=name))
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{% extends "lexicon.jinja" %}
|
||||
{% block title %}Character | {{ lexicon_title }}{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<h1>Character</h1>
|
||||
{# <form action="" method="post" novalidate>
|
||||
{{ form.hidden_tag() }}
|
||||
<p>
|
||||
{{ form.characterName.label }}<br>{{ form.characterName(size=32) }}
|
||||
</p>
|
||||
{% for error in form.characterName.errors %}
|
||||
<span style="color: #ff0000">{{ error }}</span><br>
|
||||
{% endfor %}</p>
|
||||
<p>
|
||||
{{ form.defaultSignature.label }}<br>{{ form.defaultSignature(class_='fullwidth') }}
|
||||
</p>
|
||||
<p>{{ form.submit() }}</p>
|
||||
</form> #}
|
||||
|
||||
{# {% for message in get_flashed_messages() %}
|
||||
<span style="color:#ff0000">{{ message }}</span><br>
|
||||
{% endfor %} #}
|
||||
|
||||
{% endblock %}
|
||||
{% set template_content_blocks = [self.main()] %}
|
|
@ -68,77 +68,6 @@ def session(name):
|
|||
publish_form=form)
|
||||
|
||||
|
||||
def edit_character(name, form, character):
|
||||
if not form.is_submitted():
|
||||
# GET, populate with values
|
||||
return render_template(
|
||||
'session.character.jinja', form=form.for_character(character))
|
||||
|
||||
if not form.validate():
|
||||
# POST with invalid data, return unchanged
|
||||
return render_template('session.character.jinja', form=form)
|
||||
|
||||
# POST with valid data, update character
|
||||
with g.lexicon.ctx.edit_config() as cfg:
|
||||
char = cfg.character[character.cid]
|
||||
char.name = form.characterName.data
|
||||
char.signature = form.defaultSignature.data
|
||||
flash('Character updated')
|
||||
return redirect(url_for('session.session', name=name))
|
||||
|
||||
|
||||
def create_character(name: str, form: LexiconCharacterForm):
|
||||
# Characters can't be created if the game has already started
|
||||
if g.lexicon.status != LexiconModel.PREGAME:
|
||||
flash("Characters can't be added after the game has started")
|
||||
return redirect(url_for('session.session', name=name))
|
||||
# Characters can't be created beyond the per-player limit
|
||||
player_characters = get_player_characters(g.lexicon, current_user.uid)
|
||||
if len(list(player_characters)) >= g.lexicon.cfg.join.chars_per_player:
|
||||
flash("Can't create more characters")
|
||||
return redirect(url_for('session.session', name=name))
|
||||
|
||||
if not form.is_submitted():
|
||||
# GET, populate with default values
|
||||
return render_template(
|
||||
'session.character.jinja', form=form.for_new())
|
||||
|
||||
if not form.validate():
|
||||
# POST with invalid data, return unchanged
|
||||
return render_template('session.character.jinja', form=form)
|
||||
|
||||
# POST with valid data, create character
|
||||
char_name = form.characterName.data
|
||||
cid = create_character_in_lexicon(current_user, g.lexicon, char_name)
|
||||
with g.lexicon.ctx.edit_config() as cfg:
|
||||
cfg.character[cid].signature = form.defaultSignature.data
|
||||
flash('Character created')
|
||||
return redirect(url_for('session.session', name=name))
|
||||
|
||||
|
||||
@bp_session.route('/character/', methods=['GET', 'POST'])
|
||||
@lexicon_param
|
||||
@player_required
|
||||
def character(name):
|
||||
form = LexiconCharacterForm()
|
||||
cid = request.args.get('cid')
|
||||
if not cid:
|
||||
# No character specified, creating a new character
|
||||
return create_character(name, form)
|
||||
|
||||
character = g.lexicon.cfg.character.get(cid)
|
||||
if not character:
|
||||
# Bad character id, abort
|
||||
flash('Character not found')
|
||||
return redirect(url_for('session.session', name=name))
|
||||
if current_user.uid not in (character.player, g.lexicon.cfg.editor):
|
||||
# Only its owner and the editor can edit a character
|
||||
flash('Access denied')
|
||||
return redirect(url_for('session.session', name=name))
|
||||
# Edit allowed
|
||||
return edit_character(name, form, character)
|
||||
|
||||
|
||||
@bp_session.route('/settings/', methods=['GET', 'POST'])
|
||||
@lexicon_param
|
||||
@editor_required
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
{% extends "lexicon.jinja" %}
|
||||
{% block title %}Character | {{ lexicon_title }}{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<h1>Character</h1>
|
||||
<form action="" method="post" novalidate>
|
||||
{{ form.hidden_tag() }}
|
||||
<p>
|
||||
{{ form.characterName.label }}<br>{{ form.characterName(size=32) }}
|
||||
</p>
|
||||
{% for error in form.characterName.errors %}
|
||||
<span style="color: #ff0000">{{ error }}</span><br>
|
||||
{% endfor %}</p>
|
||||
<p>
|
||||
{{ form.defaultSignature.label }}<br>{{ form.defaultSignature(class_='fullwidth') }}
|
||||
</p>
|
||||
<p>{{ form.submit() }}</p>
|
||||
</form>
|
||||
|
||||
{% for message in get_flashed_messages() %}
|
||||
<span style="color:#ff0000">{{ message }}</span><br>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
{% set template_content_blocks = [self.main()] %}
|
Loading…
Reference in New Issue