Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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')
    )
Exemplo n.º 3
0
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')
    )
Exemplo n.º 4
0
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)