class SupportView(UserProfileView): access_mode = ACCESS.ANONYMOUS template_name = "userprofile/support.html" extra_context = { 'brand_name': settings_text('BRAND_NAME'), 'brand_name_long': settings_text('BRAND_NAME_LONG'), 'brand_institution_name': settings_text('BRAND_INSTITUTION_NAME'), } def get_common_objects(self): super().get_common_objects() lang = "_" + get_language().lower() key = make_template_fragment_key('support_channels', [lang]) support_channels = cache.get(key) if not support_channels: template_name = "support_channels{}.html" template = try_get_template(template_name.format(lang)) if not template and len(lang) > 3: template = try_get_template(template_name.format(lang[:3])) if not template: template = try_get_template(template_name.format('')) if not template: logger.error("The support page is missing") support_channels = template.render() if template else _( "No support page. Please notify administration!") cache.set(key, support_channels) self.support_channels = support_channels self.note("support_channels")
def tags_context(profile, tags): return { 'external': profile.is_external, 'internal_user_label': settings_text('INTERNAL_USER_LABEL'), 'external_user_label': settings_text('EXTERNAL_USER_LABEL'), 'tags': tags, }
def get_common_objects(self) -> None: super().get_common_objects() students = self.instance.students.all() group = self.request.GET.get("group") if group == "internal": students = [s for s in students if not s.is_external] elif group == "external": students = [s for s in students if s.is_external] point_limits = self.design.point_limits pad_points = self.design.pad_points student_grades = [] for profile in students: points = CachedPoints(self.instance, profile.user, self.content, self.is_course_staff) student_grades.append(( profile, calculate_grade(points.total(), point_limits, pad_points), )) self.student_grades = student_grades self.group = group self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.note('student_grades', 'group', 'internal_user_label', 'external_user_label')
def get_common_objects(self): super().get_common_objects() self.tags = list(self.instance.usertags.all()) self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.note( 'tags', 'internal_user_label', 'external_user_label', )
def get_common_objects(self): super().get_common_objects() self.participants = json.dumps(CachedStudents(self.instance).students()) self.tags = list(self.instance.usertags.all()) self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.note( 'participants', 'tags', 'internal_user_label', 'external_user_label', )
def tags_context(profile, tags, instance): return { 'user_id': profile.user_id, 'external': profile.is_external, 'internal_user_label': settings_text('INTERNAL_USER_LABEL'), 'external_user_label': settings_text('EXTERNAL_USER_LABEL'), 'tags': tags, 'tag_ids': [tag.id for tag in tags], 'instance': instance, }
def get_common_objects(self): super().get_common_objects() self.tags = [USERTAG_INTERNAL, USERTAG_EXTERNAL] self.tags.extend(self.instance.usertags.all()) self.participants = json.dumps(self._get_students_with_tags()) self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.note( 'participants', 'tags', 'internal_user_label', 'external_user_label', )
def get_common_objects(self): super().get_common_objects() self.participants = json.dumps( CachedStudents(self.instance).students()) self.tags = list(self.instance.usertags.all()) self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.note( 'participants', 'tags', 'internal_user_label', 'external_user_label', )
def login(request): """ Wraps the default login view in Django. Additionally redirects already authenticated users automatically to the target. """ if request.user.is_authenticated(): redirect_to = request.POST.get(REDIRECT_FIELD_NAME, request.GET.get(REDIRECT_FIELD_NAME, '')) if not is_safe_url(url=redirect_to, host=request.get_host()): redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL) return HttpResponseRedirect(redirect_to) return django_login( request, template_name="userprofile/login.html", extra_context={ 'shibboleth_login': '******' in settings.INSTALLED_APPS, 'mooc_login': '******' in settings.INSTALLED_APPS, 'login_title_text': settings_text('LOGIN_TITLE_TEXT'), 'login_body_text': settings_text('LOGIN_BODY_TEXT'), 'login_button_text': settings_text('LOGIN_BUTTON_TEXT'), 'shibboleth_title_text': settings_text('SHIBBOLETH_TITLE_TEXT'), 'shibboleth_body_text': settings_text('SHIBBOLETH_BODY_TEXT'), 'shibboleth_button_text': settings_text('SHIBBOLETH_BUTTON_TEXT'), 'mooc_title_text': settings_text('MOOC_TITLE_TEXT'), 'mooc_body_text': settings_text('MOOC_BODY_TEXT'), } )
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # The following template context parameters can not be defined in # the class variable extra_context because they require that Django # translations are active. That is, there must be an HTTP request so # that the language can be defined. There is no request in the code # in the class level, but there is a request when this method is called # (self.request). context.update({ 'shibboleth_title_text': settings_text('SHIBBOLETH_TITLE_TEXT'), 'shibboleth_body_text': settings_text('SHIBBOLETH_BODY_TEXT'), 'shibboleth_button_text': settings_text('SHIBBOLETH_BUTTON_TEXT'), 'haka_title_text': settings_text('HAKA_TITLE_TEXT'), 'haka_body_text': settings_text('HAKA_BODY_TEXT'), 'haka_button_text': settings_text('HAKA_BUTTON_TEXT'), 'mooc_title_text': settings_text('MOOC_TITLE_TEXT'), 'mooc_body_text': settings_text('MOOC_BODY_TEXT'), }) return context
def login(request): """ Wraps the default login view in Django. Additionally redirects already authenticated users automatically to the target. """ if request.user.is_authenticated(): redirect_to = request.POST.get(REDIRECT_FIELD_NAME, request.GET.get(REDIRECT_FIELD_NAME, '')) if not is_safe_url(url=redirect_to, host=request.get_host()): redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL) return HttpResponseRedirect(redirect_to) return django_login( request, template_name="userprofile/login.html", extra_context={ 'shibboleth_login': '******' in settings.INSTALLED_APPS, 'mooc_login': '******' in settings.INSTALLED_APPS, 'login_title_text': settings_text(request, 'LOGIN_TITLE_TEXT'), 'login_body_text': settings_text(request, 'LOGIN_BODY_TEXT'), 'login_button_text': settings_text(request, 'LOGIN_BUTTON_TEXT'), 'shibboleth_title_text': settings_text(request, 'SHIBBOLETH_TITLE_TEXT'), 'shibboleth_body_text': settings_text(request, 'SHIBBOLETH_BODY_TEXT'), 'shibboleth_button_text': settings_text(request, 'SHIBBOLETH_BUTTON_TEXT'), 'mooc_title_text': settings_text(request, 'MOOC_TITLE_TEXT'), 'mooc_body_text': settings_text(request, 'MOOC_BODY_TEXT'), } )
def get_common_objects(self): super().get_common_objects() self.welcome_text = settings_text('WELCOME_TEXT') self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') self.instances = [] prio2 = [] treshold = timezone.now() - datetime.timedelta(days=10) for instance in CourseInstance.objects.get_visible(self.request.user)\ .filter(ending_time__gte=timezone.now()): if instance.starting_time > treshold: self.instances += [instance] else: prio2 += [instance] self.instances += prio2 self.note("welcome_text", "internal_user_label", "external_user_label", "instances")
class CustomLoginView(LoginView): """This login view class extends the default Django login class and overrides some of the default settings. Namely, the template and its context.""" template_name = "userprofile/login.html" redirect_authenticated_user = True # Redirecting authenticated users enables "social media fingerprinting" # unless images are hosted on a different domain from the Django app. extra_context = { 'shibboleth_login': '******' in settings.INSTALLED_APPS, 'mooc_login': '******' in settings.INSTALLED_APPS, 'brand_name': settings_text('BRAND_NAME'), } def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # The following template context parameters can not be defined in # the class variable extra_context because they require that Django # translations are active. That is, there must be an HTTP request so # that the language can be defined. There is no request in the code # in the class level, but there is a request when this method is called # (self.request). context.update({ 'shibboleth_title_text': settings_text('SHIBBOLETH_TITLE_TEXT'), 'shibboleth_body_text': settings_text('SHIBBOLETH_BODY_TEXT'), 'shibboleth_button_text': settings_text('SHIBBOLETH_BUTTON_TEXT'), 'mooc_title_text': settings_text('MOOC_TITLE_TEXT'), 'mooc_body_text': settings_text('MOOC_BODY_TEXT'), }) return context
def get_common_objects(self): super().get_common_objects() self.welcome_text = settings_text('WELCOME_TEXT') self.internal_user_label = settings_text('INTERNAL_USER_LABEL') self.external_user_label = settings_text('EXTERNAL_USER_LABEL') my_instances = [] all_instances = [] end_threshold = timezone.now() - datetime.timedelta(days=30) user = self.request.user is_logged_in = False if user and user.is_authenticated: is_logged_in = True for instance in (CourseInstance.objects.filter( course__teachers=user.userprofile, ending_time__gte=end_threshold).all()): my_instances.append(instance) for instance in user.userprofile.assisting_courses.all().filter( ending_time__gte=end_threshold): if instance not in my_instances: my_instances.append(instance) for instance in user.userprofile.enrolled.all().filter( ending_time__gte=end_threshold, visible_to_students=True, ): if instance not in my_instances: my_instances.append(instance) all_instances = CourseInstance.objects.get_visible(user).filter( ending_time__gte=end_threshold) all_instances = [c for c in all_instances if c not in my_instances] self.all_instances = all_instances self.my_instances = my_instances self.is_logged_in = is_logged_in self.note( "welcome_text", "internal_user_label", "external_user_label", "my_instances", "all_instances", "is_logged_in", )
class ProfileView(UserProfileView): template_name = "userprofile/profile.html" extra_context = { 'brand_name': settings_text('BRAND_NAME'), } def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['is_google'] = (self.request.user.social_auth.filter( provider="google-oauth2").exists() if settings.SOCIAL_AUTH else False) return context
def enrollment_audience_check(self, request, course, user): audience = course.enrollment_audience external = user.userprofile.is_external EA = course.ENROLLMENT_AUDIENCE institution_name = settings_text('BRAND_INSTITUTION_NAME') if audience == EA.INTERNAL_USERS and external: self.error_msg( format_lazy( _('COURSE_ENROLLMENT_AUDIENCE_ERROR_ONLY_INTERNAL -- {institution}' ), institution=institution_name, )) return False elif audience == EA.EXTERNAL_USERS and not external: self.error_msg( format_lazy( _('COURSE_ENROLLMENT_AUDIENCE_ERROR_ONLY_EXTERNAL -- {institution}' ), institution=institution_name, )) return False return True
def brand_institution_name(): return mark_safe(settings_text('BRAND_INSTITUTION_NAME'))
def get_common_objects(self): super().get_common_objects() self.policy_text = settings_text('PRIVACY_POLICY_TEXT') self.note("policy_text")