Beispiel #1
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')
Beispiel #2
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')
Beispiel #3
0
    def scanner_post(self):
        c.available = []
        c.borrowed = []
        for line in request.params.get('isbns').split('\n'):
            line = line.strip()
            if line:
                medium = meta.Session\
                             .query(model.Medium)\
                             .filter(model.Medium.isbn == line)\
                             .first()

                if not medium:
                    h.flash(_("Isbn '%s' not found") % line)
                else:
                    borrow_act = meta.Session\
                                     .query(model.BorrowAct)\
                                     .filter(model.BorrowAct.media_id == medium.id)\
                                     .filter(model.BorrowAct.returned_ts == None)\
                                     .first()
                    if borrow_act:
                        c.borrowed.append(borrow_act)
                    else:
                        c.available.append(medium)

        c.borrowers = meta.Session.query(model.Borrower).all()
        return render('borrow/scanner_post.mako')
Beispiel #4
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')
Beispiel #5
0
    def list(self, page=1):
        relation_type = request.params.get('role')
        query = meta.Session.query(model.Person)
        if relation_type:
            query = query.join(model.PersonToMedia)\
                         .join(model.RelationType)\
                         .filter(model.RelationType.name == relation_type)
                         
        c.page = paginate.Page(query, page)

        if relation_type == 'Actor':
            c.title = _("Actor")
        elif relation_type == 'Director':
            c.title = _("Directors")
        elif relation_type == 'Author':
            c.title = _("Authors")
        elif relation_type:
            c.title = _("Persons of type '%s'") % relation_type
        else:
            c.title = _("Every Person")
            
        if page > 1:
            c.title += _(", page %s") % c.page.page

        c.pager_action = "list"
        return render('person/list.mako')
Beispiel #6
0
    def query_images(self, id):
        """ show the user a selection of available images """

        query = meta.Session.query(model.MediaToAsin).filter(model.MediaToAsin.media_id == id)

        c.items = []
        asins = map(lambda item: item.asin, query.all())
        if len(asins) > 10:
            log.warn("number of asins is greater 10")
        node = self.api.item_lookup(",".join(asins), ResponseGroup="Images")
        c.items = node.Items.Item
        if len(c.items) == 1:
            image_url = None
            try:
                image_url = c.items[0].LargeImage.URL
                h.flash(_("Only one image available. It was automatically choosen."))
            except:
                h.flash(_("No image available"))

            if image_url:
                self.__query_images_post__(id, str(image_url))
            return redirect(url(controller="medium", action="edit", id=id))

        c.media_id = id
        return render("amazon/image_list.mako")
Beispiel #7
0
    def merge(self):
        person_ids = h.checkboxes(request, 'person_id_')

        c.persons = meta.Session\
                       .query(model.Person)\
                       .filter(model.Person.id.in_(person_ids))\
                       .all()
        c.person_ids_str = ",".join(person_ids)
        return render('person/merge.mako')
Beispiel #8
0
    def add_one_post(self):
        add_this = request.params.get("add_this", None)

        # ~ SearchIndex = 'DVD'
        log.debug("add_this: %s" % add_this)
        node = self.api.item_search(SearchIndex, Title=add_this.encode("utf-8"), ResponseGroup="Images,ItemAttributes")
        c.items = node.Items.Item
        c.query = add_this
        return render("/amazon/item_search_result.mako")
Beispiel #9
0
    def list_borrowers(self, page=1):
        query = meta.Session\
            .query(model.Borrower)\
            .order_by(model.Borrower.id.desc())

        #~ c.items = query.all()
        c.page = paginate.Page(query, page)
        c.title = _("All borrowers")
        c.pager_action = 'list_borrowers'
        return render('borrow/list_borrowers.mako')
Beispiel #10
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')
Beispiel #11
0
    def list_no_image(self, page=1, type=None, tag=None):
        #~ query = meta.Session\
            #~ .query(model.Medium)\
            #~ .filter(model.Medium.image_data == None)
        #~ query = query.order_by(model.Medium.id.desc())
        #~ c.items = query.all()
        #~ c.page = paginate.Page(query, page)

        self.__prepare_list__(False, type, page, tag, no_images=True)

        c.title = _("Media without images")
        c.pager_action = "list_no_image"
        return render('medium/list.mako')
Beispiel #12
0
    def list_gallery(self, type=None, page=1, tag=None):
        if type == 'books':
            c.title = _("Books Gallery")
        elif type == 'dvds':
            c.title = _("DVDs Gallery")
        elif type:
            c.title = _("Gallery of unknown type '%s'") % type
        else:
            c.title = _("All Media Gallery")

        self.__prepare_list__(True, type, page, tag)

        c.pager_action = "list_gallery"
        c.rss_feeds = [{'title':_("New Media"),
                        'link':h.url_for(controller='medium', action='new_media_rss')},
                       {'title':_("Updated Media"),
                        'link':h.url_for(controller='medium', action='updated_media_rss')}]

        if c.mobile:
            return render('mobile/medium/list_gallery.mako')
        else:
            return render('medium/list_gallery.mako')
Beispiel #13
0
    def lookup(self):
            #~ query = meta.Session\
                #~ .query(model.Medium)\
                #~ .filter(or_(model.Medium.title==item,
                            #~ model.Medium.isbn==item))

        isbn = request.params.get('q')
        c.item = meta.Session.query(model.Medium)\
                             .filter(model.Medium.isbn==isbn)\
                             .first()

        if not c.item:
            c.response = amazon.GetTmpMediumByISBN(isbn, 'Books')
            return render('mobile/new_item.mako')
            #~ return "new"

        redirect(url(controller='medium', action='edit', id=c.item.id, mobile=True))
Beispiel #14
0
    def search_post(self):
        query = request.params.get('query')
        if not query:
            h.flash(_("please enter search query"))
            return redirect(url(controller='search', action='index'))

        like_query = "%%%s%%" % query
        c.query = query

        media_query = meta.Session\
                          .query(model.Medium)\
                          .filter(or_(model.Medium.title.like(like_query),
                                      model.Medium.isbn.like(like_query)))
        c.media_page = paginate.Page(media_query)


        persons_query = meta.Session\
                          .query(model.Person)\
                          .filter(model.Person.name.like(like_query))
        c.persons_result = persons_query.all()
        return render('search/results.mako')
Beispiel #15
0
    def list(self, type=None, page=1, tag=None):
        if type == 'books':
            c.title = _("Books List")
        elif type == 'dvds':
            c.title = _("DVDs List")
        elif type:
            c.title = _("List of unknown type '%s'") % type
        else:
            c.title = _("All Media List")



        self.__prepare_list__(False, type, page, tag)

        c.pager_action = "list"
        c.return_to = h.url_for(controller='medium', action='list', order=c.order)

        c.rss_feeds = [{'title':_("New Media"),
                        'link':h.url_for(controller='medium', action='new_media_rss')},
                       {'title':_("Updated Media"),
                        'link':h.url_for(controller='medium', action='updated_media_rss')}]
        return render('medium/list.mako')
Beispiel #16
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')
Beispiel #17
0
 def index(self):
     return render('search/index.mako')
Beispiel #18
0
 def show_asin(self, id):
     node = self.api.item_lookup(id, ResponseGroup="Images,ItemAttributes")
     c.item = node.Items.Item[0]
     return render("/amazon/item_lookup_result.mako")
Beispiel #19
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')
Beispiel #20
0
 def index(self):
     return render("/amazon/add_these.mako")
Beispiel #21
0
 def mass_add(self):
     c.types = meta.Session.query(model.MediaType).all()
     return render('medium/mass_add.mako')
Beispiel #22
0
 def add_borrower(self):
     c.item = model.Borrower()
     c.post_action = "add_borrower_post"
     c.media_id = request.params.get('media_id')
     return render('borrow/add_borrower.mako')
Beispiel #23
0
 def upload(self, id):
     c.id = id
     return render('image/upload.mako')
Beispiel #24
0
 def crop_image(self, id):
     c.item = meta.find(model.Medium, id)
     return render('image/crop_image.mako')
Beispiel #25
0
 def scanner(self):
     return render('borrow/scanner.mako')
Beispiel #26
0
 def list_borrowed_media(self):
     c.borrow_acts = meta.Session.query(model.BorrowAct)\
                                 .filter(model.BorrowAct.returned_ts == None)\
                                 .all()
     return render('borrow/list_borrowed_media.mako')