@@ -1524,16 +1524,16 @@ def add_relationship(self, **kwargs):
15241524
15251525 @objectify (Metric )
15261526 def add_metric (self , ** kwargs ):
1527- """add_metric(designer, name , question, about, methodology, topic, topic_framework, value_type, options, research_policy, report_type)
1527+ """add_metric(metric_designer, metric_name , question, about, methodology, topic, topic_framework, value_type, options, research_policy, report_type)
15281528
15291529 Creates and Returns a new Metric
15301530
15311531 Parameters
15321532 -------------------
1533- designer
1533+ metric_designer
15341534 designer of the metric
15351535
1536- name
1536+ metric_name
15371537 name of the metric
15381538
15391539 question
@@ -1571,7 +1571,7 @@ def add_metric(self, **kwargs):
15711571 :py:class:`~wikirate4py.models.Metric`
15721572
15731573 """
1574- required_params = ('designer ' , 'name ' , 'metric_type' , 'value_type' )
1574+ required_params = ('metric_designer ' , 'metric_name ' , 'metric_type' , 'value_type' )
15751575 optional_params = (
15761576 'question' ,
15771577 'about' ,
@@ -1588,7 +1588,7 @@ def add_metric(self, **kwargs):
15881588
15891589 params = {
15901590 "card[type]" : "Metric" ,
1591- "card[name]" : kwargs ['designer ' ] + '+' + kwargs ['name ' ],
1591+ "card[name]" : kwargs ['metric_designer ' ] + '+' + kwargs ['metric_name ' ],
15921592 "card[subcards][+value_type]" : kwargs ['value_type' ],
15931593 "card[subcards][+*metric_type]" : kwargs ['metric_type' ],
15941594 "card[skip]" : "requirements" ,
@@ -1607,8 +1607,8 @@ def add_metric(self, **kwargs):
16071607 return self .post ("/card/create" , params = params )
16081608
16091609 @objectify (Metric )
1610- def update_metric (self , identifier , ** kwargs ):
1611- """add_metric(designer, name , question, about, methodology, topic, topic_framework, value_type, options, research_policy, report_type, title)
1610+ def update_metric (self , identifier = None , metric_name = None , metric_designer = None , ** kwargs ):
1611+ """add_metric(metric_designer, metric_name , question, about, methodology, topic, topic_framework, value_type, options, research_policy, report_type, title)
16121612
16131613 Creates and Returns a new Metric
16141614
@@ -1617,7 +1617,7 @@ def update_metric(self, identifier, **kwargs):
16171617 designer
16181618 designer of the metric
16191619
1620- name
1620+ metric_name
16211621 name of the metric
16221622
16231623 question
@@ -1655,14 +1655,23 @@ def update_metric(self, identifier, **kwargs):
16551655 :py:class:`~wikirate4py.models.Metric`
16561656
16571657 """
1658+ if identifier is None :
1659+ if not metric_name or not metric_designer :
1660+ raise Wikirate4PyException (
1661+ "You must provide either `identifier` or both `metric_name` and `metric_designer`."
1662+ )
1663+
1664+ card_name = build_card_identifier (identifier ) if identifier is not None else '+' .join ([
1665+ build_card_identifier (metric_designer ),
1666+ build_card_identifier (metric_name )])
1667+
16581668 optional_params = (
16591669 'metric_type' , 'value_type' , 'question' , 'about' , 'methodology' , 'unit' , 'topic' , 'topic_framework' ,
16601670 'value_options' , 'research_policy' , 'report_type' , 'unpublished' )
16611671 self ._warn_unexpected (kwargs , optional_params )
16621672
16631673 params = {
16641674 "card[type]" : "Metric" ,
1665- # "card[name]": kwargs['designer'] + '+' + kwargs['name'],
16661675 "card[skip]" : "requirements" ,
16671676 "format" : "json" ,
16681677 "success[format]" : "json"
@@ -1676,7 +1685,7 @@ def update_metric(self, identifier, **kwargs):
16761685 params ['card[subcards][+' + k + ']' ] = str (kwargs [k ])
16771686
16781687 log .debug ("PARAMS: %r" , params )
1679- return self .post (f"/update/~ { identifier } " , params = params )
1688+ return self .post (f"/update/{ card_name } " , params = params )
16801689
16811690 @objectify (Relationship )
16821691 def update_relationship (self , ** kwargs ) -> Relationship :
0 commit comments