diff --git a/branches/ucs-3.2/ucs-3.2-0/management/univention-directory-manager-modules/modules/univention/admin/syntax.py b/branches/ucs-3.2/ucs-3.2-0/management/univention-directory-manager-modules/modules/univention/admin/syntax.py index 1287f53..d92be5f 100644 --- a/branches/ucs-3.2/ucs-3.2-0/management/univention-directory-manager-modules/modules/univention/admin/syntax.py +++ b/branches/ucs-3.2/ucs-3.2-0/management/univention-directory-manager-modules/modules/univention/admin/syntax.py @@ -2356,7 +2356,95 @@ class nfssync(select): class univentionAdminModules(select): # we need a fallback - choices=[('computers/managedclient', 'Computer: Managed Client'), ('computers/domaincontroller_backup', 'Computer: Domain Controller Backup'), ('computers/domaincontroller_master', 'Computer: Domain Controller Master'), ('computers/domaincontroller_slave', 'Computer: Domain Controller Slave'), ('computers/trustaccount', 'Computer: Domain Trust Account'), ('computers/ipmanagedclient', 'Computer: IP Managed Client'), ('computers/macos', 'Computer: Mac OS X Client'), ('computers/memberserver', 'Computer: Member Server'), ('computers/mobileclient', 'Computer: Mobile Client'), ('computers/thinclient', 'Computer: Thin Client'), ('computers/windows', 'Computer: Windows'), ('container/cn', 'Container: Container'), ('container/dc', 'Container: Domain'), ('container/ou', 'Container: Organizational Unit'), ('dhcp/host', 'DHCP: Host'), ('dhcp/pool', 'DHCP: Pool'), ('dhcp/server', 'DHCP: Server'), ('dhcp/service', 'DHCP: Service'), ('dhcp/shared', 'DHCP: Shared Network'), ('dhcp/sharedsubnet', 'DHCP: Shared Subnet'), ('dhcp/subnet', 'DHCP: Subnet'), ('dns/alias', 'DNS: Alias Record'), ('dns/forward_zone', 'DNS: Forward Lookup Zone'), ('dns/host_record', 'DNS: Host Record'), ('dns/ptr_record', 'DNS: Pointer'), ('dns/reverse_zone', 'DNS: Reverse Lookup Zone'), ('dns/srv_record', 'DNS: Service Record'), ('dns/zone_mx_record', 'DNS: Zone Mail Exchanger'), ('dns/zone_txt_record', 'DNS: Zone Text'), ('groups/group', 'Group: Group'), ('mail/folder', 'Mail: IMAP Folder'), ('mail/domain', 'Mail: Mail Domains'), ('mail/lists', 'Mail: Mailing Lists'), ('networks/network', 'Networks: Network'), ('policies/autostart', 'Policy: Autostart'), ('policies/clientdevices', 'Policy: Client Devices'), ('policies/dhcp_scope', 'Policy: DHCP Allow/Deny'), ('policies/dhcp_boot', 'Policy: DHCP Boot'), ('policies/dhcp_dns', 'Policy: DHCP DNS'), ('policies/dhcp_dnsupdate', 'Policy: DHCP DNS Update'), ('policies/dhcp_leasetime', 'Policy: DHCP Lease Time'), ('policies/dhcp_netbios', 'Policy: DHCP Netbios'), ('policies/dhcp_routing', 'Policy: DHCP Routing'), ('policies/dhcp_statements', 'Policy: DHCP Statements'), ('policies/desktop', 'Policy: Desktop'), ('policies/xfree', 'Policy: Display'), ('policies/ldapserver', 'Policy: LDAP Server'), ('policies/mailquota', 'Policy: Mail Quota'), ('policies/maintenance', 'Policy: Maintenance'), ('policies/managedclientpackages', 'Policy: Packages Managed Client'), ('policies/masterpackages', 'Policy: Packages Master'), ('policies/memberpackages', 'Policy: Packages Member'), ('policies/mobileclientpackages', 'Policy: Packages Mobile Client'), ('policies/slavepackages', 'Policy: Packages Slave'), ('policies/pwhistory', 'Policy: Password Policy'), ('policies/print_quota', 'Policy: Print Quota'), ('policies/printserver', 'Policy: Print Server'), ('policies/release', 'Policy: Release'), ('policies/repositoryserver', 'Policy: Repository Server'), ('policies/repositorysync', 'Policy: Repository Sync'), ('policies/sound', 'Policy: Sound'), ('policies/thinclient', 'Policy: Thin Client'), ('policies/admin_container', 'Policy: Univention Admin Container Settings'), ('policies/share_userquota', 'Policy: Userquota-Policy'), ('settings/default', 'Preferences: Default'), ('settings/directory', 'Preferences: Path'), ('settings/admin', 'Preferences: Univention Admin Global Settings'), ('settings/user', 'Preferences: Univention Admin User Settings'), ('settings/xconfig_choices', 'Preferences: X Configuration Choices'), ('shares/printer', 'Print-Share: Printer'), ('shares/printergroup', 'Print-Share: Printer Group'), ('settings/license', 'Settings: License'), ('settings/lock', 'Settings: Lock'), ('settings/packages', 'Settings: Package List'), ('settings/printermodel', 'Settings: Printer Driver List'), ('settings/printeruri', 'Settings: Printer URI List'), ('settings/prohibited_username', 'Settings: Prohibited Usernames'), ('settings/sambaconfig', 'Settings: Samba Configuration'), ('settings/sambadomain', 'Settings: Samba Domain'), ('settings/service', 'Settings: Service'), ('settings/usertemplate', 'Settings: User Template'), ('shares/share', 'Share: Directory'), ('settings/cn', 'Univention Settings'), ('users/user', 'User'), ('users/passwd', 'User: Password'), ('users/self', 'User: Self')] + choices = [ + ('computers/managedclient', 'Computer: Managed Client'), + ('computers/domaincontroller_backup', 'Computer: Domain Controller Backup'), + ('computers/domaincontroller_master', 'Computer: Domain Controller Master'), + ('computers/domaincontroller_slave', 'Computer: Domain Controller Slave'), + ('computers/trustaccount', 'Computer: Domain Trust Account'), + ('computers/ipmanagedclient', 'Computer: IP Managed Client'), + ('computers/linux', 'Computer: Linux Client'), + ('computers/macos', 'Computer: Mac OS X Client'), + ('computers/memberserver', 'Computer: Member Server'), + ('computers/mobileclient', 'Computer: Mobile Client'), + ('computers/thinclient', 'Computer: Thin Client'), + ('computers/windows', 'Computer: Windows'), + ('container/cn', 'Container: Container'), + ('container/dc', 'Container: Domain'), + ('container/ou', 'Container: Organizational Unit'), + ('dhcp/host', 'DHCP: Host'), + ('dhcp/pool', 'DHCP: Pool'), + ('dhcp/server', 'DHCP: Server'), + ('dhcp/service', 'DHCP: Service'), + ('dhcp/shared', 'DHCP: Shared Network'), + ('dhcp/sharedsubnet', 'DHCP: Shared Subnet'), + ('dhcp/subnet', 'DHCP: Subnet'), + ('dns/alias', 'DNS: Alias Record'), + ('dns/forward_zone', 'DNS: Forward Lookup Zone'), + ('dns/host_record', 'DNS: Host Record'), + ('dns/ptr_record', 'DNS: Pointer'), + ('dns/reverse_zone', 'DNS: Reverse Lookup Zone'), + ('dns/srv_record', 'DNS: Service Record'), + ('dns/zone_mx_record', 'DNS: Zone Mail Exchanger'), + ('dns/zone_txt_record', 'DNS: Zone Text'), + ('groups/group', 'Group: Group'), + ('mail/folder', 'Mail: IMAP Folder'), + ('mail/domain', 'Mail: Mail Domains'), + ('mail/lists', 'Mail: Mailing Lists'), + ('networks/network', 'Networks: Network'), + ('policies/autostart', 'Policy: Autostart'), + ('policies/clientdevices', 'Policy: Client Devices'), + ('policies/dhcp_scope', 'Policy: DHCP Allow/Deny'), + ('policies/dhcp_boot', 'Policy: DHCP Boot'), + ('policies/dhcp_dns', 'Policy: DHCP DNS'), + ('policies/dhcp_dnsupdate', 'Policy: DHCP DNS Update'), + ('policies/dhcp_leasetime', 'Policy: DHCP Lease Time'), + ('policies/dhcp_netbios', 'Policy: DHCP Netbios'), + ('policies/dhcp_routing', 'Policy: DHCP Routing'), + ('policies/dhcp_statements', 'Policy: DHCP Statements'), + ('policies/desktop', 'Policy: Desktop'), + ('policies/xfree', 'Policy: Display'), + ('policies/ldapserver', 'Policy: LDAP Server'), + ('policies/mailquota', 'Policy: Mail Quota'), + ('policies/maintenance', 'Policy: Maintenance'), + ('policies/managedclientpackages', 'Policy: Packages Managed Client'), + ('policies/masterpackages', 'Policy: Packages Master'), + ('policies/memberpackages', 'Policy: Packages Member'), + ('policies/mobileclientpackages', 'Policy: Packages Mobile Client'), + ('policies/slavepackages', 'Policy: Packages Slave'), + ('policies/pwhistory', 'Policy: Password Policy'), + ('policies/print_quota', 'Policy: Print Quota'), + ('policies/printserver', 'Policy: Print Server'), + ('policies/release', 'Policy: Release'), + ('policies/repositoryserver', 'Policy: Repository Server'), + ('policies/repositorysync', 'Policy: Repository Sync'), + ('policies/sound', 'Policy: Sound'), + ('policies/thinclient', 'Policy: Thin Client'), + ('policies/admin_container', 'Policy: Univention Admin Container Settings'), + ('policies/share_userquota', 'Policy: Userquota-Policy'), + ('settings/default', 'Preferences: Default'), + ('settings/directory', 'Preferences: Path'), + ('settings/admin', 'Preferences: Univention Admin Global Settings'), + ('settings/user', 'Preferences: Univention Admin User Settings'), + ('settings/xconfig_choices', 'Preferences: X Configuration Choices'), + ('shares/printer', 'Print-Share: Printer'), + ('shares/printergroup', 'Print-Share: Printer Group'), + ('settings/license', 'Settings: License'), + ('settings/lock', 'Settings: Lock'), + ('settings/packages', 'Settings: Package List'), + ('settings/printermodel', 'Settings: Printer Driver List'), + ('settings/printeruri', 'Settings: Printer URI List'), + ('settings/prohibited_username', 'Settings: Prohibited Usernames'), + ('settings/sambaconfig', 'Settings: Samba Configuration'), + ('settings/sambadomain', 'Settings: Samba Domain'), + ('settings/service', 'Settings: Service'), + ('settings/usertemplate', 'Settings: User Template'), + ('shares/share', 'Share: Directory'), + ('settings/cn', 'Univention Settings'), + ('users/user', 'User'), + ('users/passwd', 'User: Password'), + ('users/self', 'User: Self'), + ] @classmethod def parse(self, text): @@ -2365,18 +2453,16 @@ class univentionAdminModules(select): return text raise univention.admin.uexceptions.valueInvalidSyntax, _('"%s" is not a Univention Admin Module.') % text -# Unfortunately, Python doesn't seem to support (static) class methods; -# however, (static) class variables such as "choices" seem to work; -# so, we'll modify "choices" using this global method -def univentionAdminModules_update(): - temp = [] - for name, mod in univention.admin.modules.modules.items(): - if not univention.admin.modules.virtual( mod ): - temp.append( ( name, univention.admin.modules.short_description( mod ) ) ) - - univentionAdminModules.choices = sorted( temp, key = operator.itemgetter( 1 ) ) - -__register_choice_update_function(univentionAdminModules_update) + @classmethod + def _update(cls): + """Dynamically update list of installed UDM modules.""" + cls.choices = sorted([ + (name, univention.admin.modules.short_description(mod)) + for name, mod in univention.admin.modules.modules.items() + if not univention.admin.modules.virtual(mod) + ], key=operator.itemgetter(1)) + +__register_choice_update_function(univentionAdminModules._update) class UDM_PropertySelect( complex ): subsyntaxes = ( ( _( 'UDM module' ), string ), ( _( 'property' ), string ) )