@@ -1694,47 +1694,93 @@ def group_members(self, group: str) -> OrderedDict:
1694
1694
"Group members is not implemented in Jira before version 6.0, upgrade the instance, if possible."
1695
1695
)
1696
1696
1697
- params = {"groupname" : group , "expand" : "users" }
1698
- r = self ._get_json ("group" , params = params )
1699
- size = r ["users" ]["size" ]
1700
- end_index = r ["users" ]["end-index" ]
1701
-
1702
- while end_index < size - 1 :
1703
- params = {
1704
- "groupname" : group ,
1705
- "expand" : f"users[{ end_index + 1 } :{ end_index + 50 } ]" ,
1706
- }
1707
- r2 = self ._get_json ("group" , params = params )
1708
- for user in r2 ["users" ]["items" ]:
1709
- r ["users" ]["items" ].append (user )
1710
- end_index = r2 ["users" ]["end-index" ]
1697
+ if self ._version < (10 , 0 , 0 ):
1698
+ params = {"groupname" : group , "expand" : "users" }
1699
+ r = self ._get_json ("group" , params = params )
1711
1700
size = r ["users" ]["size" ]
1701
+ end_index = r ["users" ]["end-index" ]
1702
+
1703
+ while end_index < size - 1 :
1704
+ params = {
1705
+ "groupname" : group ,
1706
+ "expand" : f"users[{ end_index + 1 } :{ end_index + 50 } ]" ,
1707
+ }
1708
+ r2 = self ._get_json ("group" , params = params )
1709
+ for user in r2 ["users" ]["items" ]:
1710
+ r ["users" ]["items" ].append (user )
1711
+ end_index = r2 ["users" ]["end-index" ]
1712
+ size = r ["users" ]["size" ]
1713
+
1714
+ result = {}
1715
+ for user in r ["users" ]["items" ]:
1716
+ # 'id' is likely available only in older JIRA Server,
1717
+ # it's not available on newer JIRA Server.
1718
+ # 'name' is not available in JIRA Cloud.
1719
+ hasId = user .get ("id" ) is not None and user .get ("id" ) != ""
1720
+ hasName = user .get ("name" ) is not None and user .get ("name" ) != ""
1721
+ result [
1722
+ (
1723
+ user ["id" ]
1724
+ if hasId
1725
+ else user .get ("name" )
1726
+ if hasName
1727
+ else user .get ("accountId" )
1728
+ )
1729
+ ] = {
1730
+ "name" : user .get ("name" ),
1731
+ "id" : user .get ("id" ),
1732
+ "accountId" : user .get ("accountId" ),
1733
+ "fullname" : user .get ("displayName" ),
1734
+ "email" : user .get ("emailAddress" , "hidden" ),
1735
+ "active" : user .get ("active" ),
1736
+ "timezone" : user .get ("timezone" ),
1737
+ }
1738
+ return OrderedDict (sorted (result .items (), key = lambda t : t [0 ]))
1739
+
1740
+ else :
1741
+ params = {"groupname" : group }
1742
+ group_member_api_endpoint = "group/member"
1743
+ r = self ._get_json (group_member_api_endpoint , params = params )
1744
+ end_index = r ["maxResults" ]
1745
+ isLast = r ["isLast" ]
1746
+
1747
+ while isLast is False :
1748
+ params = {
1749
+ "groupname" : group ,
1750
+ "startAt" : f"{ end_index } " ,
1751
+ }
1752
+ r2 = self ._get_json (group_member_api_endpoint , params = params )
1753
+ isLast = r2 ["isLast" ]
1754
+ for user in r2 ["values" ]:
1755
+ r ["values" ].append (user )
1756
+ end_index += r2 ["maxResults" ]
1757
+
1758
+ result = {}
1759
+ for user in r ["values" ]:
1760
+ # 'id' is likely available only in older JIRA Server,
1761
+ # it's not available on newer JIRA Server.
1762
+ # 'name' is not available in JIRA Cloud.
1763
+ hasId = user .get ("id" ) is not None and user .get ("id" ) != ""
1764
+ hasName = user .get ("name" ) is not None and user .get ("name" ) != ""
1765
+ result [
1766
+ (
1767
+ user ["id" ]
1768
+ if hasId
1769
+ else user .get ("name" )
1770
+ if hasName
1771
+ else user .get ("accountId" )
1772
+ )
1773
+ ] = {
1774
+ "name" : user .get ("name" ),
1775
+ "id" : user .get ("id" ),
1776
+ "accountId" : user .get ("accountId" ),
1777
+ "fullname" : user .get ("displayName" ),
1778
+ "email" : user .get ("emailAddress" , "hidden" ),
1779
+ "active" : user .get ("active" ),
1780
+ "timezone" : user .get ("timezone" ),
1781
+ }
1782
+ return OrderedDict (sorted (result .items (), key = lambda t : t [0 ]))
1712
1783
1713
- result = {}
1714
- for user in r ["users" ]["items" ]:
1715
- # 'id' is likely available only in older JIRA Server,
1716
- # it's not available on newer JIRA Server.
1717
- # 'name' is not available in JIRA Cloud.
1718
- hasId = user .get ("id" ) is not None and user .get ("id" ) != ""
1719
- hasName = user .get ("name" ) is not None and user .get ("name" ) != ""
1720
- result [
1721
- (
1722
- user ["id" ]
1723
- if hasId
1724
- else user .get ("name" )
1725
- if hasName
1726
- else user .get ("accountId" )
1727
- )
1728
- ] = {
1729
- "name" : user .get ("name" ),
1730
- "id" : user .get ("id" ),
1731
- "accountId" : user .get ("accountId" ),
1732
- "fullname" : user .get ("displayName" ),
1733
- "email" : user .get ("emailAddress" , "hidden" ),
1734
- "active" : user .get ("active" ),
1735
- "timezone" : user .get ("timezone" ),
1736
- }
1737
- return OrderedDict (sorted (result .items (), key = lambda t : t [0 ]))
1738
1784
1739
1785
def add_group (self , groupname : str ) -> bool :
1740
1786
"""Create a new group in Jira.
0 commit comments