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)