Beispiel #1
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')
    )
Beispiel #2
0
def record(project, request):
    form_controller = FormController(project.item_form)

    record_id = request.matchdict.get("record_id", None)

    if record_id is not None:
        record = project.get_item(record_id)
    else:
        record = None

    if record and not record.reviewed:
        record.reviewed = True

    if request.method == "POST":
        title = request.params.get("title", "").strip()
        submit = request.params.get("submit", "")

        if not title and submit.find("finish") >= 0:
            return HTTPFound(location=route_url("project:feedback_form", request, project_id=project.id))

        elif not title:
            request.session.flash("%s Name or Title is required!" % project.item_name, "errors")

        elif title:
            form_controller = FormController(project.item_form)
            form_controller.validate_from_request(request)

            if form_controller.errors:
                request.session.flash("There was a problem with your submission", "errors")

            else:
                request.session.flash("%s saved!" % title, "messages")

                if record is None:
                    record = ItemRecord(project, title)

                record.title = title

                form_controller.populate_record_from_request(record, request)

                session = DBSession()
                session.add(record)
                session.flush()

                if submit.find("add") >= 0:
                    route = "project:record:add"
                elif submit.find("finish") >= 0:
                    route = "project:feedback_form"
                else:
                    route = "project:record"

                return HTTPFound(location=route_url(route, request, project_id=project.id, record_id=record.id))

    return dict(
        project=project,
        menu=project_menu(project, request, "records"),
        form_widgets=form_controller.render_widgets(request, record),
        record=record,
    )
Beispiel #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')
    )
Beispiel #4
0
def record_collect_settings(project, request):
    return dict(
        project=project,
        menu=project_menu(project, request, 'records'),
    )
Beispiel #5
0
def record_import(project, request):
    return dict(project=project, menu=project_menu(project, request, "records"))