first commit
This commit is contained in:
commit
b71ea45681
898 changed files with 138202 additions and 0 deletions
79
processes/views.py
Normal file
79
processes/views.py
Normal file
|
@ -0,0 +1,79 @@
|
|||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib import messages
|
||||
from django.http import JsonResponse
|
||||
from django.views.decorators.http import require_POST
|
||||
from .models import Process, ProcessInstance, StepInstance
|
||||
from .forms import ProcessInstanceForm
|
||||
|
||||
@login_required
|
||||
def process_list(request):
|
||||
"""نمایش لیست فرآیندهای فعال"""
|
||||
processes = Process.objects.filter(is_active=True)
|
||||
return render(request, 'processes/process_list.html', {
|
||||
'processes': processes
|
||||
})
|
||||
|
||||
@login_required
|
||||
def process_detail(request, process_id):
|
||||
"""نمایش جزئیات فرآیند"""
|
||||
process = get_object_or_404(Process, id=process_id, is_active=True)
|
||||
return render(request, 'processes/process_detail.html', {
|
||||
'process': process
|
||||
})
|
||||
|
||||
@login_required
|
||||
def start_process(request, process_id):
|
||||
"""شروع فرآیند جدید"""
|
||||
process = get_object_or_404(Process, id=process_id, is_active=True)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = ProcessInstanceForm(request.POST)
|
||||
if form.is_valid():
|
||||
instance = form.save(commit=False)
|
||||
instance.process = process
|
||||
instance.requester = request.user
|
||||
instance.save()
|
||||
|
||||
# ایجاد نمونههای مرحله
|
||||
for step in process.steps.all():
|
||||
StepInstance.objects.create(
|
||||
process_instance=instance,
|
||||
step=step
|
||||
)
|
||||
|
||||
# تنظیم مرحله اول به عنوان مرحله فعلی
|
||||
first_step = process.steps.first()
|
||||
if first_step:
|
||||
instance.current_step = first_step
|
||||
instance.status = 'in_progress'
|
||||
instance.save()
|
||||
|
||||
messages.success(request, f'فرآیند {process.name} با موفقیت شروع شد.')
|
||||
return redirect('processes:instance_detail', instance_id=instance.id)
|
||||
else:
|
||||
form = ProcessInstanceForm()
|
||||
|
||||
return render(request, 'processes/start_process.html', {
|
||||
'process': process,
|
||||
'form': form
|
||||
})
|
||||
|
||||
@login_required
|
||||
def instance_detail(request, instance_id):
|
||||
"""نمایش جزئیات نمونه فرآیند"""
|
||||
instance = get_object_or_404(ProcessInstance, id=instance_id)
|
||||
return render(request, 'processes/instance_detail.html', {
|
||||
'instance': instance
|
||||
})
|
||||
|
||||
@login_required
|
||||
def my_processes(request):
|
||||
"""نمایش فرآیندهای کاربر"""
|
||||
my_instances = ProcessInstance.objects.filter(requester=request.user)
|
||||
assigned_steps = StepInstance.objects.filter(assigned_to=request.user, status='in_progress')
|
||||
|
||||
return render(request, 'processes/my_processes.html', {
|
||||
'my_instances': my_instances,
|
||||
'assigned_steps': assigned_steps
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue