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 userlist(request): if request.method == 'GET' or request.POST.get('search') is not None: persons_page = [] search_query = "" if (request.POST.get('search') is not None): search_query = request.POST.get('search') person_list = Person.objects.filter( Q(gatorlink__icontains=search_query)) else: person_list = Person.objects.all() paginator = Paginator(person_list, users_per_page) page = request.GET.get('page') if page == 'all': persons_page = person_list else: try: persons_page = paginator.page(page) except PageNotAnInteger: persons_page = paginator.page(1) except EmptyPage: persons_page = paginator.page(paginator.num_pages) context = { 'content': 'approver/userlist.html', 'persons_page': persons_page, 'show_all': page == 'all', 'search_query': search_query, 'toast_text': utils.get_and_reset_toast(request.session), } return utils.layout_render(request, context) else: return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
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 about_you_superuser(request, person_id=None): '''Super Users should be able to view/change all the user information with About You form. Users that are created through Django Admin and have no person assosiated will not be editable by super user''' context = { 'content': 'approver/about_you.html', 'toast_text': utils.get_and_reset_toast(request.session), 'su_edit': True, 'userid': person_id, } if request.method == 'POST': about_you_form = request.POST person = Person.objects.get(id=person_id) editing_user = request.user person = user_crud.update_user_from_about_you_form( person, about_you_form, editing_user) request.access_log.model = person return utils.userlist_su_redirect_and_toast(request, "Profile Saved!") else: person = Person.objects.get(id=person_id) about_you_form = AboutYouForm(user=None, person=person) 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 unsupported_browser(request): if request.method == 'GET': context = { 'content': 'approver/unsupported_browser.html', 'navbar_display': 'none', 'hide_stats': True, } return layout_render(request, context) elif request.method == 'POST': request.session['proceed_anyway'] = True return redirect(reverse('approver:index'))
def project_status(request, project_id=None): context = { 'content': 'approver/project_status.html', 'is_approved': False, 'need_advisor': False, } project = project_crud.get_project_or_none(project_id) #Returns true if the project needs an associated advisor. if (project.get_need_advisor()): context['need_advisor'] = True # Returns desired project and True if approval was confirmed & time stamped if project.approval_date: context['is_approved'] = True context['project'] = project 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 __shared_GET(request, project_id, super_user=None): search_query = "" if (request.POST.get('search') is not None): search_query = request.POST.get('search') projects = [] if super_user: projects_list = sorted(get_project_context(request, search_query, super_user), key=itemgetter('last_modified'), reverse=True) else: projects_list = sorted(get_project_context(request, search_query), key=itemgetter('last_modified'), reverse=True) paginator = Paginator(projects_list, projects_per_page) page = request.GET.get('page') try: if page == 'all': projects = projects_list else: projects = paginator.page(page) except PageNotAnInteger: projects = paginator.page(1) except EmptyPage: projects = paginator.page(paginator.num_pages) person = request.user.person context = { 'content': 'approver/dashboard.html' if not super_user else 'approver/dashboard_su.html', 'projects': projects, 'toast_text': utils.get_and_reset_toast(request.session), 'search_query': search_query, 'show_all': page == 'all', 'person': person } return utils.layout_render(request, context)
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 userlist(request): if request.method == 'GET': persons_page = [] person_list = Person.objects.all() paginator = Paginator(person_list, users_per_page) page = request.GET.get('page') if page == 'all': persons_page = person_list else: try: persons_page = paginator.page(page) except PageNotAnInteger: persons_page = paginator.page(1) except EmptyPage: persons_page = paginator.page(paginator.num_pages) context = { 'content': 'approver/userlist.html', 'persons_page': persons_page, 'show_all': page == 'all', 'toast_text': utils.get_and_reset_toast(request.session), } return utils.layout_render(request, context) else: return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def first_login(request): context = { 'content': 'approver/first_login.html', } return utils.layout_render(request,context)
def error404(request): context = { 'content': 'approver/404.html', } 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)
def index(request): context = { 'content': 'approver/index.html', } return utils.layout_render(request, context)