Beispiel #1
0
    def post(self):
        title = self.request.get('title')
        timestamp = self.request.get('timestamp')

        user = self.current_user
        query = db.GqlQuery("SELECT * FROM MidautumnObject WHERE title = :1", title)
        mo = query.get()

        args = None

        if not user:
            args = {'result': 'not_authorized'}
        elif mo:
            args = {'result': 'duplicated', 'objects': [mo.to_dict(details=True, current_user=user),]}
        else:
            mo = MidautumnObject(title=title, owner=user)
            mo.put()

            # fetch all objects after the timestamp
            # should include the one just posted
            query = MidautumnObject.all()
            query.filter('pubtime >', datetime.utcfromtimestamp(float(timestamp)))
            query.order('-pubtime')

            objects = []
            for obj in query:
                objects.append(obj.to_dict(current_user=user))

            # check achievements
            achievements = []
            achievements.extend(achievement.check_post(mo))

            args = {'result': 'success',
                    'objects': objects,
                    'achievements': achievements}

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(json.dumps(args))