[web2py] Re: Image gallery on GAE

2010-09-30 Thread István Gazsi
Thank you for your replies!


[web2py] Re: Image gallery on GAE

2010-09-30 Thread mdipierro
Mind that

@cache(request.env.path_info+request.env.query_string,
time_expire=3600, cache_model=cache.ram)

my end up caching a lot of stuff and cause out of memory problems.



Is there a way on GAE to have a normal form that includes a file
upload for the blobstore? I mean a form that includes other fields
that go in db normally?

Some people have reported problems when videos where stored in
blobstore. Do you have any experience with it?


On Sep 15, 5:59 pm, howesc how...@umich.edu wrote:
 I have just such a setup - i'd give you the URL to the site, but it's
 not public yetremind me in a week or two.

 The link Martin gives is the best bit of blobstore info that i have
 found for web2py yet.  i (cfhowes) wrote the 2 comments, so please let
 me know if they don't work - i may have made fixes and not updated the
 post.

 also, i created a method that does image resizing and caches the image
 in memory for the gallery page, so yes the first load of the page may
 be slow (this also depends on frequency of use of the app on GAE), but
 subsequent visits are pretty quick.

 here's the caching image resizing download method:

 @cache(request.env.path_info+request.env.query_string,
 time_expire=3600, cache_model=cache.ram)
 def download():

     #handle non-gae download
     if not request.env.web2py_runtime_gae or not request.args[0]:
         return response.download(request,db)

     #handle gae download
     my_uploads=db(db.artwork.image==request.args[0]).select()[0]
     if not my_uploads.blob_key:
         return None
     blob_info = blobstore.get(my_uploads.blob_key)

     response.headers['Content-Type'] = blob_info.content_type;
     response.headers['Content-Disposition'] = attachment; filename=
 %s % blob_info.filename
     #response.headers['Cache-Control'] = max-age=3600, must-
 revalidate

     if (len(request.args)  1 and request.args[1]) or
 request.vars.width:
         if (len(request.args)  1 and request.args[1]):
             request.vars.width = request.args[1]
         from google.appengine.api import images
         img = images.Image(blob_key=my_uploads.blob_key)
         if not request.vars.height:
             img.resize(int(request.vars.width))
         else:
             logging.info(resize width and height)
             img.resize(int(request.vars.width),
 int(request.vars.height))
         return img.execute_transforms(images.JPEG)
     else:
         response.headers['X-AppEngine-BlobKey'] = my_uploads.blob_key;
         return response.body.getvalue()

 enjoy!

 On Sep 15, 3:23 am, Martin.Mulone mulone.mar...@gmail.com wrote:

  First to use blobstore you have to enabled billing. Yes for your
  approach i think the best is to use blobstore in gae.

  Take a look to this:http://www.web2pyslices.com/main/slices/take_slice/63

  And to display images use the new introduce function get_serving_url
  is really fast and doesnt consume much resources
  you have to store blob_key)

  def _response_image(table_name='images',image_size=64):
      if request.env.web2py_runtime_gae:
          from google.appengine.ext import blobstore
          from google.appengine.api import images

          if not request.args:
              raise HTTP(404)
          myimages=db(db[table_name].image==request.args[0]).select()
          if myimages:
              myimage = myimages[0]
              if myimage.blob_key:
                  if GAE_SERVING_IMAGE:
                      image_serving =
  images.get_serving_url(myimage.blob_key,image_size)
                      return image_serving

  On 15 sep, 07:08, István Gazsi theag...@gmail.com wrote:

   Hi everybody!

   As part of a website I try to make an image gallery in web2py. The
   database model is simple: there is a 100x100 thumbnail, the whole
   picture, and (optionally) the image's title.

   The website runs on Google App Engine and web2py v1.83.2 for now.
   There are multiple problems with it. First, I can only upload images
   under 1MB. Second, the gallery page loads very slowly (I make a select
   for only 25 records in web2py), and in the GAE logs there is always
   warnings about memory usage.

   For the first problem the solution would be using the GAE blobstore,
   but I don't really know how to do that. Is it implemented in web2py?
   For the second problem I don't know the solution.

   If you would do an image gallery like mine from the ground up, how
   would you do that? And do you have any advices about my problems?

   Thanks in advance!




[web2py] Re: Image gallery on GAE

2010-09-30 Thread Martin.Mulone
i try some time ago, caching download with this parameters and didn't
work.

perhaps you have to take a look to this
http://groups.google.com/group/web2py/browse_thread/thread/c10235cb16c476f/d72d988abe41a3c1?lnk=gstq=cache+download#d72d988abe41a3c1

On Sep 30, 11:14 am, mdipierro mdipie...@cs.depaul.edu wrote:
 Mind that

 @cache(request.env.path_info+request.env.query_string,
 time_expire=3600, cache_model=cache.ram)

 my end up caching a lot of stuff and cause out of memory problems.

 Is there a way on GAE to have a normal form that includes a file
 upload for the blobstore? I mean a form that includes other fields
 that go in db normally?

 Some people have reported problems when videos where stored in
 blobstore. Do you have any experience with it?

 On Sep 15, 5:59 pm, howesc how...@umich.edu wrote:



  I have just such a setup - i'd give you the URL to the site, but it's
  not public yetremind me in a week or two.

  The link Martin gives is the best bit of blobstore info that i have
  found for web2py yet.  i (cfhowes) wrote the 2 comments, so please let
  me know if they don't work - i may have made fixes and not updated the
  post.

  also, i created a method that does image resizing and caches the image
  in memory for the gallery page, so yes the first load of the page may
  be slow (this also depends on frequency of use of the app on GAE), but
  subsequent visits are pretty quick.

  here's the caching image resizing download method:

  @cache(request.env.path_info+request.env.query_string,
  time_expire=3600, cache_model=cache.ram)
  def download():

      #handle non-gae download
      if not request.env.web2py_runtime_gae or not request.args[0]:
          return response.download(request,db)

      #handle gae download
      my_uploads=db(db.artwork.image==request.args[0]).select()[0]
      if not my_uploads.blob_key:
          return None
      blob_info = blobstore.get(my_uploads.blob_key)

      response.headers['Content-Type'] = blob_info.content_type;
      response.headers['Content-Disposition'] = attachment; filename=
  %s % blob_info.filename
      #response.headers['Cache-Control'] = max-age=3600, must-
  revalidate

      if (len(request.args)  1 and request.args[1]) or
  request.vars.width:
          if (len(request.args)  1 and request.args[1]):
              request.vars.width = request.args[1]
          from google.appengine.api import images
          img = images.Image(blob_key=my_uploads.blob_key)
          if not request.vars.height:
              img.resize(int(request.vars.width))
          else:
              logging.info(resize width and height)
              img.resize(int(request.vars.width),
  int(request.vars.height))
          return img.execute_transforms(images.JPEG)
      else:
          response.headers['X-AppEngine-BlobKey'] = my_uploads.blob_key;
          return response.body.getvalue()

  enjoy!

  On Sep 15, 3:23 am, Martin.Mulone mulone.mar...@gmail.com wrote:

   First to use blobstore you have to enabled billing. Yes for your
   approach i think the best is to use blobstore in gae.

   Take a look to this:http://www.web2pyslices.com/main/slices/take_slice/63

   And to display images use the new introduce function get_serving_url
   is really fast and doesnt consume much resources
   you have to store blob_key)

   def _response_image(table_name='images',image_size=64):
       if request.env.web2py_runtime_gae:
           from google.appengine.ext import blobstore
           from google.appengine.api import images

           if not request.args:
               raise HTTP(404)
           myimages=db(db[table_name].image==request.args[0]).select()
           if myimages:
               myimage = myimages[0]
               if myimage.blob_key:
                   if GAE_SERVING_IMAGE:
                       image_serving =
   images.get_serving_url(myimage.blob_key,image_size)
                       return image_serving

   On 15 sep, 07:08, István Gazsi theag...@gmail.com wrote:

Hi everybody!

As part of a website I try to make an image gallery in web2py. The
database model is simple: there is a 100x100 thumbnail, the whole
picture, and (optionally) the image's title.

The website runs on Google App Engine and web2py v1.83.2 for now.
There are multiple problems with it. First, I can only upload images
under 1MB. Second, the gallery page loads very slowly (I make a select
for only 25 records in web2py), and in the GAE logs there is always
warnings about memory usage.

For the first problem the solution would be using the GAE blobstore,
but I don't really know how to do that. Is it implemented in web2py?
For the second problem I don't know the solution.

If you would do an image gallery like mine from the ground up, how
would you do that? And do you have any advices about my problems?

Thanks in advance!


[web2py] Re: Image gallery on GAE

2010-09-30 Thread howesc
I have an integrated form that does a file upload and other fields.
the trouble is to get blobstore to load the file you have to redirect
to blobstore then back to your form processing.  it works fine when
there are no errors, but the major problem i have with it is that when
there are errors, the previous values get lost.  perhaps it's a bug in
my controller.

i have no experience with video yet.

cfh

On Sep 30, 7:14 am, mdipierro mdipie...@cs.depaul.edu wrote:
 Mind that

 @cache(request.env.path_info+request.env.query_string,
 time_expire=3600, cache_model=cache.ram)

 my end up caching a lot of stuff and cause out of memory problems.

 Is there a way on GAE to have a normal form that includes a file
 upload for the blobstore? I mean a form that includes other fields
 that go in db normally?

 Some people have reported problems when videos where stored in
 blobstore. Do you have any experience with it?

 On Sep 15, 5:59 pm, howesc how...@umich.edu wrote:

  I have just such a setup - i'd give you the URL to the site, but it's
  not public yetremind me in a week or two.

  The link Martin gives is the best bit of blobstore info that i have
  found for web2py yet.  i (cfhowes) wrote the 2 comments, so please let
  me know if they don't work - i may have made fixes and not updated the
  post.

  also, i created a method that does image resizing and caches the image
  in memory for the gallery page, so yes the first load of the page may
  be slow (this also depends on frequency of use of the app on GAE), but
  subsequent visits are pretty quick.

  here's the caching image resizing download method:

  @cache(request.env.path_info+request.env.query_string,
  time_expire=3600, cache_model=cache.ram)
  def download():

      #handle non-gae download
      if not request.env.web2py_runtime_gae or not request.args[0]:
          return response.download(request,db)

      #handle gae download
      my_uploads=db(db.artwork.image==request.args[0]).select()[0]
      if not my_uploads.blob_key:
          return None
      blob_info = blobstore.get(my_uploads.blob_key)

      response.headers['Content-Type'] = blob_info.content_type;
      response.headers['Content-Disposition'] = attachment; filename=
  %s % blob_info.filename
      #response.headers['Cache-Control'] = max-age=3600, must-
  revalidate

      if (len(request.args)  1 and request.args[1]) or
  request.vars.width:
          if (len(request.args)  1 and request.args[1]):
              request.vars.width = request.args[1]
          from google.appengine.api import images
          img = images.Image(blob_key=my_uploads.blob_key)
          if not request.vars.height:
              img.resize(int(request.vars.width))
          else:
              logging.info(resize width and height)
              img.resize(int(request.vars.width),
  int(request.vars.height))
          return img.execute_transforms(images.JPEG)
      else:
          response.headers['X-AppEngine-BlobKey'] = my_uploads.blob_key;
          return response.body.getvalue()

  enjoy!

  On Sep 15, 3:23 am, Martin.Mulone mulone.mar...@gmail.com wrote:

   First to use blobstore you have to enabled billing. Yes for your
   approach i think the best is to use blobstore in gae.

   Take a look to this:http://www.web2pyslices.com/main/slices/take_slice/63

   And to display images use the new introduce function get_serving_url
   is really fast and doesnt consume much resources
   you have to store blob_key)

   def _response_image(table_name='images',image_size=64):
       if request.env.web2py_runtime_gae:
           from google.appengine.ext import blobstore
           from google.appengine.api import images

           if not request.args:
               raise HTTP(404)
           myimages=db(db[table_name].image==request.args[0]).select()
           if myimages:
               myimage = myimages[0]
               if myimage.blob_key:
                   if GAE_SERVING_IMAGE:
                       image_serving =
   images.get_serving_url(myimage.blob_key,image_size)
                       return image_serving

   On 15 sep, 07:08, István Gazsi theag...@gmail.com wrote:

Hi everybody!

As part of a website I try to make an image gallery in web2py. The
database model is simple: there is a 100x100 thumbnail, the whole
picture, and (optionally) the image's title.

The website runs on Google App Engine and web2py v1.83.2 for now.
There are multiple problems with it. First, I can only upload images
under 1MB. Second, the gallery page loads very slowly (I make a select
for only 25 records in web2py), and in the GAE logs there is always
warnings about memory usage.

For the first problem the solution would be using the GAE blobstore,
but I don't really know how to do that. Is it implemented in web2py?
For the second problem I don't know the solution.

If you would do an image gallery like mine from the ground up, how
would you do that? And 

[web2py] Re: Image gallery on GAE

2010-09-30 Thread Richard
also note that you can enable billing but ensure you never pay by
allocating the resources to something you don't use - eg sending
emails



On Sep 15, 8:23 pm, Martin.Mulone mulone.mar...@gmail.com wrote:
 First to use blobstore you have to enabled billing. Yes for your
 approach i think the best is to use blobstore in gae.

 Take a look to this:http://www.web2pyslices.com/main/slices/take_slice/63

 And to display images use the new introduce function get_serving_url
 is really fast and doesnt consume much resources
 you have to store blob_key)

 def _response_image(table_name='images',image_size=64):
     if request.env.web2py_runtime_gae:
         from google.appengine.ext import blobstore
         from google.appengine.api import images

         if not request.args:
             raise HTTP(404)
         myimages=db(db[table_name].image==request.args[0]).select()
         if myimages:
             myimage = myimages[0]
             if myimage.blob_key:
                 if GAE_SERVING_IMAGE:
                     image_serving =
 images.get_serving_url(myimage.blob_key,image_size)
                     return image_serving

 On 15 sep, 07:08, István Gazsi theag...@gmail.com wrote:

  Hi everybody!

  As part of a website I try to make an image gallery in web2py. The
  database model is simple: there is a 100x100 thumbnail, the whole
  picture, and (optionally) the image's title.

  The website runs on Google App Engine and web2py v1.83.2 for now.
  There are multiple problems with it. First, I can only upload images
  under 1MB. Second, the gallery page loads very slowly (I make a select
  for only 25 records in web2py), and in the GAE logs there is always
  warnings about memory usage.

  For the first problem the solution would be using the GAE blobstore,
  but I don't really know how to do that. Is it implemented in web2py?
  For the second problem I don't know the solution.

  If you would do an image gallery like mine from the ground up, how
  would you do that? And do you have any advices about my problems?

  Thanks in advance!




[web2py] Re: Image gallery on GAE

2010-09-15 Thread Martin.Mulone
First to use blobstore you have to enabled billing. Yes for your
approach i think the best is to use blobstore in gae.

Take a look to this:
http://www.web2pyslices.com/main/slices/take_slice/63

And to display images use the new introduce function get_serving_url
is really fast and doesnt consume much resources
you have to store blob_key)

def _response_image(table_name='images',image_size=64):
if request.env.web2py_runtime_gae:
from google.appengine.ext import blobstore
from google.appengine.api import images

if not request.args:
raise HTTP(404)
myimages=db(db[table_name].image==request.args[0]).select()
if myimages:
myimage = myimages[0]
if myimage.blob_key:
if GAE_SERVING_IMAGE:
image_serving =
images.get_serving_url(myimage.blob_key,image_size)
return image_serving




On 15 sep, 07:08, István Gazsi theag...@gmail.com wrote:
 Hi everybody!

 As part of a website I try to make an image gallery in web2py. The
 database model is simple: there is a 100x100 thumbnail, the whole
 picture, and (optionally) the image's title.

 The website runs on Google App Engine and web2py v1.83.2 for now.
 There are multiple problems with it. First, I can only upload images
 under 1MB. Second, the gallery page loads very slowly (I make a select
 for only 25 records in web2py), and in the GAE logs there is always
 warnings about memory usage.

 For the first problem the solution would be using the GAE blobstore,
 but I don't really know how to do that. Is it implemented in web2py?
 For the second problem I don't know the solution.

 If you would do an image gallery like mine from the ground up, how
 would you do that? And do you have any advices about my problems?

 Thanks in advance!