def admin_del_user(request): """ This function is used to delete the user by admin. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'POST': if request.session.keys(): handle = request.session.get("handle") user_type = request.session.get("user_type") if viewhelper.is_admin(user_type): user = models.get_user(handle=handle) fd = request.POST del_user_handle = fd.get("del_user_handle") message = "Invalid handle" if del_user_handle is not None: message = "User does not exists" del_user = models.get_user(del_user_handle) if del_user is not None and viewhelper.is_user( del_user.user_type): models.admin_del_user(handle=del_user_handle) message = "User Deleted" context = {'user': user, 'message': message} return render(request, 'janta/admin.html', context) return redirect("/janta/index/") return redirect("/janta/login/")
def login(request): """ This function deals with the login of user by request. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'POST': form = forms.LoginForm(request.POST) message = 'Invalid form please try again' if form.is_valid(): login_data = form.cleaned_data handle = login_data.get("handle") password = login_data.get("password") status, message = viewhelper.validate_login(handle, password) if status: user = models.get_user(handle) viewhelper.set_session(request, user) if viewhelper.is_admin(user.user_type): return redirect("/janta/admin/") if viewhelper.is_moderator(user.user_type): return redirect("/janta/moderator/") if viewhelper.is_user(user.user_type): return redirect("/janta/user/") message = 'Session creation failed please try again' context = {'login_form': form, 'message': message} return render(request, 'janta/login.html', context) elif request.method == 'GET': # do not redirect here otherwise it will fall in loop or change url pattern instead form = forms.LoginForm() context = {'login_form': form} return render(request, 'janta/login.html', context)
def submit_task(request): """ This function submits the task by request. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'POST': if request.session.keys(): handle = request.session.get("handle") user_type = request.session.get("user_type") if viewhelper.is_user(user_type): fd = request.POST task_id = fd.get("task_id") task = models.get_task(task_id=task_id) if task is not None: if viewhelper.is_info(task_type=task.task_type): models.submit_task(task_id=task_id, handle=handle, submission="") return redirect('/janta/submitted-tasks/') elif viewhelper.is_text(task_type=task.task_type): models.submit_task(task_id=task_id, handle=handle, submission=fd.get("input_txt")) return redirect('/janta/submitted-tasks/') elif viewhelper.is_upload(task_type=task.task_type): file = request.FILES.get("input_file") if file is not None and viewhelper.is_file_name( file.name): path = viewhelper.save_file(file=file, handle=handle, task_id=task_id) models.submit_task(task_id=task_id, handle=handle, submission=path) return redirect('/janta/submitted-tasks/') user = models.get_user(handle) message = 'Invalid file name please submit again. file name regex: [a-zA-Z0-9_. ]{1,45}' return render(request, 'janta/error.html', context={ 'message': message, 'user': user }) return redirect("/janta/index/") return redirect("/janta/login/")
def submitted_tasks(request): """ This function keeps track of the submitted task by request. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'GET': if request.session.keys(): handle = request.session.get("handle") user_type = request.session.get("user_type") if viewhelper.is_user(user_type): fn_tasks = models.get_submitted_tasks(handle=handle) user = models.get_user(handle) context = {'submitted_task': fn_tasks, 'user': user} return render(request, 'janta/submitted-tasks.html', context) return redirect("/janta/index/") return redirect("/janta/login/") if request.method == 'POST': return redirect("/janta/index/")
def overdue_tasks(request): """ This function maintains the overdue task by request. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'GET': if request.session.keys(): handle = request.session.get("handle") user_type = request.session.get("user_type") if viewhelper.is_user(user_type): over_tasks = models.get_overdue_tasks(handle=handle) user = models.get_user(handle) context = {'overdue_tasks': over_tasks, 'user': user} return render(request, 'janta/overdue-tasks.html', context) return redirect("/janta/index/") return redirect("/janta/login/") if request.method == 'POST': return redirect("/janta/index/")
def user_home(request): """ This function handles the notification by request. :type request: http request :param request: the request sent for the task :return: redirecting to the page according to http request """ if request.method == 'GET': if request.session.keys(): handle = request.session.get("handle") user_type = request.session.get("user_type") if viewhelper.is_user(user_type): ong_tasks = models.get_recent_ongoing_tasks(handle=handle) user = models.get_user(handle) notifications = models.get_notifications(handle) context = { 'rcnt_ong_tasks': ong_tasks, 'user': user, 'notifications': notifications } return render(request, 'janta/user.html', context) return redirect("/janta/index/") return redirect("/janta/login/")