Thank you Massimo, it worked best regards Gerd
Am Mittwoch, 17. Juli 2013 11:36:31 UTC+2 schrieb Massimo Di Pierro: > > Try this instead: > > request.vars.uploaded_file.file = StringIO.StringIO(data) > > On Wednesday, 17 July 2013 03:54:32 UTC-5, Gerd wrote: >> >> Hi! >> >> I have to anonymize HL7 file (replace all personal data with x). How can >> i process an uploaded file "on the fly". This is what i've tried (when it >> runs it actually saves the original file content, not the processed) >> >> *# Model* >> db.define_table('filetypes', >> Field('filetype','string'), >> Field('seperator','string'), >> Field('omit','string'), >> format='%(filetype)s' >> ) >> >> db.define_table('anonymize', >> Field('filetype','reference filetypes'), >> Field('uploaded_file','upload') >> ) >> >> *# Controller* >> def index(): >> """ >> example action using the internationalization operator T and flash >> rendered by views/default/index.html or views/generic.html >> >> if you need a simple wiki simple replace the two lines below with: >> return auth.wiki() >> """ >> form = SQLFORM(db.anonymize) >> >> data = '' >> import re >> hl7 = >> {'PID':{'pattern':'PID\|','separator':'|','omit':(0,1,2,3)},'NK1':{'pattern':'NK1\|','separator':'|','omit':(0,)},'PV1':{'pattern':'PV1\|','separator':'|','omit':(0,)},'IN1':{'pattern':'IN1\|','separator':'|','omit':(0,)}} >> if request.vars.uploaded_file != None and >> request.vars.uploaded_file.filename != '': >> if re.search('|'.join([hl7[k]['pattern'] for k in hl7]), >> request.vars.uploaded_file.value): >> for line in request.vars.uploaded_file.value.splitlines(): >> replaced_text = '' >> for k in hl7: >> replaced_text = '|'.join([len(val) * 'x' if idx not >> in hl7[k]['omit'] else val for idx, val in enumerate([splitted_text for >> splitted_text in line.split(hl7[k]['separator'])])]) if >> re.search(hl7[k]['pattern'],line) else replaced_text >> data += (replaced_text if replaced_text != '' else line) >> + '\n' >> request.vars.uploaded_file.value = data >> else: >> data = 'No HL7 Format' >> else: >> data = u'No file chosen' >> >> if form.process().accepted: >> response.flash = 'form accepted' >> elif form.errors: >> response.flash = 'form has errors' >> return locals() >> >> I thought that the line >> request.vars.uploaded_file.value = data >> replaces the original data of the uploaded file, so that the >> form.process() processes the new (replaced) value >> >> What i am doing wrong here? >> >> Thanks, >> Gerd >> > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.