def recent(environ, start_response): bag_name = environ['tiddlyweb.query'].get('bag', [None])[0] recipe_name = environ['tiddlyweb.query'].get('recipe', [None])[0] since = environ['tiddlyweb.query'].get('since', [None])[0] store = environ['tiddlyweb.store'] tiddlers = [] title_string = "nothing" if recipe_name: recipe = Recipe(recipe_name) recipe = store.get(recipe) tiddlers = control.get_tiddlers_from_recipe(recipe, environ) title_string = 'recipe %s' % recipe_name if bag_name: bag = store.get(Bag(bag_name)) tiddlers = bag.list_tiddlers() title_string = 'bag %s' % bag_name matching_tiddlers = [] if since: modified_string = since else: time_object = datetime.utcnow() - timedelta(30) modified_string = unicode(time_object.strftime('%Y%m%d%H%M%S')) def reify_revision(tiddler, revision_id): revision = Tiddler(tiddler.title, tiddler.bag) revision.revision = revision_id return store.get(revision) selector = select_parse('modified:>%s' % modified_string) tiddlers = [store.get(tiddler) for tiddler in tiddlers] tiddlers = selector(tiddlers) for tiddler in tiddlers: revisions = [ reify_revision(tiddler, id) for id in store.list_tiddler_revisions(tiddler) ] matching_tiddlers.extend(selector(revisions)) tiddlers = sort_by_attribute('modified', matching_tiddlers, reverse=True) environ['tiddlyweb.title'] = 'Recent changes for %s' % title_string return [ '%s:%s:%s:%s<br/>' % (tiddler.title, tiddler.revision, tiddler.modified, tiddler.modifier) for tiddler in tiddlers ]
def recent(environ, start_response): bag_name = environ['tiddlyweb.query'].get('bag', [None])[0] recipe_name = environ['tiddlyweb.query'].get('recipe', [None])[0] since = environ['tiddlyweb.query'].get('since', [None])[0] store = environ['tiddlyweb.store'] tiddlers = [] title_string = "nothing" if recipe_name: recipe = Recipe(recipe_name) recipe = store.get(recipe) tiddlers = control.get_tiddlers_from_recipe(recipe, environ) title_string = 'recipe %s' % recipe_name if bag_name: bag = store.get(Bag(bag_name)) tiddlers = bag.list_tiddlers() title_string = 'bag %s' % bag_name matching_tiddlers = [] if since: modified_string = since else: time_object = datetime.utcnow() - timedelta(30) modified_string = unicode(time_object.strftime('%Y%m%d%H%M%S')) def reify_revision(tiddler, revision_id): revision = Tiddler(tiddler.title, tiddler.bag) revision.revision = revision_id return store.get(revision) selector = select_parse('modified:>%s' % modified_string) tiddlers = [store.get(tiddler) for tiddler in tiddlers] tiddlers = selector(tiddlers) for tiddler in tiddlers: revisions = [reify_revision(tiddler, id) for id in store.list_tiddler_revisions(tiddler)] matching_tiddlers.extend(selector(revisions)) tiddlers = sort_by_attribute('modified', matching_tiddlers, reverse=True) environ['tiddlyweb.title'] = 'Recent changes for %s' % title_string return ['%s:%s:%s:%s<br/>' % (tiddler.title, tiddler.revision, tiddler.modified, tiddler.modifier) for tiddler in tiddlers]
def test_modified_sort(): sorted_tiddlers = sort_by_attribute('modified', tiddlers) assert ['2007', '2008', '20090509000000', '200905090011'] == [ tiddler.modified for tiddler in sorted_tiddlers]
def test_count_sort(): sorted_tiddlers = sort_by_attribute('count', tiddlers) assert ['5', '8', '13', '24'] == [tiddler.fields['count'] for tiddler in sorted_tiddlers]
def test_reverse_sort(): sorted_tiddlers = sort_by_attribute('title', tiddlers, reverse=True) assert ['c', 'b', 'a', '1'] == [ tiddler.title for tiddler in sorted_tiddlers]
def test_simple_sort(): sorted_tiddlers = sort_by_attribute('title', tiddlers) assert ['1', 'a', 'b', 'c'] == [ tiddler.title for tiddler in sorted_tiddlers]
def test_modified_sort(): sorted_tiddlers = sort_by_attribute('modified', tiddlers) assert ['2007', '2008', '20090509000000', '200905090011' ] == [tiddler.modified for tiddler in sorted_tiddlers]
def test_reverse_sort(): sorted_tiddlers = sort_by_attribute('title', tiddlers, reverse=True) assert ['c', 'b', 'a', '1'] == [tiddler.title for tiddler in sorted_tiddlers]
def test_simple_sort(): sorted_tiddlers = sort_by_attribute('title', tiddlers) assert ['1', 'a', 'b', 'c'] == [tiddler.title for tiddler in sorted_tiddlers]
def test_modifier_sort(): with py.test.raises(AttributeError): sort_by_attribute("blam", tiddlers, reverse=True)