Raise AuthorizationError if user is not KO
This commit is contained in:
parent
70b4a51d8a
commit
49ed059853
@ -36,9 +36,13 @@ class Authorization(object):
|
|||||||
def is_ccpo(cls, user):
|
def is_ccpo(cls, user):
|
||||||
return user.atat_role.name == "ccpo"
|
return user.atat_role.name == "ccpo"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_ko(cls, user, task_order):
|
||||||
|
return task_order.contracting_officer == user
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def check_task_order_permission(cls, user, task_order, permission, message):
|
def check_task_order_permission(cls, user, task_order, permission, message):
|
||||||
if Authorization._check_is_task_order_officer(task_order, user):
|
if Authorization._check_is_task_order_officer(user, task_order):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
Authorization.check_portfolio_permission(
|
Authorization.check_portfolio_permission(
|
||||||
@ -46,7 +50,7 @@ class Authorization(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _check_is_task_order_officer(cls, task_order, user):
|
def _check_is_task_order_officer(cls, user, task_order):
|
||||||
for officer in [
|
for officer in [
|
||||||
"contracting_officer",
|
"contracting_officer",
|
||||||
"contracting_officer_representative",
|
"contracting_officer_representative",
|
||||||
|
@ -36,11 +36,9 @@ class KOReviewForm(CacheableForm):
|
|||||||
translate("forms.ko_review.pdf_label"),
|
translate("forms.ko_review.pdf_label"),
|
||||||
description=translate("forms.ko_review.pdf_description"),
|
description=translate("forms.ko_review.pdf_description"),
|
||||||
validators=[
|
validators=[
|
||||||
FileAllowed(
|
FileAllowed(["pdf"], translate("forms.task_order.file_format_not_allowed"))
|
||||||
["pdf", "png"], translate("forms.task_order.file_format_not_allowed")
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
render_kw={"required": False, "accept": ".pdf,.png,application/pdf,image/png"},
|
render_kw={"required": False, "accept": ".pdf,application/pdf"},
|
||||||
)
|
)
|
||||||
number = StringField(
|
number = StringField(
|
||||||
translate("forms.ko_review.to_number"), validators=[Length(min=10), IsNumber()]
|
translate("forms.ko_review.to_number"), validators=[Length(min=10), IsNumber()]
|
||||||
|
@ -7,6 +7,7 @@ from . import portfolios_bp
|
|||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
|
from atst.domain.authz import Authorization
|
||||||
from atst.forms.officers import EditTaskOrderOfficersForm
|
from atst.forms.officers import EditTaskOrderOfficersForm
|
||||||
from atst.models.task_order import Status as TaskOrderStatus
|
from atst.models.task_order import Status as TaskOrderStatus
|
||||||
from atst.forms.ko_review import KOReviewForm
|
from atst.forms.ko_review import KOReviewForm
|
||||||
@ -74,19 +75,16 @@ def view_task_order(portfolio_id, task_order_id):
|
|||||||
def ko_review(portfolio_id, task_order_id):
|
def ko_review(portfolio_id, task_order_id):
|
||||||
task_order = TaskOrders.get(g.current_user, task_order_id)
|
task_order = TaskOrders.get(g.current_user, task_order_id)
|
||||||
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
||||||
if task_order.contracting_officer == g.current_user:
|
if not Authorization.is_ko(g.current_user, task_order):
|
||||||
|
message = "review Task Order {}".format(task_order.id)
|
||||||
|
raise UnauthorizedError(g.current_user, message)
|
||||||
|
else:
|
||||||
return render_template(
|
return render_template(
|
||||||
"/portfolios/task_orders/review.html",
|
"/portfolios/task_orders/review.html",
|
||||||
portfolio=portfolio,
|
portfolio=portfolio,
|
||||||
task_order=task_order,
|
task_order=task_order,
|
||||||
form=KOReviewForm(obj=task_order),
|
form=KOReviewForm(obj=task_order),
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
return render_template(
|
|
||||||
"portfolios/task_orders/show.html",
|
|
||||||
portfolio=portfolio,
|
|
||||||
task_order=task_order,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@portfolios_bp.route(
|
@portfolios_bp.route(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user