Example #1
0
def noticeboard(request, project_name):
    """A noticeboard for the project.
    Shows the notices posted by the users.
    Shows the add notice form.
    Actions available here:
    Add a notice: Owner Participant Viewer (All)
    """
    project = get_project(request, project_name)
    access = get_access(project, request.user)
    query_set = Notice.objects.filter(project=project)
    notices, page_data = get_paged_objects(query_set, request, notices_per_page)
    if request.method == 'POST':
        addnoticeform = bforms.AddNoticeForm(project, request.user, request.POST)
        if addnoticeform.is_valid():
            addnoticeform.save()
            return HttpResponseRedirect('.')
    if request.method == 'GET':
        addnoticeform = bforms.AddNoticeForm()
    if request.GET.get('csv', ''):
        response, writer = reponse_for_cvs(project=project)
        writer.writerow(Notice.as_csv_header())
        for notice in query_set:
            writer.writerow(notice.as_csv())
        return response
    payload = {'project': project, 'notices': notices, 'addnoticeform': addnoticeform, 'page_data': page_data}
    return render(request, 'project/noticeboard.html', payload)