コード例 #1
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_django_template(
                "templates/html/components/project_team.html",
                render_context,
                i18n_service=self.i18n_service,
            ))
        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
コード例 #2
0
    def render_student_view(self, context, add_resources_from=None):
        """
        Common code to render student view
        """
        fragment = Fragment()
        fragment.add_content(
            loader.render_django_template(
                self.TEMPLATE_BASE + self.template,
                context,
                i18n_service=self.i18n_service,
            ))

        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_fragment_resources(frag)
        return fragment
コード例 #3
0
    def student_view(self, context):
        if self.question is None:
            return Fragment(self._(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:
                if feedback:
                    render_context['mean'] = round_half_up(mean(feedback))
                else:
                    render_context['mean'] = _(u"N/A")
            except ValueError as exc:
                log.warn(exc)  # pylint: disable=deprecated-method
                render_context['mean'] = _(u"N/A")

        render_context.update(context)
        fragment.add_content(
            loader.render_django_template(
                "templates/html/components/review_assessment.html",
                render_context,
                i18n_service=self.i18n_service,
            ))
        return fragment
コード例 #4
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_fragment_resources(frag)

        render_context.update(context)
        fragment.add_content(
            loader.render_django_template(
                self.STAGE_CONTENT_TEMPLATE,
                render_context,
                i18n_service=self.i18n_service,
            ))

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

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

        return fragment
コード例 #5
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_django_template(template_path,
                                          context,
                                          i18n_service=self.i18n_service)
コード例 #6
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_fragment_resources(submission_fragment)
            submission_contents.append(submission_fragment.content)

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

        return fragment
コード例 #7
0
    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_fragment_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_fragment_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_django_template(
                'templates/html/project_navigator/project_navigator.html',
                {'children': children_items},
                i18n_service=self.i18n_service,
            ))
        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.add_javascript(self.get_translation_content())
        fragment.initialize_js("GroupProjectNavigatorBlock", js_parameters)

        return fragment
コード例 #8
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_django_template(
             self.REVIEW_VIEW_TEMPLATE,
             render_context,
             i18n_service=self.i18n_service,
         ))
     # 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
コード例 #9
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_django_template(
                "templates/html/components/review_question.html",
                render_context))
        return fragment
コード例 #10
0
    def _view_render(self, context, view='student_view'):
        stage_fragment = self.get_stage_content_fragment(context, view)

        fragment = Fragment()
        fragment.add_fragment_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_django_template(
                self.STAGE_WRAPPER_TEMPLATE,
                render_context,
                i18n_service=self.i18n_service,
            ))
        if stage_fragment.js_init_fn:
            fragment.initialize_js(stage_fragment.js_init_fn)

        return fragment
コード例 #11
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_django_template(
             self.STUDENT_TEMPLATE,
             render_context,
             i18n_service=self.i18n_service,
         ))
     fragment.initialize_js('ReviewSubjectSelectorXBlock')
     return fragment
コード例 #12
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_fragment_resources(child_fragment)
            children_contents.append(child_fragment.content)

        fragment.add_content(
            loader.render_django_template(
                "templates/html/project_navigator/project_navigator_author_view.html",
                {
                    'navigator': self,
                    'children_contents': children_contents
                },
                i18n_service=self.i18n_service,
            ))
        add_resource(self, 'css',
                     'public/css/project_navigator/project_navigator.css',
                     fragment)
        return fragment
コード例 #13
0
 def submissions_view(self, context):
     fragment = Fragment()
     # pylint: disable=consider-using-ternary
     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_django_template(
             self.PROJECT_NAVIGATOR_VIEW_TEMPLATE,
             render_context,
             i18n_service=self.i18n_service,
         ))
     add_resource(self, 'javascript', 'public/js/components/submission.js',
                  fragment)
     fragment.initialize_js("GroupProjectSubmissionBlock")
     return fragment
コード例 #14
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_django_template(
             "templates/html/stages/navigation_view.html",
             rendering_context,
             i18n_service=self.i18n_service,
         ))
     return fragment
コード例 #15
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_django_template(
            '/templates/html/stages/stages_group_review_other_team_submissions.html',
            context,
            i18n_service=self.i18n_service,
        )

        return webob.response.Response(body=json.dumps({"html": html_output}))