Refactor ‘finished’ to the model layer

By moving it from the view we reduce the complexity of the methods in
the view layer, so it’s easier to see what they do.

This also renames the variable `finished` to the property
`processing_finished` to disambiguate from the `job_status` field in the
JSON, which can also have a value of `finished`.
This commit is contained in:
Chris Hill-Scott
2020-01-08 16:23:43 +00:00
parent 25464a141b
commit 340cb33fdd
4 changed files with 9 additions and 10 deletions

View File

@@ -77,9 +77,6 @@ def view_job(service_id, job_id):
filter_args = parse_filter_args(request.args)
filter_args['status'] = set_status_filters(filter_args)
total_notifications = job.notification_count
processed_notifications = job.notifications_processed
just_sent_message = 'Your {} been sent. Printing starts {} at 5:30pm.'.format(
'letter has' if job.notification_count == 1 else 'letters have',
printing_today_or_tomorrow()
@@ -87,7 +84,6 @@ def view_job(service_id, job_id):
return render_template(
'views/jobs/job.html',
finished=(total_notifications == processed_notifications),
job=job,
status=request.args.get('status', ''),
updates_url=url_for(

View File

@@ -83,10 +83,13 @@ class Job(JSONModel):
@property
def still_processing(self):
return (
self.status != 'finished' or
self.notifications_created < self.notification_count
self.status != 'finished' or self.percentage_complete < 100
)
@cached_property
def finished_processing(self):
return self.notification_count == self.notifications_processed
@property
def template_id(self):
return self._dict['template']

View File

@@ -28,7 +28,7 @@
{% if template.template_type == 'letter' %}
<div class="keyline-block bottom-gutter-1-2">
{% endif %}
{% if job.percentage_complete < 100 and job.job_status != 'finished' %}
{% if job.still_processing %}
<p class="{% if job.template.template_type != 'letter' %}bottom-gutter{% endif %} hint">
Report is {{ "{:.0f}%".format(job.percentage_complete * 0.99) }} complete…
</p>

View File

@@ -16,10 +16,10 @@
{% if just_sent %}
{{ banner(just_sent_message, type='default', with_tick=True) }}
{% else %}
{{ ajax_block(partials, updates_url, 'status', finished=finished) }}
{{ ajax_block(partials, updates_url, 'status', finished=job.processing_finished) }}
{% endif %}
{{ ajax_block(partials, updates_url, 'counts', finished=finished) }}
{{ ajax_block(partials, updates_url, 'notifications', finished=finished) }}
{{ ajax_block(partials, updates_url, 'counts', finished=job.processing_finished) }}
{{ ajax_block(partials, updates_url, 'notifications', finished=job.processing_finished) }}
{% if job.letter_job_can_be_cancelled %}
<div class="js-stick-at-bottom-when-scrolling">