from django.shortcuts import render, redirect, get_object_or_404 from .models import * from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from django.contrib import messages from .forms import * from django.utils import timezone # Create your views here. def signin(request): if request.user.is_authenticated: return redirect('home') if request.method == 'POST': form = CustomLoginForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: form.add_error(None, 'Invalid email or password. Please try again.') else: form = CustomLoginForm() return render(request, 'login.html', {'form': form}) def signout(request): if request.user.is_authenticated: logout(request) return redirect('signin') @login_required def home(request, *args, **kwargs): notes = Note.objects.filter(user=request.user).order_by('-date')[:6] context = { 'notes' : notes, } return render(request, 'index.html', context) @login_required def my_projects(request, *args, **kwargs): user = request.user try: staff_profile = StaffProfile.objects.get(user=user) projects = Project.objects.filter(models.Q(manager=staff_profile) | models.Q(members=staff_profile)).distinct().order_by('-project_id') except StaffProfile.DoesNotExist: projects = [] context = { 'projects' : projects, } return render(request, 'projects.html', context) @login_required def my_tasks(request, *args, **kwargs): context = { } return render(request, 'tasks.html', context) @login_required def detailed_project(request, project_id): project = get_object_or_404(Project, project_id=project_id) context = { 'project' : project, } return render(request, 'project-details.html', context) @login_required def create_project(request): context = { } return render(request, 'create-project.html', context) @login_required def create_epic(request): context = { } return render(request, 'create-epic.html', context) @login_required def create_task(request): context = { } return render(request, 'create-task.html', context) @login_required def createtask_project(request): context = { } return render(request, 'createtask-project.html', context) @login_required def createtask_epic(request): context = { } return render(request, 'createtask-epic.html', context) def add_note_modal(request, *args, **kwargs): context = { } return render(request, 'addnote-modal.html', context) def add_status_modal(request, *args, **kwargs): context = { } return render(request, 'addstatus-modal.html', context) def add_point_modal(request, *args, **kwargs): context = { } return render(request, 'addpoint-modal.html', context) def add_time_modal(request, *args, **kwargs): context = { } return render(request, 'addtime-modal.html', context) def delete_task_modal(request, *args, **kwargs): context = { } return render(request, 'deletetask-modal.html', context) def show_points_modal(request, *args, **kwargs): context = { } return render(request, 'showpoints-modal.html', context) def timeline_modal(request, *args, **kwargs): context = { } return render(request, 'timeline-modal.html', context) def update_status_modal(request, *args, **kwargs): context = { } return render(request, 'update-status-modal.html', context) @login_required def save_note(request): if request.method == 'POST': text = request.POST.get('note_text') color= request.POST.get('note_color') user = request.user date = timezone.now() note = Note( text = text, color = color, user = user, date = date, ) note.save() return redirect('home') # Redirect to a success page or another view return render(request, 'addnote-modal.html')