Source code for univention.portal.handlers.portal_entries_handler

# Univention Portal
#
# SPDX-FileCopyrightText: 2019-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

import tornado.web

from univention.portal.handlers.portal_resource import PortalResource
from univention.portal.log import get_logger


[docs] class PortalEntriesHandler(PortalResource):
[docs] async def get(self, portal_name): portal = self.find_portal() if not portal: raise tornado.web.HTTPError(404) user = await portal.get_user(self) admin_mode = False if self.request.headers.get("X-Univention-Portal-Admin-Mode", "no") == "yes": get_logger("admin").info("Admin mode requested") admin_mode = user.is_admin() if admin_mode: get_logger("admin").info("Admin mode granted") else: get_logger("admin").info("Admin mode rejected") answer = {} answer["cache_id"] = portal.get_cache_id() visible_content = portal.get_visible_content(user, admin_mode) answer["user_links"] = portal.get_user_links(visible_content) answer["menu_links"] = portal.get_menu_links(visible_content) answer["entries"] = portal.get_entries(visible_content) answer["folders"] = portal.get_folders(visible_content) answer["categories"] = portal.get_categories(visible_content) answer["portal"] = portal.get_meta(visible_content, answer["categories"]) if not user.is_anonymous() and not admin_mode and answer["portal"].get("showUmc"): # this is not how the portal-server is supposed to be working # but we need it like that... umc_portal = portal._get_umc_portal() umc_content = umc_portal.get_visible_content(user, admin_mode) answer["entries"].extend(umc_portal.get_entries(umc_content)) answer["folders"].extend(umc_portal.get_folders(umc_content)) answer["categories"].extend(umc_portal.get_categories(umc_content)) umc_meta = umc_portal.get_meta(umc_content, answer["categories"]) answer["portal"]["content"].extend(umc_meta["content"]) answer["filtered"] = not admin_mode answer["username"] = user.username answer["user_displayname"] = user.display_name answer["auth_mode"] = portal.auth_mode(self) answer["may_edit_portal"] = portal.may_be_edited(user) answer["announcements"] = portal.get_announcements(visible_content) self.write(answer)