Esempio n. 1
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)
Esempio 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'))
Esempio n. 3
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'))
Esempio n. 4
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)
Esempio n. 5
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.')
Esempio n. 6
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)
Esempio n. 7
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)
Esempio n. 8
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.')
Esempio n. 9
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)
Esempio n. 10
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'))
Esempio n. 11
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'))
Esempio n. 12
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:
        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)
Esempio n. 13
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)