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'))
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 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 = []
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'))
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 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))
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))
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'))
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()
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 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 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 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))
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))
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()
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()
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 crop_image(self, id): c.item = meta.find(model.Medium, id) return render('image/crop_image.mako')