Ejemplo n.º 1
0
    def __init__(self,
                 read_only,
                 interaction_mode,
                 initial_code,
                 language_mode,
                 data=None,
                 *args,
                 **kwargs):
        super(CodeForm, self).__init__(data, *args, **kwargs)

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
            language_mode=language_mode,
            interaction_mode=interaction_mode,
            read_only=read_only,

            # Automatically focus the text field once there has
            # been some input.
            autofocus=(not read_only
                       and (data is not None and "answer" in data)))

        self.fields["answer"] = forms.CharField(required=True,
                                                initial=initial_code,
                                                help_text=cm_help_text,
                                                widget=cm_widget,
                                                label=_("Answer"))

        self.style_codemirror_widget()
Ejemplo n.º 2
0
    def __init__(self, initial_text,
            language_mode, interaction_mode, help_text, *args, **kwargs):
        super(SandboxForm, self).__init__(*args, **kwargs)

        from crispy_forms.helper import FormHelper
        self.helper = FormHelper()
        self.helper.form_class = "form-horizontal"

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
                language_mode=language_mode,
                interaction_mode=interaction_mode)

        self.fields["content"] = forms.CharField(
                required=False,
                initial=initial_text,
                widget=cm_widget,
                help_text=mark_safe(
                    help_text
                    + " "
                    + ugettext("Press Alt/Cmd+(Shift+)P to preview.")
                    + " "
                    + cm_help_text),
                label=_("Content"))

        self.helper.add_input(
                Submit(
                    "preview", _("Preview"),
                    accesskey="p"))
Ejemplo n.º 3
0
    def __init__(self, initial_text, language_mode, interaction_mode,
                 help_text, *args, **kwargs):
        # type: (Text, Text, Text, Text, *Any, **Any) -> None
        super(SandboxForm, self).__init__(*args, **kwargs)

        from crispy_forms.helper import FormHelper
        self.helper = FormHelper()
        self.helper.form_class = "form-horizontal"

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
            language_mode=language_mode, interaction_mode=interaction_mode)

        self.fields["content"] = forms.CharField(
            required=False,
            initial=initial_text,
            widget=cm_widget,
            help_text=mark_safe(
                help_text + " " +
                ugettext("Press Alt/Cmd+(Shift+)P to preview.") + " " +
                cm_help_text),
            label=_("Content"))

        # 'strip' attribute was added to CharField in Django 1.9
        # with 'True' as default value.
        if hasattr(self.fields["content"], "strip"):
            self.fields["content"].strip = False

        self.helper.add_input(Submit("preview", _("Preview"), accesskey="p"), )
        self.helper.add_input(
            Submit("clear", _("Clear"), css_class="btn-default"), )
Ejemplo n.º 4
0
    def __init__(self, initial_text,
            language_mode, interaction_mode, help_text, *args, **kwargs):
        super(SandboxForm, self).__init__(*args, **kwargs)

        from crispy_forms.helper import FormHelper
        self.helper = FormHelper()
        self.helper.form_class = "form-horizontal"

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
                language_mode=language_mode,
                interaction_mode=interaction_mode)

        self.fields["content"] = forms.CharField(
                required=False,
                initial=initial_text,
                widget=cm_widget,
                help_text=mark_safe(
                    help_text
                    + " "
                    + ugettext("Press Alt/Cmd+(Shift+)P to preview.")
                    + " "
                    + cm_help_text),
                label=_("Content"))

        self.helper.add_input(
                Submit(
                    "preview", _("Preview"),
                    accesskey="p"))
Ejemplo n.º 5
0
    def __init__(self, read_only, interaction_mode, initial_code, *args, **kwargs):
        super(PythonCodeForm, self).__init__(*args, **kwargs)

        from course.utils import get_codemirror_widget

        cm_widget, cm_help_text = get_codemirror_widget(
            language_mode="python", interaction_mode=interaction_mode, read_only=read_only
        )

        self.fields["answer"] = forms.CharField(
            required=True, initial=initial_code, help_text=cm_help_text, widget=cm_widget, label=_("Answer")
        )
Ejemplo n.º 6
0
    def __init__(self, read_only, interaction_mode, initial_code, *args,
                 **kwargs):
        super(PythonCodeForm, self).__init__(*args, **kwargs)

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
            language_mode="python",
            interaction_mode=interaction_mode,
            read_only=read_only)

        self.fields["answer"] = forms.CharField(required=True,
                                                initial=initial_code,
                                                help_text=cm_help_text,
                                                widget=cm_widget,
                                                label=_("Answer"))
Ejemplo n.º 7
0
    def __init__(self, course, editor_mode, *args, **kwargs):
        super(BatchIssueTicketsForm, self).__init__(*args, **kwargs)

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
                language_mode={"name": "markdown", "xml": True},
                dependencies=("xml",),
                interaction_mode=editor_mode)

        help_text = (ugettext("Enter <a href=\"http://documen.tician.de/"
                "relate/content.html#relate-markup\">"
                "RELATE markup</a> containing Django template statements to render "
                "your exam tickets. <tt>tickets</tt> contains a list of "
                "data structures "
                "containing ticket information. For each entry <tt>tkt</tt>  "
                "in this list, "
                "use <tt>{{ tkt.participation.user.user_name }}</tt>, "
                "<tt>{{ tkt.code }}</tt>, <tt>{{ tkt.exam.description }}</tt>, "
                "and <tt>{{ checkin_uri }}</tt> as placeholders. "
                "See the example for how to use this."))

        self.fields["exam"] = forms.ModelChoiceField(
                queryset=(
                    Exam.objects.filter(
                        course=course,
                        active=True
                        )),
                required=True,
                label=_("Exam"))
        self.fields["format"] = forms.CharField(
                label=_("Ticket Format"),
                help_text=help_text,
                widget=cm_widget,
                initial=INITIAL_EXAM_TICKET_TEMPLATE,
                required=True)
        self.fields["revoke_prior"] = forms.BooleanField(
                label=_("Revoke prior exam tickets"),
                required=False,
                initial=False)

        self.helper.add_input(
                Submit(
                    "issue",
                    _("Issue tickets")))
Ejemplo n.º 8
0
    def __init__(self, course, editor_mode, *args, **kwargs):
        super(BatchIssueTicketsForm, self).__init__(*args, **kwargs)

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
            language_mode={
                "name": "markdown",
                "xml": True
            },
            dependencies=("xml", ),
            interaction_mode=editor_mode)

        help_text = (ugettext(
            "Enter <a href=\"http://documen.tician.de/"
            "relate/content.html#relate-markup\">"
            "RELATE markup</a> containing Django template statements to render "
            "your exam tickets. <tt>tickets</tt> contains a list of "
            "data structures "
            "containing ticket information. For each entry <tt>tkt</tt>  "
            "in this list, "
            "use <tt>{{ tkt.participation.user.user_name }}</tt>, "
            "<tt>{{ tkt.code }}</tt>, <tt>{{ tkt.exam.description }}</tt>, "
            "and <tt>{{ checkin_uri }}</tt> as placeholders. "
            "See the example for how to use this."))

        self.fields["exam"] = forms.ModelChoiceField(
            queryset=(Exam.objects.filter(course=course, active=True)),
            required=True,
            label=_("Exam"))
        self.fields["format"] = forms.CharField(
            label=_("Ticket Format"),
            help_text=help_text,
            widget=cm_widget,
            initial=INITIAL_EXAM_TICKET_TEMPLATE,
            required=True)
        self.fields["revoke_prior"] = forms.BooleanField(
            label=_("Revoke prior exam tickets"),
            required=False,
            initial=False)

        self.helper.add_input(Submit("issue", _("Issue tickets")))
Ejemplo n.º 9
0
    def get_text_widget(widget_type,
                        read_only=False,
                        check_only=False,
                        interaction_mode=None):
        """Returns None if no widget found."""

        if widget_type in [None, "text_input"]:
            if check_only:
                return True

            widget = forms.TextInput()
            widget.attrs["autofocus"] = None
            if read_only:
                widget.attrs["readonly"] = None
            return widget, None

        elif widget_type == "textarea":
            if check_only:
                return True

            widget = forms.Textarea()
            # widget.attrs["autofocus"] = None
            if read_only:
                widget.attrs["readonly"] = None
            return widget, None

        elif widget_type.startswith("editor:"):
            if check_only:
                return True

            from course.utils import get_codemirror_widget
            cm_widget, cm_help_text = get_codemirror_widget(
                language_mode=widget_type[widget_type.find(":") + 1:],
                interaction_mode=interaction_mode,
                read_only=read_only)

            return cm_widget, cm_help_text

        else:
            return None, None
Ejemplo n.º 10
0
    def get_text_widget(widget_type, read_only=False, check_only=False, interaction_mode=None):
        """Returns None if no widget found."""

        if widget_type in [None, "text_input"]:
            if check_only:
                return True

            widget = forms.TextInput()
            widget.attrs["autofocus"] = None
            if read_only:
                widget.attrs["readonly"] = None
            return widget, None

        elif widget_type == "textarea":
            if check_only:
                return True

            widget = forms.Textarea()
            # widget.attrs["autofocus"] = None
            if read_only:
                widget.attrs["readonly"] = None
            return widget, None

        elif widget_type.startswith("editor:"):
            if check_only:
                return True

            from course.utils import get_codemirror_widget

            cm_widget, cm_help_text = get_codemirror_widget(
                language_mode=widget_type[widget_type.find(":") + 1 :],
                interaction_mode=interaction_mode,
                read_only=read_only,
            )

            return cm_widget, cm_help_text

        else:
            return None, None
Ejemplo n.º 11
0
    def __init__(self, read_only, interaction_mode, initial_code,
            data=None, *args, **kwargs):
        super(PythonCodeForm, self).__init__(data, *args, **kwargs)

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
                language_mode="python",
                interaction_mode=interaction_mode,
                read_only=read_only,

                # Automatically focus the text field once there has
                # been some input.
                autofocus=(
                    not read_only
                    and (data is not None and "answer" in data)))

        self.fields["answer"] = forms.CharField(required=True,
            initial=initial_code,
            help_text=cm_help_text,
            widget=cm_widget,
            label=_("Answer"))

        self.style_codemirror_widget()
Ejemplo n.º 12
0
    def __init__(self, initial_text,
            language_mode, interaction_mode, help_text, *args, **kwargs):
        # type: (Text, Text, Text, Text, *Any, **Any) -> None
        super(SandboxForm, self).__init__(*args, **kwargs)

        from crispy_forms.helper import FormHelper
        self.helper = FormHelper()
        self.helper.form_class = "form-horizontal"

        from course.utils import get_codemirror_widget
        cm_widget, cm_help_text = get_codemirror_widget(
                language_mode=language_mode,
                interaction_mode=interaction_mode)

        self.fields["content"] = forms.CharField(
                required=False,
                initial=initial_text,
                widget=cm_widget,
                help_text=mark_safe(
                    help_text
                    + " "
                    + ugettext("Press Alt/Cmd+(Shift+)P to preview.")
                    + " "
                    + cm_help_text),
                label=_("Content"))

        # 'strip' attribute was added to CharField in Django 1.9
        # with 'True' as default value.
        if hasattr(self.fields["content"], "strip"):
            self.fields["content"].strip = False

        self.helper.add_input(
                Submit("preview", _("Preview"), accesskey="p"),
                )
        self.helper.add_input(
                Submit("clear", _("Clear"), css_class="btn-default"),
                )