Added Reissue token and Rerun Validation action

Reissue token is an option for approved tasks, and rerun validation
is an option for active tasks that have not yet been approved and
invalid.

Change-Id: I0147c31ffbc1a003dfb143adf09b75949eba7c58
This commit is contained in:
Amelia Cordwell 2017-05-24 14:09:30 +12:00 committed by adrian-turjak
parent 0d8384a5f2
commit 901a0d7a2e
2 changed files with 90 additions and 6 deletions

View File

@ -229,6 +229,14 @@ def token_submit(request, token, data):
data=json.dumps(data), headers=headers)
def token_reissue(request, task_id):
headers = {'Content-Type': 'application/json',
'X-Auth-Token': request.user.token.id}
data = {'task': task_id}
return post(request, 'tokens/',
data=json.dumps(data), headers=headers)
def email_update(request, email):
headers = {'Content-Type': 'application/json',
'X-Auth-Token': request.user.token.id}
@ -335,3 +343,13 @@ def task_update(request, task_id, new_data):
return put(request, "tasks/%s" % task_id,
data=new_data, headers=headers)
def task_revalidate(request, task_id):
task = task_get(request, task_id=task_id).json()
data = {}
for action_data in [action['data'] for action in task['actions']]:
data.update(action_data)
return task_update(request, task_id, json.dumps(data))

View File

@ -83,11 +83,77 @@ class ApproveTask(tables.BatchAction):
def allowed(self, request, task=None):
if task:
return not(
return task.valid and not(
task.status == "Completed" or task.status == "Cancelled")
return True
class ReissueToken(tables.BatchAction):
name = "reissue"
help_text = _("This will reissue tokens for the selected tasks.")
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Reissue Token",
u"Reissue Tokens",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Reissued Token",
u"Reissued Tokens",
count
)
def action(self, request, obj_id):
result = adjutant.token_reissue(request, obj_id)
if not result or result.status_code != 200:
exception = exceptions.NotAvailable()
exception._safe_message = False
raise exception
def allowed(self, request, task=None):
if task:
return task.status == "Approved; Incomplete"
return True
class RevalidateTask(tables.BatchAction):
name = "revalidate"
help_text = _("Rerun initial validation for the task.")
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Rerun Validation",
u"Rerun Validation",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Validation run",
u"Validation run",
count
)
def action(self, request, obj_id):
result = adjutant.task_revalidate(request, obj_id)
if not result or result.status_code != 200:
exception = exceptions.NotAvailable()
exception._safe_message = False
raise exception
def allowed(self, request, task=None):
if task:
return task.status == 'Awaiting Approval' and not task.valid
return True
class ReapproveTask(ApproveTask):
name = "approve"
help_text = _("This will approve all of the selected tasks.")
@ -96,7 +162,7 @@ class ReapproveTask(ApproveTask):
def action_present(count):
return ungettext_lazy(
u"Reapprove Task",
u"Repprove Tasks",
u"Reapprove Tasks",
count
)
@ -143,8 +209,8 @@ class TaskTable(tables.DataTable):
class Meta(object):
name = 'task_table'
verbose_name = _('Tasks')
table_actions = (CancelTask, ApproveTask)
row_actions = (ApproveTask, UpdateTask, CancelTask)
table_actions = (ApproveTask, RevalidateTask, CancelTask)
row_actions = (ApproveTask, UpdateTask, RevalidateTask, CancelTask, )
prev_pagination_param = pagination_param = 'task_page'
def get_prev_marker(self):
@ -163,8 +229,8 @@ class ApprovedTaskTable(TaskTable):
class Meta(object):
name = 'approved_table'
verbose_name = _('Tasks')
table_actions = (CancelTask, ReapproveTask)
row_actions = (CancelTask, ReapproveTask)
table_actions = (CancelTask, ReapproveTask, ReissueToken)
row_actions = (CancelTask, ReapproveTask, ReissueToken)
prev_pagination_param = pagination_param = 'approved_page'