diff --git a/digimarks.py b/digimarks.py index 7436e20..46faec6 100644 --- a/digimarks.py +++ b/digimarks.py @@ -167,6 +167,17 @@ class Bookmark(db.Model): return result +class PublicTag(db.Model): + """ Publicly shared tag """ + tagkey = CharField() + userkey = CharField() + tag = CharField() + + def generate_key(self): + """ Generate hash-based key for publicly shared tag """ + self.tagkey = os.urandom(16).encode('hex') + + def get_tags_for_user(userkey): """ Extract all tags from the bookmarks """ bookmarks = Bookmark.select().filter(Bookmark.userkey == userkey) @@ -330,6 +341,15 @@ def tag(userkey, tag): return render_template('bookmarks.html', bookmarks=bookmarks, userkey=userkey, tags=tags, action=pageheader) +@app.route('/pub/') +def publictag(tagkey): + """ Read-only overview of the bookmarks in the userkey/tag of this PublicTag """ + this_tag = get_object_or_404(PublicTag.get(PublicTag.tagkey == tagkey)) + print this_tag + bookmarks = Bookmark.select().where(Bookmark.userkey == this_tag.userkey, tags.contains(this_tag.tag)) + return render_template('publicbookmarks.html', bookmarks=bookmarks, tag=tag) + + @app.route('//adduser') def adduser(systemkey): """ Add user endpoint, convenience """ @@ -346,9 +366,10 @@ def adduser(systemkey): if __name__ == '__main__': - # create the bookmark table if it does not exist + # create the bookmark, user and public tag tables if they do not exist Bookmark.create_table(True) User.create_table(True) + PublicTag.create_table(True) users = User.select() print 'Current user keys:' diff --git a/templates/publicbookmarks.html b/templates/publicbookmarks.html new file mode 100644 index 0000000..9eacf1e --- /dev/null +++ b/templates/publicbookmarks.html @@ -0,0 +1,56 @@ +{% extends "base.html" %} +{% if not action %} +{% set action = 'Bookmarks' %} +{% endif %} +{% block title %}{{ action }}{% endblock %} +{% block pageheader %}{{ action }}{% endblock %} +{% block pagecontent %} + +{% if message %} +
+
+
+ + {{ message }} + +
+
+
+{% endif %} + +
+ {% for bookmark in bookmarks %} +
+
+
+ more_vert + {% if bookmark.http_status != 200 %} + report_problem + {% endif %} + {% if bookmark.favicon %} +     + {% endif %} +

+ {% if bookmark.starred == True %} + star + {% endif %} + {% if bookmark.title %} + {{ bookmark.title }} + {% else %} + [ no title ] + {% endif %} +

+
+
+ Added @ {{ bookmark.created_date.strftime('%Y-%m-%d %H:%M') }}close +
+ {% if bookmark.favicon %} +     + {% endif %} +
+
+
+
+ {% endfor %} +
+{% endblock %}