Move display logic out of the TaskOrder model and into the template

This commit is contained in:
leigh-mil 2019-01-16 10:05:38 -05:00
parent 7891432e90
commit a66e5eba72
3 changed files with 44 additions and 77 deletions

View File

@ -97,6 +97,19 @@ def renderAuditEvent(event):
return render_template("audit_log/events/default.html", event=event) return render_template("audit_log/events/default.html", event=event)
def removeHtml(text):
html_tags = re.compile("<.*?>")
return re.sub(html_tags, "", text)
def normalizeOrder(title):
# reorders titles from "Army, Department of the" to "Department of the Army"
text = title.split(", ")
reordered_text = text[0:-1]
reordered_text.insert(0, text[-1])
return " ".join(reordered_text)
def register_filters(app): def register_filters(app):
app.jinja_env.filters["iconSvg"] = iconSvg app.jinja_env.filters["iconSvg"] = iconSvg
app.jinja_env.filters["dollars"] = dollars app.jinja_env.filters["dollars"] = dollars
@ -110,6 +123,8 @@ def register_filters(app):
app.jinja_env.filters["dateFromString"] = dateFromString app.jinja_env.filters["dateFromString"] = dateFromString
app.jinja_env.filters["pageWindow"] = pageWindow app.jinja_env.filters["pageWindow"] = pageWindow
app.jinja_env.filters["renderAuditEvent"] = renderAuditEvent app.jinja_env.filters["renderAuditEvent"] = renderAuditEvent
app.jinja_env.filters["removeHtml"] = removeHtml
app.jinja_env.filters["normalizeOrder"] = normalizeOrder
@contextfilter @contextfilter
def translateWithoutCache(context, *kwargs): def translateWithoutCache(context, *kwargs):

View File

@ -4,11 +4,8 @@ import pendulum
from sqlalchemy import Column, Numeric, String, ForeignKey, Date, Integer from sqlalchemy import Column, Numeric, String, ForeignKey, Date, Integer
from sqlalchemy.types import ARRAY from sqlalchemy.types import ARRAY
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
import re
from atst.models import Base, types, mixins from atst.models import Base, types, mixins
from atst.utils.localization import translate
from atst.filters import usPhone
class Status(Enum): class Status(Enum):
@ -105,62 +102,6 @@ class TaskOrder(Base, mixins.TimestampsMixin):
def is_pending(self): def is_pending(self):
return self.status == Status.PENDING return self.status == Status.PENDING
@property
def defense_component_description(self):
if self.defense_component:
return self.normalize_order(self.defense_component)
else:
return None
@property
def app_migration_description(self):
if self.app_migration:
text = translate(
"forms.task_order.app_migration.{}".format(self.app_migration)
)
return self.remove_html(text)
else:
return None
@property
def native_apps_description(self):
if self.native_apps:
return translate(
"task_orders.new.review.{}_native".format(self.native_apps)
)
else:
return None
@property
def team_experience_description(self):
if self.team_experience:
return translate(
"forms.task_order.team_experience.{}".format(self.team_experience)
)
else:
return None
@property
def performance_length_description(self):
if self.performance_length:
return translate(
"forms.task_order.performance_length.{}".format(self.performance_length)
)
else:
return None
@property
def ko_phone(self):
return usPhone(self.ko_phone_number)
@property
def cor_phone(self):
return usPhone(self.cor_phone_number)
@property
def so_phone(self):
return usPhone(self.so_phone_number)
def to_dictionary(self): def to_dictionary(self):
return { return {
"portfolio_name": self.portfolio_name, "portfolio_name": self.portfolio_name,
@ -171,16 +112,6 @@ class TaskOrder(Base, mixins.TimestampsMixin):
}, },
} }
def remove_html(self, text):
html_tags = re.compile("<.*?>")
return re.sub(html_tags, "", text)
def normalize_order(self, department):
text = department.split(", ")
reordered_text = text[0:-1]
reordered_text.insert(0, text[-1])
return " ".join(reordered_text)
def __repr__(self): def __repr__(self):
return "<TaskOrder(number='{}', budget='{}', end_date='{}', id='{}')>".format( return "<TaskOrder(number='{}', budget='{}', end_date='{}', id='{}')>".format(
self.number, self.budget, self.end_date, self.id self.number, self.budget, self.end_date, self.id

View File

@ -18,6 +18,27 @@
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
{% if task_order.defense_component %}
{% set defense_component_description = task_order.defense_component | normalizeOrder %}
{% endif %}
{% if task_order.app_migration %}
{% set app_migration_description = "forms.task_order.app_migration.{}".format(task_order.app_migration) | translate | removeHtml %}
{% endif %}
{% if task_order.native_apps %}
{% set native_apps_description = "task_orders.new.review.{}_native".format(task_order.native_apps) | translate %}
{% endif %}
{% if task_order.team_experience %}
{% set team_experience_description = "forms.task_order.team_experience.{}".format(task_order.team_experience) | translate %}
{% endif %}
{% if task_order.performance_length %}
{% set performance_length_description = "forms.task_order.performance_length.{}".format(task_order.performance_length) | translate %}
{% endif %}
<h3 class="subheading">{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}</h3> <h3 class="subheading">{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}</h3>
<div class="row"> <div class="row">
@ -28,7 +49,7 @@
<div class="col col--grow"> <div class="col col--grow">
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.dod"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.dod"| translate }}</h4>
<p>{{ task_order.defense_component_description or RequiredLabel() }}</p> <p>{{ defense_component_description or RequiredLabel() }}</p>
</div> </div>
</div> </div>
@ -44,12 +65,12 @@
<div class="row"> <div class="row">
<div class="col col--grow"> <div class="col col--grow">
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.migration"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.migration"| translate }}</h4>
<p>{{ task_order.app_migration_description or RequiredLabel() }}</p> <p>{{ app_migration_description or RequiredLabel() }}</p>
</div> </div>
<div class="col col--grow"> <div class="col col--grow">
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.native_apps"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.native_apps"| translate }}</h4>
<p>{{ task_order.native_apps_description or RequiredLabel() }}</p> <p>{{ native_apps_description or RequiredLabel() }}</p>
</div> </div>
</div> </div>
@ -89,7 +110,7 @@
<div class="col col--grow"> <div class="col col--grow">
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.experience"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.experience"| translate }}</h4>
<p>{{ task_order.team_experience_description or RequiredLabel() }}</p> <p>{{ team_experience_description or RequiredLabel() }}</p>
</div> </div>
</div> </div>
@ -100,7 +121,7 @@
<div class="row"> <div class="row">
<div class="col col--grow"> <div class="col col--grow">
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.performance_period"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.performance_period"| translate }}</h4>
{{ task_order.performance_length_description or RequiredLabel() }} {{ performance_length_description or RequiredLabel() }}
<p><a href="#" class='icon-link icon-link--left' download>{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a></p> <p><a href="#" class='icon-link icon-link--left' download>{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a></p>
</div> </div>
@ -159,7 +180,7 @@
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.ko"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.ko"| translate }}</h4>
{{ task_order.ko_first_name }} {{ task_order.ko_last_name }}<br> {{ task_order.ko_first_name }} {{ task_order.ko_last_name }}<br>
{{ task_order.ko_email }}<br> {{ task_order.ko_email }}<br>
{{ task_order.ko_phone }}<br> {{ task_order.ko_phone_number | usPhone }}<br>
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.ko_dod_id}}<br> {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.ko_dod_id}}<br>
{% if task_order.ko_invite %} {% if task_order.ko_invite %}
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span> {{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>
@ -172,7 +193,7 @@
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.cor"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.cor"| translate }}</h4>
{{ task_order.cor_first_name }} {{ task_order.cor_last_name }}<br> {{ task_order.cor_first_name }} {{ task_order.cor_last_name }}<br>
{{ task_order.cor_email }}<br> {{ task_order.cor_email }}<br>
{{ task_order.cor_phone }}<br> {{ task_order.cor_phone_number | usPhone }}<br>
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.cor_dod_id}}<br> {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.cor_dod_id}}<br>
{% if task_order.cor_invite %} {% if task_order.cor_invite %}
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span> {{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>
@ -186,7 +207,7 @@
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.so"| translate }}</h4> <h4 class='task-order-form__heading'>{{ "task_orders.new.review.so"| translate }}</h4>
{{ task_order.so_first_name }} {{ task_order.so_last_name }}<br> {{ task_order.so_first_name }} {{ task_order.so_last_name }}<br>
{{ task_order.so_email }}<br> {{ task_order.so_email }}<br>
{{ task_order.so_phone }}<br> {{ task_order.so_phone_number | usPhone }}<br>
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.so_dod_id}}<br> {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.so_dod_id}}<br>
{% if task_order.so_invite %} {% if task_order.so_invite %}
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span> {{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>