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')
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')
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')
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')
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')
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")
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')
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")
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')
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')
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')
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')
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))
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')
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')
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')
def index(self): return render('search/index.mako')
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")
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')
def index(self): return render("/amazon/add_these.mako")
def mass_add(self): c.types = meta.Session.query(model.MediaType).all() return render('medium/mass_add.mako')
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')
def upload(self, id): c.id = id return render('image/upload.mako')
def crop_image(self, id): c.item = meta.find(model.Medium, id) return render('image/crop_image.mako')
def scanner(self): return render('borrow/scanner.mako')
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')