Exemple #1
0
 def test_no_html(self):
     ''' just text '''
     input_text = 'no      html  '
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual(input_text, output)
Exemple #2
0
 def test_valid_html(self):
     ''' leave the html untouched '''
     input_text = '<b>yes    </b> <i>html</i>'
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual(input_text, output)
Exemple #3
0
 def test_disallowed_html(self):
     ''' remove disallowed html but keep allowed html '''
     input_text = '<div>  yes <i>html</i></div>'
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual('  yes <i>html</i>', output)
Exemple #4
0
 def test_valid_html_attrs(self):
     ''' and don't remove attributes '''
     input_text = '<a href="fish.com">yes    </a> <i>html</i>'
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual(input_text, output)
Exemple #5
0
 def test_no_html(self):
     """ just text """
     input_text = "no      html  "
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual(input_text, output)
Exemple #6
0
 def test_disallowed_html(self):
     """ remove disallowed html but keep allowed html """
     input_text = "<div>  yes <i>html</i></div>"
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual("  yes <i>html</i>", output)
 def test_valid_html_invalid_attrs(self):
     """do remove un-approved attributes"""
     input_text = '<a href="fish.com" fish="hello">yes    </a> <i>html</i>'
     parser = InputHtmlParser()
     parser.feed(input_text)
     output = parser.get_output()
     self.assertEqual(output, '<a href="fish.com">yes    </a> <i>html</i>')
Exemple #8
0
def to_markdown(content):
    """catch links and convert to markdown"""
    content = markdown(content)
    content = format_links(content)
    # sanitize resulting html
    sanitizer = InputHtmlParser()
    sanitizer.feed(content)
    return sanitizer.get_output()
Exemple #9
0
    def test_invalid_html(self):
        input_text = '<b>yes  <i>html</i>'
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual('yes  html', output)

        input_text = 'yes <i></b>html   </i>'
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual('yes html   ', output)
Exemple #10
0
    def test_invalid_html(self):
        ''' remove all html when the html is malformed '''
        input_text = '<b>yes  <i>html</i>'
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual('yes  html', output)

        input_text = 'yes <i></b>html   </i>'
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual('yes html   ', output)
Exemple #11
0
    def test_invalid_html(self):
        """ remove all html when the html is malformed """
        input_text = "<b>yes  <i>html</i>"
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual("yes  html", output)

        input_text = "yes <i></b>html   </i>"
        parser = InputHtmlParser()
        parser.feed(input_text)
        output = parser.get_output()
        self.assertEqual("yes html   ", output)
Exemple #12
0
def create_generated_note(user, content, mention_books=None, privacy='public'):
    ''' a note created by the app about user activity '''
    # sanitize input html
    parser = InputHtmlParser()
    parser.feed(content)
    content = parser.get_output()

    status = models.GeneratedNote.objects.create(user=user,
                                                 content=content,
                                                 privacy=privacy)

    if mention_books:
        for book in mention_books:
            status.mention_books.add(book)

    return status
Exemple #13
0
def create_generated_note(user, content, mention_books=None, privacy="public"):
    """a note created by the app about user activity"""
    # sanitize input html
    parser = InputHtmlParser()
    parser.feed(content)
    content = parser.get_output()

    with transaction.atomic():
        # create but don't save
        status = models.GeneratedNote(user=user,
                                      content=content,
                                      privacy=privacy)
        # we have to save it to set the related fields, but hold off on telling
        # folks about it because it is not ready
        status.save(broadcast=False)

        if mention_books:
            status.mention_books.set(mention_books)
        status.save(created=True)
    return status
Exemple #14
0
 def field_from_activity(self, value):
     if not value or value == MISSING:
         return None
     sanitizer = InputHtmlParser()
     sanitizer.feed(value)
     return sanitizer.get_output()