That should work for most simple cases. You could also look into using 
paste.fileapp.FileApp which is a WSGI app for serving static files. Probably 
covers a lot of cases you might not consider.

edgarsmolow wrote:
> The following seems to work.  The filename is the document ID (docID)
> and an extention of .pdf.  The first three characters of the docID are
> hashed to create a directory tree.
> 
> class PdfviewController(BasePlusController):
>       def index(self, a, b, c, docID):
>               if auth:
>               path = os.path.join(g.pdfdocs_dir,a,b,c,docID + '.pdf')
>               f = open(path, 'rb')
>               content = f.read()
>               f.close()
>               response.headers['Content-Type'] = 'application/pdf'
>               return content
> 
> Thanks.
> Edgar
> 
> On Jul 14, 2:35 pm, edgarsmolow <[email protected]> wrote:
>> Last step is how to deliver the PDF document from the pdfview
>> controller.
>>
>> Thanks!
>> Edgar
>>
>> On Jul 14, 1:28 pm, kochhar <[email protected]> wrote:
>>
>>> edgarsmolow wrote:
>>>> On Jul 14, 12:17 pm, kochhar <[email protected]> wrote:
>>>>> edgarsmolow wrote:
>>>>>> Our website generates PDF documents on-the-fly based upon database
>>>>>> content.  The user who created the document should be able to view it,
>>>>>> but not other users, since the documents often contain private
>>>>>> information.  A web page on a Pylons site will contain link(s) to the
>>>>>> user's document, where each link is an anchor element.
>>>>>> Where should the documents be stored on disk: outside of the Pylons
>>>>>> directory tree?  If outside, configure a system variable or an Apache
>>>>>> setting (alias)?
>>>>> I'd store them on disk outside the pylons directory and add configuration 
>>>>> your
>>>>> app for their locations.
>>>> Excellent!
>>>> One more question:
>>>> Where / how is that configuration set up?
>>> The config is set in the development.ini or production.ini files. Under the
>>> [app:main] section, you can add another entry like:
>>> myapp.pdfdocs_dir = /path/to/pdf/docs
>>> Then in lib/app_globals.py store the config:
>>> class Globals:
>>>      def __init__(self):
>>>          self.pdfdocs_dir = config['myapp.pdfdocs_dir']
>>> Finally, in your pdfview controller you can access the location using, 
>>> g.pdfdocs_dir
>>>>>> What is the best way to construct the anchor elements?  Something like
>>>>>> this (where pdfdocs is aliased)?
>>>>>>   <a href="/pdfdocs/ABC12345.pdf">My Special Document</a>
>>>>>> Or, perhaps like this?
>>>>>>   <a href="/viewer.py?docid=ABC12345">My Special Document</a>
>>>>>> and let viewer.py return the contents of ABC12345,pdf if the user is
>>>>>> authorized to view it?
>>>>> How about adding a pdfview controller and creating a route which maps
>>>>> /pdfdocs/:docid to pdfview? Your links will look like the former but 
>>>>> you'll get
>>>>> the functionality of the latter.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to