Пример #1
0
 def _process_elements(cls, elements: HtmlBodyMailParts) -> HtmlBodyMailParts:
     if len(elements) >= 2:
         # Case 1 and 2, only one main and one quote
         if elements.get_nb_part_type("main") == 1 and elements.get_nb_part_type("quote") == 1:
             # Case 1 : Main first
             if elements[0].part_type == BodyMailPartType.Main:
                 cls._process_main_first_case(elements)
             # Case 2 : Quote first
             if elements[0].part_type == BodyMailPartType.Quote:
                 cls._process_quote_first_case(elements)
         else:
             # Case 3 : Multiple quotes and/or main
             cls._process_multiples_elems_case(elements)
     else:
         cls._process_default_case(elements)
         # default case (only one element or empty list)
     return elements
Пример #2
0
    def _distinct_elements(cls, tree: BeautifulSoup) -> HtmlBodyMailParts:
        parts = HtmlBodyMailParts()
        for elem in list(tree):
            part_txt = str(elem)
            part_type = BodyMailPartType.Main

            if HtmlMailQuoteChecker.is_quote(elem):
                part_type = BodyMailPartType.Quote
            elif HtmlMailSignatureChecker.is_signature(elem):
                part_type = BodyMailPartType.Signature

            part = BodyMailPart(part_txt, part_type)
            parts.append(part)
            # INFO - G.M - 2017-11-28 - Outlook.com special case
            # all after quote tag is quote
            if HtmlMailQuoteChecker._is_outlook_com_quote(elem):
                parts.follow = True
        return parts
Пример #3
0
    def _distinct_elements(cls, tree: BeautifulSoup) -> HtmlBodyMailParts:
        parts = HtmlBodyMailParts()
        for elem in list(tree):
            part_txt = str(elem)
            part_type = BodyMailPartType.Main

            if HtmlMailQuoteChecker.is_quote(elem):
                part_type = BodyMailPartType.Quote
            elif HtmlMailSignatureChecker.is_signature(elem):
                part_type = BodyMailPartType.Signature

            part = BodyMailPart(part_txt, part_type)
            parts.append(part)
            # INFO - G.M - 2017-11-28 - Outlook.com special case
            # all after quote tag is quote
            if HtmlMailQuoteChecker._is_outlook_com_quote(elem):
                parts.follow = True
        return parts
Пример #4
0
 def _process_elements(
         cls,
         elements: HtmlBodyMailParts,
 ) -> HtmlBodyMailParts:
     if len(elements) >= 2:
         # Case 1 and 2, only one main and one quote
         if elements.get_nb_part_type('main') == 1 and \
                         elements.get_nb_part_type('quote') == 1:
             # Case 1 : Main first
             if elements[0].part_type == BodyMailPartType.Main:
                 cls._process_main_first_case(elements)
             # Case 2 : Quote first
             if elements[0].part_type == BodyMailPartType.Quote:
                 cls._process_quote_first_case(elements)
         else:
             # Case 3 : Multiple quotes and/or main
             cls._process_multiples_elems_case(elements)
     else:
         cls._process_default_case(elements)
         # default case (only one element or empty list)
     return elements
Пример #5
0
 def _process_default_case(cls, elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Quote)
     elements.drop_part_type(BodyMailPartType.Signature)
Пример #6
0
 def _process_multiples_elems_case(cls, elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Signature)
Пример #7
0
 def _process_quote_first_case(cls, elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Signature)
Пример #8
0
 def _process_default_case(cls, elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Quote)
     elements.drop_part_type(BodyMailPartType.Signature)
Пример #9
0
 def _process_multiples_elems_case(cls,
                                   elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Signature)
Пример #10
0
 def _process_quote_first_case(cls, elements: HtmlBodyMailParts) -> None:
     elements.drop_part_type(BodyMailPartType.Signature)