示例#1
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))
示例#2
0
    def mass_add_post(self):
        if not request.params.get('title'):
            h.flash(_("please specify name"))
            return redirect(url(controller='medium', action='mass_add'))

        if int(request.params.get('media_type', -1)) < 0:
            h.flash(_("please specify media type"))
            return self.mass_add()

        media_type_obj = meta.Session.query(model.MediaType).get(request.params.get('media_type', -1))
        
        
        count = 0
        new_media = []
        failed = []
        for item in request.params.get('title').split('\n'):
            if not item.strip():
                continue

            query = meta.Session\
                .query(model.Medium)\
                .filter(or_(model.Medium.title==item,
                            model.Medium.isbn==item))
            if query.first() != None:
                first_item = query.first()
                h.flash(_("medium already exists: %s") %\
                    anchor_tmpl.render_unicode(url=h.url_for(controller='medium', action='edit', id=first_item.id),
                                       text=h.html_escape(first_item.title)), escape=False)
                continue

            log.debug("!!!item: %s" % item)
            if re.match('^\d+\s*$', item):
                #~ log.info("@@@@@@@@@@@@@@@@@@ treat input as isbn: %s" % item)
                import medienverwaltungweb.lib.amazon as amazon
                result = amazon.AddMediumByISBN(item, media_type_obj.amzon_search_index)
                if not result:
                    #~ h.flash(_("I tried to use '%s' as an isbn, but amazon didn't find it.") % item)
                    h.flash(_("Amzon does not knwo what '%s' is.") % item)
                    failed.append(item)
                    continue

                elif not result['success']:
                    h.flash(_("Amazon Lookup failed with the following error: %s") % result['message'])
                    failed.append(item)
                    continue

                medium_id = result['medium_id']
                record = meta.Session.query(model.Medium).get(medium_id)
                new_media.append(record)
                continue

            record = model.Medium()
            record.title = item.strip()
            record.created_ts = datetime.now()
            record.updated_ts = datetime.now()
            record.media_type_id = request.params.get('media_type')
            meta.Session.add(record)
            count += 1
            new_media.append(record)

        if len(new_media) > 0:
            meta.Session.commit()
            log.debug("new_media: %s" % unicode(new_media[0].title))
            log.debug("type new_media: %s" % type(new_media[0].title))
            link_list = map(lambda x: anchor_tmpl.render_unicode(url=h.url_for(controller='medium', action='edit', id=x.id), text=x.title), new_media)
            link_list = ", ".join(link_list)
            msg = ungettext("added medium %(media)s",
                            "added %(num)d media: %(media)s",
                            len(new_media)) % {'num':len(new_media),
                                               'media':link_list}
            h.flash(msg, escape=False)
            #~ h.flash(UnsafeString(msg))

        if len(new_media) == 1:
            return redirect(url(controller='medium', action='edit', id=new_media[0].id))
        else:
            return redirect(url(controller='medium', action='index'))