在之前我們增加了一個刪除功能,是用於刪除整個任務的。但在實際過程中,我們並不希望刪除該任務,而是希望它留存下來供日後查詢,僅僅需要的是一個結束任務的功能。當結束任務後,任務中的任何信息都不能再更改,任務的狀態也變更成了已結單。
1. 在task_edit.html中增加結束任務的按鈕,由於之前已經設置相關按鈕在‘處理中’的狀態時才顯示,因此通過結束任務按鈕將任務狀態置爲已結單,那麼相關按鈕將不再顯示。
{% if user == item.process_signer and task.task_status == '處理中' %}
<span>
<a href="{% url 'process_edit' item.id %}" style="color:grey">編輯</a>|
<a id="modal_button_2" class="grey" data-toggle="modal" href="#modal_form" rel="{% url 'process_delete' item.id %}" content="確認刪除內容爲{{ item.process_content }}的記錄麼?" title="刪除記錄">刪除</a>
</span>
{% endif %}
2. 在views.py中增加結單功能函數:
from django.shortcuts import render, redirect, get_object_or_404, HttpResponse
import json
#結束任務功能
def task_finish(request, pk):
#獲取任務實例
task_ins = get_object_or_404(Task,pk=pk)
#獲得該提交
if request.method == 'POST':
try:
#將task的狀態置爲已結單
task_ins.task_status = '已結單'
task_ins.save()
#在process增加一條記錄,標識某人結束了該項任務
process_task = Task.objects.get(id = task_ins.id)
process_ins = Process()
process_ins.task = process_task
process_ins.process_content = str(request.user) + u'完成了該項任務並結單'
process_ins.process_signer = request.user
process_ins.save()
#返回JSON值,success
data = 'success'
except IntegrityError:
#返回JSON值,error
data = 'error'
#通過json形式返回相關數值
return HttpResponse(json.dumps(data), content_type = "application/json")
3. 在urls.py中增加相應信息
url(r'^task_finish/(?P<pk>\d+)/$',echo.views.task_finish, name='task_finish'),
4. 驗證後,發現點擊結束任務按鈕後,所有按鈕將失效。