def set_gist_meta(organization, gist): meta = Obj() meta.watch = get_url(organization, gist, 'gists.watch') meta.unwatch = get_url(organization, gist, 'gists.unwatch') meta.watchers = get_url(organization, gist, 'gists.watchers') meta.view = get_url(organization, gist, 'gists.view') meta.edit = get_url(organization, gist, 'gists.edit') meta.fork = get_url(organization, gist, 'gists.fork') meta.forks = get_url(organization, gist, 'gists.forks') meta.delete = get_url(organization, gist, 'gists.delete') meta.revisions = get_url(organization, gist, 'gists.revisions') if gist.parent: meta.parent = set_gist_meta(organization, get_gist(gist.parent)) @reqcache('gist:revisions:count:{gid}') def count_revisions(gid): jagare = get_jagare(gist.id, gist.parent) error, ret = jagare.get_log(gist.get_real_path(), total=1) count = 0 if error else ret['total'] return count meta.count_revisions = lambda: count_revisions(gist.id) setattr(gist, 'meta', meta)