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")
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
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
def query_content(ANNOTATION_NAME): query = Content.query(ancestor=ndb.Key('Content', ANNOTATION_NAME)) return (query, query.count())
def dump(result): docs = Content.query().fetch() return HttpResponse(json_fixed.dumps(docs))
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))