Better structure for all_lists, rename functions to be more clear
This commit is contained in:
		| @@ -76,12 +76,12 @@ class Client: | |||||||
|         element = result._raw_elements[0] |         element = result._raw_elements[0] | ||||||
|         self.cookie = element.text |         self.cookie = element.text | ||||||
|         self.zeep.settings.extra_http_headers = [("Cookie", f"sympa_session={element.text}")] |         self.zeep.settings.extra_http_headers = [("Cookie", f"sympa_session={element.text}")] | ||||||
|         if self.checkCookie() != email: |         if self.check_cookie() != email: | ||||||
|             # FIXME Better exception |             # FIXME Better exception | ||||||
|             raise Exception("Unknown error: given cookie is invalid") |             raise Exception("Unknown error: given cookie is invalid") | ||||||
|         print("Successfully authenticated!") |         print("Successfully authenticated!") | ||||||
|  |  | ||||||
|     def checkCookie(self) -> str: |     def check_cookie(self) -> str: | ||||||
|         """ |         """ | ||||||
|         From the current cookie, retrieve the email address. |         From the current cookie, retrieve the email address. | ||||||
|         """ |         """ | ||||||
| @@ -89,7 +89,7 @@ class Client: | |||||||
|         element = result._raw_elements[0] |         element = result._raw_elements[0] | ||||||
|         return element.text |         return element.text | ||||||
|  |  | ||||||
|     def amI(self, mailing_list: str, function: str, email: str) -> bool: |     def is_subscriber(self, email: str, mailing_list: str, function: str = "subscriber") -> bool: | ||||||
|         """ |         """ | ||||||
|         Check if the given `email` is a member of type `function` in the `mailing_list`. |         Check if the given `email` is a member of type `function` in the `mailing_list`. | ||||||
|         The function parameter is one between subscriber, editor or owner. |         The function parameter is one between subscriber, editor or owner. | ||||||
| @@ -100,13 +100,13 @@ class Client: | |||||||
|         element = result._raw_elements[0] |         element = result._raw_elements[0] | ||||||
|         return element.text == "true" |         return element.text == "true" | ||||||
|  |  | ||||||
|     def review(self, mailing_list: str, full: bool = False) -> list: |     def get_subscribers(self, mailing_list: str, emails_only: bool = True) -> list: | ||||||
|         """ |         """ | ||||||
|         Get the list of all subscribers of a list, including the administrators and the editors. |         Get the list of all subscribers of a list, including the administrators and the editors. | ||||||
|         If full=False, retrieve the list of email addresses only. |         If emails_only == True, retrieve the list of email addresses only. | ||||||
|         If full=True, retrieve MLUser object, with the name of the user and the role. |         Else, retrieve MLUser object, with the name of the user and the role. | ||||||
|         """ |         """ | ||||||
|         if full: |         if not emails_only: | ||||||
|             users = list() |             users = list() | ||||||
|             elements = self.zeep.service.fullReview(mailing_list) |             elements = self.zeep.service.fullReview(mailing_list) | ||||||
|             for element in elements: |             for element in elements: | ||||||
| @@ -156,22 +156,24 @@ class Client: | |||||||
|             lists.append(ml) |             lists.append(ml) | ||||||
|         return lists |         return lists | ||||||
|  |  | ||||||
|     def all_lists(self, subtopics: list = None): |     def all_lists(self) -> list: | ||||||
|         """ |         """ | ||||||
|         Retrieve all lists that matches at least one subtopic in a given list. |         Retrieve all lists. | ||||||
|         If the list is None, retrieve all existing lists. |  | ||||||
|         Warning: takes time because it is retriving the list for each topic. |  | ||||||
|         """ |         """ | ||||||
|         if subtopics is None: |         elem = self.zeep.service.complexLists()._raw_elements[0] | ||||||
|             subtopics = TOPICS + SUBTOPICS |  | ||||||
|  |  | ||||||
|         lists = list() |         lists = list() | ||||||
|  |         for list_info in elem.getchildren(): | ||||||
|         for subtopic in list(subtopics): |             kwargs = dict() | ||||||
|             if "/" in subtopic: |             for child in list_info.getchildren(): | ||||||
|                 li = self.lists(subtopic.split("/")[0], subtopic.split("/")[1]) |                 if "listAddress" in child.tag: | ||||||
|             else: |                     key = "list_address" | ||||||
|                 li = self.lists(subtopic.split("/")[0], "") |                 elif "subject" in child.tag: | ||||||
|             lists.extend(li) |                     key = "subject" | ||||||
|  |                 elif "homepage" in child.tag: | ||||||
|  |                     key = "homepage" | ||||||
|  |                 else: | ||||||
|  |                     raise ValueError(f"Tag {child.tag} is unknown") | ||||||
|  |                 kwargs[key] = child.text | ||||||
|  |             ml = MailingList(**kwargs) | ||||||
|  |             lists.append(ml) | ||||||
|         return lists |         return lists | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user