示例#1
0
def _get_projects(query, request_user=None):
    projects = Project.objects.filter(query)

    if not request_user.is_project_admin():
        membs = request_user.projectmembership_set.any_accepted()
        memb_projects = membs.values_list("project", flat=True)
        is_memb = Q(id__in=memb_projects)
        owned = (Q(application__owner=request_user) |
                 Q(application__applicant=request_user))
        active = Project.o_state_q(Project.O_ACTIVE)
        projects = projects.filter(is_memb | owned | active)
    return projects.select_related(
        "application", "application__owner", "application__applicant")
示例#2
0
def project_search(request):
    q = request.GET.get('q', '')
    form = ProjectSearchForm()
    q = q.strip()

    if request.method == "POST":
        form = ProjectSearchForm(request.POST)
        if form.is_valid():
            q = form.cleaned_data['q'].strip()
        else:
            q = None

    if q is None:
        projects = Project.objects.none()
    else:
        accepted = request.user.projectmembership_set.filter(
            state__in=ProjectMembership.ACCEPTED_STATES).values_list('project',
                                                                     flat=True)

        projects = Project.objects.search_by_name(q)
        projects = projects.filter(Project.o_state_q(Project.O_ACTIVE))
        projects = projects.exclude(id__in=accepted).select_related(
            'application', 'application__owner', 'application__applicant')

    table = get_user_projects_table(projects,
                                    user=request.user,
                                    prefix="my_projects_")
    if request.method == "POST":
        table.caption = _('SEARCH RESULTS')
    else:
        table.caption = _('ALL PROJECTS')

    return object_list(request,
                       projects,
                       template_name='im/projects/project_list.html',
                       extra_context={
                           'form': form,
                           'is_search': True,
                           'q': q,
                           'table': table
                       })
示例#3
0
def project_search(request):
    q = request.GET.get('q', '')
    form = ProjectSearchForm()
    q = q.strip()

    if request.method == "POST":
        form = ProjectSearchForm(request.POST)
        if form.is_valid():
            q = form.cleaned_data['q'].strip()
        else:
            q = None

    if q is None:
        projects = Project.objects.none()
    else:
        accepted = request.user.projectmembership_set.filter(
            state__in=ProjectMembership.ACCEPTED_STATES).values_list(
            'project', flat=True)

        projects = Project.objects.search_by_name(q)
        projects = projects.filter(Project.o_state_q(Project.O_ACTIVE))
        projects = projects.exclude(id__in=accepted).select_related(
            'application', 'application__owner', 'application__applicant')

    table = get_user_projects_table(projects, user=request.user,
                                    prefix="my_projects_")
    if request.method == "POST":
        table.caption = _('SEARCH RESULTS')
    else:
        table.caption = _('ALL PROJECTS')

    return object_list(
        request,
        projects,
        template_name='im/projects/project_list.html',
        extra_context={
            'form': form,
            'is_search': True,
            'q': q,
            'table': table
        })
示例#4
0
def _project_state_query(val):
    if isinstance(val, list):
        states = [_get_project_state(v) for v in val]
        return Project.o_states_q(states)
    return Project.o_state_q(_get_project_state(val))