def get(self): self.enforce_admin() name = self.request.get("name") if name is None or "" == name: self.jsonout(status="error", msg="No name specified", ) return name = name.strip() sq = Site.gql("WHERE name = :1",name) s = sq.get() if s is None: s = Site(name=name) s.put() increment("Site") msg = "site %s added with id %d" format = (s.name,s.key().id()) self.jsonout(status="ok",msg=msg,format=format, key=str(s.key()), id=s.key().id() ) else: self.jsonout(status="dup", msg="%s already existed as site with id %d", format=(name,s.key().id()), id=s.key().id(), key=str(s.key()) )
def get(self): self.enforce_admin() pagesize = 1000 count = int(self.request.get("size",default_value=10)) site = self.request.get("site",default_value=None) name = self.request.get("name",default_value=None) if name is None: self.jsonout(status="error",msg="Name is not specified for list") return else: name = name.strip() wq = db.Query(Work,keys_only=True).order("__key__") if site is None: workcount=int(get_count("Work")) else: wq.filter("site =",site) workcount=int(get_count("Work-%s"%site)) if count > workcount: self.jsonout(status="error",msg="Tried to find %s out of %s. Not possible", format=(count,workcount)) return # select $count from the complete set numberlist = random.sample(range(0,workcount-1),count) numberlist.sort() #initbuckets buckets = [ [] for i in xrange(int(max(numberlist)/pagesize)+1) ] for k in numberlist: thisb = int(k/pagesize) buckets[thisb].append(k-(thisb*pagesize)) logging.debug("Numbers: %s. Buckets %s",numberlist,buckets) #page through results. result = [] baseq = wq for b,l in enumerate(buckets): if len(l) > 0: result += [ wq.fetch(limit=1,offset=e)[0] for e in l ] if b < len(buckets)-1: # not the last bucket lastkey = wq.fetch(1,pagesize-1)[0] wq = baseq.filter("__key__ >",lastkey) s = SavedList(name=name,keys=result,size=len(result),site=site,ids=numberlist) increment("/work/list") if not site is None: increment("/work/%s/list"%site) s.put() self.jsonout(status="ok", msg="Created list %s with %d items.List id %d", format=(s.name,s.size,s.key().id()),id=s.key().id())
class WorkCreate(BaseRequestHandler): def get(self): data = self.request.GET found = Work.gql("WHERE link = :1",data["url"]) if found.count(1) > 0: work = found.fetch(1)[0] work.name = data['name'] if "contentlink" in data: work.contentlink = data['contentlink'] work.put() self.jsonout(status="dup", msg="%s already existed for %s with id %d", format=(data['name'],work.author.name,work.key().id()), key=str(work.key()), id = work.key().id() ) return try: a = None a = int(data['author']) author = A.get_author(a) except KeyError,strerror: self.jsonout(status="fail", msg="Author not found(%s:%s). Use /author/create" , format=(a,strerror)) return work = Work( link = data['url'], blobtype= data['type'], name = data['name'], author = author, site = author.site, ) if "contentlink" in data: work.contentlink = data['contentlink'] work.put() increment("Work") increment("Work-%d"%author.key().id()) increment("Work-%s"%author.site) msg = "%s - added. %s - Id %d"%(work.name,work.link,work.key().id()) self.jsonout(status = "ok", msg = msg, id = work.key().id(), format = (), key = str(work.key()) )
def get(self): siteurl = self.request.get("site-url").strip() name = self.request.get("name").strip() site = self.request.get("site").strip() try: exist = Author.gql("WHERE name = :1 and site = :2 LIMIT 1", name, site) if exist.count(1) > 0: a = exist.get() if not a.siteurl is siteurl: a.siteurl = siteurl a.put() self.jsonout(status="dup", msg="%s existed with id %d", format=(a.name,a.key().id()), id=a.key().id(), key=str(a.key()) ) return auth = Author( name = name, site = site, siteurl = siteurl, ) auth.put() increment("Author") increment("Author-%s"%site) self.jsonout(status="ok", msg="%s added as author with id: %d" , format=(auth.name,auth.key().id()), id=auth.key().id(), key = str(auth.key()) ) except BadValueError, e: self.jsonout(status="error", msg="BadValue: %s. (%s)", format=(e,self.request.GET), )
def post(self): user = users.get_current_user() if user: self.response.headers['Content-Type'] = 'text/html' arg = self.request.get('arg', 'ERR') if(arg == 'ERR'): self.response.write('ERR') else: count = shardcounter.increment(arg) self.response.write(count) else: self.response.write("You must be logged in to vote<br><br><button type=\"button\" onclick=\"overlay()\">Close</button> ")
def get(self): siteurl = self.request.get("site-url").strip() name = self.request.get("name").strip() site = self.request.get("site").strip() try: exist = Author.gql("WHERE name = :1 and site = :2 LIMIT 1", name, site) if exist.count(1) > 0: a = exist.get() if not a.siteurl is siteurl: a.siteurl = siteurl a.put() self.jsonout(status="dup", msg="%s existed with id %d", format=(a.name, a.key().id()), id=a.key().id(), key=str(a.key())) return auth = Author( name=name, site=site, siteurl=siteurl, ) auth.put() increment("Author") increment("Author-%s" % site) self.jsonout(status="ok", msg="%s added as author with id: %d", format=(auth.name, auth.key().id()), id=auth.key().id(), key=str(auth.key())) except BadValueError, e: self.jsonout( status="error", msg="BadValue: %s. (%s)", format=(e, self.request.GET), )