def viewable(self, uri, ctx): if os.environ.get('PHOTO_FORCE_LOGIN', ''): agent = URIRef(os.environ['PHOTO_FORCE_LOGIN']) else: agent = webuser.getUser(ctx) return access.viewable(self.graph, uri, agent)
def __init__(self, ctx, graph, uri, **kw): """ uri is the whole page load (relative) uri """ self.graph, self.uri = graph, uri agent = getUser(ctx) self.desc = ImageSetDesc(graph, agent, uri)
def serviceCall(ctx, name, uri): """ deferred to result of calling this internal service on the image uri. user credentials are passed on """ t1 = time.time() log.debug("serviceCall: %s %s", name, uri) def endTime(result): log.info("service call %r in %.01f ms", name, 1000 * (time.time() - t1)) return result return getPage(str('%s?uri=%s' % (networking.serviceUrl(name), urllib.quote(uri, safe=''))), headers={'x-foaf-agent' : str(getUser(ctx)), }).addCallback(endTime)
def renderHTTP(self, ctx): req = inevow.IRequest(ctx) if (req.getHeader('accept') == 'application/json' and not ctx.arg("jsonUpdate") and not ctx.arg('setList')): # approximage parse return self.jsonContent() if req.method == 'POST': if ctx.arg('tagRange'): return self.postTagRange(ctx) raise ValueError("unknown action") if ctx.arg('rss'): # can't use a /rss child, since we're not receiving # segments anymore here. That's probably going to be a # problem later, but rss=1 is ok today. return self.photoRss(ctx) if ctx.arg('archive') == 'zip': request = inevow.IRequest(ctx) ua = request.getHeader('User-agent') or '' if 'Googlebot' in ua or 'Yahoo! Slurp' in ua or 'http://search.msn.com/msnbot.htm' in ua: raise ValueError("bots, you don't want these huge zip files") return self.archiveZip(ctx) view = View(self.graph, self.desc, params=dict(date=ctx.arg('date'), star=ctx.arg('star')), cookie=req.getHeader("cookie") or '', agent=getUser(ctx), openidProxyHeader=req.getHeader('x-openid-proxy'), forwardedFor=req.getHeader('x-forwarded-for')) if ctx.arg("jsonUpdate"): req.setHeader("Content-Type", "application/json") return json.dumps(self.templateData(view)) if ctx.arg("setList"): req.setHeader("Content-Type", "application/json") return json.dumps(view.photosInSetPlus()) ret = Renderer(search_dirs=['template/']).render(view) print "rendered view is %s" % len(ret) # after 65k, this gets truncated somewhere! get a new web server req.setHeader("Content-Type", "text/html") return ret.encode('utf8')
def renderHTTP(self, ctx): req = inevow.IRequest(ctx) if (req.getHeader('accept') == 'application/json' and not ctx.arg("jsonUpdate") and not ctx.arg('setList')): # approximage parse return self.jsonContent() if req.method == 'POST': if ctx.arg('tagRange'): return self.postTagRange(ctx) raise ValueError("unknown action") if ctx.arg('rss'): # can't use a /rss child, since we're not receiving # segments anymore here. That's probably going to be a # problem later, but rss=1 is ok today. return self.photoRss(ctx) if ctx.arg('archive') == 'zip': request = inevow.IRequest(ctx) ua = request.getHeader('User-agent') if 'Googlebot' in ua or 'Yahoo! Slurp' in ua or 'http://search.msn.com/msnbot.htm' in ua: raise ValueError("bots, you don't want these huge zip files") return self.archiveZip(ctx) view = View(self.graph, self.desc, params=dict(date=ctx.arg('date'), star=ctx.arg('star')), cookie=req.getHeader("cookie") or '', agent=getUser(ctx), openidProxyHeader=req.getHeader('x-openid-proxy'), forwardedFor=req.getHeader('x-forwarded-for')) if ctx.arg("jsonUpdate"): req.setHeader("Content-Type", "application/json") return json.dumps(self.templateData(view)) if ctx.arg("setList"): req.setHeader("Content-Type", "application/json") return json.dumps(view.photosInSetPlus()) ret = Renderer(search_dirs=['template/']).render(view) print "rendered view is %s" % len(ret) # after 65k, this gets truncated somewhere! get a new web server req.setHeader("Content-Type", "text/html") return ret.encode('utf8')