def test_announcement_i18n_title(self): locale = 'de' announcement = self._add_announcement_and_translation(locale) actions.login('*****@*****.**') actions.register(self, 'John Doe') # Verify that one-off title translation also works. try: sites.set_path_info('/' + self.COURSE) ctx = sites.get_course_for_current_request() save_locale = ctx.get_current_locale() key = announcements.TranslatableResourceAnnouncement.key_for_entity( announcement) # Untranslated ctx.set_current_locale(None) i18n_title = str( announcements.TranslatableResourceAnnouncement.get_i18n_title( key)) self.assertEquals('Test Announcement', i18n_title) # Translated ctx.set_current_locale(locale) i18n_title = str( announcements.TranslatableResourceAnnouncement.get_i18n_title( key)) self.assertEquals('TEST ANNOUNCEMENT', i18n_title) finally: ctx.set_current_locale(save_locale) sites.unset_path_info()
def __del__(self): """Reset the namespace """ try: sites.unset_path_info() except Exception as e: # pylint: disable=broad-except logging.error(e) namespace_manager.set_namespace(self.old_namespace)
def run(self): app_context = self._get_app_context_or_die( self.etl_args.course_url_prefix) course = courses.Course(None, app_context=app_context) sites.set_path_info(app_context.slug) courses.Course.set_current(course) try: with common_utils.Namespace(app_context.get_namespace_name()): super(CourseJob, self).run() finally: courses.Course.clear_current() sites.unset_path_info()
def check_personalization(browser, response): """Checks that the login/logout text is correct.""" sites.set_path_info(browser.last_request_url) app_context = sites.get_course_for_current_request() sites.unset_path_info() browsable = app_context.get_environ()['course']['browsable'] if browsable: callbacks = [ functools.partial(check_login_link, response.body), functools.partial(check_logout_link, response.body) ] assert_at_least_one_succeeds(callbacks) else: check_logout_link(response.body)
def run(self): """Override run() and setup app_context, course and a namespace.""" # ETL import model is complex; run this import here not to interfere from controllers import sites app_context = self._get_app_context_or_die( self.etl_args.course_url_prefix) course = courses.Course(None, app_context=app_context) sites.set_path_info(app_context.slug) courses.Course.set_current(course) try: with common_utils.Namespace(app_context.get_namespace_name()): super(_BaseJob, self).run() finally: courses.Course.clear_current() sites.unset_path_info()
def execute_all_deferred_tasks(self, queue_name='default', iteration_limit=None): """Executes all pending deferred tasks.""" # Outer loop here because some tasks (esp. map/reduce) will enqueue # more tasks as part of their operation. tasks_executed = 0 while iteration_limit is None or iteration_limit > 0: tasks = self.taskq.GetTasks(queue_name) if not tasks: break for task in tasks: old_namespace = namespace_manager.get_namespace() try: self.task_dispatcher.dispatch_task(task) tasks_executed += 1 finally: if sites.has_path_info(): sites.unset_path_info() namespace_manager.set_namespace(old_namespace) if iteration_limit: iteration_limit -= 1 return tasks_executed