Ejemplo n.º 1
0
    def delete_borrower_post(self, id):
        record = meta.find(model.Borrower, id)
        meta.Session.delete(record)
        meta.Session.commit()

        h.flash(_("deleted: '%s %s'") % (record.first_name, record.last_name))
        return redirect(url(controller='borrow', action='list_borrowers'))
Ejemplo n.º 2
0
 def checkout(self, id):
     c.item = meta.find(model.Medium, id)
     c.borrowers = meta.Session\
                       .query(model.Borrower)\
                       .order_by(model.Borrower.id.desc())\
                       .all()
     return render('borrow/borrow.mako')
Ejemplo n.º 3
0
    def map_to_medium(self, id, page=1):
        """ id is media.id """
        c.item = meta.find(model.Medium, id)
        c.page = page

        query = request.params.get("query", c.item.title)
        log.debug("c.item.type: %s" % c.item.type)
        search_index = str(c.item.type.amzon_search_index)
        log.debug("search_index: %s" % search_index)

        selected_asins = request.params.get("selected_asins")
        if selected_asins:
            log.debug("selected_asin: %s" % selected_asins)
            node = self.api.item_lookup(selected_asins, ResponseGroup="Images,ItemAttributes")
            c.selected_items = node.Items.Item

        try:
            node = self.api.item_search(
                search_index, Title=query.encode("utf-8"), ResponseGroup="Images,ItemAttributes", ItemPage=page
            )
            # ~ c.items = node.Items.Item
            # https://bitbucket.org/basti/python-amazon-product-api/issue/25/api-suddenly-not-working
            for page in node:
                c.items = page.Items.Item
                break  # just the first page

        except Exception, ex:
            log.warn("Amzon Search error: %s" % ex)
            c.items = []
Ejemplo n.º 4
0
    def delete_many(self):
        for item in h.checkboxes(request, 'item_id_'):
            db_item = meta.find(model.Medium, item)
            meta.Session.delete(db_item)
            h.flash(_("deleted: %s") % db_item.title)

        meta.Session.commit()

        return redirect(url(controller='medium', action='index'))
Ejemplo n.º 5
0
    def show_history(self, id, page=1):
        c.item = meta.find(model.Borrower, id)
        query = meta.Session\
                          .query(model.BorrowAct)\
                          .filter(model.BorrowAct.borrower_id == id)\
                          .order_by(model.BorrowAct.id.desc())

        c.page = paginate.Page(query, page)
        c.title = _("Borrow History")
        return render('borrow/history.mako')
Ejemplo n.º 6
0
    def clear_persons(self, id):
        item = meta.find(model.Medium, id)
        cnt = 0
        for person2media in item.persons_to_media:
            meta.Session.delete(person2media)
            cnt += 1

        meta.Session.commit()
        h.flash(ungettext("removed %d person", "removed %d persons", cnt) % cnt)
        return redirect(url(controller="medium", action="edit", id=id))
Ejemplo n.º 7
0
    def edit_borrower_post(self, id):
        record = meta.find(model.Borrower, id)
        record.first_name = request.params.get('first_name')
        record.last_name = request.params.get('last_name')
        record.email = request.params.get('email')
        record.updated_ts = datetime.now()
        meta.Session.add(record)
        meta.Session.commit()

        h.flash(_("updated: %s") % record)
        return redirect(url(controller='borrow', action='edit_borrower', id=id))
Ejemplo n.º 8
0
 def delete_one(self, id):
     log.debug("delete_one(%s)" % id)
     db_item = meta.find(model.Medium, id)
     meta.Session.delete(db_item)
     meta.Session.commit()
     h.flash(_("deleted: %s") % db_item.title)
     ret_to = request.params.get('return_to')
     log.debug("ret_to: %s" % ret_to)
     if ret_to and ret_to != None:
         return redirect(str(request.params.get('return_to')))
     else:
         return redirect(url(controller='medium', action='index'))
Ejemplo n.º 9
0
    def raw_image(self, id):
        item = meta.find(model.Medium, id)

        p = ImageFile.Parser()
        p.feed(item.image_data.getvalue())
        img = p.close()

        buffer = StringIO()
        img.save(buffer, format='png')
        response.content_type = 'image/png'

        etag_cache(str(item.updated_ts))
        return buffer.getvalue()
Ejemplo n.º 10
0
    def edit_borrower(self, id):
        c.item = meta.find(model.Borrower, id)
        c.borrowed_media = meta.Session\
                          .query(model.BorrowAct)\
                          .filter(model.BorrowAct.borrower_id == id)\
                          .filter(model.BorrowAct.returned_ts == None)\
                          .order_by(model.BorrowAct.id.desc())\
                          .all()

        c.pager_action = 'edit_borrower'
        if c.mobile:
            return render('mobile/borrow/edit_borrower.mako')
        else:
            return render('borrow/edit_borrower.mako')
Ejemplo n.º 11
0
    def edit(self, id, page=1):
        c.item = meta.find(model.Person, id)

        query = meta.Session\
                    .query(model.PersonToMedia)\
                    .join(model.Medium)\
                    .filter(model.PersonToMedia.person_id == id)\
                    .order_by(model.Medium.title)
            
        c.page = paginate.Page(query, page)
        if c.mobile:
            return render('mobile/person/display.mako')
        else:
            return render('person/display.mako')
Ejemplo n.º 12
0
    def top_ten(self):
        #
        id_col = model.person_to_media_table.c.person_id
        cnt_col = func.count()

        query = select([id_col, cnt_col], from_obj=[model.relation_types_table])\
                .where(model.relation_types_table.c.name == 'Actor')\
                .where(model.person_to_media_table.c.type_id == model.relation_types_table.c.id)\
                .group_by(id_col)\
                .order_by(cnt_col.desc())\
                .limit(10)

        query.bind = meta.engine
        c.actors = map(lambda x: (meta.find(model.Person, x[0]), x[1]), query.execute())


        query = select([id_col, cnt_col], from_obj=[model.relation_types_table])\
                .where(model.relation_types_table.c.name == 'Director')\
                .where(model.person_to_media_table.c.type_id == model.relation_types_table.c.id)\
                .group_by(id_col)\
                .order_by(cnt_col.desc())\
                .limit(10)

        query.bind = meta.engine
        c.directors = map(lambda x: (meta.find(model.Person, x[0]), x[1]), query.execute())

        query = select([id_col, cnt_col], from_obj=[model.relation_types_table])\
                .where(model.relation_types_table.c.name == 'Author')\
                .where(model.person_to_media_table.c.type_id == model.relation_types_table.c.id)\
                .group_by(id_col)\
                .order_by(cnt_col.desc())\
                .limit(10)

        query.bind = meta.engine
        c.authors = map(lambda x: (meta.find(model.Person, x[0]), x[1]), query.execute())

        return render('person/top_ten.mako')
Ejemplo n.º 13
0
    def edit_post(self):
        id = request.params.get('id')
        item = meta.find(model.Medium, id)
        item.title = request.params.get('title')
        item.image_url = request.params.get('image_url')
        item.updated_ts = datetime.now()
        item.set_tagstring(request.params.get('tags'))
        meta.Session.add(item)
        meta.Session.commit()
        h.flash(_("updated: '%s'") % item.title)

        return_to = request.params.get('return_to')
        log.debug("return_to: %s" % return_to)
        if return_to:
            return redirect(str(return_to))
        else:
            return redirect(url(controller='medium', action='edit', id=id))
Ejemplo n.º 14
0
    def crop_image_post(self, id):
        crop = (int(request.params.get('x')),
                int(request.params.get('y')),
                int(request.params.get('x2')),
                int(request.params.get('y2')))

        item = meta.find(model.Medium, id)
        item.image_crop = crop
        item.updated_ts = datetime.now()
        meta.Session.add(item)
        meta.Session.commit()
        h.flash(_("updated: '%s'") % h.html_escape(item.title))

        return_to = request.params.get('return_to')
        log.debug("return_to: %s" % return_to)
        if return_to:
            return redirect(str(return_to))
        else:
            return redirect(url(controller='medium', action='edit', id=id))
Ejemplo n.º 15
0
    def __query_images_post__(self, id, image_url):
        webFile = urllib.urlopen(image_url)
        buffer = StringIO()
        buffer.write(webFile.read())

        log.debug("id: %s" % id)
        item = meta.find(model.Medium, id)
        item.set_image_buffer(buffer)

        if item.image_data.len >= 65536:
            # 69198 defenitly fails. if the size is to blame.
            # i dont know :(
            h.flash(_("image is to big."))

            # dont do this, might be an infinite loop
            # ~ return redirect_to(controller='amazon', action='query_images')
            return redirect(url(controller="medium", action="edit", id=id))

        meta.Session.add(item)
        meta.Session.commit()
Ejemplo n.º 16
0
    def thumbnail(self, id, width, height):
        item = meta.find(model.Medium, id)
        etag_cache(str(item.updated_ts))

        p = ImageFile.Parser()
        p.feed(item.image_data.getvalue())
        img = p.close()

        if item.image_crop:
            img = img.crop(item.image_crop)

        #~ log.debug("size: %s, %s" % (width, height))
        size = int(width), int(height)
        img.thumbnail(size)
        #~ log.debug("imgsize: %s, %s" % img.size)

        buffer = StringIO()
        img.save(buffer, format='png')
        response.content_type = 'image/png'

        return buffer.getvalue()
Ejemplo n.º 17
0
    def edit(self, id):
        log.debug("id: %s" % id)
        log.debug("c.mobile: %s" % c.mobile)
        #~ log.debug("DEBUG: %s" % url(controller='medium', action='edit', id=id, mobile=True))
        #~ log.debug("DEBUG: %s" % url(controller='medium', action='edit', id=id, mobile=False))
        #~ log.debug("DEBUG: %s" % url(controller='medium', action='edit', id=id))
        #~ log.debug("DEBUG: %s" % request.params.get('mobile'))
        c.item = meta.find(model.Medium, id)
        c.persons = {}

        query = meta.Session.query(model.MediaToAsin)
        result = query.filter(model.MediaToAsin.media_id==id).all()
        c.asins = []
        for item in result:
            c.asins.append(item.asin)

        query = meta.Session\
            .query(model.PersonToMedia)\
            .filter(model.PersonToMedia.medium_id==id)\
            .all()
        for item in query:
            log.debug("Person2: %s" % item.person)

            if item.relation.name in c.persons:
                c.persons[item.relation.name].append(item)
            else:
                c.persons[item.relation.name] = [item]

        for relation_name in c.persons:
            log.debug("relation_name: %s" % relation_name)
            #~ log.debug("relation_name: %s" % c.persons[relation_name])

            c.persons[relation_name].sort(key=lambda x: len(x.person.persons_to_media))
            c.persons[relation_name].reverse()

            for item in c.persons[relation_name]:
                log.debug("item: %d - %s" % (len(item.person.persons_to_media),
                                             item.person))

        c.borrowed_by = meta.Session.query(model.Borrower)\
                                    .join(model.BorrowAct)\
                                    .filter(model.BorrowAct.media_id == id)\
                                    .filter(model.BorrowAct.returned_ts == None)\
                                    .first()

        # All Tag Names for this medium
        query1 = select([model.tags_table.c.name])
        query1 = query1.where(model.tags_table.c.media_id == id)

        cnt_col = func.count()
        query = select([model.tags_table.c.name, cnt_col],
                       from_obj=[model.tags_table])
        query = query.where(model.tags_table.c.name.in_(query1))
        query = query.group_by(model.tags_table.c.name)
        query = query.order_by(cnt_col.desc())
        query.bind = meta.engine
        c.tags = map(lambda x: (x[0], x[1]), query.execute())

        if c.mobile:
            return render('mobile/medium/edit.mako')
        else:
            return render('medium/edit.mako')
Ejemplo n.º 18
0
 def crop_image(self, id):
     c.item = meta.find(model.Medium, id)
     return render('image/crop_image.mako')