import logging import cherrypy import turbogears from turbogears import ( controllers, expose, validate, redirect, widgets, validators, error_handler ) from bookmarker import json from model import Bookmarks, Categories log = logging.getLogger("bookmarker.controllers") class bookmark_fields(widgets.WidgetsList): bookmarkName = widgets.TextField(validator=validators.NotEmpty) link = widgets.TextField(validator=validators.URL) description = widgets.TextArea(validator=validators.NotEmpty) bookmark_form = widgets.TableForm(fields=bookmark_fields(), submit_text="Save Bookmark") class Root(controllers.RootController): @expose(template="bookmarker.templates.index") def index(self): return dict() @expose(template="bookmarker.templates.list") def list(self): b=Bookmarks.select() return dict(bookmarks=b) @expose(template="bookmarker.templates.form") def bookmark(self, *args, **kwargs): if args and args[0] == "add": b = "" submit_action= "/save_bookmark/0" if args and args[0] == "edit": from sqlobject import SQLObjectNotFound try: b = Bookmarks.get(args[1]) values = kwargs except SQLObjectNotFound: values = "" flash("That's not a valid Bookmark, do you want " + "to add one now?") submit_action = "/save_bookmark/%s" %args[1] return dict(form=bookmark_form, values=b, action=submit_action) @expose() @error_handler(bookmark) @validate(form=bookmark_form) def save_bookmark(self, ID, **kwargs): print 'save_bookmark(): ID=',ID, 'kwargs=', kwargs from sqlobject import SQLObjectNotFound try: b=Bookmarks.get(ID) b.set(**kwargs) except SQLObjectNotFound: Bookmarks(**kwargs) raise redirect("/list") @expose(template="bookmarker.templates.categorylist") def list_by_category(self): c=Categories.select() return dict(categories=c)