Guest User

Untitled

a guest
Apr 7th, 2019
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. from django.shortcuts import render
  2. # from django.http import HttpResponse
  3. from datetime import datetime
  4. from .forms import *
  5. from django.shortcuts import redirect
  6. from django.views.generic import View
  7. from .utils import *
  8. # from django.contrib.auth.mixins import LoginRequiredMixin
  9. from django.contrib.auth.decorators import login_required
  10. from django.contrib import messages
  11. # Create your views here.
  12.  
  13.  
  14. def main(request):
  15. if request.user.is_authenticated:
  16. # today_date = datetime.today().strftime("%a, %d %B")
  17. project_form = ProjectForm()
  18. task_form = TaskForm(user=request.user)
  19. projects = Project.objects.filter(user=request.user)
  20. tasks = Task.objects.filter(project__user=request.user, status='')
  21. print(tasks[len(tasks)-1].name)
  22. print(tasks[len(tasks)-1].date_until)
  23. # if tasks[len[tasks]-1].date_until == datetime.utcnow():
  24. # print('OK')
  25. # print(tasks[len[tasks]-1].date_until == datetime.utcnow())
  26.  
  27. context = {
  28. 'title': 'Today',
  29. 'today_date': datetime.now(),
  30. 'projects': projects,
  31. 'tasks': tasks,
  32. 'project_form': project_form,
  33. 'task_form': task_form,
  34. }
  35. return render(request, 'todo_app/main.html', context=context)
  36.  
  37. return redirect('login_url')
  38.  
  39. def projectDetail(request, slug):
  40. user = User.objects.get(id=request.user.id)
  41. project = user.project_set.get(slug=slug)
  42. tasks = project.task_set.all()
  43. context = {
  44. 'title' : project.name,
  45. 'project': project,
  46. 'tasks': tasks}
  47. return render(request, 'todo_app/project.html', context=context)
  48.  
  49. @login_required
  50. def archive(request):
  51. user = User.objects.get(id=request.user.id)
  52. projects = user.project_set.all()
  53. tasks = [task for project in projects for task in project.task_set.filter(status='done')]
  54. return render(request, 'todo_app/archive.html', context={'tasks': tasks, 'title': 'Archive'})
  55.  
  56.  
  57. class ProjectCreate(View):
  58. def post(self, request):
  59. bound_form = ProjectForm(request.POST)
  60.  
  61. if bound_form.is_valid():
  62. new_project = bound_form.save(commit=False)
  63. new_project.user = User.objects.get(id=request.user.id)
  64. new_project.save()
  65. return redirect('main_url', permanent=True)
  66.  
  67. return redirect('main_url', permanent=True)
  68.  
  69.  
  70. class TaskCreate(View):
  71. def post(self, request):
  72. post = request.POST.copy()
  73. post['date_until'] = post.get('date_until').replace('T', ' ')
  74. bound_form = TaskForm(request.user.id, post)
  75. if bound_form.is_valid():
  76. new_task = bound_form.save()
  77. return redirect('main_url', permanent=True)
  78.  
  79. return redirect('main_url', permanent=True)
  80.  
  81.  
  82. def projectDelete(request, slug):
  83. print(request.user)
  84. if request.method == 'POST':
  85. user = User.objects.get(id=request.user.id)
  86. project = user.project_set.get(slug=slug)
  87. uncompleted_tasks = project.task_set.filter(status='').count()
  88.  
  89. if uncompleted_tasks:
  90. messages.error(request, f'<b>"{project.name}"</b> project contains uncompleted tasks!')
  91. return redirect('main_url')
  92. project.delete()
  93. messages.success(request, f'Project "{project.name}" has been deleted successfully!')
  94. return redirect('main_url')
  95.  
  96.  
  97. def taskDelete(request, id):
  98. if request.method == 'POST':
  99. task = Task.objects.get(id=id)
  100. task.delete()
  101. messages.success(request, f'Task <b>"{task.name}"</b> has been deleted successfully!')
  102. return redirect('main_url')
  103.  
  104. def taskDone(request, id):
  105. if request.method == 'POST':
  106. task = Task.objects.get(id=id)
  107. task.status = 'done'
  108. task.save()
  109. return redirect('main_url')
Add Comment
Please, Sign In to add comment