PageRenderTime 54ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/tasker/views.py

https://bitbucket.org/nkitsan/lab02
Python | 604 lines | 568 code | 36 blank | 0 comment | 61 complexity | ebb792ef033dd69e70f121c086eb1a96 MD5 | raw file
  1. from django.shortcuts import render, redirect
  2. from django.http import JsonResponse
  3. from django.views.decorators.csrf import csrf_exempt
  4. from tasker.models import User
  5. from tasker.libs.apis import (habit,
  6. event,
  7. public_task,
  8. private_task,
  9. list)
  10. from tasker.libs.managers import (user_manager,
  11. weekly_task_manager,
  12. public_task_manager,
  13. habit_tracker_manager)
  14. from tasker.libs.helpers import (task_helper,
  15. schedule_helper,
  16. remembers_helper)
  17. def home(request):
  18. if request.session.get('username') is not None:
  19. return redirect('/profiles/{}'.format(request.session.get('username')))
  20. return redirect(request, '/login')
  21. def login(request):
  22. if request.session.get('username') is not None:
  23. return redirect('/profiles/{}'.format(request.session.get('username')))
  24. elif request.method == "GET":
  25. username = request.GET.get('username')
  26. password = request.GET.get('password')
  27. if username is not None and request is not None and user_manager.login_user(username, password):
  28. request.session['username'] = username
  29. return redirect('/profiles/{}'.format(username))
  30. else:
  31. return render(request, 'tasker/login.html')
  32. else:
  33. return render(request, 'tasker/login.html')
  34. def signup(request):
  35. if request.session.get('username') is not None:
  36. return redirect('/profiles/{}'.format(request.session.get('username')))
  37. elif request.method == "POST":
  38. username = request.POST.get('username')
  39. email = request.POST.get('email')
  40. password = request.POST.get('password')
  41. if user_manager.signup_user(username, email, password):
  42. request.session['username'] = username
  43. return redirect('/profiles/{}'.format(username))
  44. else:
  45. return render(request, 'tasker/signup.html')
  46. @csrf_exempt
  47. def logout(request):
  48. try:
  49. del request.session['username']
  50. except KeyError:
  51. pass
  52. return redirect('/signup')
  53. @csrf_exempt
  54. def user_board(request, username):
  55. user = User.objects.get(username=username)
  56. schedule_helper.check_updates(username)
  57. return render(request, 'tasker/index.html', {'api_key': user.api_key,
  58. 'tasks': user.week_list.all(),
  59. 'lists': user.lists.all(),
  60. 'public_tasks': task_helper.tasks_to_dict(username),
  61. 'username': username})
  62. @csrf_exempt
  63. def habit_api(request, api, habit_id):
  64. if not User.objects.filter(api_key=api).exists():
  65. return JsonResponse({'error': 'wrong api key'})
  66. username = user_manager.get_username(api)
  67. schedule_helper.check_updates(username)
  68. user_habit = habit.Habit(api)
  69. if request.method == 'GET':
  70. return JsonResponse(user_habit.get_habit(habit_id))
  71. if request.method == 'PUT':
  72. habit_name = request.PUT.get('habit_name')
  73. habit_status = request.PUT.get('habit_status')
  74. habit_timeline = request.PUT.get('habit_timeline')
  75. return JsonResponse(user_habit.put_habit(habit_id, habit_name, habit_status, habit_timeline))
  76. @csrf_exempt
  77. def event_api(request, api, event_id):
  78. if not User.objects.filter(api_key=api).exists():
  79. return JsonResponse({'error': 'wrong api key'})
  80. user_event = event.Event(api)
  81. if request.method == 'GET':
  82. return JsonResponse(user_event.get_event(event_id))
  83. if request.method == 'POST':
  84. comment = request.POST.get('comment')
  85. remember = request.POST.get('remember')
  86. return JsonResponse(user_event.post_event_params(event_id, comment, remember))
  87. if request.method == 'PUT':
  88. event_date = request.PUT.get('event_date')
  89. event_name = request.PUT.get('event_name')
  90. return JsonResponse(user_event.put_event(event_id, event_name, event_date))
  91. if request.method == 'DELETE':
  92. comment_id = request.DELETE.get('comment_id')
  93. remember_id = request.DELETE.get('remember_id')
  94. return JsonResponse(user_event.delete_event_params(event_id, comment_id, remember_id))
  95. @csrf_exempt
  96. def private_task_api(request, api, task_id):
  97. if not User.objects.filter(api_key=api).exists():
  98. return JsonResponse({'error': 'wrong api key'})
  99. username = user_manager.get_username(api)
  100. schedule_helper.check_updates(username)
  101. user_task = private_task.PrivateTask(api)
  102. if request.method == 'GET':
  103. return JsonResponse(user_task.get_task(task_id))
  104. if request.method == 'POST':
  105. repeat = request.POST.get('repeat')
  106. remember = request.POST.get('remember')
  107. subtask = request.POST.get('subtask')
  108. comment = request.POST.get('comment')
  109. return JsonResponse(user_task.post_task_params(task_id, repeat, remember, subtask, comment))
  110. if request.method == 'PUT':
  111. task_name = request.PUT.get('task_name')
  112. task_status = request.PUT.get('task_status')
  113. task_deadline = request.PUT.get('task_deadline')
  114. subtask_id = request.PUT.get('subtask_id')
  115. subtask_status = request.PUT.get('subtask_status')
  116. return JsonResponse(user_task.put_task(task_id, task_name, task_status, task_deadline, subtask_id,
  117. subtask_status))
  118. if request.method == 'DELETE':
  119. repeat_id = request.DELETE.get('repeat_id')
  120. remember_id = request.DELETE.get('remember_id')
  121. subtask_id = request.DELETE.get('subtask_id')
  122. comment_id = request.DELETE.get('comment_id')
  123. return JsonResponse(user_task.delete_task_params(task_id, comment_id, subtask_id, repeat_id,
  124. remember_id))
  125. @csrf_exempt
  126. def public_task_api(request, api, list_id, task_id):
  127. if not User.objects.filter(api_key=api).exists():
  128. return JsonResponse({'error': 'wrong api key'})
  129. user_task = public_task.PublicTask(api)
  130. if request.method == 'GET':
  131. return JsonResponse(user_task.get_public_task(list_id, task_id))
  132. if request.method == 'POST':
  133. subtask = request.POST.get('subtask')
  134. comment = request.POST.get('comment')
  135. executor = request.POST.get('executor')
  136. return JsonResponse(user_task.post_public_task_params(list_id, task_id, comment, subtask, executor))
  137. if request.method == 'PUT':
  138. task_name = request.PUT.get('task_name')
  139. status = request.PUT.get('task_status')
  140. deadline = request.PUT.get('task_deadline')
  141. subtask_id = request.PUT.get('subtask_id')
  142. subtask_status = request.PUT.get('subtask_status')
  143. return JsonResponse(user_task.put_public_task(list_id, task_id, task_name, status, deadline, subtask_id,
  144. subtask_status))
  145. if request.method == 'DELETE':
  146. subtask_id = request.DELETE.get('subtask_id')
  147. comment_id = request.DELETE.get('comment_id')
  148. executor = request.DELETE.get('executor')
  149. return JsonResponse(user_task.delete_public_task_params(list_id, task_id, comment_id, subtask_id, executor))
  150. @csrf_exempt
  151. def list_api(request, api, list_id):
  152. if not User.objects.filter(api_key=api).exists():
  153. return JsonResponse({'error': 'wrong api key'})
  154. user_list = list.List(api)
  155. if request.method == 'POST':
  156. new_user = request.POST.get('new_user')
  157. print(new_user)
  158. return JsonResponse(user_list.post_list_params(list_id, new_user))
  159. if request.method == 'PUT':
  160. list_name = request.PUT.get('list_name')
  161. return JsonResponse(user_list.put_list(list_id, list_name))
  162. if request.method == 'DELETE':
  163. new_user = request.DELETE.get('new_user')
  164. return JsonResponse(user_list.delete_list_params(list_id, new_user))
  165. @csrf_exempt
  166. def habits_api(request, api):
  167. if not User.objects.filter(api_key=api).exists():
  168. return JsonResponse({'error': 'wrong api key'})
  169. username = user_manager.get_username(api)
  170. schedule_helper.check_updates(username)
  171. user_habit = habit.Habit(api)
  172. if request.method == 'POST':
  173. habit_name = request.POST.get('habit_name')
  174. return JsonResponse(user_habit.post_habit(habit_name))
  175. if request.method == 'GET':
  176. return JsonResponse(user_habit.get_habits())
  177. if request.method == 'DELETE':
  178. habit_id = request.DELETE.get('habit_id')
  179. return JsonResponse(user_habit.delete_habit(habit_id))
  180. @csrf_exempt
  181. def events_api(request, api):
  182. if not User.objects.filter(api_key=api).exists():
  183. return JsonResponse({'error': 'wrong api key'})
  184. user_event = event.Event(api)
  185. if request.method == 'POST':
  186. event_name = request.POST.get('event_name')
  187. event_date = request.POST.get('event_date')
  188. return JsonResponse(user_event.post_event(event_name, event_date))
  189. if request.method == 'GET':
  190. return JsonResponse(user_event.get_events())
  191. if request.method == 'DELETE':
  192. event_id = request.DELETE.get('event_id')
  193. return JsonResponse(user_event.delete_event(event_id))
  194. @csrf_exempt
  195. def private_tasks_api(request, api):
  196. if not User.objects.filter(api_key=api).exists():
  197. return JsonResponse({'error': 'wrong api key'})
  198. username = user_manager.get_username(api)
  199. schedule_helper.check_updates(username)
  200. user_task = private_task.PrivateTask(api)
  201. if request.method == 'POST':
  202. task_name = request.POST.get('task_name')
  203. return JsonResponse(user_task.post_task(task_name))
  204. if request.method == 'GET':
  205. return JsonResponse(user_task.get_tasks())
  206. if request.method == 'DELETE':
  207. task_id = request.DELETE.get('task_id')
  208. return JsonResponse(user_task.delete_task(task_id))
  209. @csrf_exempt
  210. def public_tasks_api(request, api, list_id):
  211. if not User.objects.filter(api_key=api).exists():
  212. return JsonResponse({'error': 'wrong api key'})
  213. user_task = public_task.PublicTask(api)
  214. if request.method == 'POST':
  215. task_name = request.POST.get('task_name')
  216. return JsonResponse(user_task.post_public_tasks(list_id, task_name))
  217. if request.method == 'GET':
  218. return JsonResponse(user_task.get_public_tasks(list_id))
  219. if request.method == 'DELETE':
  220. task_id = request.DELETE.get('task_id')
  221. return JsonResponse(user_task.delete_public_task(list_id, task_id))
  222. @csrf_exempt
  223. def lists_api(request, api):
  224. if not User.objects.filter(api_key=api).exists():
  225. return JsonResponse({'error': 'wrong api key'})
  226. user_list = list.List(api)
  227. if request.method == 'POST':
  228. list_name = request.POST.get('list_name')
  229. return JsonResponse(user_list.post_lists(list_name))
  230. if request.method == 'GET':
  231. return JsonResponse(user_list.get_lists())
  232. if request.method == 'DELETE':
  233. list_id = request.DELETE.get('list_id')
  234. return JsonResponse(user_list.delete_list(list_id))
  235. def remembers_api(request, api):
  236. if not User.objects.filter(api_key=api).exists():
  237. return JsonResponse({'error': 'wrong api key'})
  238. username = user_manager.get_username(api)
  239. schedule_helper.check_updates(username)
  240. user_event = event.Event(api)
  241. user_task = private_task.PrivateTask(api)
  242. if request.method == 'GET':
  243. remembers_events = user_event.check_remembers()
  244. remembers_tasks = user_task.check_remembers()
  245. return JsonResponse({'events': remembers_events, 'tasks': remembers_tasks})
  246. @csrf_exempt
  247. def task_info(request, username, task_id):
  248. task = weekly_task_manager.find_user_task(username, task_id)
  249. return render(request, 'tasker/task.html', {'name': task.task.name,
  250. 'deadline': ' '.join(str(task.task.deadline)[0:-9].split('T')),
  251. 'subtasks': task.task.subtasks.all(),
  252. 'status': task.task.status,
  253. 'task_id': task_id,
  254. 'comments': task.task.comments.all(),
  255. 'remembers': task.remember.all(),
  256. 'repeats': task_helper.task_repeats(username, task_id),
  257. 'username': username})
  258. @csrf_exempt
  259. def create_task(request, username):
  260. task_name = request.POST.get('title')
  261. if request.method == 'POST' and request.session.get('username') == username and task_name != '':
  262. weekly_task_manager.add_weeklytask(username, task_name)
  263. return redirect('/profiles/{}'.format(username))
  264. @csrf_exempt
  265. def change_task(request, username, task_id):
  266. if request.method == 'GET' and request.session.get('username') == username:
  267. task = weekly_task_manager.find_user_task(username, task_id)
  268. return render(request, 'tasker/task_change.html', {'username': username,
  269. 'task_id': task_id,
  270. 'task_name': task.task.name})
  271. if request.method == 'POST' and request.session.get('username') == username:
  272. name = request.POST.get('title')
  273. date = request.POST.get('date')
  274. time = request.POST.get('time')
  275. status = request.POST.get('status')
  276. if name != '':
  277. weekly_task_manager.change_weeklytask_name(username, task_id, name)
  278. if date != '':
  279. if time == '':
  280. time = "00:00"
  281. deadline = date + ' ' + time
  282. weekly_task_manager.change_weeklytask_deadline(username, task_id, deadline)
  283. if status != '':
  284. weekly_task_manager.change_weeklytask_status(username, task_id, status)
  285. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  286. @csrf_exempt
  287. def delete_task(request, username, task_id):
  288. if request.method == 'POST' and request.session.get('username') == username:
  289. weekly_task_manager.delete_weeklytask(username, task_id)
  290. return redirect('/profiles/{}'.format(username))
  291. @csrf_exempt
  292. def add_subtask(request, username, task_id):
  293. subtask_name = request.POST.get('title')
  294. if request.method == 'POST' and request.session.get('username') == username and subtask_name != '':
  295. weekly_task_manager.add_weeklytask_subtask(username, task_id, subtask_name)
  296. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  297. @csrf_exempt
  298. def change_subtask(request, username, task_id, subtask_id):
  299. subtask_status = request.POST.get('subtask_status')
  300. if request.method == 'POST' and request.session.get('username') == username:
  301. if subtask_status is None:
  302. weekly_task_manager.change_weeklytask_subtask_status(username, task_id, subtask_id, 'NS')
  303. else:
  304. weekly_task_manager.change_weeklytask_subtask_status(username, task_id, subtask_id, 'F')
  305. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  306. @csrf_exempt
  307. def delete_subtask(request, username, task_id, subtask_id):
  308. if request.method == 'POST' and request.session.get('username') == username:
  309. weekly_task_manager.delete_weeklytask_subtask(username, task_id, subtask_id)
  310. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  311. @csrf_exempt
  312. def add_comment(request, username, task_id):
  313. comment = request.POST.get('text')
  314. if request.method == 'POST' and request.session.get('username') == username and comment != '':
  315. weekly_task_manager.add_weeklytask_comment(username, task_id, comment)
  316. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  317. @csrf_exempt
  318. def delete_comment(request, username, task_id, comment_id):
  319. if request.method == 'POST' and request.session.get('username') == username:
  320. weekly_task_manager.delete_weeklytask_comment(username, task_id, comment_id)
  321. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  322. @csrf_exempt
  323. def add_remember(request, username, task_id):
  324. if request.method == 'POST' and request.session.get('username') == username:
  325. date = request.POST.get('date')
  326. time = request.POST.get('time')
  327. print(time)
  328. print(date)
  329. if date != '':
  330. if time == '':
  331. time = '00:00'
  332. remember = date + ' ' + time
  333. weekly_task_manager.add_weeklytask_remember(username, task_id, remember)
  334. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  335. @csrf_exempt
  336. def delete_remember(request, username, task_id, remember_id):
  337. if request.method == 'POST' and request.session.get('username') == username:
  338. weekly_task_manager.delete_weeklytask_remember(username, task_id, remember_id)
  339. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  340. @csrf_exempt
  341. def add_repeat(request, username, task_id):
  342. if request.method == 'POST' and request.session.get('username') == username:
  343. repeat = request.POST.get('repeat')
  344. if repeat != '':
  345. weekly_task_manager.add_weeklytask_repeat(username, task_id, repeat)
  346. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  347. @csrf_exempt
  348. def delete_repeat(request, username, task_id, repeat_id):
  349. if request.method == 'POST' and request.session.get('username') == username:
  350. weekly_task_manager.delete_weeklytask_repeat(username, task_id, repeat_id)
  351. return redirect('/profiles/{}/tasks/{}'.format(username, task_id))
  352. @csrf_exempt
  353. def create_list(request, username):
  354. list_name = request.POST.get('title')
  355. if request.method == 'POST' and request.session.get('username') == username and list_name != '':
  356. public_task_manager.create_public_list(username, list_name)
  357. return redirect('/profiles/{}'.format(username))
  358. @csrf_exempt
  359. def change_list(request, username, list_id):
  360. if request.method == 'GET' and request.session.get('username') == username:
  361. public_list = public_task_manager.get_user_list(username, list_id)
  362. return render(request, 'tasker/list_change.html', {'public_list': public_list, 'username': username})
  363. if request.method == 'POST' and request.session.get('username') == username:
  364. title = request.POST.get('title')
  365. new_user = request.POST.get('new_user')
  366. if title != '':
  367. public_task_manager.change_public_list_name(username, list_id, title)
  368. if new_user != '':
  369. public_task_manager.add_public_list_user(username, new_user, list_id)
  370. return redirect('/profiles/{}'.format(username))
  371. @csrf_exempt
  372. def delete_list(request, username, list_id):
  373. if request.method == 'POST' and request.session.get('username') == username:
  374. public_task_manager.delete_public_list(username, list_id)
  375. return redirect('/profiles/{}'.format(username))
  376. @csrf_exempt
  377. def create_public_task(request, username, list_id):
  378. task_name = request.POST.get('title')
  379. if request.method == 'POST' and request.session.get('username') == username and task_name != '':
  380. public_task_manager.create_public_task(username, list_id, task_name)
  381. return redirect('/profiles/{}'.format(username))
  382. @csrf_exempt
  383. def public_task_info(request, username, list_id, task_id):
  384. task = public_task_manager.get_list_task(username, list_id, task_id)
  385. return render(request, 'tasker/public_task.html', {'name': task.task.name,
  386. 'deadline': ' '.join(str(task.task.deadline)[0:-9].split('T')),
  387. 'subtasks': task.task.subtasks.all(),
  388. 'comments': task.task.comments.all(),
  389. 'status': task.task.status,
  390. 'task_id': task_id,
  391. 'list_id': list_id,
  392. 'username': username,
  393. 'executors': task.executors.all()})
  394. @csrf_exempt
  395. def change_public_task(request, username, list_id, task_id):
  396. if request.method == 'GET' and request.session.get('username') == username:
  397. task = public_task_manager.get_list_task(username, list_id, task_id)
  398. public_list = public_task_manager.get_user_list(username, list_id)
  399. return render(request, 'tasker/public_task_change.html', {'username': username,
  400. 'list_id': list_id,
  401. 'task_id': task_id,
  402. 'public_list': public_list,
  403. 'task_name': task.task.name})
  404. if request.method == 'POST' and request.session.get('username') == username:
  405. name = request.POST.get('title')
  406. date = request.POST.get('date')
  407. time = request.POST.get('time')
  408. status = request.POST.get('status')
  409. user = request.POST.get('user')
  410. if name != '':
  411. public_task_manager.change_public_task_name(username, list_id, task_id, name)
  412. if date != '':
  413. if time == '':
  414. time = "00:00"
  415. deadline = date + ' ' + time
  416. public_task_manager.change_public_task_deadline(username, list_id, task_id, deadline)
  417. if status != '':
  418. public_task_manager.change_public_task_status(username, list_id, task_id, status)
  419. if user != '':
  420. public_task_manager.add_task_executor(username, user, list_id, task_id)
  421. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  422. @csrf_exempt
  423. def delete_public_task(request, username, list_id, task_id):
  424. if request.method == 'POST' and request.session.get('username') == username:
  425. public_task_manager.delete_public_task(username, list_id, task_id)
  426. return redirect('/profiles/{}'.format(username))
  427. @csrf_exempt
  428. def add_public_subtask(request, username, list_id, task_id):
  429. subtask_name = request.POST.get('title')
  430. if request.method == 'POST' and request.session.get('username') == username and subtask_name != '':
  431. public_task_manager.add_public_task_subtask(username, list_id, task_id, subtask_name)
  432. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  433. @csrf_exempt
  434. def change_public_subtask(request, username, list_id, task_id, subtask_id):
  435. subtask_status = request.POST.get('subtask_status')
  436. if request.method == 'POST' and request.session.get('username') == username:
  437. if subtask_status is None:
  438. public_task_manager.change_public_task_subtask_status(username, list_id, task_id, subtask_id, 'NS')
  439. else:
  440. public_task_manager.change_public_task_subtask_status(username, list_id, task_id, subtask_id, 'F')
  441. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  442. @csrf_exempt
  443. def delete_public_subtask(request, username, list_id, task_id, subtask_id):
  444. if request.method == 'POST' and request.session.get('username') == username:
  445. public_task_manager.delete_public_task_subtask(username, list_id, task_id, subtask_id)
  446. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  447. @csrf_exempt
  448. def add_public_comment(request, username, list_id, task_id):
  449. comment = request.POST.get('text')
  450. if request.method == 'POST' and request.session.get('username') == username and comment != '':
  451. public_task_manager.add_public_task_comment(username, list_id, task_id, comment)
  452. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  453. @csrf_exempt
  454. def delete_public_comment(request, username, list_id, task_id, comment_id):
  455. if request.method == 'POST' and request.session.get('username') == username:
  456. public_task_manager.delete_public_task_comment(username, list_id, task_id, comment_id)
  457. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  458. @csrf_exempt
  459. def delete_task_executor(request, username, list_id, task_id, new_user):
  460. if request.method == 'POST' and request.session.get('username') == username:
  461. public_task_manager.delete_task_executor(username, new_user, list_id, task_id)
  462. return redirect('/profiles/{}/lists/{}/tasks/{}'.format(username, list_id, task_id))
  463. @csrf_exempt
  464. def habits_info(request, username):
  465. schedule_helper.check_updates(username)
  466. habits = habit_tracker_manager.get_user_habits(username)
  467. return render(request, 'tasker/habit_tracker.html', {'habits': habits,
  468. 'username': username})
  469. @csrf_exempt
  470. def add_habit(request, username):
  471. habit_name = request.POST.get('title')
  472. if request.method == 'POST' and request.session.get('username') == username and habit_name != '':
  473. habit_tracker_manager.create_habit(username, habit_name)
  474. return redirect('/profiles/{}/habits'.format(username))
  475. @csrf_exempt
  476. def change_habit(request, username, habit_id):
  477. habit_name = request.POST.get('title')
  478. habit_timeline = request.POST.get('timeline')
  479. if request.method == 'GET' and request.session.get('username') == username:
  480. habit = habit_tracker_manager.get_user_habit(username, habit_id)
  481. return render(request, 'tasker/habit_change.html', {'habit': habit,
  482. 'username': username})
  483. if request.method == 'POST' and request.session.get('username') == username:
  484. habit = habit_tracker_manager.get_user_habit(username, habit_id)
  485. if habit_name != '':
  486. habit_tracker_manager.change_habit_name(username, habit_id, habit_name)
  487. if habit_timeline != '' and habit_timeline.isdigit() and int(habit_timeline) >= habit.count:
  488. habit_tracker_manager.change_habit_timeline(username, habit_id, habit_timeline)
  489. return redirect('/profiles/{}/habits'.format(username))
  490. @csrf_exempt
  491. def delete_habit(request, username, habit_id):
  492. if request.method == 'POST' and request.session.get('username') == username:
  493. habit_tracker_manager.delete_habit(username, habit_id)
  494. return redirect('/profiles/{}/habits'.format(username))
  495. @csrf_exempt
  496. def change_habit_status(request, username, habit_id):
  497. habit_status = request.POST.get('habit_status')
  498. if request.method == 'POST' and request.session.get('username') == username:
  499. if habit_status is None:
  500. habit_tracker_manager.change_habit_status(username, habit_id, 'NS')
  501. else:
  502. habit_tracker_manager.change_habit_status(username, habit_id, 'F')
  503. return redirect('/profiles/{}/habits'.format(username))
  504. @csrf_exempt
  505. def remember_info(request, username):
  506. remembers = remembers_helper.check_remembers(username)
  507. return render(request, 'tasker/remembers.html', {'remembers': remembers,
  508. 'username': username})