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] | ||||
|         self.cookie = 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 | ||||
|             raise Exception("Unknown error: given cookie is invalid") | ||||
|         print("Successfully authenticated!") | ||||
|  | ||||
|     def checkCookie(self) -> str: | ||||
|     def check_cookie(self) -> str: | ||||
|         """ | ||||
|         From the current cookie, retrieve the email address. | ||||
|         """ | ||||
| @@ -89,7 +89,7 @@ class Client: | ||||
|         element = result._raw_elements[0] | ||||
|         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`. | ||||
|         The function parameter is one between subscriber, editor or owner. | ||||
| @@ -100,13 +100,13 @@ class Client: | ||||
|         element = result._raw_elements[0] | ||||
|         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. | ||||
|         If full=False, retrieve the list of email addresses only. | ||||
|         If full=True, retrieve MLUser object, with the name of the user and the role. | ||||
|         If emails_only == True, retrieve the list of email addresses only. | ||||
|         Else, retrieve MLUser object, with the name of the user and the role. | ||||
|         """ | ||||
|         if full: | ||||
|         if not emails_only: | ||||
|             users = list() | ||||
|             elements = self.zeep.service.fullReview(mailing_list) | ||||
|             for element in elements: | ||||
| @@ -156,22 +156,24 @@ class Client: | ||||
|             lists.append(ml) | ||||
|         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. | ||||
|         If the list is None, retrieve all existing lists. | ||||
|         Warning: takes time because it is retriving the list for each topic. | ||||
|         Retrieve all lists. | ||||
|         """ | ||||
|         if subtopics is None: | ||||
|             subtopics = TOPICS + SUBTOPICS | ||||
|  | ||||
|         elem = self.zeep.service.complexLists()._raw_elements[0] | ||||
|         lists = list() | ||||
|  | ||||
|         for subtopic in list(subtopics): | ||||
|             if "/" in subtopic: | ||||
|                 li = self.lists(subtopic.split("/")[0], subtopic.split("/")[1]) | ||||
|             else: | ||||
|                 li = self.lists(subtopic.split("/")[0], "") | ||||
|             lists.extend(li) | ||||
|  | ||||
|         for list_info in elem.getchildren(): | ||||
|             kwargs = dict() | ||||
|             for child in list_info.getchildren(): | ||||
|                 if "listAddress" in child.tag: | ||||
|                     key = "list_address" | ||||
|                 elif "subject" in child.tag: | ||||
|                     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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user