diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2016-05-15 07:35:06 +0200 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2016-05-15 07:35:06 +0200 |
commit | fd4539715da589df5a81b333e71875289687922d (patch) | |
tree | 68d3f3882680b1f6da370d3367286e72923f2c66 /gitlab | |
parent | 417d27cf7c9569d5057dcced5481a6b9c8dfde2a (diff) | |
download | gitlab-fd4539715da589df5a81b333e71875289687922d.tar.gz |
Manage optional parameters for list() and get()
* List these elements in the API doc
* Implement for License objects
Diffstat (limited to 'gitlab')
-rw-r--r-- | gitlab/cli.py | 16 | ||||
-rw-r--r-- | gitlab/objects.py | 7 |
2 files changed, 20 insertions, 3 deletions
diff --git a/gitlab/cli.py b/gitlab/cli.py index 02dac8e..c7daceb 100644 --- a/gitlab/cli.py +++ b/gitlab/cli.py @@ -313,7 +313,7 @@ def _populate_sub_parser_by_class(cls, sub_parser): sub_parser_action.add_argument("--page", required=False) sub_parser_action.add_argument("--per-page", required=False) - elif action_name in ["get", "delete"]: + if action_name in ["get", "delete"]: if cls not in [gitlab.CurrentUser]: if cls.getRequiresId: id_attr = cls.idAttr.replace('_', '-') @@ -323,7 +323,17 @@ def _populate_sub_parser_by_class(cls, sub_parser): required=True) for x in cls.requiredGetAttrs if x != cls.idAttr] - elif action_name == "create": + if action_name == "get": + [sub_parser_action.add_argument("--%s" % x.replace('_', '-'), + required=False) + for x in cls.optionalGetAttrs] + + if action_name == "list": + [sub_parser_action.add_argument("--%s" % x.replace('_', '-'), + required=False) + for x in cls.optionalListAttrs] + + if action_name == "create": [sub_parser_action.add_argument("--%s" % x.replace('_', '-'), required=True) for x in cls.requiredCreateAttrs] @@ -331,7 +341,7 @@ def _populate_sub_parser_by_class(cls, sub_parser): required=False) for x in cls.optionalCreateAttrs] - elif action_name == "update": + if action_name == "update": id_attr = cls.idAttr.replace('_', '-') sub_parser_action.add_argument("--%s" % id_attr, required=True) diff --git a/gitlab/objects.py b/gitlab/objects.py index ebfba8b..9c6197c 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -183,6 +183,10 @@ class GitlabObject(object): requiredUrlAttrs = [] #: Attributes that are required when retrieving list of objects. requiredListAttrs = [] + #: Attributes that are optional when retrieving list of objects. + optionalListAttrs = [] + #: Attributes that are optional when retrieving single object. + optionalGetAttrs = [] #: Attributes that are required when retrieving single object. requiredGetAttrs = [] #: Attributes that are required when deleting object. @@ -754,6 +758,9 @@ class License(GitlabObject): canCreate = False idAttr = 'key' + optionalListAttrs = ['popular'] + optionalGetAttrs = ['project', 'fullname'] + class LicenseManager(BaseManager): obj_cls = License |