# main/views.py from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from .models import Project, Task from .forms import ProjectForm, TaskForm # create project @login_required def create_project(request): if request.method == 'POST': form = ProjectForm(request.POST) if form.is_valid(): project = form.save(commit=False) project.initiator = request.user project.save() # Notify PMO Admins pmo_admins = User.objects.filter(profile__role='PMO Admin') for admin in pmo_admins: send_mail( 'New Project Created', f'A new project "{project.name}" has been created and requires a project manager assignment.', 'admin@example.com', [admin.email], fail_silently=False, ) return redirect('project_dashboard', project_id=project.id) else: form = ProjectForm() return render(request, 'create_project.html', {'form': form}) # Load project as current focus @login_required def load_project(request): if request.method == 'POST': project_id = request.POST['project_id'] return redirect('project_dashboard', project_id=project_id) projects = Project.objects.all() return render(request, 'load_project.html', {'projects': projects}) # Active projects @login_required def project_dashboard(request, project_id): project = get_object_or_404(Project, id=project_id) tasks = project.tasks.all() return render(request, 'project_dashboard.html', {'project': project, 'tasks': tasks}) # Create task in current focus project - if no project chosen default project for user is focus @login_required def create_task(request, project_id): project = get_object_or_404(Project, id=project_id) if request.method == 'POST': form = TaskForm(request.POST) if form.is_valid(): task = form.save(commit=False) task.project = project task.save() return redirect('project_dashboard', project_id=project.id) else: form = TaskForm() return render(request, 'create_task.html', {'form': form, 'project': project})