#!/usr/bin/python2.7 # -*- coding: utf-8 -*- # # Univention Portal # re-building portal entries based on UCR # # Copyright 2014-2017 Univention GmbH # # http://www.univention.de/ # # All rights reserved. # # The source code of this program is made available # under the terms of the GNU Affero General Public License version 3 # (GNU AGPL V3) as published by the Free Software Foundation. # # Binary versions of this program provided by Univention to you as # well as other copyrighted, protected or trademarked materials like # Logos, graphics, fonts, specific documentations and configurations, # cryptographic keys etc. are subject to a license agreement between # you and Univention and not subject to the GNU AGPL V3. # # In the case you use this program under the terms of the GNU AGPL V3, # the program is provided in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License with the Debian GNU/Linux or Univention distribution in file # /usr/share/common-licenses/AGPL-3; if not, see # . # import sys from argparse import ArgumentParser import re from univention.appcenter.ucr import ucr_keys, ucr_instance sys.path.append('/etc/univention/templates/modules') import create_portal_entries def main(): usage = '%(prog)s' description = '%(prog)s rebuilds settings/portal_entry objects based on UCR' parser = ArgumentParser(usage=usage, description=description) parser.add_argument('ids', metavar='PORTAL_ENTRIES', nargs='*', help='Portal entry IDs to be rebuilt (need to be set in local UCR). If none are given, all existing are taken. ID refers to UCR variable ucs/web/overview/entries/*/$ID/*') args = parser.parse_args() ids = args.ids if not ids: ids = set() for key in ucr_keys(): match = re.match('ucs/web/overview/entries/(admin|service)/([^/]+)/.*', key) if match: ids.add(key) else: ids = ['ucs/web/overview/entries/admin/%s/link' % id for id in ids] return run_handler(ucr_instance(), ids) def run_handler(ucr, ids): # do not handle exceptions... changes = dict((id, (None, None)) for id in ids) create_portal_entries._handler(ucr, changes) if __name__ == '__main__': main()