def create(self, cr, uid, vals, context=None): if context is None: context = {} vals['title']=vals['name'] vals['parent_id'] = context.get('parent_id',False) or vals.get('parent_id',False) if not vals.get('res_id', False) and context.get('default_res_id',False): vals['res_id']=context.get('default_res_id',False) if not vals.get('res_model', False) and context.get('default_res_model',False): vals['res_model']=context.get('default_res_model',False) if vals.get('res_id', False) and vals.get('res_model',False): obj_model=self.pool.get(vals['res_model']) result = obj_model.read(cr, uid, [vals['res_id']], context=context) if len(result): obj=result[0] if obj.get('name',False): vals['title'] = (obj.get('name',''))[:60] if obj_model._name=='res.partner': vals['partner_id']=obj['id'] elif obj.get('address_id',False): if isinstance(obj['address_id'],tuple) or isinstance(obj['address_id'],list): address_id=obj['address_id'][0] else: address_id=obj['address_id'] address=self.pool.get('res.partner.address').read(cr,uid,[address_id],context=context) if len(address): vals['partner_id']=address[0]['partner_id'][0] or False elif obj.get('partner_id',False): if isinstance(obj['partner_id'],tuple) or isinstance(obj['partner_id'],list): vals['partner_id']=obj['partner_id'][0] else: vals['partner_id']=obj['partner_id'] datas=None if vals.get('link',False) : import urllib datas=base64.encodestring(urllib.urlopen(vals['link']).read()) else: datas = vals.get('datas',False) vals['file_size']= datas and len(datas) or 0 if not self._check_duplication(cr,uid,vals): raise except_orm(_('ValidateError'), _('File name must be unique!')) result = super(document_file,self).create(cr, uid, vals, context) cr.commit() try: res = content_index(base64.decodestring(datas), vals['datas_fname'], vals.get('content_type', None)) super(document_file,self).write(cr, uid, [result], { 'index_content' : res, }) cr.commit() except: pass return result
def write(self, cr, uid, ids, vals, context=None): res=self.search(cr,uid,[('id','in',ids)]) if not len(res): return False if not self._check_duplication(cr,uid,vals,ids,'write'): raise except_orm(_('ValidateError'), _('File name must be unique!')) result = super(document_file,self).write(cr,uid,ids,vals,context=context) cr.commit() try: for f in self.browse(cr, uid, ids, context=context): #if 'datas' not in vals: # vals['datas']=f.datas res = content_index(base64.decodestring(vals['datas']), f.datas_fname, f.file_type or None) super(document_file,self).write(cr, uid, ids, { 'index_content': res }) cr.commit() except: pass return result