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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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}))