The json_metadata() has been updated to return ipa.Objects and
ipa.Methods. The i18n_messages() has been updated to include other
messages that are not available from the metadata.

https://fedorahosted.org/freeipa/ticket/899

--
Endi S. Dewata
From 95713cc08453380ed686f265eeb0836b76388a87 Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edew...@redhat.com>
Date: Fri, 18 Feb 2011 00:02:51 -0600
Subject: [PATCH] Updated json_metadata and i18n_messages.

The json_metadata() has been updated to return ipa.Objects and
ipa.Methods. The i18n_messages() has been updated to include other
messages that are not available from the metadata.
---
 API.txt                    |   10 +-
 ipalib/plugins/baseldap.py |   10 ++
 ipalib/plugins/hbacrule.py |    4 +
 ipalib/plugins/host.py     |    1 +
 ipalib/plugins/internal.py |  298 ++++++++++++++++++++++++++++++++++++++++---
 ipalib/plugins/service.py  |    1 +
 6 files changed, 299 insertions(+), 25 deletions(-)

diff --git a/API.txt b/API.txt
index 6e532da8805c9bff0bc1d95dbd683f073b06fccf..cb0eb514fac6aa1551d17a6df7efa1db726c91c9 100644
--- a/API.txt
+++ b/API.txt
@@ -1280,7 +1280,7 @@ option: Str('nsosversion', attribute=True, cli_name='os', label=Gettext('Operati
 option: Str('userpassword', attribute=True, cli_name='password', label=Gettext('User password', domain='ipa', localedir=None), multivalue=False, required=False)
 option: Flag('random', attribute=True, autofill=True, cli_name='random', default=False, flags=['no_search'], label=FixMe('random'), multivalue=False, required=False)
 option: Bytes('usercertificate', validate_certificate, attribute=True, cli_name='certificate', label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
-option: Flag('force', autofill=True, default=False,lag('force', autofill=True, default=False, doc=Gettext('force host name even if not in DNS', domain='ipa', localedir=None))
+option: Flag('force', autofill=True, default=False, label=Gettext('Force', domain='ipa', localedir=None))
 option: Flag('no_reverse', autofill=True, default=False,lag('no_reverse', autofill=True, default=False, doc=Gettext('skip reverse DNS detection', domain='ipa', localedir=None))
 option: Str('ip_address?', validate_ipaddr,tr('ip_address?', validate_ipaddr, doc=Gettext('Add the host to DNS with this IP address', domain='ipa', localedir=None))
 option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
@@ -1472,9 +1472,11 @@ command: i18n_messages
 args: 0,0,1
 output: Output('messages', <type 'dict'>, Gettext('Dict of I18N messages', domain='ipa', localedir=None))
 command: json_metadata
-args: 1,0,1
+args: 2,0,2
 arg: Str('objname?',tr('objname?', doc=Gettext('Name of object to export', domain='ipa', localedir=None))
-output: Output('metadata', <type 'dict'>, Gettext('Dict of JSON encoded IPA Objects', domain='ipa', localedir=None))
+arg: Str('methodname?',tr('methodname?', doc=Gettext('Name of method to export', domain='ipa', localedir=None))
+output: Output('objects', <type 'dict'>, Gettext('Dict of JSON encoded IPA Objects', domain='ipa', localedir=None))
+output: Output('methods', <type 'dict'>, Gettext('Dict of JSON encoded IPA Methods', domain='ipa', localedir=None))
 command: krbtpolicy_mod
 args: 1,8,3
 arg: Str('uid', attribute=True, cli_name='user', label=Gettext('User name', domain='ipa', localedir=None), multivalue=False, primary_key=True, query=True, required=False)
@@ -2082,7 +2084,7 @@ command: service_add
 args: 1,5,3
 arg: Str('krbprincipalname', validate_principal, attribute=True, cli_name='principal', label=Gettext('Principal', domain='ipa', localedir=None), multivalue=False, normalizer=<lambda>, primary_key=True, required=True)
 option: Bytes('usercertificate', validate_certificate, attribute=True, cli_name='certificate', flags=['no_search'], label=Gettext('Certificate', domain='ipa', localedir=None), multivalue=False, required=False)
-option: Flag('force', autofill=True, default=False,lag('force', autofill=True, default=False, doc=Gettext('force principal name even if not in DNS', domain='ipa', localedir=None))
+option: Flag('force', autofill=True, default=False, label=Gettext('Force', domain='ipa', localedir=None))
 option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui', flags=['no_output'])
 option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui', flags=['no_output'])
 option: Str('version?', exclude='webui', flags=['no_option', 'no_output'])
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 2d25219daa2e4a464d650705665aaa6ff33f1a16..2e284274b219180c3c2e35504f58d23b5a816593 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -620,6 +620,16 @@ class LDAPCreate(CallbackInterface, crud.Create):
     def exc_callback(self, keys, options, exc, call_func, *call_args, **call_kwargs):
         raise exc
 
+    # list of attributes we want exported to JSON
+    json_friendly_attributes = (
+        'takes_options',
+    )
+
+    def __json__(self):
+        json_dict = dict(
+            (a, getattr(self, a)) for a in self.json_friendly_attributes
+        )
+        return json_dict
 
 class LDAPQuery(CallbackInterface, crud.PKQuery):
     """
diff --git a/ipalib/plugins/hbacrule.py b/ipalib/plugins/hbacrule.py
index cb4dbb4f3756272ce8b79f584af74c5e6b2b839d..6445199a168b0fc4186e4a2599ea4c49f43339fb 100644
--- a/ipalib/plugins/hbacrule.py
+++ b/ipalib/plugins/hbacrule.py
@@ -194,6 +194,10 @@ class hbacrule(LDAPObject):
             label=_('Source hosts'),
             flags=['no_create', 'no_update', 'no_search'],
         ),
+        Str('sourcehost_hostgroup?',
+            label=_('Source host groups'),
+            flags=['no_create', 'no_update', 'no_search'],
+        ),
         Str('memberservice_hbacsvc?',
             label=_('Services'),
             flags=['no_create', 'no_update', 'no_search'],
diff --git a/ipalib/plugins/host.py b/ipalib/plugins/host.py
index 73bad5f8870a2de68895b9735a7d412e67b43cdf..b819688d0b5240e79b823833bfc6aa48319242e8 100644
--- a/ipalib/plugins/host.py
+++ b/ipalib/plugins/host.py
@@ -293,6 +293,7 @@ class host_add(LDAPCreate):
     member_attributes = ['managedby']
     takes_options = (
         Flag('force',
+            label=_('Force'),
             doc=_('force host name even if not in DNS'),
         ),
         Flag('no_reverse',
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 66ad45f2a0d48668821f29a4ed59d8d130d16307..e8b34a09b41c04b8cdd33b01176f1bed1b1d6b99 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -42,29 +42,44 @@ class json_metadata(Command):
         Str('objname?',
             doc=_('Name of object to export'),
         ),
+        Str('methodname?',
+            doc=_('Name of method to export'),
+        ),
     )
 
     has_output = (
-        Output('metadata', dict, doc=_('Dict of JSON encoded IPA Objects')),
+        Output('objects', dict, doc=_('Dict of JSON encoded IPA Objects')),
+        Output('methods', dict, doc=_('Dict of JSON encoded IPA Methods')),
     )
 
-    def execute(self, objname):
+    def execute(self, objname, methodname):
 
         if objname and objname in self.api.Object:
 
-            meta = dict(
-                result=dict(
-                    ((objname, json_serialize(self.api.Object[objname])), )
-                )
+            objects = dict(
+                (objname, json_serialize(self.api.Object[objname]))
             )
-            retval= dict([("metadata",meta)])
 
         else:
-            meta=dict(
+            objects = dict(
                 (o.name, json_serialize(o)) for o in self.api.Object()
-                )
+            )
 
-            retval= dict([("metadata",meta)])
+        if methodname and methodname in self.api.Method:
+
+            methods = dict(
+                (methodname, json_serialize(self.api.Method[methodname]))
+            )
+
+        else:
+            methods = dict(
+                (m.name, json_serialize(m)) for m in self.api.Method()
+            )
+
+        retval = dict([
+            ("objects", objects),
+            ("methods", methods),
+        ])
 
         return retval
 
@@ -78,13 +93,247 @@ class i18n_messages(Command):
 
     messages={
         "login": {"header" :_("Logged In As")},
-        "button":{
+        "objects": {
+            "aci": {
+                "attribute":_("Attribute"),
+                },
+            "automountlocation": {
+                "add":_("Add Automount Location"),
+                "identity":_("Automount Location Settings"),
+                },
+            "cert": {
+                "unspecified":_("Unspecified"),
+                "key_compromise":_("Key Compromise"),
+                "ca_compromise":_("CA Compromise"),
+                "affiliation_changed":_("Affiliation Changed"),
+                "superseded":_("Superseded"),
+                "cessation_of_operation":_("Cessation of Operation"),
+                "certificate_hold":_("Certificate Hold"),
+                "remove_from_crl":_("Remove from CRL"),
+                "privilege_withdrawn":_("Privilege Withdrawn"),
+                "aa_compromise":_("AA Compromise"),
+                "revoke_confirmation":_(
+                    "To confirm your intention to revoke this certificate, "+
+                    "select a reason from the pull-down list, and click "+
+                    "the \"Revoke\" button."),
+                "note":_("Note"),
+                "reason":_("Reason for Revocation"),
+                "restore_confirmation":_(
+                    "To confirm your intention to restore this certificate, "+
+                    "click the \"Restore\" button."),
+                "issued_to":_("Issued To"),
+                "common_name":_("Common Name"),
+                "organization":_("Organization"),
+                "organizational_unit":_("Organizational Unit"),
+                "serial_number":_("Serial Number"),
+                "issued_by":_("Issued By"),
+                "validity":_("Validity"),
+                "issued_on":_("Issued On"),
+                "expires_on":_("Expires On"),
+                "fingerprints":_("Fingerprints"),
+                "sha1_fingerprint":_("SHA1 Fingerprint"),
+                "md5_fingerprint":_("MD5 Fingerprint"),
+                "enter_csr":_("Enter the Base64-encoded CSR below"),
+                "valid":_("Valid Certificate Present"),
+                "new_certificate":_("New Certificate"),
+                "revoked":_("Certificate Revoked"),
+                "missing":_("No Valid Certificate"),
+                "view_certificate":_("Certificate for ${entity} ${primary_key}"),
+                "issue_certificate":_("Issue New Certificate for ${entity} ${primary_key}"),
+                "revoke_certificate":_("Revoke Certificate for ${entity} ${primary_key}"),
+                "restore_certificate":_("Restore Certificate for ${entity} ${primary_key}"),
+                },
+            "config": {
+                "ipaserver":_("Configuration"),
+                "cn":_("Name"),
+                },
+            "delegation": {
+                "add":_("Add Delegation"),
+                },
+            "dnszone": {
+                "add":_("Add DNS Zone"),
+                "identity":_("DNS Zone Settings"),
+                },
+            "dnsrecord": {
+                "add":_("Add DNS Resource Record"),
+                "resource":_("Resource"),
+                "type":_("Type"),
+                "data":_("Data"),
+                "title":_("Records for DNS Zone"),
+                },
+            "group": {
+                "add":_("Add New Group"),
+                "details":_("Group Settings"),
+                "posix":_("Is this a POSIX group?"),
+                },
+            "hbacrule": {
+                "add":_("Add New Rule"),
+                "active":_("Active"),
+                "allow":_("Allow"),
+                "deny":_("Deny"),
+                "inactive":_("Inactive"),
+                "ipaenabledflag":_("Rule status"),
+                "user":_("Who"),
+                "anyone":_("Anyone"),
+                "specified_users":_("Specified Users and Groups"),
+                "host":_("Accessing"),
+                "any_host":_("Any Host"),
+                "specified_hosts":_("Specified Hosts and Groups"),
+                "service":_("Via Service"),
+                "any_service":_("Any Service"),
+                "specified_services":_("Specified Services and Groups"),
+                "sourcehost":_("From"),
+                },
+            "hbacsvc": {
+                "add":_("Add New HBAC Service"),
+                },
+            "hbacsvcgroup": {
+                "add":_("Add New HBAC Service Group"),
+                "services":_("Services"),
+                },
+            "host": {
+                "add":_("Add New Host"),
+                "certificate":_("Host Certificate"),
+                "cn":_("Host Name"),
+                "details":_("Host Settings"),
+                "enrolled":_("Enrolled?"),
+                "enrollment":_("Enrollment"),
+                "fqdn":_("Fully Qualified Host Name"),
+                "posix":_("Is this a POSIX group?"),
+                "status":_("Status"),
+                "valid":_("Kerberos Key Present, Host Provisioned"),
+                "delete_key_unprovision":_("Delete Key, Unprovision"),
+                "missing":_("Kerberos Key Not Present"),
+                "enroll_otp":_("Enroll via One-Time-Password"),
+                "set_otp":_("Set OTP"),
+                "otp_confirmation":_("One-Time-Password has been set."),
+                "unprovision_title":_("Unprovisioning ${entity}"),
+                "unprovision_confirmation":_("Are you sure you want to unprovision this host?"),
+                "unprovision":_("Unprovision"),
+                },
+            "hostgroup": {
+                "add":_("Add Hostgroup"),
+                "identity":_("Hostgroup Settings"),
+                },
+            "krbtpolicy": {
+                "identity":_("Kerberos ticket policy"),
+                },
+            "netgroup": {
+                "add":_("Add Netgroup"),
+                "identity":_("Netgroup Settings"),
+                },
+            "permission": {
+                "add":_("Add Permission"),
+                "identity":_("Identity"),
+                "rights":_("Rights"),
+                "target":_("Target"),
+                "filter":_("Filter"),
+                "subtree":_("By Subtree"),
+                "targetgroup":_("Target Group"),
+                "type":_("Object By Type"),
+                "invalid_target":_("Permission with invalid target specification"),
+                },
+            "privilege": {
+                "add":_("Add Privilege"),
+                "identity":_("Privilege Settings"),
+                },
+            "pwpolicy": {
+                "add":_("Add Password Policy"),
+                "identity":_("Password Policy"),
+                },
+            "role": {
+                "add":_("Add Role"),
+                "identity":_("Role Settings"),
+                },
+            "selfservice": {
+                "add":_("Add Self Service Definition"),
+                },
+            "service": {
+                "add":_("Add New Service"),
+                "certificate":_("Service Certificate"),
+                "details":_("Service Settings"),
+                "host":_("Host Name"),
+                "provisioning":_("Provisioning"),
+                "service":_("Service"),
+                "status":_("Status"),
+                "valid":_("Kerberos Key Present, Service Provisioned"),
+                "delete_key_unprovision":_("Delete Key, Unprovision"),
+                "missing":_("Kerberos Key Not Present"),
+                "unprovision_title":_("Unprovisioning ${entity}"),
+                "unprovision_confirmation":_("Are you sure you want to unprovision this service?"),
+                "unprovision":_("Unprovision"),
+                },
+            "sudocmd": {
+                "add":_("Add New SUDO Command"),
+                "groups":_("Groups"),
+                },
+            "sudocmdgroup": {
+                "add":_("Add New SUDO Command Group"),
+                "commands":_("Commands"),
+                },
+            "sudorule": {
+                "add":_("Add New Rule"),
+                "active":_("Active"),
+                "inactive":_("Inactive"),
+                "allow":_("Allow"),
+                "deny":_("Deny"),
+                "user":_("Who"),
+                "anyone":_("Anyone"),
+                "specified_users":_("Specified Users and Groups"),
+                "host":_("Access this host"),
+                "any_host":_("Any Host"),
+                "specified_hosts":_("Specified Hosts and Groups"),
+                "command":_("Run Commands"),
+                "any_command":_("Any Command"),
+                "specified_commands":_("Specified Commands and Groups"),
+                "runas":_("As Whom"),
+                "any_group":_("Any Group"),
+                "specified_groups":_("Specified Groups"),
+                "ipaenabledflag":_("Rule status"),
+                "external":_("External"),
+                },
+            "user": {
+                "add":_("Add User"),
+                "account":_("Account Settings"),
+                "contact":_("Contact Settings"),
+                "mailing":_("Mailing Address"),
+                "employee":_("Employee Information"),
+                "misc":_("Misc. Information"),
+                "active":_("Active"),
+                "deactivate":_("Click to Deactivate"),
+                "inactive":_("Inactive"),
+                "activate":_("Click to Activate"),
+                "error_changing_status":_("Error changing account status"),
+                "reset_password":_("Reset password"),
+                "new_password":_("New Password"),
+                "repeat_password":_("Repeat Password"),
+                "password_change_complete":_("Password change complete"),
+                "password_must_match":_("Passwords must match"),
+                },
+            },
+        "buttons":{
             "add":_("Add"),
+            "add_and_add_another":_("Add and Add Another"),
+            "add_and_edit":_("Add and Edit"),
+            "add_and_close":_("Add and Close"),
+            "cancel": _("Cancel"),
             "find": _("Find"),
+            "get": _("Get"),
             "reset":_("Reset"),
             "update":_("Update"),
             "enroll":_("Enroll"),
             "remove":_("Delete"),
+            "restore":_("Restore"),
+            "revoke":_("Revoke"),
+            "view":_("View"),
+            "back_to_list":_("Back to List"),
+            },
+        "dialogs":{
+            "remove_empty":_("Select ${entity} to be removed."),
+            "remove_title":_("Remove ${entity}."),
+            "hide_already_enrolled":_("Hide already enrolled."),
+            "available":_("Available"),
+            "prospective":_("Prospective"),
             },
         "facets":{
             "search":_("Search"),
@@ -95,15 +344,16 @@ class i18n_messages(Command):
             "select_all":_("Select All"),
             "unselect_all":_("Unselect All"),
             "delete_confirm":_("Are you sure you want to delete selected entries?"),
+            "truncated":_(
+                "Query returned results than configured size limit will show. " +
+                "First ${counter} results shown."),
             },
         "details":{
+            "general":_("General"),
+            "settings":_("${entity} Settings"),
             "identity":_("Identity Settings"),
-            "account":_("Account Settings"),
-            "contact":_("Contact Settings"),
-            "mailing":_("Mailing Address"),
-            "employee":_("Employee Information"),
-            "misc":_("Misc. Information"),
-            "to_top":_("Back to Top")},
+            "to_top":_("Back to Top")
+            },
         "tabs": {
             "identity":_("Identity"),
             "policy":_("Policy"),
@@ -111,11 +361,17 @@ class i18n_messages(Command):
             "ipaserver":_("IPA Server"),
             "sudo":_("SUDO"),
             "hbac":_("HBAC"),
-            "role":_("Role Based Access Control")},
+            "role":_("Role Based Access Control")
+            },
         "association":{
-            "managedby":_("Managed by"),
-            "members":_("Members"),
-            "membershipin":_("Membership in")},
+            "add":_("Add ${other_entity} into ${entity} ${primary_key}"),
+            "member":_("${other_entity} enrolled in ${entity} ${primary_key}"),
+            "parent":_("${entity} ${primary_key} is enrolled in the following ${other_entity}"),
+            "remove":_("Remove ${other_entity} from ${entity} ${primary_key}"),
+            },
+        "widget":{
+            "validation_error":_("Text does not match field pattern"),
+            },
         "ajax":{
             "401":_("Your kerberos ticket no longer valid."+
                 "Please run KInit and then click 'retry'"+
diff --git a/ipalib/plugins/service.py b/ipalib/plugins/service.py
index 6bf165241c4bfc46599b5a5486c7120914e3f645..21889aa698408d6d44fc3663fb5b89869e967cdc 100644
--- a/ipalib/plugins/service.py
+++ b/ipalib/plugins/service.py
@@ -326,6 +326,7 @@ class service_add(LDAPCreate):
     has_output_params = LDAPCreate.has_output_params + output_params
     takes_options = (
         Flag('force',
+            label=_('Force'),
             doc=_('force principal name even if not in DNS'),
         ),
     )
-- 
1.6.6.1

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to