Esempio n. 1
0
    def get(self, id=None):
        session = models.Session()

        try:
            p, f = session.query(models.Photo, models.Folder).filter_by(id=id).one()
        except sqlalchemy.orm.exc.MultipleResultsFound as e:
            print("MultipleResultsFound error: {}".format(e))
            results = session.query(models.Photo, models.Folder).filter_by(id=id).all()
            for p, f in results:
                print(photo_repr(p, f))
            raise tornado.web.HTTPError(500)
        except sqlalchemy.orm.exc.NoResultsFound as e:
            raise tornado.web.HTTPError(404)

        self.write(photo_repr(p, f))
        self.finish()
Esempio n. 2
0
    def get(self):
        session = models.Session()

        photos = session.query(models.Photo)
        total_count = None

        try:
            limit = self.get_query_argument("limit", default=100)
            offset = self.get_query_argument("offset", default=0)
            year = self.get_query_argument("year", default=None)
            month = self.get_query_argument("month", default=None)

            if year is not None:
                photos = photos.filter(models.Photo.year == int(year))
            if month is not None:
                photos = photos.filter(models.Photo.month == int(month))

            total_count = photos.count()

            photos = photos.order_by(models.Photo.date_time)
            photos = photos.limit(int(limit)).offset(int(offset))

        except ValueError as e:
            raise tornado.web.HTTPError(400)

            # Do a join on the limited set
        photos = photos.from_self(models.Photo, models.Folder)

        self.write({"total_count": total_count, "photos": [photo_repr(p, f) for p, f in photos.all()]})
        self.finish()
Esempio n. 3
0
    def patch(self, id=None):
        session = models.Session()

        try:
            p, f = session.query(models.Photo, models.Folder).filter_by(id=id).one()
        except sqlalchemy.orm.exc.MultipleResultsFound as e:
            raise tornado.web.HTTPError(500)
        except sqlalchemy.orm.exc.NoResultsFound as e:
            raise tornado.web.HTTPError(404)

        if "date" in self.json_args:
            p.date = self.json_args["date"]
        if "orientation" in self.json_args:
            p.orientation = self.json_args["orientation"]

        session.commit()

        self.write(photo_repr(p, f))
        self.finish()