Exemple #1
0
    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
Exemple #2
0
 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