예제 #1
0
    def get(self):
        user, user_details = self.get_current_user(True, True)
        if not user: return
        
        if "dump" in self.request.arguments():
            contents, subcontents, ratings, _counts = \
                self.get_contents(get_ratings=True, get_ratings_count=False)
                
            output = {"content": []}
            for content in contents:
                output['content'].append(content.to_dict())
                if content.key.urlsafe() in ratings:
                    output['content'][-1]['ratings'] = \
                        [rating.to_dict() for rating in ratings[content.key.urlsafe()]]
                if content.key.urlsafe() in subcontents:
                    output['content'][-1]['subcontents'] = []
                    for subcontent in subcontents[content.key.urlsafe()]:
                        output['content'][-1]['subcontents'].append(subcontent.to_dict())
                        if subcontent.key.urlsafe() in ratings:
                            output['content'][-1]['subcontents'][-1]['ratings'] = \
                                [rating.to_dict() for rating in ratings[subcontent.key.urlsafe()]]
            users = UserDetails.query(ancestor=\
                            ndb.Key('UserDetails', ANNOTATION_NAME)).fetch()
            output["users"] = map(lambda user_detail: user_detail.to_dict(), users)
                
            self.response.headers.add_header("Content-type", "text/x-yaml")
            self.response.write(yaml.dump(output))
        else:
            contents, subcontents, _ratings, counts = self.get_contents()

            template_values = {
                "contents": contents,
                "counts": counts,
                "subcontents": subcontents,
            }
            
            self.template_response('admin.html', template_values)