Beispiel #1
0
def admin_projects(request):
    """
    Lists local projects in a table with links to edit or delete
    """
    site = Site.objects.get_current()

    # optional active=True|False filter
    active = request.GET.get('active', None)
    if active != None:
        project_list = Project.objects.filter(site=Site.objects.get_current()).filter(active=ast.literal_eval(active))\
            .order_by('short_name')
    else:
        if request.method == 'GET':
            project_list = Project.objects.filter(site=Site.objects.get_current()).order_by('short_name')
        else:
            # list project by search criteria. Search function located in utils.py
            # get list of all projects
            project_list = get_projects_by_name(request.POST['match'])
            # filter projects to include local site only
            project_list = project_list.filter(site=Site.objects.get_current()).order_by('short_name')

    # retrieve top-level projects, ordered alphabetically by short name. Only list those on the current site.
    return render(request,
                  'cog/admin/admin_projects.html',
                  {'project_list': paginate(project_list, request),
                   'title': '%s Projects Administration' % site.name})
Beispiel #2
0
def signal_list(request, project_short_name):
    
    project = get_object_or_404(Project, short_name__iexact=project_short_name)

    # template in /templates/cog/signal
    return render(request,
                  'cog/signal/signal_list.html', 
                  {'project': project, 
                   'title': '%s Activity' % project.full_name(),
                   'project_signals': paginate(project.signals(), request, max_counts_per_page=10)})
Beispiel #3
0
def post_list(request, project_short_name):
    
    project = get_object_or_404(Project, short_name__iexact=project_short_name)

    # query by project
    qset = Q(project=project)

    #TODO: remove type query if not needed (type is all posts)
    # query by type
    #type = request.GET.get('type', None)
    type = 'post'
    qset = qset & Q(type=type)
    list_title = 'List All Pages'

    #TODO: remove text query if not needed
    # text query
    query = request.GET.get('query', '')
    #if query:
    #    qset = qset & (Q(title__icontains=query) | Q(body__icontains=query) | Q(author__first_name__icontains=query) |
    #                   Q(author__last_name__icontains=query) | Q(author__username__icontains=query))
     #   list_title = "Search Results for '%s'" % query
    
    # topic constraint
    topic = request.GET.get('topic', '')
    #if topic:
    #    qset = qset & Q(topic__name=topic)
    #    list_title += ' [topic=%s]' % topic
        
    # execute query, order by descending update date or title
    sortby = request.GET.get('sortby', 'title')
    if sortby == 'date':
        results = Post.objects.filter(project=project).distinct().order_by('-update_date')
    elif sortby == 'topic':
        results = Post.objects.filter(project=project).distinct().order_by('-topic')
    else:
        results = Post.objects.filter(project=project).distinct().order_by('title')
                
    # list all possible topics for posts of this project, and of given type
    # must follow the foreign key relation Post -> Topic backward (through 'topic.post_set')

	#TODO: remove topic list if not used
    #topic_list = Topic.objects.all().order_by('name')
    topic_list = Topic.objects.filter(Q(post__project=project) & Q(post__type=type)).distinct().order_by('-name')

    return render(request,
                  'cog/post/post_list.html', 
                  {"object_list": paginate(results, request, max_counts_per_page=50),
                   "title": '%s Pages' % project.short_name,
                   "list_title": list_title,
                   "query": query,  
                   "project": project,
                   "topic": topic,
                   "topic_list": topic_list})
Beispiel #4
0
def doc_list(request, project_short_name):
    
    project = get_object_or_404(Project, short_name__iexact=project_short_name)
    
    # query by project
    qset = Q(project=project)
    #list_title = 'All Documents'
    
    # do not list private documents unless user is a project member
    if request.user.is_anonymous() or not userHasUserPermission(request.user, project):
        qset = qset & Q(is_private=False)
    
    # optional query parameters
    query = request.GET.get('query', '')
    if query:
        qset = qset & (
            Q(title__icontains=query) |
            Q(description__icontains=query) |
            Q(path__icontains=query) 
        )
        #list_title = "Search Results for '%s'" % query    
        
    # document type        
    filter_by = request.GET.get('filter_by', DOCUMENT_TYPE_ALL)
    # validate 'filter_by' value
    if filter_by.lower() not in VALID_FILTER_BY_VALUES:
        raise Exception("Invalid 'filter_by' value")
    
    if filter_by != DOCUMENT_TYPE_ALL:
        types = DOCUMENT_TYPES[filter_by]
        _qset = Q(path__iendswith=types[0])
        for type in types[1:]:
            _qset = _qset | Q(path__iendswith=type)
        #list_title += ", type: %s, " % filter_by
        qset = qset & _qset
    
    order_by = request.GET.get('order_by', 'title')
    # validate 'order_by' value
    if order_by.lower() not in VALID_ORDER_BY_VALUES:
        raise Exception("Invalid 'order_by' value")
    #list_title += ", order by %s" % order_by
        
    # execute query, order by descending update date
    results = Doc.objects.filter(qset).distinct().order_by(order_by)
    list_title = "Total Number of Matching Documents: %d" % len(results)
   
    return render(request,
                  'cog/doc/doc_list.html', 
                  {"object_list": paginate(results, request, max_counts_per_page=100),
                   'project': project, 'title': '%s Files' % project.short_name,
                   "query": query, "order_by": order_by, "filter_by": filter_by, 
                   "list_title":list_title})
Beispiel #5
0
def render_membership_page(request, project, users, title, view_name):
    
    # load project groups
    groups = project.getGroups()
        
    return render(request,
                  'cog/membership/membership_list.html', 
                  {'project': project, 
                   'users': paginate(users, request, max_counts_per_page=50),
                   'groups': groups,
                   'view_name': view_name,
                   'title': title, 
                   'list_title': '%s Membership' % project.short_name})
Beispiel #6
0
def news_list(request, project_short_name):

    project = get_object_or_404(Project, short_name__iexact=project_short_name)

    return render(
        request,
        "cog/news/news_list.html",
        {
            "project": project,
            "title": "%s News" % project.short_name,
            "project_news": paginate(project_news(project), request, max_counts_per_page=10),
        },
    )
Beispiel #7
0
def admin_users(request):

    # optional parameters (via GET or POST)
    queryDict = getQueryDict(request)
    sortby = queryDict.get('sortby', 'username')  # default to sort by 'username'
    match = queryDict.get('match', None)

    if match:
        users = getAdminUsersThatMatch(match, sortby=sortby)
    else:
        users = User.objects.all().order_by(sortby)  

    title = 'List System/Node Users'
    return render(request,
                  'cog/admin/admin_users.html',
                  {'users': paginate(users, request, max_counts_per_page=50), 'title': title})
Beispiel #8
0
def paginate_filter(objects, request):

    # must use max_counts_per_page=MAX_COUNTS_PER_PAGE since a filter accepts at most 2 parameters
    return paginate(objects, request)
Beispiel #9
0
def paginate_filter(objects, request):
    
    # must use max_counts_per_page=MAX_COUNTS_PER_PAGE since a filter accepts at most 2 parameters
    return paginate(objects, request)