Skip to content

Commit

Permalink
Merge branch 'master' into TP2000-1685--fix-packaging-envelope-queue-…
Browse files Browse the repository at this point in the history
…regression
  • Loading branch information
dalecannon committed Jan 28, 2025
2 parents e5b3311 + 5d3d329 commit 2605f1a
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ govuk-button{% if workbasket.tracked_model_checks.exists() %} govuk-button--seco
<a href="{{ url('publishing:packaged-workbasket-queue-ui-create')}}" disabled class="govuk-button govuk-button--primary">
Send to packaging queue
</a>
{% elif not missing_measures_check_successful %}
{% elif workbasket.has_commodities and not missing_measures_check_successful %}
<div class="govuk-hint">
Missing measures check must be run before packaging.
</div>
Expand Down
146 changes: 77 additions & 69 deletions workbaskets/jinja2/workbaskets/checks/missing_measures.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -42,92 +42,100 @@

{% block tab_content %}
<h2 class="govuk-heading-s">Missing measures check</h2>
{% if missing_measures_check_in_progress %}
{% if not workbasket.has_commodities %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body">Missing measures check is in progress. Come back later or refresh to see results</p>
</div>
<div class="govuk-grid-column-one-third">
{{ stop_button }}
<p class="govuk-body">Missing measures check is only required for workbaskets with commodity changes</p>
</div>
</div>
{% else %}
{% if not missing_measures_check %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body">No missing measures check has been performed yet</p>
</div>
<div class="govuk-grid-column-one-third">
{{ run_button() }}
{% if missing_measures_check_in_progress %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body">Missing measures check is in progress. Come back later or refresh to see results</p>
</div>
<div class="govuk-grid-column-one-third">
{{ stop_button }}
</div>
</div>
</div>

{% else %}

{% if missing_measures_check.successful %}
<p class="govuk-body">Missing measures check finished.</p>
<div class="success-summary">
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body govuk-!-font-weight-bold govuk-!-margin-bottom-0">There are no missing 103 measures.</p>
</div>
<div class="govuk-grid-column-one-third">
<p class="govuk-body govuk-!-font-weight-bold text-align-right govuk-!-margin-bottom-0">Last run: {{ "{:%d %b %Y %H:%M}".format(missing_measures_check.updated_at) }}</p>
</div>
</div>
{% if not missing_measures_check %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body">No missing measures check has been performed yet</p>
</div>
{{ run_button(text="Re-run") }}
<div class="govuk-grid-column-one-third">
{{ run_button() }}
</div>
</div>

{# check was not successful #}
{% else %}


<p class="govuk-body">Missing measures check finished.</p>
<div class="govuk-error-summary">
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
{{ govukWarningText({
"text": "The following commodity codes are missing a 103 measure type:",
"iconFallbackText": "Warning",
"classes": "govuk-!-margin-bottom-0",
}) }}
{% if missing_measures_check.successful %}
<p class="govuk-body">Missing measures check finished.</p>
<div class="success-summary">
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<p class="govuk-body govuk-!-font-weight-bold govuk-!-margin-bottom-0">There are no missing 103 measures.</p>
</div>
<div class="govuk-grid-column-one-third">
<p class="govuk-body govuk-!-font-weight-bold text-align-right govuk-!-margin-bottom-0">Last run: {{ "{:%d %b %Y %H:%M}".format(missing_measures_check.updated_at) }}</p>
</div>
</div>
<div class="govuk-grid-column-one-third">
<p class="govuk-body govuk-!-font-weight-bold text-align-right">Last run: {{ "{:%d %b %Y %H:%M}".format(missing_measures_check.updated_at) }}</p>
</div>
{{ run_button(text="Re-run") }}

{# check was not successful #}
{% else %}


<p class="govuk-body">Missing measures check finished.</p>
<div class="govuk-error-summary">
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
{{ govukWarningText({
"text": "The following commodity codes are missing a 103 measure type:",
"iconFallbackText": "Warning",
"classes": "govuk-!-margin-bottom-0",
}) }}
</div>
<div class="govuk-grid-column-one-third">
<p class="govuk-body govuk-!-font-weight-bold text-align-right">Last run: {{ "{:%d %b %Y %H:%M}".format(missing_measures_check.updated_at) }}</p>
</div>
</div>
</div>
</div>

{% set base_url = url("workbaskets:workbasket-ui-missing-measures-check") %}

{% set commodity_code %}
{{ create_sortable_anchor(request, "commodity", "Commodity code", base_url) }}
{% endset %}

{% set table_rows = [] %}
{% for check in object_list %}
{% set link -%}
<a class="govuk-link govuk-!-font-weight-bold" href="{{ url('commodity-ui-detail', kwargs={'sid': check.commodity.sid}) }}">{{ check.commodity.item_id }}</a>
{%- endset %}
{{ table_rows.append([
{"html": link},
{"text": check.commodity.get_description().description if check.commodity.get_description().description else "—"},
{"text": "Measure type 103 missing"},
]) or "" }}
{% endfor %}
{{ govukTable({
"head": [
{"text": commodity_code},
{"text": "Description"},
{"text": "Issue"},
],
"rows": table_rows
}) }}

{{ run_button(text="Re-run") }}
{% set base_url = url("workbaskets:workbasket-ui-missing-measures-check") %}

{% set commodity_code %}
{{ create_sortable_anchor(request, "commodity", "Commodity code", base_url) }}
{% endset %}

{% set table_rows = [] %}
{% for check in object_list %}
{% set link -%}
<a class="govuk-link govuk-!-font-weight-bold" href="{{ url('commodity-ui-detail', kwargs={'sid': check.commodity.sid}) }}">{{ check.commodity.item_id }}</a>
{%- endset %}
{{ table_rows.append([
{"html": link},
{"text": check.commodity.get_description().description if check.commodity.get_description().description else "—"},
{"text": "Measure type 103 missing"},
]) or "" }}
{% endfor %}
{{ govukTable({
"head": [
{"text": commodity_code},
{"text": "Description"},
{"text": "Issue"},
],
"rows": table_rows
}) }}

{{ run_button(text="Re-run") }}

{% endif %}

{% endif %}

{% endif %}
{% endif %}
{% endblock %}
12 changes: 12 additions & 0 deletions workbaskets/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,18 @@ class WorkBasket(TimestampedMixin):

transactions: TransactionQueryset

@property
def has_commodities(self):
# avoid circular import
from commodities.models.orm import GoodsNomenclature

codes = [
item
for item in self.tracked_models.all()
if isinstance(item, GoodsNomenclature)
]
return len(codes) != 0

def terminate_rule_check(self):
"""Terminate any task associated with the WorkBasket's rule checking, as
identified by its rule_check_task_id."""
Expand Down
11 changes: 11 additions & 0 deletions workbaskets/tests/test_checks_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from checks.tests.factories import MissingMeasureCommCodeFactory
from checks.tests.factories import MissingMeasuresCheckFactory
from common.tests.factories import GoodsNomenclatureFactory

pytestmark = pytest.mark.django_db

Expand All @@ -17,6 +18,12 @@ def test_check_missing_measures_200(valid_user_client, user_workbasket):


def test_check_missing_measures_fail_list(valid_user_client, user_workbasket):

with user_workbasket.new_transaction() as tx:
GoodsNomenclatureFactory.create(
transaction=tx,
)

missing_measures_check = MissingMeasuresCheckFactory.create(
workbasket=user_workbasket,
successful=False,
Expand All @@ -36,6 +43,10 @@ def test_check_missing_measures_fail_list(valid_user_client, user_workbasket):


def test_check_missing_measures_success(valid_user_client, user_workbasket):
with user_workbasket.new_transaction() as tx:
GoodsNomenclatureFactory.create(
transaction=tx,
)
MissingMeasuresCheckFactory.create(
workbasket=user_workbasket,
successful=True,
Expand Down
7 changes: 7 additions & 0 deletions workbaskets/tests/test_templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from bs4 import BeautifulSoup
from django.template.loader import render_to_string

from common.tests.factories import GoodsNomenclatureFactory

pytestmark = pytest.mark.django_db


Expand All @@ -12,6 +14,11 @@ def test_check_missing_measures_in_progress(user_workbasket):
user_workbasket.refresh_from_db()
mock_request = MagicMock()

with user_workbasket.new_transaction() as tx:
GoodsNomenclatureFactory.create(
transaction=tx,
)

rendered = render_to_string(
"workbaskets/checks/missing_measures.jinja",
{
Expand Down

0 comments on commit 2605f1a

Please sign in to comment.