Please do.
On Sunday, 18 November 2012 23:21:16 UTC-6, Cliff Kachinske wrote:
>
> Aha.
>
> I could not find the call to stream.read in the pdf manual.
>
> Manual uploads appears to be removed from the on-line manual. Is that
> intentional? If not I could write up a patch for the book in the next day
> or so.
>
> By the way, the code allows uploads to be attached to any table in the
> application. I can put it on github with a bsd license if you think anyone
> would be interested.
>
> Cliff Kachinske
>
> On Friday, November 16, 2012 5:20:07 PM UTC-5, Massimo Di Pierro wrote:
>>
>> Yes:
>>
>> att_id = db2.attachments.insert(
>> attachment = db2.attachments.attachment.store(...),
>> filename = fname,
>> Description =
>> r.attachments.attachment_brief_description,
>> )
>> needs
>>
>> att_id = db2.attachments.insert(
>> attachment = db2.attachments.attachment.store(...),
>> payload = stream.read(),
>> filename = fname,
>> Description =
>> r.attachments.attachment_brief_description,
>> )
>>
>> On Friday, 16 November 2012 09:18:47 UTC-6, Cliff Kachinske wrote:
>>>
>>> The title describes the problem.
>>>
>>> Any suggestions as to what I might do? Would it be simpler if I just
>>> uploaded to a directory? I'm archiving for auditability, so I suppose
>>> there would still be a way to get at earlier versions of uploaded files.
>>>
>>> Here is the model:
>>>
>>> db.define_table('attachments',
>>> Field('attachment', 'upload', uploadfield='payload'),
>>> Field('filename', length=512),
>>> Field('Description', 'text'),
>>> Field('payload', 'blob'),
>>> migrate=init_migrate,
>>> )
>>> Common fields are auth.signature and a field called "tenant_link", which
>>> is how I implemented the request_tenant functionality before Massimo
>>> announced it.
>>>
>>> Here is the controller code:
>>> for r in rows:
>>> ...
>>> myfile = mypath + r.attachments.file_name + '.' +
>>> r.attachments.file_ext
>>> try:
>>> stream = open(myfile, 'rb')
>>> except IOError:
>>> no_finds.append(DIV('unable to find {}'.format(myfile)))
>>> continue
>>> else:
>>> ok.append(DIV('found {}.{}, aka {}'.format(
>>> r.attachments.file_name, r.attachments.file_ext, fname
>>> )))
>>> att_id = db2.attachments.insert(
>>> attachment = db2.attachments.attachment.store(
>>> stream, '{}.{}'.format(
>>> r.attachments.file_name,
>>> r.attachments.file_ext
>>> )
>>> ),
>>> filename = fname,
>>> Description =
>>> r.attachments.attachment_brief_description,
>>> )
>>>
>>> The insert is successful except the payload field is never populated.
>>> Here is a snippet of the results from this postgres query, "SELECT id,
>>> filename, octet_length(payload) from attachments;"
>>>
>>> 9 | apt-get-output.txt
>>> | 10772
>>> 10 | a_h_hits.txt
>>> | 24164
>>> 11 | a_h_hits.txt
>>> | 24164
>>> 12 | greg-free-bizcard
>>> | 215288
>>> 27 | Tank Thickness ML.doc
>>> |
>>> 28 | Tank Thickness ML.doc(1)
>>> |
>>> 29 | A short short file
>>> |
>>> 30 | hello.txt
>>> |
>>>
>>> Records 9, 10 and 11 were uploaded while testing the interface. Records
>>> 12 and up were created using the above script.
>>>
>>>
--