def approve(request, project_id=None): context = { 'content': 'approver/approve.html', 'project_id': project_id, 'toast_text': utils.get_and_reset_toast(request.session) } current_user = request.user if request.method == 'POST': question_form = request.POST project = project_crud.get_project_or_none(project_id) project = approve_workflow.save_project_with_form(project, question_form, request) request.access_log.model = project return approve_workflow.approve_or_next_steps(project, current_user) else: now = timezone.now() if(project_id): project = project_crud.get_project_or_none(project_id) if(project is None): return utils.dashboard_redirect_and_toast(request, 'Project with id {} does not exist.'.format(project_id)) else: if(project_crud.is_current_project_editable_by_user(current_user,project)): question_form = QuestionForm(project_id=project_id) context['sorted_questions'] = question_form.get_random_questions() return utils.layout_render(request, context) else: return utils.dashboard_redirect_and_toast(request, 'You are not authorized to edit this project.') else: return utils.dashboard_redirect_and_toast(request, 'You need to have a project.')
def approve(request, project_id=None): context = { 'content': 'approver/approve.html', 'project_id': project_id, } current_user = User.objects.get(username=utils.get_current_user_gatorlink(request.session)) if request.method == 'POST': question_form = request.POST project = project_crud.get_project_or_none(project_id) approve_workflow.save_project_with_form(project, question_form, request.session) return approve_workflow.approve_or_next_steps(project, current_user) else: now = timezone.now() if(project_id is not None): project = project_crud.get_project_or_none(project_id) if(project is None): return utils.dashboard_redirect_and_toast(request, 'Project with id {} does not exist.'.format(project_id)) else: if(project_crud.curent_user_is_project_owner(current_user, project) is not True or project.get_is_editable() is not True): return utils.dashboard_redirect_and_toast(request, 'You are not authorized to edit this project.') else: # need to be able to prefill this in case people have already # started approving their project but left question_form = QuestionForm(project_id=project_id) context['sorted_questions'] = question_form.get_sorted_questions() return utils.layout_render(request, context) else: return utils.dashboard_redirect_and_toast(request, 'You need to have a project.')
def similar_projects(request, project_id=None, from_page=None): project = project_crud.get_project_or_none(project_id) if project is None: utils.dashboard_redirect_and_toast( request, 'Invalid request'.format(project_id)) elif request.method == 'GET': project_scores = project_crud.get_similar_projects(project) if (len(project_scores) == 0): utils.set_toast(request.session, 'No relevant projects were found!') if (from_page == "dashboard"): return redirect(reverse("approver:dashboard")) else: return redirect( reverse("approver:approve") + str(project.id) + '/') context = { 'content': 'approver/similar_projects.html', 'project_scores': project_scores, 'project_id': project_id, 'registry_search_url': constants.registry_search_path } return utils.layout_render(request, context) elif request.method == 'POST': return redirect(reverse("approver:approve") + str(project.id) + '/')
def project(request, project_id=None): context = { 'content': 'approver/project.html', 'project_id': project_id, } current_user = User.objects.get( username=utils.get_current_user_gatorlink(request.session)) if request.method == 'POST': project_form = request.POST title = project_form.get('title') project = project_crud.get_project_or_none(project_id) if (project is None): project = project_crud.create_or_update_project( current_user, project_form, project_id) else: if project_crud.curent_user_is_project_owner( current_user, project) is True and project.get_is_editable(): project = project_crud.create_or_update_project( current_user, project_form, project_id) else: return utils.dashboard_redirect_and_toast( request, 'You are not allowed to edit this project'.format( project_id)) return redirect(reverse("approver:approve") + str(project.id) + '/') else: now = timezone.now() project_form = ProjectForm() context['form'] = project_form if (project_id is not None): project = project_crud.get_project_or_none(project_id) if (project is None): return utils.dashboard_redirect_and_toast( request, 'Project with id {} does not exist.'.format(project_id)) else: if (project_crud.curent_user_is_project_owner( current_user, project) is not True): if project_crud.current_user_is_project_advisor_or_collaborator( current_user, project): context['form'] = ProjectForm(project, is_disabled=True) return utils.layout_render(request, context) else: return utils.dashboard_redirect_and_toast( request, 'You are not authorized to edit this project.') else: if (project.get_is_editable() is not True): context['form'] = ProjectForm(project, is_disabled=True) return utils.layout_render(request, context) else: context['form'] = ProjectForm(project) return utils.layout_render(request, context) else: return utils.layout_render(request, context)
def about_you(request): context = { 'content': 'approver/about_you.html', 'toast_text': utils.get_and_reset_toast(request.session), 'su_edit':False, } if request.method == 'POST': about_you_form = request.POST person = request.user.person editing_user = request.user person = user_crud.update_user_from_about_you_form(person, about_you_form, editing_user) request.access_log.model = person if (not person.first_name.strip() or not person.last_name.strip()): return utils.about_you_redirect_and_toast(request, "First and last name are required.") return utils.dashboard_redirect_and_toast(request, 'Profile Saved!') else: user = request.user about_you_form = AboutYouForm(user=user) context['form'] = about_you_form context['empty_address'] = Address() return utils.layout_render(request, context)
def about_you(request): context = { 'content': 'approver/about_you.html', 'toast_text': utils.get_and_reset_toast(request.session), 'su_edit': False, } if request.method == 'POST': about_you_form = request.POST person = request.user.person editing_user = request.user person = user_crud.update_user_from_about_you_form( person, about_you_form, editing_user) request.access_log.model = person if (not person.first_name.strip() or not person.last_name.strip()): return utils.about_you_redirect_and_toast( request, "First and last name are required.") return utils.dashboard_redirect_and_toast(request, 'Profile Saved!') else: user = request.user about_you_form = AboutYouForm(user=user) context['form'] = about_you_form context['empty_address'] = Address() return utils.layout_render(request, context)
def approve(request, project_id=None): context = { 'content': 'approver/approve.html', 'project_id': project_id, 'toast_text': utils.get_and_reset_toast(request.session) } current_user = request.user if request.method == 'POST': question_form = request.POST project = project_crud.get_project_or_none(project_id) project = approve_workflow.save_project_with_form( project, question_form, request) request.access_log.model = project return approve_workflow.approve_or_next_steps(project, current_user) else: now = timezone.now() if (project_id): project = project_crud.get_project_or_none(project_id) if (project is None): return utils.dashboard_redirect_and_toast( request, 'Project with id {} does not exist.'.format(project_id)) else: if (project_crud.is_current_project_editable_by_user( current_user, project)): question_form = QuestionForm(project_id=project_id) context[ 'sorted_questions'] = question_form.get_random_questions( ) return utils.layout_render(request, context) else: return utils.dashboard_redirect_and_toast( request, 'You are not authorized to edit this project.') else: return utils.dashboard_redirect_and_toast( request, 'You need to have a project.')
def dashboard(request, project_id=None): if request.method == 'GET' or request.POST.get('search') is not None: return __shared_GET(request, project_id) elif request.method == 'POST': current_user = request.user project = project_crud.get_project_or_none(project_id) if (project_id is not None): toast_text = project_crud.current_user_can_perform_project_delete( current_user, project) return utils.dashboard_redirect_and_toast(request, toast_text) else: return redirect(reverse("approver:dashboard"))
def about_you(request): context = { 'content': 'approver/about_you.html', 'toast_text': None, } if request.method == 'POST': about_you_form = request.POST user = User.objects.get(username=about_you_form.get('user_name')) editing_user = User.objects.get( username=utils.get_current_user_gatorlink(request.session)) user_crud.update_user_from_about_you_form(user, about_you_form, editing_user) return utils.dashboard_redirect_and_toast(request, 'Profile Saved!') else: username = request.session.get(constants.SESSION_VARS['gatorlink']) user = User.objects.get(username=username) about_you_form = AboutYouForm(user=user) context['form'] = about_you_form context['empty_address'] = Address() return utils.layout_render(request, context)
def project(request, project_id=None): '''Project can be viewed only if it is not archived. SuperUser can edit the archived project''' context = { 'content': 'approver/project.html', 'project_id': project_id, 'toast_text': utils.get_and_reset_toast(request.session), } current_user = request.user if request.method == 'POST': project_form = request.POST title = project_form.get('title') project = project_crud.get_project_or_none(project_id) if(project is None): project = project_crud.create_or_update_project(current_user, project_form, project_id) request.access_log.model = project else: if project.archived and not project_crud.current_user_is_superuser(current_user): return utils.dashboard_redirect_and_toast(request, 'Project is Archived.') if project_crud.current_user_is_superuser(current_user): project = project_crud.create_or_update_project(current_user, project_form, project_id) request.access_log.model = project return utils.dashboard_su_redirect_and_toast(request, 'Project is Saved.') if (project_crud.current_user_is_project_owner(current_user, project) is True and project.get_is_editable() and not project.archived): project = project_crud.create_or_update_project(current_user, project_form, project_id) request.access_log.model = project else: return utils.dashboard_redirect_and_toast(request, 'You are not allowed to edit this project'.format(project_id)) if (not project.title.strip() or not project.description.strip()): return utils.project_redirect_and_toast(request, project.id, "Title and Description are required.") return redirect(reverse("approver:similar_projects", args=[str(project.id)])) else: now = timezone.now() project_form = ProjectForm() context['form'] = project_form if(project_id is not None): project = project_crud.get_project_or_none(project_id) if(project is None): return utils.dashboard_redirect_and_toast(request, 'Project with id {} does not exist.'.format(project_id)) else: if project.archived and not project_crud.current_user_is_superuser(current_user) : return utils.dashboard_redirect_and_toast(request, 'Project is Archived.') if(project_crud.is_current_project_editable(current_user, project) is not True): if project_crud.current_user_is_project_advisor_or_collaborator(current_user,project): context['form'] = ProjectForm(project,is_disabled=True) return utils.layout_render(request,context) else: return utils.dashboard_redirect_and_toast(request, 'You are not authorized to edit this project.') else: if (project.get_is_editable() is not True): if (project_crud.current_user_is_superuser(current_user)): context['form'] = ProjectForm(project,is_disabled=False) else: context['form'] = ProjectForm(project,is_disabled=True) return utils.layout_render(request,context) else: context['form'] = ProjectForm(project) return utils.layout_render(request, context) else: return utils.layout_render(request, context)
def project(request, project_id=None): '''Project can be viewed only if it is not archived. SuperUser can edit the archived project''' context = { 'content': 'approver/project.html', 'project_id': project_id, 'toast_text': utils.get_and_reset_toast(request.session), } current_user = request.user if request.method == 'POST': project_form = request.POST title = project_form.get('title') project = project_crud.get_project_or_none(project_id) if (project is None): project = project_crud.create_or_update_project( current_user, project_form, project_id) request.access_log.model = project else: if project.archived and not project_crud.current_user_is_superuser( current_user): return utils.dashboard_redirect_and_toast( request, 'Project is Archived.') if project_crud.current_user_is_superuser(current_user): project = project_crud.create_or_update_project( current_user, project_form, project_id) request.access_log.model = project return utils.dashboard_su_redirect_and_toast( request, 'Project is Saved.') if (project_crud.current_user_is_project_owner( current_user, project) is True and project.get_is_editable() and not project.archived): project = project_crud.create_or_update_project( current_user, project_form, project_id) request.access_log.model = project else: return utils.dashboard_redirect_and_toast( request, 'You are not allowed to edit this project'.format( project_id)) if (not project.title.strip() or not project.description.strip()): return utils.project_redirect_and_toast( request, project.id, "Title and Description are required.") return redirect( reverse("approver:similar_projects", args=[str(project.id)])) else: project_form = ProjectForm() context['form'] = project_form if (project_id is not None): project = project_crud.get_project_or_none(project_id) if (project is None): return utils.dashboard_redirect_and_toast( request, 'Project with id {} does not exist.'.format(project_id)) else: user_can_edit = project_crud.is_current_project_editable_by_user( current_user, project) if project_crud.current_user_is_superuser(current_user): context['form'] = ProjectForm( project, is_disabled=not user_can_edit) return utils.layout_render(request, context) elif project.archived: toast_message = 'Project is archived.' return utils.dashboard_redirect_and_toast( request, 'Project is Archived.') else: context['form'] = ProjectForm( project, is_disabled=not user_can_edit) return utils.layout_render(request, context) else: #new form return utils.layout_render(request, context)