Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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'))
Exemplo n.º 3
0
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.')
Exemplo n.º 4
0
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) + '/')
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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'))
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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.')
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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'))
Exemplo n.º 13
0
def first_login(request):
    context = {
        'content': 'approver/first_login.html',
    }
    return utils.layout_render(request,context)
Exemplo n.º 14
0
def error404(request):
    context = {
        'content': 'approver/404.html',
    }
    return utils.layout_render(request,context)
Exemplo n.º 15
0
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)
Exemplo n.º 16
0
def index(request):
    context = {
        'content': 'approver/index.html',
    }
    return utils.layout_render(request, context)