Add Bookmark.normalize_title and _url.
This commit is contained in:
parent
6ee86431e5
commit
b4d3de3651
2 changed files with 35 additions and 11 deletions
|
@ -541,13 +541,42 @@ class Bookmark(ObjectBase):
|
|||
db_row = dict(zip(constants.SQL_COLUMNS['bookmarks'], db_row))
|
||||
|
||||
self.id = db_row['id']
|
||||
self.title = db_row['title']
|
||||
self.url = db_row['url']
|
||||
self.title = self.normalize_title(db_row['title'])
|
||||
self.url = self.normalize_url(db_row['url'])
|
||||
self.author_id = self.normalize_author_id(db_row['author_id'])
|
||||
|
||||
def __repr__(self):
|
||||
return 'Bookmark:{id}'.format(id=self.id)
|
||||
|
||||
@staticmethod
|
||||
def normalize_title(title):
|
||||
if title is None:
|
||||
return ''
|
||||
|
||||
if not isinstance(title, str):
|
||||
raise TypeError('Title must be string, not %s' % type(title))
|
||||
|
||||
title = title.strip()
|
||||
for whitespace in string.whitespace:
|
||||
title = title.replace(whitespace, ' ')
|
||||
|
||||
return title
|
||||
|
||||
@staticmethod
|
||||
def normalize_url(url):
|
||||
if url is None:
|
||||
return ''
|
||||
|
||||
if not isinstance(url, str):
|
||||
raise TypeError('URL must be string, not %s' % type(title))
|
||||
|
||||
url = url.strip()
|
||||
|
||||
if not url:
|
||||
raise ValueError('Invalid URL "%s"' % url)
|
||||
|
||||
return url
|
||||
|
||||
@decorators.required_feature('bookmark.edit')
|
||||
@decorators.transaction
|
||||
def delete(self, *, commit=True):
|
||||
|
@ -565,12 +594,10 @@ class Bookmark(ObjectBase):
|
|||
return
|
||||
|
||||
if title is not None:
|
||||
self.title = title
|
||||
self.title = self.normalize_title(title)
|
||||
|
||||
if url is not None:
|
||||
if not url:
|
||||
raise ValueError('Need a URL')
|
||||
self.url = url
|
||||
self.url = self.normalize_url(url)
|
||||
|
||||
data = {
|
||||
'id': self.id,
|
||||
|
|
|
@ -126,15 +126,12 @@ class PDBBookmarkMixin:
|
|||
@decorators.required_feature('bookmark.new')
|
||||
@decorators.transaction
|
||||
def new_bookmark(self, url, title=None, *, author=None, commit=True):
|
||||
if not url:
|
||||
raise ValueError('Must provide a URL')
|
||||
title = objects.Bookmark.normalize_title(title)
|
||||
url = objects.Bookmark.normalize_url(url)
|
||||
|
||||
bookmark_id = self.generate_id('bookmarks')
|
||||
title = title or None
|
||||
author_id = self.get_user_id_or_none(author)
|
||||
|
||||
# To do: NORMALIZATION AND VALIDATION
|
||||
|
||||
data = {
|
||||
'author_id': author_id,
|
||||
'id': bookmark_id,
|
||||
|
|
Loading…
Reference in a new issue