@@ -149,7 +149,9 @@ def get_company(self, identifier) -> Company:
149
149
if isinstance (identifier , int ):
150
150
return self .get ("/~{0}.json" .format (identifier ))
151
151
else :
152
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
152
+ return self .get ("/{0}.json" .format (
153
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
154
+ "_" )))
153
155
154
156
@objectify (CompanyItem , list = True )
155
157
def get_companies (self , ** kwargs ):
@@ -191,7 +193,9 @@ def get_topic(self, identifier):
191
193
if isinstance (identifier , int ):
192
194
return self .get ("/~{0}.json" .format (identifier ))
193
195
else :
194
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
196
+ return self .get ("/{0}.json" .format (
197
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
198
+ "_" )))
195
199
196
200
@objectify (TopicItem , True )
197
201
def get_topics (self , ** kwargs ):
@@ -280,7 +284,9 @@ def get_research_group(self, identifier):
280
284
if isinstance (identifier , int ):
281
285
return self .get ("/~{0}.json" .format (identifier ))
282
286
else :
283
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
287
+ return self .get ("/{0}.json" .format (
288
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
289
+ "_" )))
284
290
285
291
@objectify (ResearchGroupItem , list = True )
286
292
def get_research_groups (self , ** kwargs ):
@@ -319,7 +325,9 @@ def get_company_group(self, identifier):
319
325
if isinstance (identifier , int ):
320
326
return self .get ("/~{0}.json" .format (identifier ))
321
327
else :
322
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
328
+ return self .get ("/{0}.json" .format (
329
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
330
+ "_" )))
323
331
324
332
@objectify (CompanyGroupItem , True )
325
333
def get_company_groups (self , ** kwargs ):
@@ -359,7 +367,9 @@ def get_source(self, identifier):
359
367
if isinstance (identifier , int ):
360
368
return self .get ("/~{0}.json" .format (identifier ))
361
369
else :
362
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
370
+ return self .get ("/{0}.json" .format (
371
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
372
+ "_" )))
363
373
364
374
@objectify (SourceItem , True )
365
375
def get_sources (self , ** kwargs ):
@@ -473,7 +483,8 @@ def get_answers_by_metric_id(self, metric_id, **kwargs):
473
483
return self .get ("/~{0}+Answer.json" .format (metric_id ), endpoint_params = ('limit' , 'offset' ),
474
484
filters = (
475
485
'year' , 'status' , 'company_group' , 'country' , 'value' , 'value_from' , 'value_to' , 'updated' ,
476
- 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' ), ** kwargs )
486
+ 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' , 'published' ),
487
+ ** kwargs )
477
488
478
489
@objectify (AnswerItem , True )
479
490
def get_answers (self , metric_name , metric_designer , ** kwargs ):
@@ -545,18 +556,23 @@ def get_answers(self, metric_name, metric_designer, **kwargs):
545
556
bookmark
546
557
- `bookmark`, restrict to answers you have bookmarked
547
558
- `nobookmark`, restrict to answers you have not bookmarked
559
+ published
560
+ - `true`, returns only published answers (default mode)
561
+ - `false`, returns only unpublished answers
562
+ - `all`, returns all published and unpublished answers
563
+
548
564
549
565
Returns
550
566
-------
551
567
:py:class:`List`\[:class:`~wikirate4py.models.AnswerItem`]
552
568
553
569
"""
554
570
return self .get (
555
- "/~ {0}+{1}+Answer.json" .format (metric_designer .replace (" " , "_" ), metric_name .replace (" " , "_" )),
571
+ "/{0}+{1}+Answer.json" .format (metric_designer .replace (" " , "_" ), metric_name .replace (" " , "_" )),
556
572
endpoint_params = ('limit' , 'offset' ),
557
573
filters = (
558
574
'year' , 'status' , 'company_group' , 'country' , 'value' , 'value_from' , 'value_to' , 'updated' ,
559
- 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' ), ** kwargs )
575
+ 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' , 'published' ), ** kwargs )
560
576
561
577
@objectify (RelationshipAnswer )
562
578
def get_relationship_answer (self , id ):
@@ -644,6 +660,11 @@ def get_relationship_answers_by_metric_id(self, metric_id, **kwargs):
644
660
- `bookmark`, restrict to relationship answers you have bookmarked
645
661
- `nobookmark`, restrict to relationship answers you have not bookmarked
646
662
663
+ published
664
+ - `true`, returns only published answers (default mode)
665
+ - `false`, returns only unpublished answers
666
+ - `all`, returns all published and unpublished answers
667
+
647
668
Returns
648
669
-------
649
670
:py:class:`List`\[:class:`~wikirate4py.models.RelationshipAnswerItem`]
@@ -652,7 +673,7 @@ def get_relationship_answers_by_metric_id(self, metric_id, **kwargs):
652
673
return self .get ("/~{0}+Relationship_Answer.json" .format (metric_id ),
653
674
endpoint_params = ('limit' , 'offset' ), filters = (
654
675
'year' , 'status' , 'company_group' , 'country' , 'value' , 'value_from' , 'value_to' , 'updated' ,
655
- 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' ), ** kwargs )
676
+ 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' , 'published' ), ** kwargs )
656
677
657
678
@objectify (RelationshipAnswerItem , True )
658
679
def get_relationship_answers (self , metric_name , metric_designer , ** kwargs ):
@@ -722,6 +743,11 @@ def get_relationship_answers(self, metric_name, metric_designer, **kwargs):
722
743
- `bookmark`, restrict to relationship answers you have bookmarked
723
744
- `nobookmark`, restrict to relationship answers you have not bookmarked
724
745
746
+ published
747
+ - `true`, returns only published answers (default mode)
748
+ - `false`, returns only unpublished answers
749
+ - `all`, returns all published and unpublished answers
750
+
725
751
Returns
726
752
-------
727
753
:py:class:`List`\[:class:`~wikirate4py.models.RelationshipAnswerItem`]
@@ -732,7 +758,7 @@ def get_relationship_answers(self, metric_name, metric_designer, **kwargs):
732
758
metric_name .replace (" " , "_" )),
733
759
endpoint_params = ('limit' , 'offset' ), filters = (
734
760
'year' , 'status' , 'company_group' , 'country' , 'value' , 'value_from' , 'value_to' , 'updated' ,
735
- 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' ), ** kwargs )
761
+ 'updater' , 'outliers' , 'source' , 'verification' , 'project' , 'bookmark' , 'published' ), ** kwargs )
736
762
737
763
@objectify (Project )
738
764
def get_project (self , identifier ):
@@ -752,7 +778,9 @@ def get_project(self, identifier):
752
778
if isinstance (identifier , int ):
753
779
return self .get ("/~{0}.json" .format (identifier ))
754
780
else :
755
- return self .get ("/{0}.json" .format (identifier .replace (" " , "_" )))
781
+ return self .get ("/{0}.json" .format (
782
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
783
+ "_" )))
756
784
757
785
@objectify (ProjectItem , True )
758
786
def get_projects (self , ** kwargs ):
@@ -944,6 +972,86 @@ def add_company(self, name, headquarters, **kwargs):
944
972
945
973
return self .post ("/card/create" , params )
946
974
975
+ @objectify (Company )
976
+ def add_company (self , name , headquarters , ** kwargs ):
977
+ """add_company(name, headquarters, *, oar_id, open_corporates)
978
+
979
+ Creates and Returns a company given the company name and headquarters
980
+
981
+ Parameters
982
+ ----------
983
+ name
984
+ company name
985
+ headquarters
986
+ name of the region the headquarters of the company is located
987
+ wikipedia
988
+ company's wikipedia page url
989
+ oar_id
990
+ company's identifier on https://openapparel.org
991
+ open_corporates
992
+ company's identifier on https://opencorporates.com/
993
+
994
+ Returns
995
+ -------
996
+ :py:class:`~wikirate4py.models.Company`
997
+
998
+ """
999
+
1000
+ if name is None or headquarters is None :
1001
+ raise WikiRate4PyException (
1002
+ 'A WikiRate company is defined by a name and headquarters, please be sure you '
1003
+ 'have defined both while trying to create a new company' )
1004
+ optional_params = ('oar_id' , 'wikipedia' , 'open_corporates' )
1005
+ params = {
1006
+ "card[type]" : "Company" ,
1007
+ "card[name]" : name ,
1008
+ "card[subcards][+headquarters]" : headquarters ,
1009
+ "format" : "json" ,
1010
+ "success[format]" : "json"
1011
+ }
1012
+
1013
+ for k , arg in kwargs .items ():
1014
+ if arg is None :
1015
+ continue
1016
+ if k not in optional_params :
1017
+ log .warning (f'Unexpected parameter: { k } ' )
1018
+ else :
1019
+ params ['card[subcards][+' + k + ']' ] = str (arg )
1020
+ log .debug ("PARAMS: %r" , params )
1021
+ if 'open_corporates' not in kwargs :
1022
+ params ['card[skip]' ] = "update_oc_mapping_due_to_headquarters_entry"
1023
+
1024
+ return self .post ("/card/create" , params )
1025
+
1026
+ @objectify (RegionItem , True )
1027
+ def update_headquarters (self , identifier , headquarters ):
1028
+ params = {
1029
+ "card[content]" : headquarters ,
1030
+ "format" : "json" ,
1031
+ "success[format]" : "json"
1032
+ }
1033
+ if isinstance (identifier , int ):
1034
+ return self .post ("/update/~{0}" .format (identifier ) + '+:headquarters' , params )
1035
+ else :
1036
+ return self .post ("/update/{0}" .format (
1037
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
1038
+ "_" )) + '+:headquarters' ,
1039
+ params )
1040
+
1041
+ def update_oc_company_number (self , identifier , company_number ):
1042
+ params = {
1043
+ "card[content]" : company_number ,
1044
+ "format" : "json" ,
1045
+ "success[format]" : "json"
1046
+ }
1047
+ if isinstance (identifier , int ):
1048
+ return self .post ("/update/~{0}" .format (identifier ) + '+OpenCorporates' , params )
1049
+ else :
1050
+ return self .post ("/update/{0}" .format (
1051
+ identifier .replace (',' , ' ' ).replace ('.' , ' ' ).replace ('/' , ' ' ).replace ('-' , ' ' ).strip ().replace (" " ,
1052
+ "_" )) + '+OpenCorporates' ,
1053
+ params )
1054
+
947
1055
@objectify (Answer )
948
1056
def add_research_metric_answer (self , ** kwargs ):
949
1057
"""add_research_metric_answer(metric_designer, metric_name, company, year, value, source, *, comment)
@@ -1304,3 +1412,18 @@ def delete_wikirate_entity(self, id):
1304
1412
Deletes a WikiRate entity based on the given numeric identifier
1305
1413
"""
1306
1414
return self .delete ("/~{0}" .format (id ))
1415
+
1416
+ def add_companies_to_group (self , group_id , list = []):
1417
+ ids = ""
1418
+ for item in list :
1419
+ ids += '~[[' + item + ']]\n '
1420
+ print (ids )
1421
+ params = {
1422
+ "card[type]" : "List" ,
1423
+ "card[name]" : '~' + group_id + '+' + 'Company' ,
1424
+ "card[content]" : ids ,
1425
+ "format" : "json" ,
1426
+ "success[format]" : "json"
1427
+ }
1428
+
1429
+ return self .post ("/card/update" , params )
0 commit comments