def _add_cpmd_val(self, cpmd_tag, fld, tag): """ cpmd_tag: compound key to add val to fld: form name of compound tag tag: str representation of type of tag """ # DOTO: need to run through all possible elements of this tag in the form # at moment just grabbing the default named fld. # need a regex for 'compound_#_img_#' if cpmd_tag not in self.cmpd_vals: self.cmpd_vals[cpmd_tag] = {} rgx = re.compile('([\w]+_[\d]+_)([\w]+_)([\d]+)') def increment(match): cmpd_int = match.group(1) fld_tag = match.group(2) fld_int = int(match.group(3))+1 return cmpd_int+fld_tag+str(fld_int) frm_obj = self.form[fld] while(True): if frm_obj is not None and type(frm_obj.file) is not file: # text logging.debug('cmpd tag: %s \t field: %s' % (tag, fld)) if not self.commands[tag].multi: # DOTO: need to match up fields to tag obj self.cmpd_vals[cpmd_tag][tag] = frm_obj.value elif tag not in self.cmpd_vals[cpmd_tag]: self.cmpd_vals[cpmd_tag][tag] = [frm_obj.value] elif frm_obj not in self.cmpd_vals[cpmd_tag][tag]: self.cmpd_vals[cpmd_tag][tag].append(frm_obj.value) else: logging.debug('already swept it up on the first greedy pass...') break # DOTO: if img then intermediate step needed - save to img dir, return url elif frm_obj is not None: # file logging.debug('tackling img file input: %s' % frm_obj.filename) tmp = tools.urlise(frm_obj.filename) # this change suddenly stopped us reading in 2nd file below. Not sure about a 3rd... # save to dir should be handled by form subclass, just need url val if tag not in self.cmpd_vals[cpmd_tag]: self.cmpd_vals[cpmd_tag][tag] = [os.path.join(self.img_path, tmp)] elif os.path.join(self.img_path, tmp) not in self.cmpd_vals[cpmd_tag][tag]: self.cmpd_vals[cpmd_tag][tag].append(os.path.join(self.img_path, tmp)) else: logging.debug('file already swept up on first greedy pass') break with open(os.path.join(self.img_path, tmp), 'wb') as fout: while 1: line = frm_obj.file.readline() if not line: break fout.write(line) else: # f****d logging.error('field not found in form: %s, %s' % (tag, fld)) break fld= rgx.sub(increment, fld) if fld in self.form: frm_obj = self.form[fld] else: break
def _add_val(self, fld, tag): """ fld: form name of submitted tag tag: str representation of type of tag Internal method used to add a req form value to self.vals dict And compound form values to their own special self.cmpd_vals dict, each entry of which basically follows the same {tag:[name,...]} structure as self.vals """ frm_obj = self.form[fld] # logging.debug('fieldstorage? %s' % frm_obj) if frm_obj is not None and type(frm_obj.file) is not file: # text logging.debug('tag: %s \t field: %s' % (tag, fld)) if not self.commands[tag].multi: # DOTO: need to match up fields to tag obj self.vals[tag] = frm_obj.value elif tag not in self.vals: self.vals[tag] = [frm_obj.value] else: self.vals[tag].append(frm_obj.value) # DOTO: if img then intermediate step needed - save to img dir, return url elif frm_obj is not None: # file # DOTO: make title url safe (and in equivalent cpmd func) logging.debug('tackling img file input: %s' % frm_obj.filename) tmp = tools.urlise(frm_obj.filename) with open(os.path.join(self.img_path, tmp), 'wb') as fout: while 1: line = frm_obj.file.readline() if not line: break fout.write(line) # save to dir should be handled by form subclass, just need url val if tag not in self.vals: self.vals[tag] = [os.path.join(self.img_path, tmp)] else: self.vals[tag].append(os.path.join(self.img_path, tmp)) else: # f****d logging.error('field not found in form: %s, %s' % (tag, fld))