Exemplo n.º 1
0
    def get(self):

        self.templateVars["institutions"] = Institution.query().fetch()
        self.templateVars["authors"] = Author.query().fetch()
        self.templateVars["conferences"] = Conference.query().fetch()
        self.templateVars["publications"] = Publication.query().fetch()
        self.templateVars["contents"] = Content.query().fetch()
        return self.render("admin.html")
Exemplo n.º 2
0
    def __call__(self, user=None):
        query = Content.query(ancestor=ndb.Key('Content', self.ancestor))
        count = query.count()
        invalid_choices = memcache.get("invalid_content:" + user.email()) or []
        choices = filter(lambda choice: choice not in invalid_choices, range(count))
        while count > 0 and len(choices):
            choice = random.choice(choices)
            content = query.fetch(offset=choice, limit=1)[0]

            if self.unrated or self.sample_subcontent:
                subquery = SubContent.query(ancestor=content.key)
                subcontent_keys = subquery.fetch(keys_only=True)

            if self.unrated:
                if len(subcontent_keys) == 0:
                    filters = Rating.content == content.key
                else:
                    filters = Rating.content.IN(subcontent_keys)
                if user:
                    filters = ndb.AND(Rating.user == user, filters)
                ratings = Rating.query(filters, \
                              ancestor=ndb.Key('Rating', self.ancestor)).count()

                invalid  = self.sample_subcontent and ratings > 0
                invalid |= len(subcontent_keys) == 0 and ratings == 1
                invalid |= len(subcontent_keys) > 0 and ratings == len(subcontent_keys)
                if invalid:
                    choices.remove(choice)
                    invalid_choices.append(choice)
                    memcache.set("invalid_content:" + user.email(), invalid_choices)
                    continue
            
            if len(subcontent_keys) and self.sample_subcontent:
                content = random.choice(subcontent_keys).get()

            return content
        else:
            return None
Exemplo n.º 3
0
    def get_contents(self, get_subcontents=True, get_ratings=False, get_ratings_count=True):
        contents = Content.query(ancestor=ndb.Key('Content', ANNOTATION_NAME)) \
                          .order(Content.date).fetch()

        subcontents = defaultdict(list)
        if get_subcontents:
            query = SubContent.query(ancestor=ndb.Key('Content', ANNOTATION_NAME))
            for subcontent in query.fetch():
                subcontents[subcontent.key.parent().urlsafe()] += subcontent,
                
        ratings = defaultdict(list)
        ratings_counts = defaultdict(int)
        if get_ratings or get_ratings_count:
            query = Rating.query(ancestor=ndb.Key('Rating', ANNOTATION_NAME))
        
            if get_ratings:
                for rating in query.fetch():
                    ratings[rating.content.urlsafe()].append(rating)            

            if get_ratings_count:
                for rating in query.fetch(projection=['content']):
                    ratings_counts[rating.content.urlsafe()] += 1

        return contents, subcontents, ratings, ratings_counts
Exemplo n.º 4
0
def query_content(ANNOTATION_NAME):
    query = Content.query(ancestor=ndb.Key('Content', ANNOTATION_NAME))
    return (query, query.count())
Exemplo n.º 5
0
def dump(result):
    docs = Content.query().fetch()
    return HttpResponse(json_fixed.dumps(docs))
Exemplo n.º 6
0
def get_documents(request, author_email):
    author = Author.query(Author.email == author_email).get()
    if (author is None):
        return HttpResponseNotFound()
    documents = Content.query(Content.author == author.key).fetch()
    return HttpResponse(json_fixed.dumps(documents))