Exemplo n.º 1
0
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=maintenanceFixedAttributes),
        emptyAttributesProperty(syntax=maintenanceFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('General'),
        _('Maintenance settings'),
        layout=[
            Group(_('General maintenance settings'),
                  layout=[
                      'name', 'startup', 'shutdown', 'cron', 'reboot',
                      ['month', 'weekday'], ['day', 'hour'], 'minute'
                  ]),
        ]),
    policy_object_tab()
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('startup', 'univentionInstallationStartup', None,
                 univention.admin.mapping.ListToString)
mapping.register('shutdown', 'univentionInstallationShutdown', None,
                 univention.admin.mapping.ListToString)
mapping.register('reboot', 'univentionInstallationReboot', None,
                 univention.admin.mapping.ListToString)
Exemplo n.º 2
0
		may_change=True,
		identifies=False,
	),
}

layout = [
	Tab(_('General'), _('Basic values'), layout=[
		Group(_('General UDM syntax settings'), layout=[
			["name"],
			["filename"],
			["data"],
			["messagecatalog"],
		]),
		Group(_('Metadata'), layout=[
			["package"],
			["packageversion"],
			["appidentifier"],
		]),
		Group(_('UCS Version Dependencies'), layout=[
			["ucsversionstart"],
			["ucsversionend"],
		]),
		Group(_('Activated'), layout=[
			["active"],
		]),
	]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('filename', 'univentionUDMSyntaxFilename', None, univention.admin.mapping.ListToString)
mapping.register('data', 'univentionUDMSyntaxData', univention.admin.mapping.mapBase64, univention.admin.mapping.unmapBase64)
    if hasattr(pol, 'module'):
        childmodules.append(pol.module)
virtual = 1
property_descriptions = {
    'name':
    univention.admin.property(short_description=_('Name'),
                              long_description='',
                              syntax=univention.admin.syntax.policyName,
                              multivalue=False,
                              include_in_default_search=True,
                              options=[],
                              required=True,
                              may_change=True,
                              identifies=True)
}
layout = [Tab(_('General'), _('Basic settings'), layout=["name"])]

mapping = univention.admin.mapping.mapping()


class object(univention.admin.handlers.simpleLdap):
    module = module


def lookup(co,
           lo,
           filter_s,
           base='',
           superordinate=None,
           scope='sub',
           unique=False,
Exemplo n.º 4
0
    'range':
    univention.admin.property(
        short_description=_('Dynamic address assignment'),
        long_description=
        _('Define a pool of addresses available for dynamic address assignment.'
          ),
        syntax=univention.admin.syntax.IPv4_AddressRange,
        multivalue=True,
    ),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('General DHCP shared subnet settings'),
                  layout=[['subnet', 'subnetmask'], 'broadcastaddress',
                          'range']),
        ]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('subnet', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('range', 'dhcpRange', rangeMap, rangeUnmap)
mapping.register('subnetmask', 'dhcpNetMask', None,
                 univention.admin.mapping.ListToString)
mapping.register('broadcastaddress', 'univentionDhcpBroadcastAddress', None,
                 univention.admin.mapping.ListToString)

add_dhcp_options(__name__)
Exemplo n.º 5
0
        short_description=_('Application'),
        long_description=_(
            'Specifies that the option belongs to a UCS Application'),
        syntax=univention.admin.syntax.boolean,
    ),
}

layout = [
    Tab(_('General'),
        _('Basic values'),
        layout=[
            Group(_('General extended options settings'),
                  layout=[
                      'name',
                      ["shortDescription", "longDescription"],
                      [
                          "translationShortDescription",
                          "translationLongDescription"
                      ],
                      ["default", "editable", "isApp"],
                      ['module', "objectClass"],
                  ]),
        ]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('shortDescription', 'univentionUDMOptionShortDescription',
                 None, univention.admin.mapping.ListToString)
mapping.register('longDescription', 'univentionUDMOptionLongDescription', None,
                 univention.admin.mapping.ListToString)
}

layout = [
	Tab(_('General'), _('Portal options'), layout=[
		Group(_('Name'), layout=[
			['name'],
			['displayName'],
		]),
		Group(_('Visibility'), layout=[
			['portalComputers'],
		]),
		Group(_('Appearance'), layout=[
			['logo'],
			['background'],
			['cssBackground'],
			['fontColor'],
			['autoLayoutCategories'],
		]),
		Group(_('General Content'), layout=[
			# ["showMenu"],
			# ["showSearch"],
			# ["showLogin"],
			['defaultLinkTarget'],
			['showApps'],
			# ["showServers"],
			['links'],
		]),
	]),
	Tab(_('Portal categories and entries'), _('The categories and entries that are shown on this portal'), layout=[
		['content'],
	]),
        short_description=_('MS WMI Source Organization'),
        long_description='',
        syntax=univention.admin.syntax.string,
        multivalue=False,
        options=[],
        required=False,
        may_change=True,
        identifies=False),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('General'),
                  layout=[
                      ["name", "description"],
                      ["displayName"],
                  ]),
        ]),
    Tab(
        _('WMI filter'),
        _('MS WMI filter'),
        advanced=True,
        layout=[
            Group(
                _('WMI filter'),
                layout=[
                    ['id'],
                    ['author'],
                    ['creationDate'],
        multivalue=True,
    ),
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=slavePackagesFixedAttributes),
        emptyAttributesProperty(syntax=slavePackagesFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('General'),
        policy_short_description,
        layout=[
            Group(_('General Replica Node packages settings'),
                  layout=['name', 'slavePackages', 'slavePackagesRemove']),
        ]),
    policy_object_tab()
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('slavePackages', 'univentionSlavePackages')
mapping.register('slavePackagesRemove', 'univentionSlavePackagesRemove')
register_policy_mapping(mapping)


class object(univention.admin.handlers.simplePolicy):
    module = module
Exemplo n.º 9
0
    'mailPrimaryAddress':
    univention.admin.property(
        short_description=_('E-Mail address'),
        long_description='',
        syntax=univention.admin.syntax.emailAddressValidDomain,
        include_in_default_search=True,
    ),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('General IMAP mail folder settings'),
                  layout=[
                      ["name", "mailDomain"],
                      ["mailHomeServer"],
                      ["mailQuota"],
                      ["mailPrimaryAddress"],
                  ]),
        ]),
    Tab(_('Access Rights'),
        _('Access rights for shared folder'),
        layout=[
            Group(_('Access Rights'),
                  layout=[
                      "sharedFolderUserACL",
                      "sharedFolderGroupACL",
                  ]),
        ])
]
Exemplo n.º 10
0
			short_description=_('Unsearchable'),
			long_description='',
			syntax=univention.admin.syntax.boolean,
			multivalue=0,
			options=[],
			required=0,
			may_change=1,
			identifies=0
		),
}

layout = [
	Tab(_('General'),_('Basic Values'), layout = [
		Group( _( 'General' ), layout = [
			"name",
			[ "shortDescription", "longDescription" ],
			[ "translationShortDescription", "translationLongDescription" ]
		] ),
	] ),
	Tab(_('UDM Web'),_('Settings for UDM web interface'), layout = [
		Group( _( 'Tab layout' ), layout = [
			[ "tabName", "tabPosition" ],
			"translationTabName",
			] ),
		Group( _( 'Group layout' ), layout = [
			[ 'groupName', 'groupPosition' ],
			'translationGroupName',
			] ),
		Group( _( 'Extended settings' ), layout = [
			[ "overwritePosition", "fullWidth" ],
			[ "overwriteTab", "tabAdvanced" ],
Exemplo n.º 11
0
                              options=['samba']),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('Computer account'),
                  layout=[
                      ['name', 'description'],
                      ['operatingSystem', 'operatingSystemVersion'],
                      'inventoryNumber',
                  ]),
            Group(_('Network settings '),
                  layout=[
                      'network',
                      [
                          'mac',
                          'ip',
                      ],
                  ]),
            Group(_('DNS Forward and Reverse Lookup Zone'),
                  layout=[
                      'dnsEntryZoneForward',
                      'dnsEntryZoneReverse',
                  ]),
            Group(_('DHCP'), layout=['dhcpEntryZone']),
        ]),
    Tab(_('Account'),
        _('Account'),
        advanced=True,
        layout=['password', 'ntCompatibility', 'primaryGroup']),
Exemplo n.º 12
0
	'msGPOMachineExtensionNames': univention.admin.property(
			short_description=_('MS Group Policy Machine Extension Names'),
			long_description='',
			syntax=univention.admin.syntax.string,
			multivalue=0,
			options=[],
			required=0,
			may_change=1,
			identifies=0
		),
}

layout = [
	Tab(_('General'),_('Basic settings'), layout = [
		Group( _( 'General' ), layout = [
			[ "name", "description" ],
			[ "displayName" ],
			] ),
	] ),
	Tab(_('GPO settings'),_('MS GPO settings'), advanced = True, layout = [
		Group( _( 'GPO settings' ), layout = [
			[ 'msGPOFlags' ],
			[ 'msGPOVersionNumber' ],
			[ 'msGPOSystemFlags' ],
			[ 'msGPOFunctionalityVersion' ],
			[ 'msGPOFileSysPath' ],
			[ 'msGPOMachineExtensionNames' ],
		] ),
	] )
]

mapping=univention.admin.mapping.mapping()
Exemplo n.º 13
0
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=dhcp_statementsFixedAttributes),
        emptyAttributesProperty(syntax=dhcp_statementsFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('DHCP statements'),
        _('Miscellaneous DHCP statements'),
        layout=[
            Group(_('General DHCP statements settings'),
                  layout=[
                      'name', ['authoritative', 'boot-unknown-clients'],
                      ['pingCheck', 'getLeaseHostnames'],
                      ['serverIdentifier', 'serverName']
                  ]),
        ]),
    policy_object_tab()
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('authoritative', 'univentionDhcpAuthoritative', None,
                 univention.admin.mapping.ListToString)
mapping.register('boot-unknown-clients', 'univentionDhcpBootUnknownClients',
                 None, univention.admin.mapping.ListToString)
mapping.register('pingCheck', 'univentionDhcpPingCheck', None,
                 univention.admin.mapping.ListToString)
Exemplo n.º 14
0
                              required=False,
                              may_change=True,
                              identifies=False),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('Computer account'),
                  layout=[
                      ['name', 'description'],
                      'inventoryNumber',
                  ]),
            Group(_('Network settings '), layout=[
                'network',
                'mac',
                'ip',
            ]),
            Group(_('DNS Forward and Reverse Lookup Zone'),
                  layout=[
                      'dnsEntryZoneForward',
                      'dnsEntryZoneReverse',
                  ]),
            Group(_('DHCP'), layout=['dhcpEntryZone']),
        ]),
    Tab(_('Groups'),
        _('Group memberships'),
        advanced=True,
        layout=[
            "groups",
        ]),
        dontsearch=True,
        required=True,
    ),
    'defaultKdeProfiles':
    univention.admin.property(
        short_description=_('Default KDE Profiles'),
        long_description='',
        syntax=univention.admin.syntax.string,
        multivalue=True,
    ),
}

layout = [
    Tab(_('General'),
        _('Basic values'),
        layout=[
            Group(_('Default settings description'), layout=["name"]),
        ]),
    Tab(_('Primary Groups'),
        _('Primary Groups'),
        layout=[
            Group(_('Primary Groups'),
                  layout=[
                      "defaultGroup", "defaultComputerGroup",
                      "defaultDomainControllerMBGroup",
                      "defaultDomainControllerGroup",
                      "defaultMemberServerGroup", "defaultClientGroup"
                  ]),
        ]),
    Tab(_('KDE Profiles'),
        _('KDE Profiles'),
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=dhcp_routingFixedAttributes),
        emptyAttributesProperty(syntax=dhcp_routingFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('General'),
        _('DHCP routing'),
        layout=[
            Group(_('General DHCP routing settings'),
                  layout=[
                      'name',
                      'routers',
                  ]),
        ]),
    policy_object_tab()
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('routers', 'univentionDhcpRouters')
register_policy_mapping(mapping)


class object(univention.admin.handlers.simplePolicy):
    module = module
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=adminFixedAttributes),
        emptyAttributesProperty(syntax=adminFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('General'),
        _('Univention Directory Manager settings'),
        layout=[
            Group(_('General Univention Directory Manager container settings'),
                  layout=[
                      'name',
                      'listModules',
                  ]),
        ]),
    policy_object_tab(),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('listModules', 'univentionAdminListModules')
register_policy_mapping(mapping)


class object(univention.admin.handlers.simplePolicy):
    module = module
        short_description=_('Append NTACLs for Samba file shares'),
        long_description=
        _('Additional NTACL elements for the base directory of Samba file shares.'
          ),
        syntax=univention.admin.syntax.string,
        multivalue=True,
        options=['samba'],
    ),
}

layout = [
    Tab(_('General'),
        _('General settings'),
        layout=[
            Group(_('General directory share settings'),
                  layout=[
                      'name', ['host', 'path'], ['owner', 'group'],
                      'directorymode'
                  ]),
        ]),
    Tab(_('NFS'),
        _('General NFS settings'),
        layout=[
            Group(_('NFS'),
                  layout=[
                      'writeable',
                      'subtree_checking',
                      'root_squash',
                      'sync',
                      'nfs_hosts',
                  ]),
Exemplo n.º 19
0
}
property_descriptions.update(
    dict([
        requiredObjectClassesProperty(),
        prohibitedObjectClassesProperty(),
        fixedAttributesProperty(syntax=registryFixedAttributes),
        emptyAttributesProperty(syntax=registryFixedAttributes),
        ldapFilterProperty(),
    ]))

layout = [
    Tab(_('General'),
        _('These configuration settings will be set on the local UCS system.'),
        layout=[
            Group(_('General Univention Configuration Registry settings'),
                  layout=[
                      'name',
                      'registry',
                  ]),
        ]),
    policy_object_tab()
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
register_policy_mapping(mapping)


class object(univention.admin.handlers.simplePolicy):
    module = module
Exemplo n.º 20
0
        options=[],
        required=False,
        may_change=True,
        identifies=False,
    ),
}

layout = [
    Tab(_('General'),
        _('General settings'),
        layout=[
            Group(_('General printer share settings'),
                  layout=[
                      ['name', 'sambaName'],
                      'spoolHost',
                      'uri',
                      ['producer', 'model'],
                      ['location', 'description'],
                      [
                          'setQuota',
                      ],
                      ['pagePrice', 'jobPrice'],
                  ]),
        ]),
    Tab(_('Access control'),
        _('Access control for users and groups'),
        layout=[
            Group(_('Access control'),
                  layout=[
                      'ACLtype',
                      'ACLUsers',
                      'ACLGroups',
Exemplo n.º 21
0
    'packageList':
    univention.admin.property(
        short_description=_('Package List'),
        long_description=_('Package List'),
        syntax=univention.admin.syntax.string,
        multivalue=True,
        dontsearch=True,
    ),
}

layout = [
    Tab(_('General'),
        _('Package List'),
        layout=[
            Group(_('General package list settings'),
                  layout=[
                      'name',
                      'packageList',
                  ]),
        ]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('packageList', 'univentionPackageDefinition')


class object(univention.admin.handlers.simpleLdap):
    module = module

Exemplo n.º 22
0
		short_description=_('Server name'),
		long_description=_('The name of the server, which should handle this DHCP service.'),
		syntax=univention.admin.syntax.string,
		multivalue=False,
		include_in_default_search=True,
		options=[],
		required=True,
		may_change=True,
		identifies=True
	),
}

layout = [
	Tab(_('General'), _('General settings'), layout=[
		Group(_('DHCP server description'), layout=[
			'server'
		]),
	])
]

mapping = univention.admin.mapping.mapping()
mapping.register('server', 'cn', None, univention.admin.mapping.ListToString)


class object(DHCPBase):
	module = module

	def _ldap_addlist(self):
		searchBase = self.position.getDomain()
		if self.lo.searchDn(base=searchBase, filter=filter_format('(&(objectClass=dhcpServer)(cn=%s))', [self.info['server']])):
			raise univention.admin.uexceptions.dhcpServerAlreadyUsed(self.info['server'])
Exemplo n.º 23
0
			long_description='',
			syntax=dhcp_dnsupdateFixedAttributes,
			multivalue=1,
			options=[],
			required=0,
			may_change=1,
			identifies=0
			),
}

layout = [
	Tab(_('DNS Update'), _('Dynamic DNS update'), layout = [
		Group( _( 'General' ), layout = [
			'name',
			[ 'ddnsDomainname', 'ddnsRevDomainname' ],
			[ 'ddnsUpdates', 'ddnsUpdateStyle' ],
			[ 'ddnsDoForwardUpdate', 'updateStaticLeases' ],
			'clientUpdates'
		] ),
	] ),
	Tab(_('Object'),_('Object'), advanced = True, layout = [
		[ 'requiredObjectClasses' , 'prohibitedObjectClasses' ],
		[ 'fixedAttributes', 'emptyAttributes' ]
	] ),
]

mapping=univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('ddnsHostname', 'univentionDhcpDdnsHostname', None, univention.admin.mapping.ListToString)
mapping.register('ddnsDomainname', 'univentionDhcpDdnsDomainname', None, univention.admin.mapping.ListToString)
mapping.register('ddnsRevDomainname', 'univentionDhcpDdnsRevDomainname', None, univention.admin.mapping.ListToString)
Exemplo n.º 24
0
        syntax=univention.admin.syntax.printerModel,
        multivalue=1,
        include_in_default_search=1,
        options=[],
        dontsearch=1,
        required=0,
        may_change=1,
        identifies=0,
    ),
}

layout = [
    Tab(_('General'),
        _('Printer List'),
        layout=[
            Group(_('General'), layout=[
                'name',
                'printmodel',
            ]),
        ]),
]


def unmapDriverList(old):
    return map(lambda x: shlex.split(x), old)


def mapDriverList(old):
    str = []
    for i in old:
        str.append('"%s" "%s"' % (i[0], i[1]))
    return str
Exemplo n.º 25
0
		short_description=_('Service name'),
		long_description=_('A unique name for this DHCP service.'),
		syntax=univention.admin.syntax.string,
		multivalue=False,
		include_in_default_search=True,
		options=[],
		required=True,
		may_change=False,
		identifies=True
	),
}

layout = [
	Tab(_('General'), _('Basic settings'), layout=[
		Group(_('DHCP service description'), layout=[
			'service',
		]),
	]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('service', 'cn', None, univention.admin.mapping.ListToString)

add_dhcp_options(__name__)


class object(DHCPBase):
	module = module

	def __init__(self, co, lo, position, dn='', superordinate=None, attributes=[]):
		univention.admin.handlers.simpleLdap.__init__(self, co, lo, position, dn, superordinate, attributes=attributes)
Exemplo n.º 26
0
    univention.admin.property(short_description=_('Stored LDAP Attribute'),
                              long_description='',
                              syntax=univention.admin.syntax.string,
                              multivalue=False,
                              options=[],
                              required=False,
                              may_change=True,
                              identifies=False),
}

layout = [
    Tab(_('General'),
        _('Basic values'),
        layout=[
            Group(_('General syntax definition settings'),
                  layout=[["name", "description"], ["filter", "base"]]),
            Group(_('Display'), layout=["attribute", "ldapattribute"]),
            Group(_('Storage'), layout=["value", "ldapvalue"]),
            Group(_('Options'), layout=["viewonly", "addEmptyValue"])
        ]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)
mapping.register('filter', 'univentionSyntaxLDAPFilter', None,
                 univention.admin.mapping.ListToString)
mapping.register('base', 'univentionSyntaxLDAPBase', None,
                 univention.admin.mapping.ListToString)
mapping.register('viewonly', 'univentionSyntaxViewOnly', None,
                 univention.admin.mapping.ListToString)
mapping.register('description', 'univentionSyntaxDescription', None,
Exemplo n.º 27
0
    univention.admin.property(
        short_description=_('Shared network name'),
        long_description=_('A unique name for this shared network.'),
        syntax=univention.admin.syntax.uid,
        multivalue=False,
        include_in_default_search=True,
        options=[],
        required=True,
        may_change=False,
        identifies=True)
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('DHCP shared network description'), layout=['name']),
        ]),
]

mapping = univention.admin.mapping.mapping()
mapping.register('name', 'cn', None, univention.admin.mapping.ListToString)

add_dhcp_options(__name__)


class object(DHCPBase):
    module = module

    @staticmethod
    def unmapped_lookup_filter():
Exemplo n.º 28
0
                              syntax=univention.admin.syntax.integer,
                              dontsearch=True,
                              options=['samba']),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('Computer account'),
                  layout=[
                      ['name', 'description'],
                      'inventoryNumber',
                  ]),
            Group(_('Network settings '), layout=[
                'network',
                'mac',
                'ip',
            ]),
            Group(_('DNS Forward and Reverse Lookup Zone'),
                  layout=[
                      'dnsEntryZoneForward',
                      'dnsEntryZoneReverse',
                  ]),
            Group(_('DHCP'), layout=['dhcpEntryZone']),
        ]),
    Tab(_('Account'),
        _('Account'),
        advanced=True,
        layout=['password', 'primaryGroup']),
    Tab(_('Unix account'),
        _('Unix account settings'),
Exemplo n.º 29
0
                              required=0,
                              may_change=1),
    'a':
    univention.admin.property(short_description=_('IP addresses'),
                              long_description='',
                              syntax=univention.admin.syntax.ipAddress,
                              multivalue=1,
                              options=[],
                              required=0,
                              may_change=1),
}

layout = [
    Tab(_('General'),
        _('Basic settings'),
        layout=[
            Group(_('General'), layout=['zone', 'nameserver', 'zonettl']),
        ]),
    Tab(_('Start of authority'),
        _('Primary name server information'),
        layout=[
            Group(_('Start of authority'),
                  layout=[
                      'contact', 'serial', ['refresh', 'retry'],
                      ['expire', 'ttl']
                  ]),
        ]),
    Tab(_('IP addresses'),
        _('IP addresses of the zone'),
        layout=[
            Group(_('IP addresses of the zone'), layout=['a']),
Exemplo n.º 30
0
def update_extended_attributes(lo, module, position):

	# add list of tabnames created by extended attributes
	if not hasattr(module, 'extended_attribute_tabnames'):
		module.extended_attribute_tabnames = []

	# append UDM extended attributes
	properties4tabs = {}
	overwriteTabList = []
	module.extended_udm_attributes = []
	for dn, attrs in lo.search( base = position.getDomainConfigBase(),
								filter='(&(objectClass=univentionUDMProperty)(univentionUDMPropertyModule=%s)(univentionUDMPropertyVersion=2))' % name(module) ):
		# get CLI name
		pname=attrs['univentionUDMPropertyCLIName'][0]

		# get syntax
		propertySyntaxString=attrs.get('univentionUDMPropertySyntax', [''])[0]
		if propertySyntaxString and hasattr(univention.admin.syntax, propertySyntaxString):
			propertySyntax = getattr(univention.admin.syntax, propertySyntaxString)
		else:
			if lo.search( filter = univention.admin.syntax.LDAP_Search.FILTER_PATTERN % propertySyntaxString ):
				propertySyntax = univention.admin.syntax.LDAP_Search( propertySyntaxString )
			else:
				propertySyntax = univention.admin.syntax.string()

		# get hooks
		propertyHookString=attrs.get('univentionUDMPropertyHook', [''])[0]
		propertyHook = None
		if propertyHookString and hasattr(univention.admin.hook, propertyHookString):
			propertyHook = getattr(univention.admin.hook, propertyHookString)()

		# get default value
		propertyDefault = attrs.get('univentionUDMPropertyDefault', [''])

		# value may change
		try:
			mayChange = int( attrs.get('univentionUDMPropertyValueMayChange', ['0'])[0] )
		except:
			ud.debug(ud.ADMIN, ud.ERROR, 'modules update_extended_attributes: ERROR: processing univentionUDMPropertyValueMayChange throwed exception - assuming mayChange=0')
			mayChange = 0

		# value is editable (only via hooks or direkt module.info[] access)
		editable = attrs.get('univentionUDMPropertyValueNotEditable', ['0'])[0] not in ['1', 'TRUE']

		# value is required
		valueRequired = ( attrs.get('univentionUDMPropertyValueRequired',[ '0' ])[0].upper() in [ '1', 'TRUE' ] )

		# value not available for searching
		try:
			doNotSearch = int( attrs.get('univentionUDMPropertyDoNotSearch',[ '0' ])[0] )
		except:
			ud.debug(ud.ADMIN, ud.ERROR, 'modules update_extended_attributes: ERROR: processing univentionUDMPropertyDoNotSearch throwed exception - assuming doNotSearch=0')
			doNotSearch = 0

		# check if CA is multivalue property
		if attrs.get('univentionUDMPropertyMultivalue', [''])[0] == '1':
			multivalue = 1
			map_method = None
		else:
			multivalue = 0
			map_method = univention.admin.mapping.ListToString
			# single value ==> use only first value
			propertyDefault = propertyDefault[0]

		# Show this attribute in UDM/UMC?
		if attrs.get('univentionUDMPropertyLayoutDisable', [''])[0] == '1':
			layoutDisabled = True
		else:
			layoutDisabled = False

		# get current language
		lang = locale.getlocale( locale.LC_MESSAGES )[0]
		ud.debug(ud.ADMIN, ud.INFO, 'modules update_extended_attributes: LANG = %s' % str(lang))
		if lang:
			lang = lang.replace('_','-').lower()
		else:
			lang = 'xxxxx'

		# get descriptions
		shortdesc = attrs.get('univentionUDMPropertyTranslationShortDescription;entry-%s' % lang, attrs['univentionUDMPropertyShortDescription'] )[0]
		longdesc = attrs.get('univentionUDMPropertyTranslationLongDescription;entry-%s' % lang, attrs.get('univentionUDMPropertyLongDescription', ['']))[0]

		# create property
		# FIXME: must add attribute to honor fullWidth (should be defined by the syntax)
		module.property_descriptions[pname] = univention.admin.property(
			short_description = shortdesc,
			long_description = longdesc,
			syntax = propertySyntax,
			multivalue = multivalue,
			options = attrs.get('univentionUDMPropertyOptions',[]),
			required = valueRequired,
			may_change = mayChange,
			dontsearch = doNotSearch,
			identifies = 0,
			default = propertyDefault,
			editable = editable
		)

		# add LDAP mapping
		if attrs['univentionUDMPropertyLdapMapping'][0].lower() != 'objectClass'.lower():
			module.mapping.register(pname, attrs['univentionUDMPropertyLdapMapping'][0], None, map_method)
		else:
			module.mapping.register(pname, attrs['univentionUDMPropertyLdapMapping'][0], univention.admin.mapping.nothing, univention.admin.mapping.nothing)


		if hasattr( module, 'layout' ):
			tabname = attrs.get('univentionUDMPropertyTranslationTabName;entry-%s' % lang, attrs.get('univentionUDMPropertyLayoutTabName',[ _('Custom') ]) )[0]
			overwriteTab = ( attrs.get('univentionUDMPropertyLayoutOverwriteTab',[ '0' ])[0].upper() in [ '1', 'TRUE' ] )
			# in the first generation of extended attributes of version 2
			# this field was a position defining the attribute to
			# overwrite. now it is the name of the attribute to overwrite
			overwriteProp = attrs.get( 'univentionUDMPropertyLayoutOverwritePosition', [ '' ] )[ 0 ]
			if overwriteProp == '0':
				overwriteProp = None
			fullWidth = ( attrs.get('univentionUDMPropertyLayoutFullWidth',[ '0' ])[0].upper() in [ '1', 'TRUE' ] )
			deleteObjectClass = ( attrs.get('univentionUDMPropertyDeleteObjectClass', ['0'])[0].upper() in [ '1', 'TRUE' ] )
			tabAdvanced = ( attrs.get('univentionUDMPropertyLayoutTabAdvanced',[ '0' ])[0].upper() in [ '1', 'TRUE' ] )

			groupname = attrs.get( 'univentionUDMPropertyTranslationGroupName;entry-%s' % lang, attrs.get( 'univentionUDMPropertyLayoutGroupName', [ '' ] ) )[ 0 ]
			try:
				groupPosition = int( attrs.get( 'univentionUDMPropertyLayoutGroupPosition', [ '-1' ] )[ 0 ] )
			except TypeError:
				groupPosition = 0

			ud.debug( ud.ADMIN, ud.INFO, 'update_extended_attributes: extended attribute (LDAP): %s' % str( attrs ) )

			# only one is possible ==> overwriteTab wins
			if overwriteTab and overwriteProp:
				overwriteProp = None

			# add tab name to list if missing
			if not tabname in properties4tabs and not layoutDisabled:
				properties4tabs[ tabname ] = []
				ud.debug(ud.ADMIN, ud.INFO, 'modules update_extended_attributes: custom fields init for tab %s' % tabname)

			# remember tab for purging if required
			if overwriteTab and not tabname in overwriteTabList and not layoutDisabled:
				overwriteTabList.append(tabname)

			if not layoutDisabled:
				# get position on tab
				# -1 == append on top
				tabPosition = attrs.get( 'univentionUDMPropertyLayoutPosition', [ '-1' ] )[ 0 ]
				try:
					tabPosition = int( tabPosition )
				except:
					ud.debug(ud.ADMIN, ud.WARN, 'modules update_extended_attributes: custom field for tab %s: failed to convert tabNumber to int' % tabname)
					tabPosition = -1

				if tabPosition == -1:
					for ea_layout in properties4tabs[ tabname ]:
						try:
							if ea_layout.position <= tabPosition:
								# CLEANUP, FIXME: pos is undefined!
								# does not break because of except:
								tabPosition = pos-1
						except:
							ud.debug(ud.ADMIN, ud.WARN, 'modules update_extended_attributes: custom field for tab %s: failed to set tabPosition' % tabname)

				properties4tabs[ tabname ].append( EA_Layout( name = pname, tabName = tabname, position = tabPosition, advanced = tabAdvanced, overwrite = overwriteProp, fullWidth = fullWidth, groupName = groupname, groupPosition = groupPosition ) )

			module.extended_udm_attributes.extend( [ univention.admin.extended_attribute( pname, attrs.get('univentionUDMPropertyObjectClass', [])[0],
																				  attrs['univentionUDMPropertyLdapMapping'][0], deleteObjectClass,
																				  propertySyntaxString,
																				  propertyHook ) ] )

	# overwrite tabs that have been added by UDM extended attributes
	for tab in module.extended_attribute_tabnames:
		if not tab in overwriteTabList:
			overwriteTabList.append(tab)

	if properties4tabs:
		lastprio = -1000 # CLEANUP: unneeded

		# remove layout of tabs that have been marked for replacement
		removetab = [] # CLEANUP: unneeded
		for tab in module.layout:
			if tab.label in overwriteTabList:
				tab.layout = []

		for tabname in properties4tabs.keys():
			priofields = properties4tabs[ tabname ]
			priofields.sort()
			currentTab = None
			# get existing fields if tab has not been overwritten
			for tab in module.layout:
				if tab.label == tabname:
					# found tab in layout
					currentTab = tab
					# tab found ==> leave loop
					break
			else:
				# tab not found in current layout, so add it
				currentTab = Tab( tabname, tabname, advanced = True )
				module.layout.append( currentTab )
				# remember tabs that have been added by UDM extended attributes
				if not tabname in module.extended_attribute_tabnames:
					module.extended_attribute_tabnames.append( tabname )

			# check if tab is empty ==> overwritePosition is impossible
			freshTab = len( currentTab.layout ) == 0

			for ea_layout in priofields:
				if currentTab.advanced and not ea_layout.advanced:
					currentTab.advanced = False

				# if groupName is set check if it exists, otherwise create it
				if ea_layout.groupName:
					for item in currentTab.layout:
						if isinstance( item, ILayoutElement ) and item.label == ea_layout.groupName:
							break
					else: # group does not exist
						grp = Group( ea_layout.groupName )
						if ea_layout.groupPosition > 0:
							currentTab.layout.insert( ea_layout.groupPosition - 1, grp )
						else:
							currentTab.layout.append( grp )

				# - existing property shall be overwritten AND
				# - tab is not new and has not been cleaned before AND
				# - position >= 1 (top left position is defined as 1) AND
				# - old property with given position exists

				if currentTab.exists( ea_layout.name ):
					continue
				elif ea_layout.overwrite and not freshTab: # we want to overwrite an existing property
					# in the global fields ...
					if not ea_layout.groupName:
						replaced, layout = currentTab.replace( ea_layout.overwrite, ea_layout.name, recursive = True )
						if not replaced: # the property was not found so we'll append it
							currentTab.layout.append( ea_layout.label )
					else:
						for item in currentTab.layout:
							if isinstance( item, ILayoutElement ) and item.label == ea_layout.groupName:
								replaced, layout = item.replace( ea_layout.overwrite, ea_layout.name )
								if not replaced: # the property was not found so we'll append it
									item.append( ea_layout.label )
				else:
					if not ea_layout.groupName:
						currentTab.insert( ea_layout.position, ea_layout.name )
					else:
						for item in currentTab.layout:
							if isinstance( item, ILayoutElement ) and item.label == ea_layout.groupName:
								item.insert( ea_layout.position, ea_layout.name )
								break


	# check for properties with the syntax class LDAP_Search
	for pname, prop in module.property_descriptions.items():
		if prop.syntax.name == 'LDAP_Search':
			prop.syntax._load( lo )
			if prop.syntax.viewonly:
				module.mapping.unregister( pname )
		elif univention.admin.syntax.is_syntax( prop.syntax, univention.admin.syntax.complex ) and hasattr( prop.syntax, 'subsyntaxes' ):
			for text, subsyn in prop.syntax.subsyntaxes:
				if subsyn.name == 'LDAP_Search':
					subsyn._load( lo )
Exemplo n.º 31
0
        multivalue=True,
        include_in_default_search=True,
        options=[],
        dontsearch=False,
        required=False,
        may_change=True,
        identifies=False,
    ),
}

layout = [
    Tab(_('General'),
        _('Printer List'),
        layout=[
            Group(_('General printer driver list settings'),
                  layout=[
                      'name',
                      'printmodel',
                  ]),
        ]),
]


def unmapDriverList(old):
    return map(lambda x: shlex.split(x), old)


def mapDriverList(old):
    str = []
    for i in old:
        str.append('"%s" "%s"' % (i[0], i[1]))