Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,59 +24,54 @@ question: |
subquestion: |
${ action_button_html(url_action('toggle_archived'), label="Show archived" if not show_archived else "Hide archived", color="secondary")}

${ tabbed_templates_html("Feedback tabs", reviews_table_template, feedback_select_template)}
help:
label: |
View Panelists
content: |
${ view_panelists }
${ tabbed_templates_html("Feedback tabs", reviews_table_template, feedback_select_template, view_panelists)}
---
template: reviews_table_template
subject: Review Scores
content: |
${ collapse_template(what_are_reviews_template) }

Interview file | Version | Number of reviews | Average Score
-------------- |---------|-------------------|---------------
<table class="table">
<thead><tr><th>Interview file</th><th>Version</th><th>Number of reviews</th><th>Average Score</th></tr></thead>
<tbody>
% for review_agg in get_good_or_bad():
${ review_agg['interview'] } | ${ review_agg['version'] } | ${ review_agg['count'] } | ${ str(round(review_agg['average'] * 1000)/1000) }
<tr><td>${ review_agg['interview'] }</td><td>${ review_agg['version'] }</td><td>${ review_agg['count'] }</td><td>${ str(round(review_agg['average'] * 1000)/1000) }</td></tr>
% endfor
</tbody>
</table>
---
template: feedback_select_template
subject: Open answer feedback
content: |
% for interview, review_list in text_reviews.items():
<h3 class="h5">In ${ interview }</h3>
% for idx, (interview, review_list) in enumerate(text_reviews.items()):
<div class="al_collapse_template">
<a class="al_toggle" data-bs-toggle="collapse" href="#interview-feedback-${ idx }" role="button" aria-expanded="true" aria-controls="interview-feedback-${ idx }"><span class="toggle-icon pdcaretopen">${ fa_icon("caret-down") }</span><span class="toggle-icon pdcaretclosed">${ fa_icon("caret-right") }</span> <span class="subject h5">In ${ interview }</span></a>
<div id="interview-feedback-${ idx }" class="collapse show">
% for review in review_list:
% if review['archived']:
**ARCHIVED**
<p><strong>ARCHIVED</strong></p>
% endif

On ${ review['datetime'] }:

> ${ review['body'] }

<p>On ${ review['datetime'] }:</p>
<blockquote class="blockquote fs-6">${ markdown_to_html(review['body']) }</blockquote>
% if not review.get('html_url'):
% if review.get('github_user'):
${ action_button_html(prefill_github_issue_url(repo_owner=review.get('github_user'), repo_name=review.get('github_repo_name'), title="User feedback", body=review['body'], label=al_github_label), label="Make a github issue") }
% else:
${ action_button_html(prefill_github_issue_url(repo_name=interview.split(":")[0].replace(".", "-"), title="User feedback", body=review['body'], label=al_github_label), label="Make a github issue") }
% endif
% else:
[Link to Github issue](${ review.get('html_url') })

<a href="${ review.get('html_url') }">Link to GitHub issue</a>
% endif
% if review.get('session_id'):
${ action_button_html(url_action('open_session', interview=review['interview'], session_id=review.get('session_id')), label='Open Session', color='secondary') }
% endif
% if not review['archived']:
${ action_button_html(url_action('mark_as_archived', feedback_id=review['id']), label="Archive", color="danger")}
% endif

---

<hr>
% endfor

</div>
</div>
% endfor
---
template: what_are_reviews_template
Expand All @@ -92,6 +87,7 @@ content: |
affect people's reviews.
---
template: view_panelists
subject: View Panelists
content: |
% for email_and_time in potential_panelists():
% if isinstance(email_and_time[0], bytes):
Expand Down
3 changes: 3 additions & 0 deletions docassemble/GithubFeedbackForm/feedback_on_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
from alembic.config import Config
from alembic import command
from docassemble.base.util import DARedis, log
from docassemble.base.filter import markdown_to_html
from docassemble.base.sql import alchemy_url, connect_args

__all__ = [
Expand All @@ -37,6 +38,7 @@
"get_all_feedback_info",
"save_good_or_bad",
"get_good_or_bad",
"markdown_to_html",
]

redis_panel_emails_key = "docassemble-GithubFeedbackForm:panel_emails"
Expand Down Expand Up @@ -211,6 +213,7 @@ def get_all_feedback_info(interview=None, include_archived=False) -> Iterable:
stmt = stmt.where(feedback_session_table.c.interview == interview)
if not include_archived:
stmt = stmt.where(feedback_session_table.c.archived == False)
stmt = stmt.order_by(desc(feedback_session_table.c.datetime))
with engine.begin() as conn:
results = conn.execute(stmt)
# Turn into literal dict because DA is too eager to save / load SQLAlchemy objects into the interview SQL
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ dev = [
"docassemble.base>=1.4",
"docassemble.webapp",
"mypy",
"pytest",
"types-requests",
"testcontainers",
]
Expand Down
Loading