예제 #1
0
파일: views.py 프로젝트: kerriwait/karaage
def join_project(request, project_id=None):
    config = tables.RequestConfig(request, paginate={"per_page": 5})
    person = request.user
    project_list = Project.objects.all()
    project_list = ProjectTable(project_list, prefix="all-")
    config.configure(project_list)

    delegate_project_list = Project.objects.filter(institute__delegates=person,
                                                   is_active=True)
    delegate_project_list = ProjectTable(delegate_project_list,
                                         prefix="delegate-")
    config.configure(delegate_project_list)

    leader_project_list = Project.objects.filter(leaders=person,
                                                 is_active=True)
    leader_project_list = ProjectTable(leader_project_list, prefix="leader-")
    config.configure(leader_project_list)

    return render_to_response('karaage/projects/join_project.html', {
        'person': person,
        'project_list': project_list,
        'delegate_project_list': delegate_project_list,
        'leader_project_list': leader_project_list
    },
                              context_instance=RequestContext(request))
예제 #2
0
def profile_projects(request):
    config = tables.RequestConfig(request, paginate={"per_page": 5})

    person = request.user
    project_list = person.projects.all()
    project_list = ProjectTable(project_list, prefix="mine-")
    config.configure(project_list)

    delegate_project_list = Project.objects.filter(institute__delegates=person,
                                                   is_active=True)
    delegate_project_list = ProjectTable(delegate_project_list,
                                         prefix="delegate-")
    config.configure(delegate_project_list)

    leader_project_list = Project.objects.filter(leaders=person,
                                                 is_active=True)
    leader_project_list = ProjectTable(leader_project_list, prefix="leader-")
    config.configure(leader_project_list)

    return render(template_name='karaage/projects/profile_projects.html',
                  context={
                      'person': person,
                      'project_list': project_list,
                      'delegate_project_list': delegate_project_list,
                      'leader_project_list': leader_project_list
                  },
                  request=request)
예제 #3
0
def admin_index(request):
    config = tables.RequestConfig(request, paginate={"per_page": 5})

    newest_people = Person.objects.order_by('-date_approved', '-id')
    newest_people = newest_people.filter(date_approved__isnull=False)
    newest_people = newest_people.select_related()
    newest_people = PersonTable(
        newest_people, orderable=False, prefix="people-")
    config.configure(newest_people)

    newest_projects = Project.objects.order_by('-date_approved')
    newest_projects = newest_projects.filter(date_approved__isnull=False)
    newest_projects = newest_projects.filter(is_active=True)
    newest_projects = newest_projects.select_related()
    newest_projects = ProjectTable(
        newest_projects, orderable=False, prefix="projects-")
    config.configure(newest_projects)

    recent_actions = LogEntry.objects.order_by('-action_time', '-id')
    recent_actions = LogEntryTable(
        recent_actions, orderable=False, prefix="actions-")
    config.configure(recent_actions)

    var = {
        'newest_people': newest_people,
        'newest_projects': newest_projects,
        'recent_actions': recent_actions,
    }
    return render(
        template_name='karaage/common/index.html', context=var,
        request=request)
예제 #4
0
파일: views.py 프로젝트: kerriwait/karaage
def project_list(request, queryset=None):

    if queryset is None:
        queryset = Project.objects.all()

    if not util.is_admin(request):
        queryset = queryset.filter(
            Q(leaders=request.user, is_active=True)
            | Q(institute__delegates=request.user, is_active=True)
            | Q(group__members=request.user, is_active=True)).distinct()

    queryset = queryset.select_related()

    q_filter = ProjectFilter(request.GET, queryset=queryset)
    table = ProjectTable(q_filter.qs)
    tables.RequestConfig(request).configure(table)

    spec = []
    for name, value in six.iteritems(q_filter.form.cleaned_data):
        if value is not None and value != "":
            name = name.replace('_', ' ').capitalize()
            spec.append((name, value))

    return render_to_response('karaage/projects/project_list.html', {
        'table': table,
        'filter': q_filter,
        'spec': spec,
        'title': "Project list",
    },
                              context_instance=RequestContext(request))
예제 #5
0
def search(request):
    config = tables.RequestConfig(request, paginate={"per_page": 5})

    if 'sitesearch' in request.GET and request.GET['sitesearch'].strip() != "":
        people_list = Person.objects.all()
        group_list = Group.objects.all()
        project_list = Project.objects.all()

        new_data = request.GET.copy()
        siteterms = new_data['sitesearch'].lower()
        term_list = siteterms.split(' ')

        # people
        query = Q()
        for term in term_list:
            q = Q(username__icontains=term)
            q = q | Q(short_name__icontains=term)
            q = q | Q(full_name__icontains=term)
            q = q | Q(email__icontains=term)
            query = query & q

        people_list = people_list.filter(query).distinct()
        people_list = PersonTable(people_list, prefix="people-")
        config.configure(people_list)

        # groups
        query = Q()
        for term in term_list:
            q = Q(name__icontains=term) | Q(description__icontains=term)
            query = query & q

        group_list = group_list.filter(query)
        group_list = GroupTable(group_list, prefix="group-")
        config.configure(group_list)

        # projects
        query = Q()
        for term in term_list:
            q = Q(pid__icontains=term)
            q = q | Q(name__icontains=term)
            q = q | Q(leaders__username__icontains=term)
            q = q | Q(leaders__short_name__icontains=term)
            q = q | Q(leaders__full_name__icontains=term)
            query = query & q

        project_list = project_list.filter(query).distinct()
        project_list = ProjectTable(project_list, prefix="project-")
        config.configure(project_list)

        return render(
            template_name='karaage/common/site_search.html',
            context=locals(),
            request=request)
    else:
        return HttpResponseRedirect(reverse('index'))
예제 #6
0
def category_projects(request, category_id):
    machine_category = get_object_or_404(MachineCategory, pk=category_id)

    queryset = Project.objects.filter(
        projectquota__machine_category=machine_category)
    table = ProjectTable(queryset)
    tables.RequestConfig(request).configure(table)

    return render_to_response('karaage/machines/machinecategory_projects.html',
                              {
                                  'machine_category': machine_category,
                                  'table': table
                              },
                              context_instance=RequestContext(request))
예제 #7
0
def category_projects(request, category_id):
    machine_category = get_object_or_404(MachineCategory, pk=category_id)

    queryset = Project.objects.filter(
        projectquota__machine_category=machine_category)
    table = ProjectTable(queryset)
    tables.RequestConfig(request).configure(table)

    return render(
        template_name='karaage/machines/machinecategory_projects.html',
        context={
            'machine_category': machine_category,
            'table': table
        },
        request=request)
예제 #8
0
def institute_detail(request, institute_id):
    config = tables.RequestConfig(request, paginate={"per_page": 5})

    institute = get_object_or_404(Institute, pk=institute_id)
    if not institute.can_view(request):
        return HttpResponseForbidden(
            '<h1>Access Denied</h1>'
            '<p>You do not have permission to view details'
            'about this institute.</p>')

    project_list = institute.project_set.select_related()
    project_list = ProjectTable(project_list, prefix="project-")
    config.configure(project_list)

    person_list = Person.objects.filter(
        Q(institute__pk=institute_id) | Q(groups__institute=institute_id))
    person_list = person_list.select_related()
    person_list = PersonTable(person_list, prefix="person-")
    config.configure(person_list)

    return render_to_response('karaage/institutes/institute_detail.html',
                              locals(),
                              context_instance=RequestContext(request))
예제 #9
0
def user_detail(request, username):
    config = tables.RequestConfig(request, paginate={"per_page": 5})

    person = get_object_or_404(Person, username=username)
    if not person.can_view(request):
        return HttpResponseForbidden(
            '<h1>Access Denied</h1>'
            '<p>You do not have permission to view details '
            'about this person.</p>')

    leader_project_list = Project.objects.filter(leaders=person,
                                                 is_active=True)
    leader_project_list = ProjectTable(leader_project_list, prefix="leader-")
    config.configure(leader_project_list)

    delegate_institute_list = person.delegate_for.all()
    delegate_institute_list = delegate_institute_list.select_related()
    delegate_institute_list = InstituteTable(delegate_institute_list,
                                             prefix="delegate")
    config.configure(delegate_institute_list)

    return render(template_name='karaage/people/person_detail.html',
                  context=locals(),
                  request=request)