def feedback_download(project, request): items = project.items_distributed() feedback_controller = FormController(project.feedback_form) import csv import StringIO file = StringIO.StringIO() writer = csv.writer(file) headers = ['Reviewer', project.item_label] widget_controllers = [] for widget in project.feedback_form.widgets: widget_controllers.append(widget_controller_factory(widget)) headers.append(widget.label) writer.writerow(headers) for item in items: for feedback in item.feedback: row = [feedback.user.name, item.title] for widget_controller in widget_controllers: value = feedback.get_widget_value(widget_controller.widget) row.append(widget_controller.value(value)) writer.writerow(row) csv_data = file.getvalue() file.close() return Response(csv_data, content_type='text/csv', content_disposition='attachment; filename=feedback.csv')
def feedback_view_by_item(project, request): items = project.items_distributed() feedback_controller = FormController(project.feedback_form) summaries = [] for item in items: widget_summaries = [] for widget in project.feedback_form.widgets: widget_controller = widget_controller_factory(widget) widget_summaries.append({ 'title':widget.label, 'summary':widget_controller.render_feedback_for_item(item, request) }) summaries.append({ 'title':item.title, 'widgets':widget_summaries }) return dict( project=project, summaries=summaries, menu=project_menu(project, request, 'feedback') )
def feedback_view_by_widget(project, request): items = project.items_distributed() summaries = [] for widget in project.feedback_form.widgets: widget_controller = widget_controller_factory(widget) summaries.append(dict( title=widget.label, summary=widget_controller.render_feedback_for_items(items, request) )) return dict( project=project, summaries=summaries, menu=project_menu(project, request, 'feedback') )
def file_download(project, request): """ Download a file from a widget """ session = DBSession() record_id = request.matchdict["record_id"] widget_id = request.matchdict["widget_id"] filename = request.matchdict["filename"] record = session.query(Record).filter(Record.project_id == project.id).filter(Record.id == record_id).first() widget = session.query(Widget).filter(Widget.id == widget_id).first() widget_controller = widget_controller_factory(widget) value = record.get_widget_value(widget) return widget_controller.download(value, filename, request)