2012-05-01 12:58:37 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from osv import fields, osv
|
|
|
|
import random
|
2012-08-29 12:38:33 +00:00
|
|
|
import re
|
2012-05-01 12:58:37 +00:00
|
|
|
import string
|
2012-05-15 11:19:28 +00:00
|
|
|
import urllib2
|
|
|
|
from tools.translate import _
|
2012-05-01 12:58:37 +00:00
|
|
|
|
|
|
|
class pad_common(osv.osv_memory):
|
|
|
|
_name = 'pad.common'
|
2012-08-29 09:36:06 +00:00
|
|
|
|
2012-07-21 19:25:51 +00:00
|
|
|
def pad_generate_url(self, cr, uid, context=None):
|
2012-08-29 12:38:33 +00:00
|
|
|
pad_server = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.pad_server
|
|
|
|
# make sure pad server in the form of http://hostname
|
2012-08-30 09:58:21 +00:00
|
|
|
if not pad_server:
|
|
|
|
return ''
|
2012-08-29 12:38:33 +00:00
|
|
|
if not pad_server.startswith('http'):
|
|
|
|
pad_server = 'http://' + pad_server
|
|
|
|
pad_server = pad_server.rstrip('/')
|
|
|
|
# generate a salt
|
2012-05-11 04:58:56 +00:00
|
|
|
s = string.ascii_uppercase + string.digits
|
2012-08-29 12:38:33 +00:00
|
|
|
salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(10)])
|
|
|
|
# contruct the url
|
|
|
|
url = '%s/p/%s-%s-%s' % (pad_server, cr.dbname, self._name, salt)
|
2012-05-15 11:19:28 +00:00
|
|
|
return url
|
2012-05-11 04:58:56 +00:00
|
|
|
|
2012-08-29 12:38:33 +00:00
|
|
|
def pad_get_content(self, cr, uid, url, context=None):
|
|
|
|
content = ''
|
|
|
|
if url:
|
|
|
|
page = urllib2.urlopen('%s/export/html'%url).read()
|
|
|
|
mo = re.search('<body>(.*)</body>',page)
|
|
|
|
if mo:
|
|
|
|
content = mo.group(1)
|
|
|
|
return content
|
|
|
|
|
2012-08-29 09:36:06 +00:00
|
|
|
# TODO
|
|
|
|
# reverse engineer protocol to be setHtml without using the api key
|
2012-08-29 12:38:33 +00:00
|
|
|
# override read and copy to generate url and store the content if empty
|
|
|
|
|
|
|
|
def default_get(self, cr, uid, fields, context=None):
|
|
|
|
data = super(pad_common, self).default_get(cr, uid, fields, context)
|
|
|
|
for k in fields:
|
|
|
|
field = self._all_columns[k].column
|
|
|
|
if hasattr(field,'pad_content_field'):
|
|
|
|
data[k] = self.pad_generate_url(cr, uid, context=context)
|
|
|
|
return data
|
|
|
|
|
|
|
|
def write(self, cr, uid, ids, vals, context=None):
|
|
|
|
for k,v in vals.items():
|
|
|
|
field = self._all_columns[k].column
|
|
|
|
if hasattr(field,'pad_content_field'):
|
|
|
|
vals[field.pad_content_field] = self.pad_get_content(cr, uid, v, context=context)
|
|
|
|
return super(pad_common, self).write(cr, uid, ids, vals, context=context)
|
2012-08-29 09:36:06 +00:00
|
|
|
|
2012-05-01 12:58:37 +00:00
|
|
|
def copy(self, cr, uid, id, default=None, context=None):
|
|
|
|
if not default:
|
|
|
|
default = {}
|
2012-08-29 12:38:33 +00:00
|
|
|
for k,v in self._all_columns:
|
|
|
|
field = v.column
|
|
|
|
if hasattr(field,'pad_content_field'):
|
|
|
|
default[k] = self.pad_generate_url(cr, uid, context)
|
2012-05-01 12:58:37 +00:00
|
|
|
return super(pad_common, self).copy(cr, uid, id, default, context)
|
2012-07-17 22:14:08 +00:00
|
|
|
|
2012-05-01 12:58:37 +00:00
|
|
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|