示例#1
0
 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())
                     )
示例#2
0
    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())
示例#3
0
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())
                    )
示例#4
0
文件: author.py 项目: svrist/preomr
    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),
                        )
示例#5
0
    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> ")
示例#6
0
文件: author.py 项目: wbecher/preomr
    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),
            )