Ejemplo n.º 1
0
    def student_view(self, context):
        if self.question is None:
            return Fragment(messages.COMPONENT_MISCONFIGURED)

        raw_feedback = self.get_feedback()

        feedback = []
        for item in raw_feedback:
            feedback.append(html.escape(item['answer']))

        fragment = Fragment()
        title = self.question.assessment_title if self.question.assessment_title else self.question.title
        render_context = {
            'assessment': self,
            'question_title': title,
            'feedback': feedback
        }
        if self.show_mean:
            try:
                render_context['mean'] = "{0:.1f}".format(mean(feedback))
            except ValueError as exc:
                log.warn(exc)
                render_context['mean'] = _(u"N/A")

        render_context.update(context)
        fragment.add_content(
            loader.render_template(
                "templates/html/components/review_assessment.html",
                render_context))
        return fragment
Ejemplo n.º 2
0
 def get_url_name_fragment(self, caption):
     fragment = Fragment()
     fragment.add_content(loader.render_template(
         "templates/html/url_name.html",
         {'url_name': self.url_name, 'caption': caption}
     ))
     return fragment
    def render_student_view(self, context, add_resources_from=None):
        """
        Common code to render student view
        """
        fragment = Fragment()
        fragment.add_content(
            loader.render_template(self.TEMPLATE_BASE + self.template,
                                   context))

        if self.css_file:
            add_resource(self, 'css', self.CSS_BASE + self.css_file, fragment)

        if self.js_file:
            add_resource(self, 'javascript', self.JS_BASE + self.js_file,
                         fragment)

        if self.initialize_js_function:
            fragment.initialize_js(self.initialize_js_function)

        for js_file in self.additional_js_files:
            add_resource(self, 'javascript', js_file, fragment, via_url=True)

        if add_resources_from:
            for frag in add_resources_from:
                fragment.add_frag_resources(frag)

        return fragment
Ejemplo n.º 4
0
    def student_view(self, context):
        try:
            activity = self.stage.activity
            target_block = activity.project.navigator.get_child_of_category(
                self.TARGET_PROJECT_NAVIGATOR_VIEW)
        except AttributeError:
            activity = None
            target_block = None

        if target_block is None:
            return Fragment()

        render_context = {
            'block':
            self,
            'block_link':
            get_link_to_block(target_block),
            'block_text':
            self.TEXT_TEMPLATE.format(activity_name=activity.display_name),
            'target_block_id':
            str(target_block.scope_ids.usage_id),
            'view_icon':
            target_block.icon
        }
        render_context.update(context)

        fragment = Fragment()
        fragment.add_content(
            loader.render_template(self.TEMPLATE_PATH, render_context))
        return fragment
Ejemplo n.º 5
0
    def student_view(self, context):
        fragment = Fragment()
        # Could be a TA not in the group.
        if self.stage.is_group_member:
            user_details = [
                self.stage.project_api.get_member_data(self.stage.user_id)
            ]
        else:
            user_details = []
        render_context = {
            'team_members': user_details + self.stage.team_members,
            'course_id': self.stage.course_id,
            'group_id': self.stage.workgroup.id
        }
        render_context.update(context)

        fragment.add_content(
            loader.render_template(
                "templates/html/components/project_team.html", render_context))
        add_resource(self, 'css', "public/css/components/project_team.css",
                     fragment)
        add_resource(self, 'javascript',
                     "public/js/components/project_team.js", fragment)
        fragment.initialize_js("ProjectTeamXBlock")
        return fragment
Ejemplo n.º 6
0
 def get_url_name_fragment(self, caption):
     fragment = Fragment()
     fragment.add_content(
         loader.render_template("templates/html/url_name.html", {
             'url_name': self.url_name,
             'caption': caption
         }))
     return fragment
Ejemplo n.º 7
0
 def resources_view(self, context):
     fragment = Fragment()
     render_context = {'resource': self}
     render_context.update(context)
     fragment.add_content(
         loader.render_template(self.PROJECT_NAVIGATOR_VIEW_TEMPLATE,
                                render_context))
     return fragment
 def submission_review_view(self, context):
     group_id = context.get('group_id', self.stage.activity.workgroup.id)
     fragment = Fragment()
     render_context = {'submission': self, 'upload': self.get_upload(group_id)}
     render_context.update(context)
     fragment.add_content(loader.render_template(self.REVIEW_VIEW_TEMPLATE, render_context))
     # NOTE: adding js/css likely won't work here, as the result of this view is added as an HTML to an existing DOM
     # element
     return fragment
 def student_view(self, context):
     fragment = Fragment()
     render_context = {'selector': self, 'review_subjects': self.get_review_subject_repr()}
     render_context.update(context)
     add_resource(self, 'css', "public/css/components/review_subject_selector.css", fragment)
     add_resource(self, 'javascript', "public/js/components/review_subject_selector.js", fragment)
     fragment.add_content(loader.render_template(self.STUDENT_TEMPLATE, render_context))
     fragment.initialize_js('ReviewSubjectSelectorXBlock')
     return fragment
 def submissions_view(self, context):
     fragment = Fragment()
     uploading_allowed = (self.stage.available_now and self.stage.is_group_member) or self.stage.is_admin_grader
     render_context = {'submission': self, 'upload': self.upload, 'disabled': not uploading_allowed}
     render_context.update(context)
     fragment.add_content(loader.render_template(self.PROJECT_NAVIGATOR_VIEW_TEMPLATE, render_context))
     add_resource(self, 'javascript', 'public/js/components/submission.js', fragment)
     fragment.initialize_js("GroupProjectSubmissionBlock")
     return fragment
Ejemplo n.º 11
0
    def _render_view(self, child_view, template, context):
        fragment = Fragment()

        submission_contents = []
        for submission in self.submissions:
            submission_fragment = submission.render(child_view, context)
            fragment.add_frag_resources(submission_fragment)
            submission_contents.append(submission_fragment.content)

        context = {'stage': self, 'submission_contents': submission_contents}
        fragment.add_content(loader.render_template(template, context))

        return fragment
Ejemplo n.º 12
0
 def submission_review_view(self, context):
     group_id = context.get('group_id', self.stage.activity.workgroup.id)
     fragment = Fragment()
     render_context = {
         'submission': self,
         'upload': self.get_upload(group_id)
     }
     render_context.update(context)
     fragment.add_content(
         loader.render_template(self.REVIEW_VIEW_TEMPLATE, render_context))
     # NOTE: adding js/css likely won't work here, as the result of this view is added as an HTML to an existing DOM
     # element
     return fragment
Ejemplo n.º 13
0
    def _render_view(self, child_view, template, context):
        fragment = Fragment()

        submission_contents = []
        for submission in self.submissions:
            submission_fragment = submission.render(child_view, context)
            fragment.add_frag_resources(submission_fragment)
            submission_contents.append(submission_fragment.content)

        context = {'stage': self, 'submission_contents': submission_contents}
        fragment.add_content(loader.render_template(template, context))

        return fragment
    def author_preview_view(self, context):
        fragment = Fragment()
        children_contents = []
        for child in self._children:
            child_fragment = child.render('preview_view', context)
            fragment.add_frag_resources(child_fragment)
            children_contents.append(child_fragment.content)

        fragment.add_content(loader.render_template(
            "templates/html/project_navigator/project_navigator_author_view.html",
            {'navigator': self, 'children_contents': children_contents}
        ))
        add_resource(self, 'css', 'public/css/project_navigator/project_navigator.css', fragment)
        return fragment
Ejemplo n.º 15
0
    def author_preview_view(self, context):
        fragment = Fragment()
        children_contents = []
        for child in self._children:
            child_fragment = child.render('preview_view', context)
            fragment.add_frag_resources(child_fragment)
            children_contents.append(child_fragment.content)

        fragment.add_content(loader.render_template(
            "templates/html/project_navigator/project_navigator_author_view.html",
            {'navigator': self, 'children_contents': children_contents}
        ))
        add_resource(self, 'css', 'public/css/project_navigator/project_navigator.css', fragment)
        return fragment
Ejemplo n.º 16
0
    def _view_render(self, context, view='student_view'):
        stage_fragment = self.get_stage_content_fragment(context, view)

        fragment = Fragment()
        fragment.add_frag_resources(stage_fragment)
        render_context = {
            'stage': self, 'stage_content': stage_fragment.content,
            "ta_graded": self.activity.group_reviews_required_count
        }
        fragment.add_content(loader.render_template(self.STAGE_WRAPPER_TEMPLATE, render_context))
        if stage_fragment.js_init_fn:
            fragment.initialize_js(stage_fragment.js_init_fn)

        return fragment
    def student_view(self, context):
        """
        Student view
        """
        fragment = Fragment()
        children_items = []
        for view in self._sorted_child_views():
            item = {
                'id': str(view.scope_ids.usage_id).replace("/", ";_"),
                'type': view.type,
            }

            if not view.skip_content:
                child_fragment = view.render('student_view', context)
                item['content'] = child_fragment.content
                fragment.add_frag_resources(child_fragment)
            else:
                item['content'] = ''

            if not view.skip_selector:
                child_selector_fragment = view.render('selector_view', context)
                item['selector'] = child_selector_fragment.content
                fragment.add_frag_resources(child_selector_fragment)
            else:
                item['selector'] = ''

            children_items.append(item)

        activate_block_id = self.get_block_id_from_string(
            context.get('activate_block_id', None))

        js_parameters = {
            'selected_view': self._get_activated_view_type(activate_block_id)
        }

        fragment.add_content(
            loader.render_template(
                'templates/html/project_navigator/project_navigator.html',
                {'children': children_items}))
        add_resource(self, 'css',
                     'public/css/project_navigator/project_navigator.css',
                     fragment)
        add_resource(self, 'javascript',
                     'public/js/project_navigator/project_navigator.js',
                     fragment)
        fragment.initialize_js("GroupProjectNavigatorBlock", js_parameters)

        return fragment
    def other_submission_links(self, request, _suffix=''):
        group_id = int(request.GET["group_id"])

        target_stages = [stage for stage in self.activity.stages if stage.submissions_stage]

        submission_stage_contents = []
        for stage in target_stages:
            stage_fragment = stage.render('review_submissions_view', {'group_id': group_id})
            submission_stage_contents.append(stage_fragment.content)

        context = {'block': self, 'submission_stage_contents': submission_stage_contents}
        html_output = loader.render_template(
            '/templates/html/stages/stages_group_review_other_team_submissions.html', context
        )

        return webob.response.Response(body=json.dumps({"html": html_output}))
    def student_view(self, context):
        question_classes = ["question"]
        if self.required:
            question_classes.append("required")
        if self.question_css_classes:
            question_classes.append(self.question_css_classes)

        fragment = Fragment()
        render_context = {
            'question': self,
            'question_classes': " ".join(question_classes),
            'question_content': self.render_content()
        }
        render_context.update(context)
        fragment.add_content(loader.render_template("templates/html/components/review_question.html", render_context))
        return fragment
Ejemplo n.º 20
0
 def navigation_view(self, context):
     """
     Renders stage content for navigation view
     :param dict context:
     :rtype: Fragment
     """
     fragment = Fragment()
     rendering_context = {
         'stage': self,
         'activity_id': self.activity.id,
         'stage_state': self.get_stage_state(),
         'block_link': get_link_to_block(self),
         'is_current_stage': self.is_current_stage(context)
     }
     rendering_context.update(context)
     fragment.add_content(loader.render_template("templates/html/stages/navigation_view.html", rendering_context))
     return fragment
 def selector_view(self, _context):
     """
     Selector view - this view is used by GroupProjectNavigatorXBlock to render selector buttons
     """
     fragment = Fragment()
     context = {
         'type': self.type,
         'display_name': self.display_name_with_default,
         'skip_content': self.skip_content
     }
     for attribute in ['icon', 'selector_text']:
         if getattr(self, attribute, None) is not None:
             context[attribute] = getattr(self, attribute)
         else:
             context[attribute] = ''
     fragment.add_content(loader.render_template('templates/html/project_navigator/view_selector.html', context))
     return fragment
Ejemplo n.º 22
0
 def student_view(self, context):
     fragment = Fragment()
     render_context = {
         'selector': self,
         'review_subjects': self.get_review_subject_repr()
     }
     render_context.update(context)
     add_resource(self, 'css',
                  "public/css/components/review_subject_selector.css",
                  fragment)
     add_resource(self, 'javascript',
                  "public/js/components/review_subject_selector.js",
                  fragment)
     fragment.add_content(
         loader.render_template(self.STUDENT_TEMPLATE, render_context))
     fragment.initialize_js('ReviewSubjectSelectorXBlock')
     return fragment
Ejemplo n.º 23
0
 def selector_view(self, _context):
     """
     Selector view - this view is used by GroupProjectNavigatorXBlock to render selector buttons
     """
     fragment = Fragment()
     context = {
         'type': self.type,
         'display_name': self.display_name_with_default,
         'skip_content': self.skip_content
     }
     for attribute in ['icon', 'selector_text']:
         if getattr(self, attribute, None) is not None:
             context[attribute] = getattr(self, attribute)
         else:
             context[attribute] = ''
     fragment.add_content(loader.render_template('templates/html/project_navigator/view_selector.html', context))
     return fragment
Ejemplo n.º 24
0
    def _view_render(self, context, view='student_view'):
        stage_fragment = self.get_stage_content_fragment(context, view)

        fragment = Fragment()
        fragment.add_frag_resources(stage_fragment)
        render_context = {
            'stage': self,
            'stage_content': stage_fragment.content,
            "ta_graded": self.activity.group_reviews_required_count
        }
        fragment.add_content(
            loader.render_template(self.STAGE_WRAPPER_TEMPLATE,
                                   render_context))
        if stage_fragment.js_init_fn:
            fragment.initialize_js(stage_fragment.js_init_fn)

        return fragment
    def student_view(self, context):
        """
        Student view
        """
        fragment = Fragment()
        children_items = []
        for view in self._sorted_child_views():
            item = {
                'id': str(view.scope_ids.usage_id).replace("/", ";_"),
                'type': view.type,
            }

            if not view.skip_content:
                child_fragment = view.render('student_view', context)
                item['content'] = child_fragment.content
                fragment.add_frag_resources(child_fragment)
            else:
                item['content'] = ''

            if not view.skip_selector:
                child_selector_fragment = view.render('selector_view', context)
                item['selector'] = child_selector_fragment.content
                fragment.add_frag_resources(child_selector_fragment)
            else:
                item['selector'] = ''

            children_items.append(item)

        activate_block_id = self.get_block_id_from_string(context.get('activate_block_id', None))

        js_parameters = {
            'selected_view': self._get_activated_view_type(activate_block_id)
        }

        fragment.add_content(
            loader.render_template(
                'templates/html/project_navigator/project_navigator.html',
                {'children': children_items}
            )
        )
        add_resource(self, 'css', 'public/css/project_navigator/project_navigator.css', fragment)
        add_resource(self, 'javascript', 'public/js/project_navigator/project_navigator.js', fragment)
        fragment.initialize_js("GroupProjectNavigatorBlock", js_parameters)

        return fragment
Ejemplo n.º 26
0
 def submissions_view(self, context):
     fragment = Fragment()
     uploading_allowed = (
         self.stage.available_now
         and self.stage.is_group_member) or self.stage.is_admin_grader
     render_context = {
         'submission': self,
         'upload': self.upload,
         'disabled': not uploading_allowed
     }
     render_context.update(context)
     fragment.add_content(
         loader.render_template(self.PROJECT_NAVIGATOR_VIEW_TEMPLATE,
                                render_context))
     add_resource(self, 'javascript', 'public/js/components/submission.js',
                  fragment)
     fragment.initialize_js("GroupProjectSubmissionBlock")
     return fragment
    def student_view(self, context):
        fragment = Fragment()
        # Could be a TA not in the group.
        if self.stage.is_group_member:
            user_details = [self.stage.project_api.get_member_data(self.stage.user_id)]
        else:
            user_details = []
        render_context = {
            'team_members': user_details + self.stage.team_members,
            'course_id': self.stage.course_id,
            'group_id': self.stage.workgroup.id
        }
        render_context.update(context)

        fragment.add_content(loader.render_template("templates/html/components/project_team.html", render_context))
        add_resource(self, 'css', "public/css/components/project_team.css", fragment)
        add_resource(self, 'javascript', "public/js/components/project_team.js", fragment)
        fragment.initialize_js("ProjectTeamXBlock")
        return fragment
Ejemplo n.º 28
0
    def student_view(self, context):
        question_classes = ["question"]
        if self.required:
            question_classes.append("required")
        if self.question_css_classes:
            question_classes.append(self.question_css_classes)

        fragment = Fragment()
        render_context = {
            'question': self,
            'question_classes': " ".join(question_classes),
            'question_content': self.render_content()
        }
        render_context.update(context)
        fragment.add_content(
            loader.render_template(
                "templates/html/components/review_question.html",
                render_context))
        return fragment
Ejemplo n.º 29
0
 def navigation_view(self, context):
     """
     Renders stage content for navigation view
     :param dict context:
     :rtype: Fragment
     """
     fragment = Fragment()
     rendering_context = {
         'stage': self,
         'activity_id': self.activity.id,
         'stage_state': self.get_stage_state(),
         'block_link': get_link_to_block(self),
         'is_current_stage': self.is_current_stage(context)
     }
     rendering_context.update(context)
     fragment.add_content(
         loader.render_template(
             "templates/html/stages/navigation_view.html",
             rendering_context))
     return fragment
Ejemplo n.º 30
0
    def get_stage_content_fragment(self, context, view='student_view'):
        fragment = Fragment()
        children_fragments = self.render_children_fragments(context, view=view)
        render_context = {
            'stage': self,
            'children_contents': [frag.content for frag in children_fragments]
        }

        for frag in children_fragments:
            fragment.add_frag_resources(frag)

        render_context.update(context)
        fragment.add_content(loader.render_template(self.STAGE_CONTENT_TEMPLATE, render_context))

        if self.js_file:
            add_resource(self, 'javascript', self.js_file, fragment)

        if self.js_init:
            fragment.initialize_js(self.js_init)

        return fragment
Ejemplo n.º 31
0
    def other_submission_links(self, request, _suffix=''):
        group_id = int(request.GET["group_id"])

        target_stages = [
            stage for stage in self.activity.stages if stage.submissions_stage
        ]

        submission_stage_contents = []
        for stage in target_stages:
            stage_fragment = stage.render('review_submissions_view',
                                          {'group_id': group_id})
            submission_stage_contents.append(stage_fragment.content)

        context = {
            'block': self,
            'submission_stage_contents': submission_stage_contents
        }
        html_output = loader.render_template(
            '/templates/html/stages/stages_group_review_other_team_submissions.html',
            context)

        return webob.response.Response(body=json.dumps({"html": html_output}))
    def student_view(self, context):
        try:
            activity = self.stage.activity
            target_block = activity.project.navigator.get_child_of_category(self.TARGET_PROJECT_NAVIGATOR_VIEW)
        except AttributeError:
            activity = None
            target_block = None

        if target_block is None:
            return Fragment()

        render_context = {
            'block': self,
            'block_link': get_link_to_block(target_block),
            'block_text': self.TEXT_TEMPLATE.format(activity_name=activity.display_name),
            'target_block_id': str(target_block.scope_ids.usage_id),
            'view_icon': target_block.icon
        }
        render_context.update(context)

        fragment = Fragment()
        fragment.add_content(loader.render_template(self.TEMPLATE_PATH, render_context))
        return fragment
Ejemplo n.º 33
0
    def get_stage_content_fragment(self, context, view='student_view'):
        fragment = Fragment()
        children_fragments = self.render_children_fragments(context, view=view)
        render_context = {
            'stage': self,
            'children_contents': [frag.content for frag in children_fragments]
        }

        for frag in children_fragments:
            fragment.add_frag_resources(frag)

        render_context.update(context)
        fragment.add_content(
            loader.render_template(self.STAGE_CONTENT_TEMPLATE,
                                   render_context))

        if self.js_file:
            add_resource(self, 'javascript', self.js_file, fragment)

        if self.js_init:
            fragment.initialize_js(self.js_init)

        return fragment
    def student_view(self, context):
        if self.question is None:
            return Fragment(messages.COMPONENT_MISCONFIGURED)

        raw_feedback = self.get_feedback()

        feedback = []
        for item in raw_feedback:
            feedback.append(html.escape(item['answer']))

        fragment = Fragment()
        title = self.question.assessment_title if self.question.assessment_title else self.question.title
        render_context = {'assessment': self, 'question_title': title, 'feedback': feedback}
        if self.show_mean:
            try:
                render_context['mean'] = "{0:.1f}".format(mean(feedback))
            except ValueError as exc:
                log.warn(exc)
                render_context['mean'] = _(u"N/A")

        render_context.update(context)
        fragment.add_content(loader.render_template("templates/html/components/review_assessment.html", render_context))
        return fragment
    def render_student_view(self, context, add_resources_from=None):
        """
        Common code to render student view
        """
        fragment = Fragment()
        fragment.add_content(loader.render_template(self.TEMPLATE_BASE + self.template, context))

        if self.css_file:
            add_resource(self, 'css', self.CSS_BASE + self.css_file, fragment)

        if self.js_file:
            add_resource(self, 'javascript', self.JS_BASE + self.js_file, fragment)

        if self.initialize_js_function:
            fragment.initialize_js(self.initialize_js_function)

        for js_file in self.additional_js_files:
            add_resource(self, 'javascript', js_file, fragment, via_url=True)

        if add_resources_from:
            for frag in add_resources_from:
                fragment.add_frag_resources(frag)

        return fragment
 def resources_view(self, context):
     fragment = Fragment()
     render_context = {'resource': self}
     render_context.update(context)
     fragment.add_content(loader.render_template(self.PROJECT_NAVIGATOR_VIEW_TEMPLATE, render_context))
     return fragment
Ejemplo n.º 37
0
 def render_template(self, template, context, template_suffix=".html"):
     template_path = os.path.join(self.BASE_TEMPLATE_LOCATION,
                                  self.template_location,
                                  template + template_suffix)
     return loader.render_template(template_path, context)
Ejemplo n.º 38
0
 def render_template(self, template, context, template_suffix=".html"):
     template_path = os.path.join(self.BASE_TEMPLATE_LOCATION, self.template_location, template + template_suffix)
     return loader.render_template(template_path, context)