diff --git a/amanuensis/server/lexicon.py b/amanuensis/server/lexicon.py index fac9885..9a0c286 100644 --- a/amanuensis/server/lexicon.py +++ b/amanuensis/server/lexicon.py @@ -67,13 +67,19 @@ def get_bp(): @player_required def session(name): drafts = [] + approved = [] draft_ctx = g.lexicon.ctx.draft draft_filenames = draft_ctx.ls() for draft_filename in draft_filenames: with draft_ctx.read(draft_filename) as draft: if draft.status.ready and not draft.status.approved: drafts.append(draft) - return render_template('lexicon/session.html', ready_articles=drafts) + if draft.status.approved: + approved.append(draft) + return render_template( + 'lexicon/session.html', + ready_articles=drafts, + approved_articles=approved) def edit_character(name, form, cid): if form.validate_on_submit(): @@ -152,24 +158,34 @@ def get_bp(): return redirect(url_for('lexicon.session', name=name)) draft_ctx = g.lexicon.ctx.draft - # TODO do this not terribly draft_filename = [fn for fn in draft_ctx.ls() if aid in fn][0] - with draft_ctx.read(draft_filename) as draft: + with draft_ctx.edit(draft_filename) as draft: + # If the article was unreadied in the meantime, abort + if not draft.status.ready: + flash("Article was rescinded") + return redirect(url_for('lexicon.session', name=name)) + parsed_draft = parse_raw_markdown(draft.contents) rendered_html = parsed_draft.render(PreviewHtmlRenderer( {'Article':'default','Phantom':None})) - form = LexiconReviewForm() - - if form.validate_on_submit(): - with draft_ctx.edit(draft_filename) as draft: - if not draft.status.ready: - flash("Article was rescinded") + # If the article is ready and awaiting review + if not draft.status.approved: + form = LexiconReviewForm() + if form.validate_on_submit(): + if form.approved.data == 'Y': + draft.status.ready = True + draft.status.approved = True + g.lexicon.add_log(f"Article '{draft.title}' approved ({draft.aid})") + else: + draft.status.ready = False + draft.status.approved = False + g.lexicon.add_log(f"Article '{draft.title}' rejected ({draft.aid})") return redirect(url_for('lexicon.session', name=name)) - result = (form.approved.data == "Y") - draft.status.ready = result - draft.status.approved = result - return redirect(url_for('lexicon.session', name=name)) + + # If the article was already reviewed and this is just the preview + else: + form = None return render_template( "lexicon/review.html", diff --git a/amanuensis/templates/lexicon/editor.html b/amanuensis/templates/lexicon/editor.html index 8e6983c..5eaf9d9 100644 --- a/amanuensis/templates/lexicon/editor.html +++ b/amanuensis/templates/lexicon/editor.html @@ -34,7 +34,7 @@ {{ g.lexicon.title }} - {% if article %} + {% if article and not article.status.approved %} {% endif %} diff --git a/amanuensis/templates/lexicon/review.html b/amanuensis/templates/lexicon/review.html index 395b1c3..78b89f1 100644 --- a/amanuensis/templates/lexicon/review.html +++ b/amanuensis/templates/lexicon/review.html @@ -17,4 +17,8 @@ {% endblock %} -{% set template_content_blocks = [self.article(), self.evaluation()] %} \ No newline at end of file +{% if form %} +{% set template_content_blocks = [self.article(), self.evaluation()] %} +{% else %} +{% set template_content_blocks = [self.article()] %} +{% endif %} \ No newline at end of file diff --git a/amanuensis/templates/lexicon/session.html b/amanuensis/templates/lexicon/session.html index 9b2aa4c..550fa6b 100644 --- a/amanuensis/templates/lexicon/session.html +++ b/amanuensis/templates/lexicon/session.html @@ -21,7 +21,17 @@ {% for article in ready_articles %}
  • - Review article by {{ g.lexicon.character[article.character].name }} + Review {{ article.title }} by {{ g.lexicon.character[article.character].name }} + +
  • + {% endfor %} + +

    Approved articles

    +