示例#1
0
    def all_images(self, tag=None):
        c.tag = tag
        if tag:
            c.galleries = list(Gallery.by_tag(
                    self.db,
                    descending=True,
                    startkey=[tag,{}],
                    endkey=[tag[:-1] + unichr(ord(tag[-1]) - 1)],
                    ))
        else:
            c.galleries = list(Gallery.by_date(self.db, descending=True))

        return render('/gallery/all_images.mako')
示例#2
0
    def list(self, page):
        try:
            int(page)
        except ValueError:
            abort(404)

        c.pages = list(self.db.view('galleries/count'))[0].value
        if c.pages % self.entries_per_page:
            c.pages += 1

        if int(page) <= c.pages:
            c.galleries = list(Gallery.by_date(
                    self.db,
                    descending=True,
                    limit=self.entries_per_page,
                    skip=self.entries_per_page * (int(page) - 1)
                    ))

            c.pages = list(self.db.view('galleries/count'))[0].value / self.entries_per_page
            if c.pages % self.entries_per_page == 0:
                c.pages += 1

            c.page = int(page)
            
            c.base_url = url(controller='gallery', action='list', page=0)[:-1]
            
            return render('/gallery/gallery_list.mako')
        else:
            abort(404)
示例#3
0
    def images_order(self, id):
        gallery = Gallery.load(self.db, id)

        gallery.images = json.loads(request.POST['images_order'])
        gallery.store(self.db);
        
        return 'OK'
示例#4
0
    def delete_image(self, id):
        gallery = Gallery.load(self.db, id)
        
        gallery.images.remove(request.GET['image'])
        gallery.store(self.db)

        return 'OK'
示例#5
0
    def upload_image(self, id):
        error = None

        image = request.POST['Filedata']
        if hasattr(image, 'file'):
            gallery = Gallery.load(self.db, id)

            im_filename = store_image(image.file)
            gallery.images.append(im_filename)
            gallery.store(self.db)

            im_obj = PILImage.open(image_path(im_filename))
            
            ret = {
                'status': '1',
                'name': image.filename,
                'width': im_obj.size[0],
                'height': im_obj.size[1],
                'mime': im_obj.format,
                }
        else:
            ret = {
                'status': '0',
                'error': 'Invalid Upload',
                }

        return json.dumps(ret)
示例#6
0
    def delete_gallery(self, id):
        gallery = Gallery.load(self.db, id)

        gallery.delete(self.db)

        flash("Gallery successfully deleted.")
        redirect(url(controller='admin', action='galleries'))
示例#7
0
    def show(self, slug):
        c.gallery = list(Gallery.by_slug(self.db, key=slug, limit=1))

        if not c.gallery or c.gallery[0].slug != slug:
            abort(404)
        else:
            c.gallery = c.gallery[0]
            
            return render('/gallery/show.mako')
示例#8
0
    def tag(self, tag, page=0):
        try:
            int(page)
        except ValueError:
            abort(404)

        c.pages = list(self.db.view('galleries/tag_count',
                                    group=True, key=tag))
        if c.pages:
            c.pages = c.pages[0].value
            c.pages = (c.pages % self.entries_per_page == 0) and \
                list(self.db.view('galleries/tag_count', group=True, key=tag))[0].value / self.entries_per_page or \
                list(self.db.view('galleries/tag_count', group=True, key=tag))[0].value / self.entries_per_page + 1
            page = int(page)
            if page <= c.pages:
                if page == 0:
                    redirect(url(controller='gallery', action='tag', tag=tag, page=1))
                else:
                    c.galleries = list(Gallery.by_tag(
                            self.db,
                            descending=True,
                            startkey=[tag,{}],
                            endkey=[tag[:-1] + unichr(ord(tag[-1]) - 1)],
                            skip=self.entries_per_page * (int(page) - 1),
                            limit=self.entries_per_page,
                            ))

                    c.page = page
                    c.base_url = url(controller='gallery', action='tag', tag=tag, page=0)[:-1]
                    
                    c.tag = tag
                    return render('/gallery/gallery_list.mako')
            else:
                abort(404)
        else:
            abort(404)
示例#9
0
    def do_edit_gallery(self, id=None, redirect_to_gallery=False):
        if not id:
            gallery = Gallery()
        else:
            gallery = Gallery.load(self.db, id)

            
        gallery.name = request.POST['name']
        gallery.text = request.POST['text']
        gallery.tags = [tag.strip().lower() for tag in request.POST['tags'].split(',')]
        gallery.tags = filter(lambda t: t != '', gallery.tags)

        # cover image
        if hasattr(request.POST['cover_image'], 'file'):
            if gallery.cover:
                remove_image(gallery.cover)
            
            gallery.cover = store_image(request.POST['cover_image'].file)

        # Video stuff
        for video in request.POST.getall('delete_video'):
            gallery.videos.remove(video)

        videos = [video.strip() for video in
                  request.POST['videos'].split(',')]
        videos = filter(lambda v: v != '', videos)

        if gallery.videos:
            gallery.videos.extend(videos)
        else:
            gallery.videos = videos
        

        gallery.date = date(int(request.POST['year']),
                            int(request.POST['month']),
                            1)

        gallery.store(self.db)

        flash("Gallery successfully edited.")
        if redirect_to_gallery:
            redirect(url(controller='admin', action='edit_gallery', id=gallery.id))
        else:
            redirect(url(controller='admin', action='galleries'))
示例#10
0
 def edit_gallery(self, id):
     c.gallery = Gallery.load(self.db, id)
     return render('/admin/edit_gallery.mako')
示例#11
0
    def galleries(self):
        c.galleries = Gallery.by_created(self.db, descending=True)

        return render('/admin/galleries.mako')
示例#12
0
 def images_delete_list(self, id):
     c.gallery = Gallery.load(self.db, id)
     
     return render('/admin/images_list.mako')