[MERGE] trunk-unmutable-defaults-abo: fix the last few methods that still have mutable defaults
also improve code style (methods signatures and whitespaces) contribution of Lionel Sausin from Numerigraphe bzr revid: abo@openerp.com-20121002120634-ms2ins653tktqfnt
This commit is contained in:
commit
c28dfb19e1
|
@ -595,12 +595,15 @@ class account_account(osv.osv):
|
|||
res.append((record['id'], name))
|
||||
return res
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None, done_list=[], local=False):
|
||||
def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False):
|
||||
if default is None:
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
if done_list is None:
|
||||
done_list = []
|
||||
account = self.browse(cr, uid, id, context=context)
|
||||
new_child_ids = []
|
||||
if not default:
|
||||
default = {}
|
||||
default = default.copy()
|
||||
default.update(code=_("%s (copy)") % (account['code'] or ''))
|
||||
if not local:
|
||||
done_list = []
|
||||
|
@ -777,11 +780,14 @@ class account_journal(osv.osv):
|
|||
(_check_currency, 'Configuration error!\nThe currency chosen should be shared by the default accounts too.', ['currency','default_debit_account_id','default_credit_account_id']),
|
||||
]
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None, done_list=[], local=False):
|
||||
journal = self.browse(cr, uid, id, context=context)
|
||||
if not default:
|
||||
def copy(self, cr, uid, id, default=None, context=None, done_list=None, local=False):
|
||||
if default is None:
|
||||
default = {}
|
||||
default = default.copy()
|
||||
else:
|
||||
default = default.copy()
|
||||
if done_list is None:
|
||||
done_list = []
|
||||
journal = self.browse(cr, uid, id, context=context)
|
||||
default.update(
|
||||
code=_("%s (copy)") % (journal['code'] or ''),
|
||||
name=_("%s (copy)") % (journal['name'] or ''),
|
||||
|
@ -1178,7 +1184,7 @@ class account_fiscalyear(osv.osv):
|
|||
'end_journal_period_id':fields.many2one('account.journal.period','End of Year Entries Journal', readonly=True),
|
||||
}
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None):
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
default.update({
|
||||
'period_ids': [],
|
||||
'end_journal_period_id': False
|
||||
|
@ -1437,9 +1443,15 @@ class account_move(osv.osv):
|
|||
result = super(account_move, self).create(cr, uid, vals, context)
|
||||
return result
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None):
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if context is None:
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
if context is None:
|
||||
context = {}
|
||||
else:
|
||||
context = context.copy()
|
||||
default.update({
|
||||
'state':'draft',
|
||||
'name':'/',
|
||||
|
@ -2269,7 +2281,10 @@ class account_model(osv.osv):
|
|||
_defaults = {
|
||||
'legend': lambda self, cr, uid, context:_('You can specify year, month and date in the name of the model using the following labels:\n\n%(year)s: To Specify Year \n%(month)s: To Specify Month \n%(date)s: Current Date\n\ne.g. My model on %(date)s'),
|
||||
}
|
||||
def generate(self, cr, uid, ids, datas={}, context=None):
|
||||
|
||||
def generate(self, cr, uid, ids, data=None, context=None):
|
||||
if data is None:
|
||||
data = {}
|
||||
move_ids = []
|
||||
entry = {}
|
||||
account_move_obj = self.pool.get('account.move')
|
||||
|
@ -2280,8 +2295,8 @@ class account_model(osv.osv):
|
|||
if context is None:
|
||||
context = {}
|
||||
|
||||
if datas.get('date', False):
|
||||
context.update({'date': datas['date']})
|
||||
if data.get('date', False):
|
||||
context.update({'date': data['date']})
|
||||
|
||||
move_date = context.get('date', time.strftime('%Y-%m-%d'))
|
||||
move_date = datetime.strptime(move_date,"%Y-%m-%d")
|
||||
|
@ -2467,10 +2482,10 @@ class account_subscription_line(osv.osv):
|
|||
all_moves = []
|
||||
obj_model = self.pool.get('account.model')
|
||||
for line in self.browse(cr, uid, ids, context=context):
|
||||
datas = {
|
||||
data = {
|
||||
'date': line.date,
|
||||
}
|
||||
move_ids = obj_model.generate(cr, uid, [line.subscription_id.model_id.id], datas, context)
|
||||
move_ids = obj_model.generate(cr, uid, [line.subscription_id.model_id.id], data, context)
|
||||
tocheck[line.subscription_id.id] = True
|
||||
self.write(cr, uid, [line.id], {'move_id':move_ids[0]})
|
||||
all_moves.extend(move_ids)
|
||||
|
@ -3236,7 +3251,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
property_obj.create(cr, uid, vals, context=context)
|
||||
return True
|
||||
|
||||
def _install_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, acc_ref={}, taxes_ref={}, tax_code_ref={}, context=None):
|
||||
def _install_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, acc_ref=None, taxes_ref=None, tax_code_ref=None, context=None):
|
||||
'''
|
||||
This function recursively loads the template objects and create the real objects from them.
|
||||
|
||||
|
@ -3254,6 +3269,12 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
* a last identical containing the mapping of tax code templates and tax codes
|
||||
:rtype: tuple(dict, dict, dict)
|
||||
'''
|
||||
if acc_ref is None:
|
||||
acc_ref = {}
|
||||
if taxes_ref is None:
|
||||
taxes_ref = {}
|
||||
if tax_code_ref is None:
|
||||
tax_code_ref = {}
|
||||
template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
|
||||
if template.parent_id:
|
||||
tmp1, tmp2, tmp3 = self._install_template(cr, uid, template.parent_id.id, company_id, code_digits=code_digits, acc_ref=acc_ref, taxes_ref=taxes_ref, tax_code_ref=tax_code_ref, context=context)
|
||||
|
@ -3266,7 +3287,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
tax_code_ref.update(tmp3)
|
||||
return acc_ref, taxes_ref, tax_code_ref
|
||||
|
||||
def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None):
|
||||
def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref=None, taxes_ref=None, tax_code_ref=None, context=None):
|
||||
'''
|
||||
This function generates all the objects from the templates
|
||||
|
||||
|
@ -3284,6 +3305,12 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
|||
* a last identical containing the mapping of tax code templates and tax codes
|
||||
:rtype: tuple(dict, dict, dict)
|
||||
'''
|
||||
if account_ref is None:
|
||||
account_ref = {}
|
||||
if taxes_ref is None:
|
||||
taxes_ref = {}
|
||||
if tax_code_ref is None:
|
||||
tax_code_ref = {}
|
||||
template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context)
|
||||
obj_tax_code_template = self.pool.get('account.tax.code.template')
|
||||
obj_acc_tax = self.pool.get('account.tax')
|
||||
|
|
|
@ -29,12 +29,12 @@ class bank(osv.osv):
|
|||
'currency_id': fields.related('journal_id', 'currency', type="many2one", relation='res.currency', readonly=True,
|
||||
string="Currency", help="Currency of the related account journal."),
|
||||
}
|
||||
def create(self, cr, uid, data, context={}):
|
||||
def create(self, cr, uid, data, context=None):
|
||||
result = super(bank, self).create(cr, uid, data, context=context)
|
||||
self.post_write(cr, uid, [result], context=context)
|
||||
return result
|
||||
|
||||
def write(self, cr, uid, ids, data, context={}):
|
||||
def write(self, cr, uid, ids, data, context=None):
|
||||
result = super(bank, self).write(cr, uid, ids, data, context=context)
|
||||
self.post_write(cr, uid, ids, context=context)
|
||||
return result
|
||||
|
@ -53,7 +53,7 @@ class bank(osv.osv):
|
|||
data['currency_name'] = data['currency_id'] and currency_name[data['currency_id'][0]] or ''
|
||||
return super(bank, self)._prepare_name_get(cr, uid, bank_dicts, context=context)
|
||||
|
||||
def post_write(self, cr, uid, ids, context={}):
|
||||
def post_write(self, cr, uid, ids, context=None):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
|
||||
|
|
|
@ -1105,7 +1105,7 @@ class account_move_line(osv.osv):
|
|||
'has been confirmed.') % res[2])
|
||||
return res
|
||||
|
||||
def _remove_move_reconcile(self, cr, uid, move_ids=[], context=None):
|
||||
def _remove_move_reconcile(self, cr, uid, move_ids=None, context=None):
|
||||
# Function remove move rencocile ids related with moves
|
||||
obj_move_line = self.pool.get('account.move.line')
|
||||
obj_move_rec = self.pool.get('account.move.reconcile')
|
||||
|
|
|
@ -47,4 +47,4 @@ class account_analytic_chart(osv.osv_memory):
|
|||
return result
|
||||
|
||||
account_analytic_chart()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -52,4 +52,4 @@ class account_analytic_inverted_balance(osv.osv_memory):
|
|||
}
|
||||
|
||||
account_analytic_inverted_balance()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -55,4 +55,4 @@ class project_account_analytic_line(osv.osv_memory):
|
|||
|
||||
project_account_analytic_line()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -68,7 +68,7 @@ class account_balance(report_sxw.rml_parse, common_report_header):
|
|||
return self.pool.get('account.account').browse(self.cr, self.uid, data['form']['id']).company_id.name
|
||||
return super(account_balance ,self)._get_account(data)
|
||||
|
||||
def lines(self, form, ids=[], done=None):#, level=1):
|
||||
def lines(self, form, ids=None, done=None):
|
||||
def _process_child(accounts, disp_acc, parent):
|
||||
account_rec = [acct for acct in accounts if acct['id']==parent][0]
|
||||
currency_obj = self.pool.get('res.currency')
|
||||
|
|
|
@ -105,4 +105,4 @@ class journal_print(report_sxw.rml_parse, common_report_header):
|
|||
|
||||
report_sxw.report_sxw('report.account.central.journal', 'account.journal.period', 'addons/account/report/account_central_journal.rml', parser=journal_print, header='internal')
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -158,4 +158,4 @@ class journal_print(report_sxw.rml_parse, common_report_header):
|
|||
|
||||
report_sxw.report_sxw('report.account.general.journal', 'account.journal.period', 'addons/account/report/general_journal.rml', parser=journal_print, header='internal')
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -284,4 +284,4 @@ class report_account_sales(osv.osv):
|
|||
)""")
|
||||
report_account_sales()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -160,7 +160,7 @@ class tax_report(report_sxw.rml_parse, common_report_header):
|
|||
i+=1
|
||||
return res
|
||||
|
||||
def _get_codes(self, based_on, company_id, parent=False, level=0, period_list=[], context=None):
|
||||
def _get_codes(self, based_on, company_id, parent=False, level=0, period_list=None, context=None):
|
||||
obj_tc = self.pool.get('account.tax.code')
|
||||
ids = obj_tc.search(self.cr, self.uid, [('parent_id','=',parent),('company_id','=',company_id)], order='sequence', context=context)
|
||||
|
||||
|
@ -171,7 +171,11 @@ class tax_report(report_sxw.rml_parse, common_report_header):
|
|||
res += self._get_codes(based_on, company_id, code.id, level+1, context=context)
|
||||
return res
|
||||
|
||||
def _add_codes(self, based_on, account_list=[], period_list=[], context=None):
|
||||
def _add_codes(self, based_on, account_list=None, period_list=None, context=None):
|
||||
if account_list is None:
|
||||
account_list = []
|
||||
if period_list is None:
|
||||
period_list = []
|
||||
res = []
|
||||
obj_tc = self.pool.get('account.tax.code')
|
||||
for account in account_list:
|
||||
|
|
|
@ -45,4 +45,3 @@ class res_currency_account(osv.osv):
|
|||
res_currency_account()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -71,4 +71,4 @@ class account_invoice_cancel(osv.osv_memory):
|
|||
|
||||
account_invoice_cancel()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -47,4 +47,4 @@ class account_journal_select(osv.osv_memory):
|
|||
|
||||
account_journal_select()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -61,4 +61,4 @@ the bank account\nin the journal definition for reconciliation.'))
|
|||
|
||||
account_move_bank_reconcile()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -38,7 +38,7 @@ class account_move_journal(osv.osv_memory):
|
|||
_defaults = {
|
||||
'target_move': 'all'
|
||||
}
|
||||
def _get_period(self, cr, uid, context={}):
|
||||
def _get_period(self, cr, uid, context=None):
|
||||
"""
|
||||
Return default account period value
|
||||
"""
|
||||
|
|
|
@ -52,4 +52,4 @@ class account_move_line_reconcile_select(osv.osv_memory):
|
|||
|
||||
account_move_line_reconcile_select()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -69,4 +69,4 @@ class account_move_line_select(osv.osv_memory):
|
|||
|
||||
account_move_line_select()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -41,4 +41,4 @@ class account_move_line_unreconcile_select(osv.osv_memory):
|
|||
|
||||
account_move_line_unreconcile_select()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -160,4 +160,4 @@ class account_move_line_reconcile_writeoff(osv.osv_memory):
|
|||
|
||||
account_move_line_reconcile_writeoff()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -41,4 +41,4 @@ class account_state_open(osv.osv_memory):
|
|||
|
||||
account_state_open()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -50,4 +50,4 @@ class account_subscription_generate(osv.osv_memory):
|
|||
|
||||
account_subscription_generate()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -50,4 +50,4 @@ class account_unreconcile_reconcile(osv.osv_memory):
|
|||
|
||||
account_unreconcile_reconcile()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -34,7 +34,7 @@ class crossovered_analytic(report_sxw.rml_parse):
|
|||
})
|
||||
self.base_amount = 0.00
|
||||
|
||||
def find_children(self,ref_ids):
|
||||
def find_children(self, ref_ids):
|
||||
to_return_ids = []
|
||||
final_list = []
|
||||
parent_list = []
|
||||
|
@ -53,7 +53,7 @@ class crossovered_analytic(report_sxw.rml_parse):
|
|||
final_list.extend(set_list)
|
||||
return final_list #to_return_ids[0]
|
||||
|
||||
def set_account(self,cats):
|
||||
def set_account(self, cats):
|
||||
lst = []
|
||||
category = self.pool.get('account.analytic.account').read(self.cr, self.uid, cats)
|
||||
for cat in category:
|
||||
|
@ -62,7 +62,7 @@ class crossovered_analytic(report_sxw.rml_parse):
|
|||
lst.extend(self.set_account(cat['child_ids']))
|
||||
return lst
|
||||
|
||||
def _ref_lines(self,form):
|
||||
def _ref_lines(self, form):
|
||||
result = []
|
||||
res = {}
|
||||
acc_pool = self.pool.get('account.analytic.account')
|
||||
|
@ -112,7 +112,9 @@ class crossovered_analytic(report_sxw.rml_parse):
|
|||
result.append(res)
|
||||
return result
|
||||
|
||||
def _lines(self, form, ids={}):
|
||||
def _lines(self, form, ids=None):
|
||||
if ids is None:
|
||||
ids = {}
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
|
||||
|
|
|
@ -23,4 +23,4 @@ import stock
|
|||
import purchase
|
||||
import invoice
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -75,7 +75,7 @@ class account_asset_asset(osv.osv):
|
|||
_name = 'account.asset.asset'
|
||||
_description = 'Asset'
|
||||
|
||||
def _get_period(self, cr, uid, context={}):
|
||||
def _get_period(self, cr, uid, context=None):
|
||||
periods = self.pool.get('account.period').find(cr, uid)
|
||||
if periods:
|
||||
return periods[0]
|
||||
|
@ -176,7 +176,9 @@ class account_asset_asset(osv.osv):
|
|||
year = depreciation_date.year
|
||||
return True
|
||||
|
||||
def validate(self, cr, uid, ids, context={}):
|
||||
def validate(self, cr, uid, ids, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
return self.write(cr, uid, ids, {
|
||||
'state':'open'
|
||||
}, context)
|
||||
|
@ -304,7 +306,7 @@ class account_asset_asset(osv.osv):
|
|||
default.update({'depreciation_line_ids': [], 'state': 'draft'})
|
||||
return super(account_asset_asset, self).copy(cr, uid, id, default, context=context)
|
||||
|
||||
def _compute_entries(self, cr, uid, ids, period_id, context={}):
|
||||
def _compute_entries(self, cr, uid, ids, period_id, context=None):
|
||||
result = []
|
||||
period_obj = self.pool.get('account.period')
|
||||
depreciation_obj = self.pool.get('account.asset.depreciation.line')
|
||||
|
|
|
@ -35,7 +35,9 @@ class analytic_account_budget_report(report_sxw.rml_parse):
|
|||
})
|
||||
self.context = context
|
||||
|
||||
def funct(self, object, form, ids={}, done=None, level=1):
|
||||
def funct(self, object, form, ids=None, done=None, level=1):
|
||||
if ids is None:
|
||||
ids = {}
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not done:
|
||||
|
@ -153,7 +155,7 @@ class analytic_account_budget_report(report_sxw.rml_parse):
|
|||
tot['perc'] = float(tot['prac'] / tot['theo']) * 100
|
||||
return result
|
||||
|
||||
def funct_total(self,form):
|
||||
def funct_total(self, form):
|
||||
result = []
|
||||
res = {}
|
||||
res = {
|
||||
|
@ -167,4 +169,4 @@ class analytic_account_budget_report(report_sxw.rml_parse):
|
|||
|
||||
report_sxw.report_sxw('report.account.analytic.account.budget', 'account.analytic.account', 'addons/account_budget/report/analytic_account_budget_report.rml',parser=analytic_account_budget_report,header='internal')
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -34,7 +34,9 @@ class budget_report(report_sxw.rml_parse):
|
|||
})
|
||||
self.context = context
|
||||
|
||||
def funct(self, object, form, ids={}, done=None, level=1):
|
||||
def funct(self, object, form, ids=None, done=None, level=1):
|
||||
if ids is None:
|
||||
ids = {}
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not done:
|
||||
|
|
|
@ -37,7 +37,9 @@ class budget_report(report_sxw.rml_parse):
|
|||
})
|
||||
self.context = context
|
||||
|
||||
def funct(self, object, form, ids={}, done=None, level=1):
|
||||
def funct(self, object, form, ids=None, done=None, level=1):
|
||||
if ids is None:
|
||||
ids = {}
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not done:
|
||||
|
|
|
@ -52,4 +52,4 @@ class account_budget_analytic(osv.osv_memory):
|
|||
|
||||
account_budget_analytic()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -53,4 +53,4 @@ class account_budget_crossvered_report(osv.osv_memory):
|
|||
|
||||
account_budget_crossvered_report()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -54,4 +54,4 @@ class account_budget_report(osv.osv_memory):
|
|||
|
||||
account_budget_report()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -23,4 +23,4 @@ import account_followup
|
|||
import wizard
|
||||
import report
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -21,4 +21,4 @@
|
|||
|
||||
import account_followup_print
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -209,7 +209,7 @@ class account_followup_print_all(osv.osv_memory):
|
|||
to_update[str(id)]= {'level': fups[followup_line_id][1], 'partner_id': stat_line_id}
|
||||
return {'partner_ids': partner_list, 'to_update': to_update}
|
||||
|
||||
def do_mail(self ,cr, uid, ids, context=None):
|
||||
def do_mail(self, cr, uid, ids, context=None):
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
move_obj = self.pool.get('account.move.line')
|
||||
user_obj = self.pool.get('res.users')
|
||||
|
|
|
@ -29,4 +29,4 @@ import account_move_line
|
|||
import account_invoice
|
||||
import report
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -50,4 +50,4 @@ class Invoice(osv.osv):
|
|||
|
||||
Invoice()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -26,7 +26,7 @@ from tools.translate import _
|
|||
class account_move_line(osv.osv):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
def amount_to_pay(self, cr, uid, ids, name, arg={}, context=None):
|
||||
def amount_to_pay(self, cr, uid, ids, name, arg=None, context=None):
|
||||
""" Return the amount still to pay regarding all the payemnt orders
|
||||
(excepting cancelled orders)"""
|
||||
if not ids:
|
||||
|
@ -117,4 +117,4 @@ class account_move_line(osv.osv):
|
|||
|
||||
account_move_line()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -139,7 +139,9 @@ class payment_order(osv.osv):
|
|||
wf_service.trg_validate(uid, 'payment.order', ids[0], 'done', cr)
|
||||
return True
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None):
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
default.update({
|
||||
'state': 'draft',
|
||||
'line_ids': [],
|
||||
|
|
|
@ -20,4 +20,4 @@
|
|||
##############################################################################
|
||||
|
||||
import payment_order
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -77,7 +77,7 @@ class payment_order(report_sxw.rml_parse):
|
|||
user = pool.get('res.users').browse(self.cr, self.uid, self.uid)
|
||||
return user.company_id and user.company_id.currency_id and user.company_id.currency_id.symbol or False
|
||||
|
||||
def _get_account_name(self,bank_id):
|
||||
def _get_account_name(self, bank_id):
|
||||
if bank_id:
|
||||
pool = pooler.get_pool(self.cr.dbname)
|
||||
value_name = pool.get('res.partner.bank').name_get(self.cr, self.uid, [bank_id])
|
||||
|
@ -87,4 +87,4 @@ class payment_order(report_sxw.rml_parse):
|
|||
|
||||
report_sxw.report_sxw('report.payment.order', 'payment.order', 'addons/account_payment/report/payment_order.rml', parser=payment_order, header="external")
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -23,4 +23,4 @@ import account_payment_order
|
|||
import account_payment_populate_statement
|
||||
import account_payment_pay
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -56,4 +56,4 @@ class account_payment_make_payment(osv.osv_memory):
|
|||
|
||||
account_payment_make_payment()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -120,4 +120,4 @@ class account_payment_populate_statement(osv.osv_memory):
|
|||
|
||||
account_payment_populate_statement()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -22,4 +22,4 @@
|
|||
import account_sequence
|
||||
import account_sequence_installer
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -24,4 +24,4 @@ import invoice
|
|||
import report
|
||||
import wizard
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -849,7 +849,7 @@ class account_voucher(osv.osv):
|
|||
res['account_id'] = account_id
|
||||
return {'value':res}
|
||||
|
||||
def _sel_context(self, cr, uid, voucher_id,context=None):
|
||||
def _sel_context(self, cr, uid, voucher_id, context=None):
|
||||
"""
|
||||
Select the context to use accordingly if it needs to be multicurrency or not.
|
||||
|
||||
|
@ -1275,7 +1275,9 @@ class account_voucher(osv.osv):
|
|||
self.reconcile_send_note(cr, uid, [voucher.id], context=context)
|
||||
return True
|
||||
|
||||
def copy(self, cr, uid, id, default={}, context=None):
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
default.update({
|
||||
'state': 'draft',
|
||||
'number': False,
|
||||
|
|
|
@ -23,4 +23,4 @@ import account_voucher
|
|||
import account_voucher_print
|
||||
import account_voucher_sales_receipt
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -363,7 +363,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
|
|||
})
|
||||
raise osv.except_osv(error_type, error_msg)
|
||||
|
||||
def anonymize_database(self,cr, uid, ids, context=None):
|
||||
def anonymize_database(self, cr, uid, ids, context=None):
|
||||
"""Sets the 'anonymized' state to defined fields"""
|
||||
|
||||
# create a new history record:
|
||||
|
@ -498,7 +498,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
|
|||
'target':'new',
|
||||
}
|
||||
|
||||
def reverse_anonymize_database(self,cr, uid, ids, context=None):
|
||||
def reverse_anonymize_database(self, cr, uid, ids, context=None):
|
||||
"""Set the 'clear' state to defined fields"""
|
||||
|
||||
ir_model_fields_anonymization_model = self.pool.get('ir.model.fields.anonymization')
|
||||
|
|
|
@ -202,7 +202,7 @@ class audittrail_objects_proxy(object_proxy):
|
|||
res = value
|
||||
return res
|
||||
|
||||
def create_log_line(self, cr, uid, log_id, model, lines=[]):
|
||||
def create_log_line(self, cr, uid, log_id, model, lines=None):
|
||||
"""
|
||||
Creates lines for changed fields with its old and new values
|
||||
|
||||
|
@ -211,6 +211,8 @@ class audittrail_objects_proxy(object_proxy):
|
|||
@param model: Object which values are being changed
|
||||
@param lines: List of values for line is to be created
|
||||
"""
|
||||
if lines is None:
|
||||
lines = []
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
obj_pool = pool.get(model.model)
|
||||
model_pool = pool.get('ir.model')
|
||||
|
@ -349,9 +351,9 @@ class audittrail_objects_proxy(object_proxy):
|
|||
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
|
||||
return data
|
||||
|
||||
def prepare_audittrail_log_line(self, cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=[]):
|
||||
def prepare_audittrail_log_line(self, cr, uid, pool, model, resource_id, method, old_values, new_values, field_list=None):
|
||||
"""
|
||||
This function compares the old data (i.e before the method was executed) and the new data
|
||||
This function compares the old data (i.e before the method was executed) and the new data
|
||||
(after the method was executed) and returns a structure with all the needed information to
|
||||
log those differences.
|
||||
|
||||
|
@ -375,9 +377,11 @@ class audittrail_objects_proxy(object_proxy):
|
|||
(model.id, resource_id): []
|
||||
}
|
||||
|
||||
The reason why the structure returned is build as above is because when modifying an existing
|
||||
The reason why the structure returned is build as above is because when modifying an existing
|
||||
record, we may have to log a change done in a x2many field of that object
|
||||
"""
|
||||
if field_list is None:
|
||||
field_list = []
|
||||
key = (model.id, resource_id)
|
||||
lines = {
|
||||
key: []
|
||||
|
@ -416,7 +420,7 @@ class audittrail_objects_proxy(object_proxy):
|
|||
lines[key].append(data)
|
||||
return lines
|
||||
|
||||
def process_data(self, cr, uid, pool, res_ids, model, method, old_values={}, new_values={}, field_list=[]):
|
||||
def process_data(self, cr, uid, pool, res_ids, model, method, old_values=None, new_values=None, field_list=None):
|
||||
"""
|
||||
This function processes and iterates recursively to log the difference between the old
|
||||
data (i.e before the method was executed) and the new data and creates audittrail log
|
||||
|
@ -435,6 +439,8 @@ class audittrail_objects_proxy(object_proxy):
|
|||
on specific fields only.
|
||||
:return: True
|
||||
"""
|
||||
if field_list is None:
|
||||
field_list = []
|
||||
# loop on all the given ids
|
||||
for res_id in res_ids:
|
||||
# compare old and new values and get audittrail log lines accordingly
|
||||
|
|
|
@ -47,7 +47,9 @@ import logging
|
|||
magic_md5 = '$1$'
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
def gen_salt( length=8, symbols=ascii_letters + digits ):
|
||||
def gen_salt( length=8, symbols=None):
|
||||
if symbols is None:
|
||||
symbols = ascii_letters + digits
|
||||
seed()
|
||||
return ''.join( sample( symbols, length ) )
|
||||
|
||||
|
|
|
@ -79,4 +79,4 @@ report_sxw.report_sxw('report.ir.module.reference.graph', 'ir.module.module',
|
|||
'addons/base_module_doc_rst/report/ir_module_reference_graph.rml',
|
||||
parser=ir_module_reference_print_graph, header=False)
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -127,7 +127,7 @@ class base_module_record_objects(osv.osv_memory):
|
|||
_name = 'base.module.record.objects'
|
||||
_description = "Base Module Record Objects"
|
||||
|
||||
def inter_call(self,cr,uid,data,context=None):
|
||||
def inter_call(self, cr, uid, data, context=None):
|
||||
res=base_module_save._create_module(self, cr, uid, data, context)
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
model_data_ids = mod_obj.search(cr, uid,[('model', '=', 'ir.ui.view'), ('name', '=', 'module_create_form_view')], context=context)
|
||||
|
|
|
@ -42,11 +42,11 @@ import copy
|
|||
|
||||
class DomApiGeneral:
|
||||
"""General DOM API utilities."""
|
||||
def __init__(self,content_string="",file=""):
|
||||
def __init__(self, content_string="", file=""):
|
||||
self.content_string = content_string
|
||||
self.re_digits = re.compile(r"(.*?\d)(pt|cm|mm|inch|in)")
|
||||
|
||||
def _unitTuple(self,string):
|
||||
def _unitTuple(self, string):
|
||||
"""Split values and units to a tuple."""
|
||||
temp = self.re_digits.findall(string)
|
||||
if not temp:
|
||||
|
@ -54,13 +54,15 @@ class DomApiGeneral:
|
|||
else:
|
||||
return (temp[0])
|
||||
|
||||
def stringPercentToFloat(self,string):
|
||||
def stringPercentToFloat(self, string):
|
||||
temp = string.replace("""%""","")
|
||||
return float(temp)/100
|
||||
|
||||
def findChildrenByName(self,parent,name,attr_dict={}):
|
||||
def findChildrenByName(self, parent, name, attr_dict=None):
|
||||
"""Helper functions. Does not work recursively.
|
||||
Optional: also test for certain attribute/value pairs."""
|
||||
if attr_dict is None:
|
||||
attr_dict = {}
|
||||
children = []
|
||||
for c in parent.childNodes:
|
||||
if c.nodeType == c.ELEMENT_NODE and c.nodeName == name:
|
||||
|
@ -70,7 +72,7 @@ class DomApiGeneral:
|
|||
else:
|
||||
return self._selectForAttributes(nodelist=children,attr_dict=attr_dict)
|
||||
|
||||
def _selectForAttributes(self,nodelist,attr_dict):
|
||||
def _selectForAttributes(self, nodelist, attr_dict):
|
||||
"Helper function."""
|
||||
selected_nodes = []
|
||||
for n in nodelist:
|
||||
|
@ -83,7 +85,7 @@ class DomApiGeneral:
|
|||
selected_nodes.append(n)
|
||||
return selected_nodes
|
||||
|
||||
def _stringToTuple(self,s):
|
||||
def _stringToTuple(self, s):
|
||||
"""Helper function."""
|
||||
try:
|
||||
temp = string.split(s,",")
|
||||
|
@ -91,13 +93,13 @@ class DomApiGeneral:
|
|||
except:
|
||||
return None
|
||||
|
||||
def _tupleToString(self,t):
|
||||
def _tupleToString(self, t):
|
||||
try:
|
||||
return self.openOfficeStringUtf8("%s,%s" % (t[0],t[1]))
|
||||
except:
|
||||
return None
|
||||
|
||||
def _lengthToFloat(self,value):
|
||||
def _lengthToFloat(self, value):
|
||||
v = value
|
||||
if not self.re_digits.search(v):
|
||||
return v
|
||||
|
@ -113,7 +115,7 @@ class DomApiGeneral:
|
|||
except:
|
||||
return v
|
||||
|
||||
def openOfficeStringUtf8(self,string):
|
||||
def openOfficeStringUtf8(self, string):
|
||||
if type(string) == unicode:
|
||||
return string.encode("utf-8")
|
||||
tempstring = unicode(string,"cp1252").encode("utf-8")
|
||||
|
@ -121,7 +123,7 @@ class DomApiGeneral:
|
|||
|
||||
class DomApi(DomApiGeneral):
|
||||
"""This class provides a DOM-API for XML-Files from an SXW-Archive."""
|
||||
def __init__(self,xml_content,xml_styles):
|
||||
def __init__(self, xml_content, xml_styles):
|
||||
DomApiGeneral.__init__(self)
|
||||
self.content_dom = xml.dom.minidom.parseString(xml_content)
|
||||
self.styles_dom = xml.dom.minidom.parseString(xml_styles)
|
||||
|
@ -145,7 +147,7 @@ class DomApi(DomApiGeneral):
|
|||
for s in self.style_dict.keys():
|
||||
self.style_properties_dict[s] = self.getStylePropertiesDict(s)
|
||||
|
||||
def updateWithPercents(self,dict,updatedict):
|
||||
def updateWithPercents(self, dict, updatedict):
|
||||
"""Sometimes you find values like "115%" in the style hierarchy."""
|
||||
if not updatedict:
|
||||
# no style hierarchies for this style? =>
|
||||
|
@ -244,7 +246,7 @@ class DomApi(DomApiGeneral):
|
|||
def toxml(self):
|
||||
return self.content_dom.toxml(encoding="utf-8")
|
||||
|
||||
def getStylePropertiesDict(self,style_name):
|
||||
def getStylePropertiesDict(self, style_name):
|
||||
res = {}
|
||||
|
||||
if self.style_dict[style_name].hasAttribute("style:parent-style-name"):
|
||||
|
@ -265,7 +267,7 @@ class PyOpenOffice(object):
|
|||
self.save_pict = save_pict
|
||||
self.images = {}
|
||||
|
||||
def oo_read(self,fname):
|
||||
def oo_read(self, fname):
|
||||
z = zipfile.ZipFile(fname,"r")
|
||||
content = z.read('content.xml')
|
||||
style = z.read('styles.xml')
|
||||
|
@ -281,7 +283,7 @@ class PyOpenOffice(object):
|
|||
z.close()
|
||||
return content,style
|
||||
|
||||
def oo_replace(self,content):
|
||||
def oo_replace(self, content):
|
||||
regex = [
|
||||
(r"<para[^>]*/>", ""),
|
||||
(r"<para(.*)>(.*?)<text:line-break[^>]*/>", "<para$1>$2</para><para$1>"),
|
||||
|
@ -290,7 +292,7 @@ class PyOpenOffice(object):
|
|||
content = re.sub(key, val, content)
|
||||
return content
|
||||
|
||||
def unpackNormalize(self,sourcefile):
|
||||
def unpackNormalize(self, sourcefile):
|
||||
c,s = self.oo_read(sourcefile)
|
||||
c = self.oo_replace(c)
|
||||
dom = DomApi(c,s)
|
||||
|
|
|
@ -52,7 +52,7 @@ if __name__<>'package':
|
|||
from lib.gui import *
|
||||
|
||||
class About(unohelper.Base, XJobExecutor):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
|
|
@ -64,7 +64,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
'PDF' : 'pdf',
|
||||
'OpenOffice': 'sxw',
|
||||
}
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
@ -132,7 +132,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
self.win.addButton('btnCancel', -2 - 27 , -5 , 30 , 15, 'Cancel' ,actionListenerProc = self.btnCancel_clicked )
|
||||
self.win.doModalDialog("lstResourceType", self.Kind.keys()[0])
|
||||
|
||||
def btnSearch_clicked( self, oActionEvent ):
|
||||
def btnSearch_clicked(self, oActionEvent):
|
||||
modelSelectedItem = self.win.getListBoxSelectedItem("lstmodel")
|
||||
if modelSelectedItem == "":
|
||||
return
|
||||
|
@ -151,7 +151,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
for result in self.aSearchResult:
|
||||
self.lstResource.addItem(result[1],result[0])
|
||||
|
||||
def _send_attachment( self, name, data, res_model, res_id ):
|
||||
def _send_attachment(self, name, data, res_model, res_id):
|
||||
desktop = getDesktop()
|
||||
oDoc2 = desktop.getCurrentComponent()
|
||||
docinfo = oDoc2.getDocumentInfo()
|
||||
|
@ -166,7 +166,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
|
||||
return self.sock.execute( database, uid, self.password, 'ir.attachment', 'create', params )
|
||||
|
||||
def send_attachment( self, model, resource_id ):
|
||||
def send_attachment(self, model, resource_id):
|
||||
desktop = getDesktop()
|
||||
oDoc2 = desktop.getCurrentComponent()
|
||||
docinfo = oDoc2.getDocumentInfo()
|
||||
|
@ -187,7 +187,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
data = read_data_from_file( get_absolute_file_path( url ) )
|
||||
return self._send_attachment( os.path.basename( url ), data, model, resource_id )
|
||||
|
||||
def btnOkWithoutInformation_clicked( self, oActionEvent ):
|
||||
def btnOkWithoutInformation_clicked(self, oActionEvent):
|
||||
desktop = getDesktop()
|
||||
oDoc2 = desktop.getCurrentComponent()
|
||||
docinfo = oDoc2.getDocumentInfo()
|
||||
|
@ -199,7 +199,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
res = self.send_attachment( docinfo.getUserFieldValue(3), docinfo.getUserFieldValue(2) )
|
||||
self.win.endExecute()
|
||||
|
||||
def btnOkWithInformation_clicked(self,oActionEvent):
|
||||
def btnOkWithInformation_clicked(self, oActionEvent):
|
||||
if self.win.getListBoxSelectedItem("lstResourceType") == "":
|
||||
ErrorDialog( "You have to select a resource type.", "", "Selection Error." )
|
||||
return
|
||||
|
@ -221,7 +221,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
res = self.send_attachment( self.dModel[self.win.getListBoxSelectedItem('lstmodel')], resourceid )
|
||||
self.win.endExecute()
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
def doc2pdf(self, strFile):
|
||||
|
@ -262,7 +262,7 @@ class AddAttachment(unohelper.Base, XJobExecutor ):
|
|||
# Can be None if len(strFilterSubName) <= 0
|
||||
return filename
|
||||
|
||||
def _MakePropertyValue(self, cName = "", uValue = u"" ):
|
||||
def _MakePropertyValue(self, cName="", uValue=u""):
|
||||
oPropertyValue = createUnoStruct( "com.sun.star.beans.PropertyValue" )
|
||||
if cName:
|
||||
oPropertyValue.Name = cName
|
||||
|
|
|
@ -59,7 +59,7 @@ if __name__<>"package":
|
|||
database="test"
|
||||
|
||||
class Change( unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
@ -107,7 +107,7 @@ class Change( unohelper.Base, XJobExecutor ):
|
|||
self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() )
|
||||
self.win.doModalDialog( "lstProtocol", protocol)
|
||||
|
||||
def btnNext_clicked(self,oActionEvent):
|
||||
def btnNext_clicked(self, oActionEvent):
|
||||
global url
|
||||
aVal=''
|
||||
#aVal= Fetature used
|
||||
|
|
|
@ -3,31 +3,31 @@
|
|||
# Portions of this file are under the following copyright and license:
|
||||
#
|
||||
#
|
||||
# Copyright (c) 2003-2004 Danny Brewer
|
||||
# d29583@groovegarden.com
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
# Copyright (c) 2003-2004 Danny Brewer
|
||||
# d29583@groovegarden.com
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution>..
|
||||
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
|
||||
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
|
@ -63,7 +63,7 @@ if __name__<>"package":
|
|||
|
||||
class ConvertBracesToField( unohelper.Base, XJobExecutor ):
|
||||
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
|
@ -198,7 +198,7 @@ class ConvertBracesToField( unohelper.Base, XJobExecutor ):
|
|||
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
||||
self.logobj.log_write('ConvertBraceToField', LOG_ERROR, info)
|
||||
|
||||
def getRes(self,sock,sObject,sVar):
|
||||
def getRes(self, sock, sObject, sVar):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
@ -215,7 +215,9 @@ class ConvertBracesToField( unohelper.Base, XJobExecutor ):
|
|||
sObject = self.getRes(sock,res[myval]['relation'], sVar[sVar.find("/")+1:])
|
||||
return sObject
|
||||
|
||||
def getBraces(self,aReportSyntex=[]):
|
||||
def getBraces(self, aReportSyntex=None):
|
||||
if aReportSyntex is None:
|
||||
aReportSyntex = []
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
aSearchString=[]
|
||||
|
|
|
@ -57,7 +57,7 @@ if __name__<>"package":
|
|||
uid = 3
|
||||
|
||||
class ConvertFieldsToBraces( unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
|
|
@ -67,7 +67,7 @@ if __name__<>"package":
|
|||
|
||||
|
||||
class ExportToRML( unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
|
|
@ -57,7 +57,7 @@ if __name__<>"package":
|
|||
uid = 3
|
||||
|
||||
class Expression(unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,sExpression="",sName="", bFromModify=False):
|
||||
def __init__(self, sExpression="", sName="", bFromModify=False):
|
||||
LoginTest()
|
||||
if not loginstatus and __name__=="package":
|
||||
exit(1)
|
||||
|
@ -75,7 +75,7 @@ class Expression(unohelper.Base, XJobExecutor ):
|
|||
self.win.doModalDialog("",None)
|
||||
|
||||
|
||||
def btnOk_clicked( self, oActionEvent ):
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
text = doc.Text
|
||||
|
@ -105,7 +105,7 @@ class Expression(unohelper.Base, XJobExecutor ):
|
|||
else:
|
||||
ErrorDialog("Please fill appropriate data in Name field or in Expression field.")
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
if __name__<>"package" and __name__=="__main__":
|
||||
|
|
|
@ -64,7 +64,7 @@ if __name__<>"package":
|
|||
|
||||
|
||||
class Fields(unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,sVariable="",sFields="",sDisplayName="",bFromModify=False):
|
||||
def __init__(self, sVariable="", sFields="", sDisplayName="", bFromModify=False):
|
||||
LoginTest()
|
||||
if not loginstatus and __name__=="package":
|
||||
exit(1)
|
||||
|
@ -177,7 +177,7 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice")
|
||||
self.win.endExecute()
|
||||
|
||||
def lstbox_selected(self,oItemEvent):
|
||||
def lstbox_selected(self, oItemEvent):
|
||||
try:
|
||||
|
||||
desktop=getDesktop()
|
||||
|
@ -200,7 +200,7 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
if self.bModify:
|
||||
self.win.setEditText("txtUName",self.sGDisplayName)
|
||||
|
||||
def getRes(self,sock ,sObject,sVar):
|
||||
def getRes(self, sock, sObject, sVar):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
@ -219,7 +219,7 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
else:
|
||||
return sObject
|
||||
|
||||
def cmbVariable_selected(self,oItemEvent):
|
||||
def cmbVariable_selected(self, oItemEvent):
|
||||
if self.count > 0 :
|
||||
try:
|
||||
desktop=getDesktop()
|
||||
|
@ -246,7 +246,7 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
||||
self.logobj.log_write('Fields', LOG_ERROR, info)
|
||||
|
||||
def btnOk_clicked( self, oActionEvent ):
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
cursor = doc.getCurrentController().getViewCursor()
|
||||
|
@ -281,7 +281,7 @@ class Fields(unohelper.Base, XJobExecutor ):
|
|||
else:
|
||||
ErrorDialog("Please fill appropriate data in Name field \nor select particular value from the list of fields.")
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
if __name__<>"package" and __name__=="__main__":
|
||||
|
|
|
@ -65,7 +65,7 @@ if __name__<>'package':
|
|||
uid = 3
|
||||
|
||||
class ModifyExistingReport(unohelper.Base, XJobExecutor):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
@ -177,10 +177,10 @@ class ModifyExistingReport(unohelper.Base, XJobExecutor):
|
|||
|
||||
self.win.endExecute()
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
def btnDelete_clicked( self, oActionEvent ):
|
||||
def btnDelete_clicked(self, oActionEvent):
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
|
|
@ -66,7 +66,7 @@ if __name__<>"package":
|
|||
#
|
||||
#
|
||||
class NewReport(unohelper.Base, XJobExecutor):
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
@ -99,7 +99,7 @@ class NewReport(unohelper.Base, XJobExecutor):
|
|||
self.win.addButton('btnCancel',-2 - 70 - 5 ,-5, 35,15,'Cancel' ,actionListenerProc = self.btnCancel_clicked )
|
||||
self.win.doModalDialog("",None)
|
||||
|
||||
def btnOk_clicked(self,oActionEvent):
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
@ -107,7 +107,7 @@ class NewReport(unohelper.Base, XJobExecutor):
|
|||
self.logobj.log_write('Module Name',LOG_INFO, ':Module use in creating a report %s using database %s' % (self.aModuleName[self.lstModule.getSelectedItemPos()], database))
|
||||
self.win.endExecute()
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
if __name__<>"package" and __name__=="__main__":
|
||||
|
|
|
@ -64,7 +64,7 @@ if __name__<>"package":
|
|||
|
||||
#class RepeatIn:
|
||||
class RepeatIn( unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,sObject="",sVariable="",sFields="",sDisplayName="",bFromModify=False):
|
||||
def __init__(self, sObject="", sVariable="", sFields="", sDisplayName="", bFromModify=False):
|
||||
# Interface Design
|
||||
LoginTest()
|
||||
self.logobj=Logger()
|
||||
|
@ -204,7 +204,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
ErrorDialog("Please Select Appropriate module" ,"Create new report from: \nOpenERP -> Open a New Report")
|
||||
self.win.endExecute()
|
||||
|
||||
def lstbox_selected(self,oItemEvent):
|
||||
def lstbox_selected(self, oItemEvent):
|
||||
sItem=self.win.getListBoxSelectedItem("lstFields")
|
||||
sMain=self.aListRepeatIn[self.win.getListBoxSelectedItemPos("lstFields")]
|
||||
|
||||
|
@ -215,7 +215,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
self.win.setEditText("txtName",sMain[sMain.rfind("/")+1:])
|
||||
self.win.setEditText("txtUName","|-."+sItem[sItem.rfind("/")+1:]+".-|")
|
||||
|
||||
def cmbVariable_selected(self,oItemEvent):
|
||||
def cmbVariable_selected(self, oItemEvent):
|
||||
|
||||
if self.count > 0 :
|
||||
|
||||
|
@ -290,7 +290,7 @@ class RepeatIn( unohelper.Base, XJobExecutor ):
|
|||
else:
|
||||
ErrorDialog("Please fill appropriate data in Object Field or Name field \nor select particular value from the list of fields.")
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
if __name__<>"package" and __name__=="__main__":
|
||||
|
|
|
@ -72,7 +72,7 @@ class SendtoServer(unohelper.Base, XJobExecutor):
|
|||
'HTML' : 'html'
|
||||
}
|
||||
|
||||
def __init__(self,ctx):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
@ -136,10 +136,10 @@ class SendtoServer(unohelper.Base, XJobExecutor):
|
|||
|
||||
self.win.doModalDialog("lstResourceType", self.Kind.keys()[0])
|
||||
|
||||
def lstbox_selected(self,oItemEvent):
|
||||
def lstbox_selected(self, oItemEvent):
|
||||
pass
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
|
@ -221,7 +221,7 @@ class SendtoServer(unohelper.Base, XJobExecutor):
|
|||
id=self.sock.execute(database, uid, self.password, 'ir.actions.report.xml' ,'create', params)
|
||||
return id
|
||||
|
||||
def getInverseFieldsRecord(self,nVal):
|
||||
def getInverseFieldsRecord(self, nVal):
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
count=0
|
||||
|
|
|
@ -59,7 +59,7 @@ if __name__<>"package":
|
|||
database="test"
|
||||
|
||||
class ServerParameter( unohelper.Base, XJobExecutor ):
|
||||
def __init__(self, aVal= None, sURL=""):
|
||||
def __init__(self, aVal=None, sURL=""):
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
desktop=getDesktop()
|
||||
|
@ -116,8 +116,7 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
|
|||
|
||||
#self.win.doModalDialog("lstDatabase",docinfo.getUserFieldValue(2))
|
||||
|
||||
def btnOk_clicked(self,oActionEvent):
|
||||
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
sLogin=self.win.getEditText("txtLoginName")
|
||||
sPassword=self.win.getEditText("txtPassword")
|
||||
global url
|
||||
|
@ -157,11 +156,10 @@ class ServerParameter( unohelper.Base, XJobExecutor ):
|
|||
self.logobj.log_write('successful login',LOG_INFO, ': successful login from %s using database %s' % (sLogin, sDatabase))
|
||||
self.win.endExecute()
|
||||
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
def btnPrevious_clicked(self,oActionEvent):
|
||||
def btnPrevious_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
Change(None)
|
||||
self.win.endExecute()
|
||||
|
@ -172,5 +170,4 @@ if __name__<>"package" and __name__=="__main__":
|
|||
elif __name__=="package":
|
||||
g_ImplementationHelper.addImplementation( ServerParameter, "org.openoffice.openerp.report.serverparam", ("com.sun.star.task.Job",),)
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -61,7 +61,7 @@ if __name__<>"package":
|
|||
|
||||
|
||||
class AddLang(unohelper.Base, XJobExecutor ):
|
||||
def __init__(self,sVariable="",sFields="",sDisplayName="",bFromModify=False):
|
||||
def __init__(self, sVariable="", sFields="", sDisplayName="", bFromModify=False):
|
||||
LoginTest()
|
||||
if not loginstatus and __name__=="package":
|
||||
exit(1)
|
||||
|
@ -157,7 +157,7 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice")
|
||||
self.win.endExecute()
|
||||
|
||||
def lstbox_selected(self,oItemEvent):
|
||||
def lstbox_selected(self, oItemEvent):
|
||||
try:
|
||||
|
||||
desktop=getDesktop()
|
||||
|
@ -183,7 +183,7 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
if self.bModify:
|
||||
self.win.setEditText("txtUName",self.sGDisplayName)
|
||||
|
||||
def getRes(self,sock ,sObject,sVar):
|
||||
def getRes(self, sock, sObject, sVar):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
@ -203,7 +203,7 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
return sObject
|
||||
|
||||
|
||||
def cmbVariable_selected(self,oItemEvent):
|
||||
def cmbVariable_selected(self, oItemEvent):
|
||||
if self.count > 0 :
|
||||
try:
|
||||
desktop=getDesktop()
|
||||
|
@ -229,7 +229,7 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
except:
|
||||
import traceback;traceback.print_exc()
|
||||
|
||||
def btnOk_clicked( self, oActionEvent ):
|
||||
def btnOk_clicked(self, oActionEvent):
|
||||
self.bOkay = True
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
|
@ -263,7 +263,7 @@ class AddLang(unohelper.Base, XJobExecutor ):
|
|||
else:
|
||||
ErrorDialog("Please fill appropriate data in name field \nor select particular value from the list of fields.")
|
||||
|
||||
def btnCancel_clicked( self, oActionEvent ):
|
||||
def btnCancel_clicked(self, oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
if __name__<>"package":
|
||||
from gui import *
|
||||
class ErrorDialog:
|
||||
def __init__(self,sErrorMsg, sErrorHelpMsg="",sTitle="Error Message"):
|
||||
def __init__(self, sErrorMsg, sErrorHelpMsg="", sTitle="Error Message"):
|
||||
self.win = DBModalDialog(50, 50, 150, 90, sTitle)
|
||||
self.win.addFixedText("lblErrMsg", 5, 5, 190, 25, sErrorMsg)
|
||||
self.win.addFixedText("lblErrHelpMsg", 5, 30, 190, 25, sErrorHelpMsg)
|
||||
|
|
|
@ -59,7 +59,13 @@ if __name__<>"package":
|
|||
database="test"
|
||||
uid = 1
|
||||
|
||||
def genTree(object,aList,insField,host,level=3, ending=[], ending_excl=[], recur=[], root='', actualroot=""):
|
||||
def genTree(object, aList, insField, host, level=3, ending=None, ending_excl=None, recur=None, root='', actualroot=""):
|
||||
if ending is None:
|
||||
ending = []
|
||||
if ending_excl is None:
|
||||
ending_excl = []
|
||||
if recur is None:
|
||||
recur = []
|
||||
try:
|
||||
global url
|
||||
sock=RPCSession(url)
|
||||
|
@ -79,7 +85,7 @@ def genTree(object,aList,insField,host,level=3, ending=[], ending_excl=[], recur
|
|||
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
||||
obj.log_write('Function', LOG_ERROR, info)
|
||||
|
||||
def VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList,sTableName=""):
|
||||
def VariableScope(oTcur, insVariable, aObjectList, aComponentAdd, aItemList, sTableName=""):
|
||||
if sTableName.find(".") != -1:
|
||||
for i in range(len(aItemList)):
|
||||
if aComponentAdd[i]==sTableName:
|
||||
|
@ -96,7 +102,7 @@ def VariableScope(oTcur,insVariable,aObjectList,aComponentAdd,aItemList,sTableNa
|
|||
if aObjectList[j][:aObjectList[j].find("(")] == sLVal and sLVal!="":
|
||||
insVariable.append(aObjectList[j])
|
||||
|
||||
def getList(aObjectList,host,count):
|
||||
def getList(aObjectList, host, count):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
|
@ -128,7 +134,7 @@ def getList(aObjectList,host,count):
|
|||
else:
|
||||
aObjectList.append("List of " + docinfo.getUserFieldValue(3))
|
||||
|
||||
def getRelation(sRelName, sItem, sObjName, aObjectList, host ):
|
||||
def getRelation(sRelName, sItem, sObjName, aObjectList, host):
|
||||
global url
|
||||
sock=RPCSession(url)
|
||||
global passwd
|
||||
|
@ -143,7 +149,7 @@ def getRelation(sRelName, sItem, sObjName, aObjectList, host ):
|
|||
getRelation(res[k]['relation'], sItem[sItem.find(".")+1:], sObjName,aObjectList,host)
|
||||
|
||||
|
||||
def getPath(sPath,sMain):
|
||||
def getPath(sPath, sMain):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
oParEnum = doc.getTextFields().createEnumeration()
|
||||
|
@ -161,7 +167,7 @@ def getPath(sPath,sMain):
|
|||
getPath(sPath, sMain)
|
||||
return sPath
|
||||
|
||||
def EnumDocument(aItemList,aComponentAdd):
|
||||
def EnumDocument(aItemList, aComponentAdd):
|
||||
desktop = getDesktop()
|
||||
parent=""
|
||||
bFlag = False
|
||||
|
@ -183,7 +189,7 @@ def EnumDocument(aItemList,aComponentAdd):
|
|||
aItemList.append( templist )
|
||||
aComponentAdd.append( parent )
|
||||
|
||||
def getChildTable(oPar,aItemList,aComponentAdd,sTableName=""):
|
||||
def getChildTable(oPar, aItemList, aComponentAdd, sTableName=""):
|
||||
sNames = oPar.getCellNames()
|
||||
bEmptyTableFlag=True
|
||||
for val in sNames:
|
||||
|
@ -229,7 +235,7 @@ def getChildTable(oPar,aItemList,aComponentAdd,sTableName=""):
|
|||
aComponentAdd.append(sTableName+"."+oPar.Name)
|
||||
return 0
|
||||
|
||||
def getRecersiveSection(oCurrentSection,aSectionList):
|
||||
def getRecersiveSection(oCurrentSection, aSectionList):
|
||||
desktop=getDesktop()
|
||||
doc =desktop.getCurrentComponent()
|
||||
oParEnum=doc.getText().createEnumeration()
|
||||
|
|
|
@ -39,11 +39,10 @@ def log_detail(self):
|
|||
_logger.setLevel(logging.INFO)
|
||||
|
||||
class Logger(object):
|
||||
def log_write(self,name,level,msg):
|
||||
def log_write(self, name, level, msg):
|
||||
getattr(_logger,level)(msg)
|
||||
|
||||
def shutdown(self):
|
||||
logging.shutdown()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -52,7 +52,7 @@ class RPCGateway(object):
|
|||
|
||||
|
||||
class RPCSession(object):
|
||||
def __init__(self,url):
|
||||
def __init__(self, url):
|
||||
|
||||
m = re.match('^(http[s]?://|socket://)([\w.\-]+):(\d{1,5})$', url or '')
|
||||
|
||||
|
@ -152,7 +152,7 @@ class XMLRPCGateway(RPCGateway):
|
|||
|
||||
return res
|
||||
|
||||
def execute(self, sDatabase,UID,sPassword,obj, method, *args):
|
||||
def execute(self, sDatabase, UID, sPassword, obj, method, *args):
|
||||
global rpc_url
|
||||
|
||||
sock = xmlrpclib.ServerProxy(rpc_url + 'object')
|
||||
|
|
|
@ -21,19 +21,19 @@
|
|||
##############################################################################
|
||||
import urllib
|
||||
|
||||
def get_absolute_file_path( url ):
|
||||
def get_absolute_file_path(url):
|
||||
url_unquoted = urllib.unquote(url)
|
||||
return os.name == 'nt' and url_unquoted[1:] or url_unquoted
|
||||
|
||||
# This function reads the content of a file and return it to the caller
|
||||
def read_data_from_file( filename ):
|
||||
def read_data_from_file(filename):
|
||||
fp = file( filename, "rb" )
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
return data
|
||||
|
||||
# This function writes the content to a file
|
||||
def write_data_to_file( filename, data ):
|
||||
def write_data_to_file(filename, data):
|
||||
fp = file( filename, 'wb' )
|
||||
fp.write( data )
|
||||
fp.close()
|
||||
|
|
|
@ -61,7 +61,7 @@ if __name__<>"package":
|
|||
uid = 3
|
||||
|
||||
class modify(unohelper.Base, XJobExecutor ):
|
||||
def __init__( self, ctx ):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.module = "openerp_report"
|
||||
self.version = "0.1"
|
||||
|
|
|
@ -10,7 +10,13 @@ import time
|
|||
|
||||
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
|
||||
|
||||
def get(object, level=3, ending=[], ending_excl=[], recur=[], root=''):
|
||||
def get(object, level=3, ending=None, ending_excl=None, recur=None, root=''):
|
||||
if ending is None:
|
||||
ending = []
|
||||
if ending_excl is None:
|
||||
ending_excl = []
|
||||
if recur is None:
|
||||
recur = []
|
||||
res = sock.execute('terp', 3, 'admin', 'account.invoice', 'fields_get')
|
||||
key = res.keys()
|
||||
key.sort()
|
||||
|
|
|
@ -22,4 +22,4 @@
|
|||
import res_company
|
||||
import base_vat
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -29,4 +29,4 @@ class res_company_vat (osv.osv):
|
|||
"rather than via a simple format validation (checksum)."),
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ class node_calendar_collection(nodes.node_dir):
|
|||
DAV_M_NS = dict_merge2(nodes.node_dir.DAV_M_NS,
|
||||
{ "http://calendarserver.org/ns/" : '_get_dav', } )
|
||||
|
||||
def _file_get(self,cr, nodename=False):
|
||||
def _file_get(self, cr, nodename=False):
|
||||
return []
|
||||
|
||||
def _child_get(self, cr, name=False, parent_id=False, domain=None):
|
||||
|
@ -100,7 +100,7 @@ class node_calendar_res_col(nodes.node_res_obj):
|
|||
DAV_M_NS = dict_merge2(nodes.node_res_obj.DAV_M_NS,
|
||||
{ "http://calendarserver.org/ns/" : '_get_dav', } )
|
||||
|
||||
def _file_get(self,cr, nodename=False):
|
||||
def _file_get(self, cr, nodename=False):
|
||||
return []
|
||||
|
||||
def _child_get(self, cr, name=False, parent_id=False, domain=None):
|
||||
|
@ -181,7 +181,7 @@ class node_calendar(nodes.node_class):
|
|||
|
||||
http_options = { 'DAV': ['calendar-access'] }
|
||||
|
||||
def __init__(self,path, parent, context, calendar):
|
||||
def __init__(self, path, parent, context, calendar):
|
||||
super(node_calendar,self).__init__(path, parent,context)
|
||||
self.calendar_id = calendar.id
|
||||
self.mimetype = 'application/x-directory'
|
||||
|
@ -271,7 +271,7 @@ class node_calendar(nodes.node_class):
|
|||
def children(self, cr, domain=None):
|
||||
return self._child_get(cr, domain=domain)
|
||||
|
||||
def child(self,cr, name, domain=None):
|
||||
def child(self, cr, name, domain=None):
|
||||
res = self._child_get(cr, name, domain=domain)
|
||||
if res:
|
||||
return res[0]
|
||||
|
@ -353,16 +353,16 @@ class node_calendar(nodes.node_class):
|
|||
return None
|
||||
|
||||
|
||||
def set_data(self, cr, data, fil_obj = None):
|
||||
def set_data(self, cr, data, fil_obj=None):
|
||||
uid = self.context.uid
|
||||
calendar_obj = self.context._dirobj.pool.get('basic.calendar')
|
||||
res = calendar_obj.import_cal(cr, uid, data, self.calendar_id)
|
||||
return res
|
||||
|
||||
def get_data_len(self, cr, fil_obj = None):
|
||||
def get_data_len(self, cr, fil_obj=None):
|
||||
return self.content_length
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'calendar-%d' % (self.calendar_id,)
|
||||
|
||||
def rmcol(self, cr):
|
||||
|
@ -441,7 +441,7 @@ class res_node_calendar(nodes.node_class):
|
|||
|
||||
http_options = { 'DAV': ['calendar-access'] }
|
||||
|
||||
def __init__(self,path, parent, context, res_obj, res_model=None, res_id=None):
|
||||
def __init__(self, path, parent, context, res_obj, res_model=None, res_id=None):
|
||||
super(res_node_calendar,self).__init__(path, parent, context)
|
||||
self.mimetype = 'text/calendar'
|
||||
self.create_date = parent.create_date
|
||||
|
@ -474,10 +474,10 @@ class res_node_calendar(nodes.node_class):
|
|||
def _get_caldav_calendar_data(self, cr):
|
||||
return self.get_data(cr)
|
||||
|
||||
def get_data_len(self, cr, fil_obj = None):
|
||||
def get_data_len(self, cr, fil_obj=None):
|
||||
return self.content_length
|
||||
|
||||
def set_data(self, cr, data, fil_obj = None):
|
||||
def set_data(self, cr, data, fil_obj=None):
|
||||
uid = self.context.uid
|
||||
context = self.context.context.copy()
|
||||
context.update(self.dctx)
|
||||
|
@ -486,7 +486,7 @@ class res_node_calendar(nodes.node_class):
|
|||
res = calendar_obj.import_cal(cr, uid, data, self.calendar_id, context=context)
|
||||
return res
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
res = False
|
||||
if self.model and self.res_id:
|
||||
res = '%s_%d' % (self.model, self.res_id)
|
||||
|
|
|
@ -58,7 +58,7 @@ class crm_case_channel(osv.osv):
|
|||
|
||||
class crm_case_stage(osv.osv):
|
||||
""" Model for case stages. This models the main stages of a document
|
||||
management flow. Main CRM objects (leads, opportunities, project
|
||||
management flow. Main CRM objects (leads, opportunities, project
|
||||
issues, ...) will now use only stages, instead of state and stages.
|
||||
Stages are for example used to display the kanban view of records.
|
||||
"""
|
||||
|
@ -126,11 +126,11 @@ class crm_case_section(osv.osv):
|
|||
'note': fields.text('Description'),
|
||||
'working_hours': fields.float('Working Hours', digits=(16,2 )),
|
||||
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
|
||||
'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True,
|
||||
'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True,
|
||||
help="The email address associated with this team. New emails received will automatically "
|
||||
"create new leads assigned to the team."),
|
||||
}
|
||||
|
||||
|
||||
def _get_stage_common(self, cr, uid, context):
|
||||
ids = self.pool.get('crm.case.stage').search(cr, uid, [('case_default','=',1)], context=context)
|
||||
return ids
|
||||
|
@ -165,12 +165,12 @@ class crm_case_section(osv.osv):
|
|||
name = record['parent_id'][1] + ' / ' + name
|
||||
res.append((record['id'], name))
|
||||
return res
|
||||
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
if not vals.get('alias_id'):
|
||||
vals.pop('alias_name', None) # prevent errors during copy()
|
||||
alias_id = mail_alias.create_unique_alias(cr, uid,
|
||||
alias_id = mail_alias.create_unique_alias(cr, uid,
|
||||
{'alias_name': vals['name']},
|
||||
model_name="crm.lead",
|
||||
context=context)
|
||||
|
@ -178,7 +178,7 @@ class crm_case_section(osv.osv):
|
|||
res = super(crm_case_section, self).create(cr, uid, vals, context)
|
||||
mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'section_id': res, 'type':'lead'}}, context)
|
||||
return res
|
||||
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
# Cascade-delete mail aliases as well, as they should not exist without the sales team.
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
|
@ -217,7 +217,6 @@ class crm_case_resource_type(osv.osv):
|
|||
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
|
||||
}
|
||||
|
||||
|
||||
def _links_get(self, cr, uid, context=None):
|
||||
"""Gets links value for reference field"""
|
||||
obj = self.pool.get('res.request.link')
|
||||
|
|
|
@ -311,7 +311,6 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
}
|
||||
return {'value' : values}
|
||||
|
||||
|
||||
def _check(self, cr, uid, ids=False, context=None):
|
||||
""" Override of the base.stage method.
|
||||
Function called by the scheduler to process cases for date actions
|
||||
|
@ -801,7 +800,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
if section_id:
|
||||
vals.setdefault('message_follower_ids', [])
|
||||
vals['message_follower_ids'] += [(4, follower.id) for follower in section_id.message_follower_ids]
|
||||
return super(crm_lead,self).write(cr, uid, ids, vals, context)
|
||||
return super(crm_lead,self).write(cr, uid, ids, vals, context)
|
||||
|
||||
# ----------------------------------------
|
||||
# Mail Gateway
|
||||
|
|
|
@ -35,7 +35,7 @@ CRM_CLAIM_PENDING_STATES = (
|
|||
|
||||
class crm_claim_stage(osv.osv):
|
||||
""" Model for claim stages. This models the main stages of a claim
|
||||
management flow. Main CRM objects (leads, opportunities, project
|
||||
management flow. Main CRM objects (leads, opportunities, project
|
||||
issues, ...) will now use only stages, instead of state and stages.
|
||||
Stages are for example used to display the kanban view of records.
|
||||
"""
|
||||
|
@ -104,7 +104,7 @@ class crm_claim(base_stage, osv.osv):
|
|||
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'stage_id': fields.many2one ('crm.claim.stage', 'Stage',
|
||||
domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),
|
||||
domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),
|
||||
'cause': fields.text('Root Cause'),
|
||||
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||
selection=crm.AVAILABLE_STATES, string="State", readonly=True,
|
||||
|
|
|
@ -69,9 +69,9 @@ class crm_helpdesk(base_state, base_stage, osv.osv):
|
|||
'probability': fields.float('Probability (%)'),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
||||
domain="['|',('section_id','=',False),('section_id','=',section_id),\
|
||||
('object_id.model', '=', 'crm.helpdesk')]"),
|
||||
'duration': fields.float('Duration', states={'done': [('readonly', True)]}),
|
||||
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
||||
('object_id.model', '=', 'crm.helpdesk')]"),
|
||||
'duration': fields.float('Duration', states={'done': [('readonly', True)]}),
|
||||
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
||||
help='The state is set to \'Draft\', when a case is created.\
|
||||
\nIf the case is in progress the state is set to \'Open\'.\
|
||||
\nWhen the case is over, the state is set to \'Done\'.\
|
||||
|
@ -139,9 +139,9 @@ class crm_helpdesk(base_state, base_stage, osv.osv):
|
|||
|
||||
return super(crm_helpdesk,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
|
||||
|
||||
# ******************************
|
||||
# ---------------------------------------------------
|
||||
# OpenChatter
|
||||
# ******************************
|
||||
# ---------------------------------------------------
|
||||
|
||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||
""" override of default base_state method. """
|
||||
|
@ -152,5 +152,4 @@ class crm_helpdesk(base_state, base_stage, osv.osv):
|
|||
self.message_post(cr, uid, ids, body=msg, context=context)
|
||||
return True
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -77,7 +77,7 @@ def _get_parents(cr, uid, ids):
|
|||
return ids_to_check
|
||||
|
||||
|
||||
def test_prof(cr, uid, seg_id, pid, answers_ids = []):
|
||||
def test_prof(cr, uid, seg_id, pid, answers_ids=None):
|
||||
|
||||
""" return True if the partner pid fetch the segmentation rule seg_id
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
|
|
@ -51,7 +51,7 @@ class indexer(object):
|
|||
return mts[0]
|
||||
return None
|
||||
|
||||
def indexContent(self, content, filename=None, realfile = None):
|
||||
def indexContent(self, content, filename=None, realfile=None):
|
||||
""" Use either content or the real file, to index.
|
||||
Some parsers will work better with the actual
|
||||
content, others parse a file easier. Try the
|
||||
|
@ -95,16 +95,15 @@ class indexer(object):
|
|||
|
||||
raise NhException('No appropriate method to index file.')
|
||||
|
||||
def _doIndexContent(self,content):
|
||||
def _doIndexContent(self, content):
|
||||
raise NhException("Content cannot be handled here.")
|
||||
|
||||
def _doIndexFile(self,fpath):
|
||||
def _doIndexFile(self, fpath):
|
||||
raise NhException("Content cannot be handled here.")
|
||||
|
||||
def __repr__(self):
|
||||
return "<indexer %s.%s>" %(self.__module__, self.__class__.__name__)
|
||||
|
||||
|
||||
def mime_match(mime, mdict):
|
||||
if mdict.has_key(mime):
|
||||
return (mime, mdict[mime])
|
||||
|
@ -136,7 +135,7 @@ class contentIndex(object):
|
|||
if not f:
|
||||
raise Exception("Your indexer should at least support a mimetype or extension.")
|
||||
|
||||
def doIndex(self, content, filename=None, content_type=None, realfname = None, debug=False):
|
||||
def doIndex(self, content, filename=None, content_type=None, realfname=None, debug=False):
|
||||
fobj = None
|
||||
fname = None
|
||||
mime = None
|
||||
|
|
|
@ -149,7 +149,7 @@ class document_file(osv.osv):
|
|||
_sql_constraints = [
|
||||
# filename_uniq is not possible in pure SQL
|
||||
]
|
||||
def _check_duplication(self, cr, uid, vals, ids=[], op='create'):
|
||||
def _check_duplication(self, cr, uid, vals, ids=None, op='create'):
|
||||
name = vals.get('name', False)
|
||||
parent_id = vals.get('parent_id', False)
|
||||
res_model = vals.get('res_model', False)
|
||||
|
|
|
@ -221,7 +221,7 @@ class document_directory(osv.osv):
|
|||
pass
|
||||
return res
|
||||
|
||||
def _locate_child(self, cr, uid, root_id, uri,nparent, ncontext):
|
||||
def _locate_child(self, cr, uid, root_id, uri, nparent, ncontext):
|
||||
""" try to locate the node in uri,
|
||||
Return a tuple (node_dir, remaining_path)
|
||||
"""
|
||||
|
@ -234,7 +234,7 @@ class document_directory(osv.osv):
|
|||
default.update(name=_("%s (copy)") % (name))
|
||||
return super(document_directory,self).copy(cr, uid, id, default, context=context)
|
||||
|
||||
def _check_duplication(self, cr, uid, vals, ids=[], op='create'):
|
||||
def _check_duplication(self, cr, uid, vals, ids=None, op='create'):
|
||||
name=vals.get('name',False)
|
||||
parent_id=vals.get('parent_id',False)
|
||||
ressource_parent_type_id=vals.get('ressource_parent_type_id',False)
|
||||
|
|
|
@ -103,7 +103,7 @@ class node_context(object):
|
|||
def get(self, name, default=None):
|
||||
return self.context.get(name, default)
|
||||
|
||||
def get_uri(self, cr, uri):
|
||||
def get_uri(self, cr, uri):
|
||||
""" Although this fn passes back to doc.dir, it is needed since
|
||||
it is a potential caching point.
|
||||
"""
|
||||
|
@ -252,7 +252,7 @@ class node_class(object):
|
|||
print "node_class.children()"
|
||||
return [] #stub
|
||||
|
||||
def child(self,cr, name, domain=None):
|
||||
def child(self, cr, name, domain=None):
|
||||
print "node_class.child()"
|
||||
return None
|
||||
|
||||
|
@ -270,7 +270,7 @@ class node_class(object):
|
|||
print "node_class.path_get()"
|
||||
return False
|
||||
|
||||
def get_data(self,cr):
|
||||
def get_data(self, cr):
|
||||
raise TypeError('No data for %s.'% self.type)
|
||||
|
||||
def open_data(self, cr, mode):
|
||||
|
@ -287,10 +287,10 @@ class node_class(object):
|
|||
"""
|
||||
raise TypeError('No data for %s.' % self.type)
|
||||
|
||||
def _get_storage(self,cr):
|
||||
def _get_storage(self, cr):
|
||||
raise RuntimeError("No storage for base class.")
|
||||
|
||||
def get_etag(self,cr):
|
||||
def get_etag(self, cr):
|
||||
""" Get a tag, unique per object + modification.
|
||||
|
||||
see. http://tools.ietf.org/html/rfc2616#section-13.3.3 """
|
||||
|
@ -434,7 +434,9 @@ class node_database(node_class):
|
|||
|
||||
"""
|
||||
our_type = 'database'
|
||||
def __init__(self, path=[], parent=False, context=None):
|
||||
def __init__(self, path=None, parent=False, context=None):
|
||||
if path is None:
|
||||
path = []
|
||||
super(node_database,self).__init__(path, parent, context)
|
||||
self.unixperms = 040750
|
||||
self.uidperms = 5
|
||||
|
@ -477,11 +479,11 @@ class node_database(node_class):
|
|||
|
||||
return res
|
||||
|
||||
def _file_get(self,cr, nodename=False):
|
||||
def _file_get(self, cr, nodename=False):
|
||||
res = []
|
||||
return res
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'db-%s' % cr.dbname
|
||||
|
||||
def mkdosname(company_name, default='noname'):
|
||||
|
@ -666,7 +668,6 @@ class node_dir(node_database):
|
|||
|
||||
return dirobj.create(cr, uid, val)
|
||||
|
||||
|
||||
def create_child(self, cr, path, data=None):
|
||||
""" API function to create a child file object and node
|
||||
Return the node_* created
|
||||
|
@ -693,7 +694,7 @@ class node_dir(node_database):
|
|||
fnode.set_data(cr, data, fil)
|
||||
return fnode
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'dir-%d' % self.dir_id
|
||||
|
||||
def move_to(self, cr, ndir_node, new_name=False, fil_obj=None, ndir_obj=None, in_write=False):
|
||||
|
@ -802,7 +803,7 @@ class node_res_dir(node_class):
|
|||
def children(self, cr, domain=None):
|
||||
return self._child_get(cr, domain=domain)
|
||||
|
||||
def child(self,cr, name, domain=None):
|
||||
def child(self, cr, name, domain=None):
|
||||
res = self._child_get(cr, name, domain=domain)
|
||||
if res:
|
||||
return res[0]
|
||||
|
@ -878,7 +879,7 @@ class node_res_dir(node_class):
|
|||
res.append(self.res_obj_class(res_name, self.dir_id, self, self.context, self.res_model, bo))
|
||||
return res
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'rdir-%d' % self.dir_id
|
||||
|
||||
class node_res_obj(node_class):
|
||||
|
@ -889,7 +890,7 @@ class node_res_obj(node_class):
|
|||
node_dirs (with limited domain).
|
||||
"""
|
||||
our_type = 'collection'
|
||||
def __init__(self, path, dir_id, parent, context, res_model, res_bo, res_id = None):
|
||||
def __init__(self, path, dir_id, parent, context, res_model, res_bo, res_id=None):
|
||||
super(node_res_obj,self).__init__(path, parent,context)
|
||||
assert parent
|
||||
#todo: more info from dirr
|
||||
|
@ -958,7 +959,7 @@ class node_res_obj(node_class):
|
|||
return res[0]
|
||||
return None
|
||||
|
||||
def _file_get(self,cr, nodename=False):
|
||||
def _file_get(self, cr, nodename=False):
|
||||
res = []
|
||||
is_allowed = self.check_perms((nodename and 1) or 5)
|
||||
if not is_allowed:
|
||||
|
@ -1160,7 +1161,7 @@ class node_res_obj(node_class):
|
|||
fnode.set_data(cr, data, fil)
|
||||
return fnode
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'rodir-%d-%d' % (self.dir_id, self.res_id)
|
||||
|
||||
node_res_dir.res_obj_class = node_res_obj
|
||||
|
@ -1210,7 +1211,6 @@ class node_file(node_class):
|
|||
return False
|
||||
return self.file_id == other.file_id
|
||||
|
||||
|
||||
def open_data(self, cr, mode):
|
||||
stor = self.storage_id
|
||||
assert stor, "No storage for file #%s." % self.file_id
|
||||
|
@ -1262,7 +1262,7 @@ class node_file(node_class):
|
|||
else:
|
||||
self.path = dirpath[0]
|
||||
|
||||
def get_data(self, cr, fil_obj = None):
|
||||
def get_data(self, cr, fil_obj=None):
|
||||
""" Retrieve the data for some file.
|
||||
fil_obj may optionally be specified, and should be a browse object
|
||||
for the file. This is useful when the caller has already initiated
|
||||
|
@ -1278,14 +1278,14 @@ class node_file(node_class):
|
|||
stobj = self.context._dirobj.pool.get('document.storage')
|
||||
return stobj.get_data(cr, self.context.uid,stor, self,self.context.context, fil_obj)
|
||||
|
||||
def get_data_len(self, cr, fil_obj = None):
|
||||
def get_data_len(self, cr, fil_obj=None):
|
||||
# TODO: verify with the storage object!
|
||||
bin_size = self.context.context.get('bin_size', False)
|
||||
if bin_size and not self.content_length:
|
||||
self.content_length = fil_obj.db_datas
|
||||
return self.content_length
|
||||
|
||||
def set_data(self, cr, data, fil_obj = None):
|
||||
def set_data(self, cr, data, fil_obj=None):
|
||||
""" Store data at some file.
|
||||
fil_obj may optionally be specified, and should be a browse object
|
||||
for the file. This is useful when the caller has already initiated
|
||||
|
@ -1299,7 +1299,7 @@ class node_file(node_class):
|
|||
stobj = self.context._dirobj.pool.get('document.storage')
|
||||
return stobj.set_data(cr, self.context.uid,stor, self, data, self.context.context, fil_obj)
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'file-%d' % self.file_id
|
||||
|
||||
def move_to(self, cr, ndir_node, new_name=False, fil_obj=None, ndir_obj=None, in_write=False):
|
||||
|
@ -1362,7 +1362,7 @@ class node_file(node_class):
|
|||
|
||||
class node_content(node_class):
|
||||
our_type = 'content'
|
||||
def __init__(self, path, parent, context, cnt, dctx = None, act_id=None):
|
||||
def __init__(self, path, parent, context, cnt, dctx=None, act_id=None):
|
||||
super(node_content,self).__init__(path, parent,context)
|
||||
self.cnt_id = cnt.id
|
||||
self.create_date = False
|
||||
|
@ -1382,7 +1382,7 @@ class node_content(node_class):
|
|||
self.dctx.update(dctx)
|
||||
self.act_id = act_id
|
||||
|
||||
def fill_fields(self, cr, dctx = None):
|
||||
def fill_fields(self, cr, dctx=None):
|
||||
""" Try to read the object and fill missing fields, like mimetype,
|
||||
dates etc.
|
||||
This function must be different from the constructor, because
|
||||
|
@ -1395,8 +1395,7 @@ class node_content(node_class):
|
|||
if res and res[0][0]:
|
||||
self.mimetype = str(res[0][0])
|
||||
|
||||
|
||||
def get_data(self, cr, fil_obj = None):
|
||||
def get_data(self, cr, fil_obj=None):
|
||||
cntobj = self.context._dirobj.pool.get('document.directory.content')
|
||||
if not self.check_perms(4):
|
||||
raise IOError(errno.EPERM, "Permission denied.")
|
||||
|
@ -1426,7 +1425,7 @@ class node_content(node_class):
|
|||
|
||||
return nodefd_content(self, cr, mode, ctx)
|
||||
|
||||
def get_data_len(self, cr, fil_obj = None):
|
||||
def get_data_len(self, cr, fil_obj=None):
|
||||
# FIXME : here, we actually generate the content twice!!
|
||||
# we should have cached the generated content, but it is
|
||||
# not advisable to do keep it in memory, until we have a cache
|
||||
|
@ -1435,7 +1434,7 @@ class node_content(node_class):
|
|||
self.get_data(cr,fil_obj)
|
||||
return self.content_length
|
||||
|
||||
def set_data(self, cr, data, fil_obj = None):
|
||||
def set_data(self, cr, data, fil_obj=None):
|
||||
cntobj = self.context._dirobj.pool.get('document.directory.content')
|
||||
if not self.check_perms(2):
|
||||
raise IOError(errno.EPERM, "Permission denied.")
|
||||
|
@ -1444,7 +1443,7 @@ class node_content(node_class):
|
|||
ctx.update(self.dctx)
|
||||
return cntobj.process_write(cr, self.context.uid, self, data, ctx)
|
||||
|
||||
def _get_ttag(self,cr):
|
||||
def _get_ttag(self, cr):
|
||||
return 'cnt-%d%s' % (self.cnt_id,(self.act_id and ('-' + str(self.act_id))) or '')
|
||||
|
||||
def get_dav_resourcetype(self, cr):
|
||||
|
@ -1558,5 +1557,4 @@ class nodefd_static(StringIO, node_descriptor):
|
|||
cr.close()
|
||||
StringIO.close(self)
|
||||
|
||||
#eof
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -24,11 +24,11 @@ import sys, zipfile, xml.dom.minidom
|
|||
import StringIO
|
||||
|
||||
class OpenDocumentTextFile :
|
||||
def __init__ (self, filepath) :
|
||||
def __init__ (self, filepath):
|
||||
zip = zipfile.ZipFile(filepath)
|
||||
self.content = xml.dom.minidom.parseString(zip.read("content.xml"))
|
||||
|
||||
def toString (self) :
|
||||
def toString (self):
|
||||
""" Converts the document to a string. """
|
||||
buffer = u""
|
||||
for val in ["text:p", "text:h", "text:list"]:
|
||||
|
@ -36,7 +36,7 @@ class OpenDocumentTextFile :
|
|||
buffer += self.textToString(paragraph) + "\n"
|
||||
return buffer
|
||||
|
||||
def textToString(self, element) :
|
||||
def textToString(self, element):
|
||||
buffer = u""
|
||||
for node in element.childNodes :
|
||||
if node.nodeType == xml.dom.Node.TEXT_NODE :
|
||||
|
|
|
@ -39,7 +39,7 @@ def _to_unicode(s):
|
|||
except UnicodeError:
|
||||
return s
|
||||
|
||||
def textToString(element) :
|
||||
def textToString(element):
|
||||
buffer = u""
|
||||
for node in element.childNodes :
|
||||
if node.nodeType == xml.dom.Node.TEXT_NODE :
|
||||
|
@ -56,7 +56,7 @@ class TxtIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.txt', '.py']
|
||||
|
||||
def _doIndexContent(self,content):
|
||||
def _doIndexContent(self, content):
|
||||
return content
|
||||
|
||||
cntIndex.register(TxtIndex())
|
||||
|
@ -68,7 +68,7 @@ class PptxIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.pptx']
|
||||
|
||||
def _doIndexFile(self,fname):
|
||||
def _doIndexFile(self, fname):
|
||||
def toString () :
|
||||
""" Converts the document to a string. """
|
||||
buffer = u""
|
||||
|
@ -96,7 +96,7 @@ class DocIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.doc']
|
||||
|
||||
def _doIndexFile(self,fname):
|
||||
def _doIndexFile(self, fname):
|
||||
try:
|
||||
pop = Popen(['antiword', fname], shell=False, stdout=PIPE)
|
||||
(data, _) = pop.communicate()
|
||||
|
@ -116,7 +116,7 @@ class DocxIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.docx']
|
||||
|
||||
def _doIndexFile(self,fname):
|
||||
def _doIndexFile(self, fname):
|
||||
zip = zipfile.ZipFile(fname)
|
||||
content = xml.dom.minidom.parseString(zip.read("word/document.xml"))
|
||||
def toString () :
|
||||
|
@ -141,7 +141,7 @@ class XlsxIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.xlsx']
|
||||
|
||||
def _doIndexFile(self,fname):
|
||||
def _doIndexFile(self, fname):
|
||||
zip = zipfile.ZipFile(fname)
|
||||
content = xml.dom.minidom.parseString(zip.read("xl/sharedStrings.xml"))
|
||||
def toString () :
|
||||
|
@ -165,7 +165,7 @@ class PdfIndex(indexer):
|
|||
def _getExtensions(self):
|
||||
return ['.pdf']
|
||||
|
||||
def _doIndexFile(self,fname):
|
||||
def _doIndexFile(self, fname):
|
||||
pop = Popen(['pdftotext', '-enc', 'UTF-8', '-nopgbrk', fname, '-'], shell=False, stdout=PIPE)
|
||||
(data, _) = pop.communicate()
|
||||
return _to_unicode(data)
|
||||
|
@ -181,7 +181,7 @@ class ImageNoIndex(indexer):
|
|||
return []
|
||||
#return ['.png','.jpg','.gif','.jpeg','.bmp','.tiff']
|
||||
|
||||
def _doIndexContent(self,content):
|
||||
def _doIndexContent(self, content):
|
||||
return 'image'
|
||||
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ class document_davdir(osv.osv):
|
|||
# TODO group
|
||||
return
|
||||
|
||||
def _locate_child(self, cr, uid, root_id, uri,nparent, ncontext):
|
||||
def _locate_child(self, cr, uid, root_id, uri, nparent, ncontext):
|
||||
""" try to locate the node in uri,
|
||||
Return a tuple (node_dir, remaining_path)
|
||||
"""
|
||||
|
|
|
@ -30,7 +30,7 @@ class RedirectHTTPHandler(HttpLogHandler, FixSendError, HttpOptions, HTTPHandler
|
|||
_HTTP_OPTIONS = { 'Allow': ['OPTIONS', 'GET', 'HEAD', 'PROPFIND'] }
|
||||
redirect_paths = {}
|
||||
|
||||
def __init__(self,request, client_address, server):
|
||||
def __init__(self, request, client_address, server):
|
||||
HTTPHandler.__init__(self,request,client_address,server)
|
||||
|
||||
def send_head(self):
|
||||
|
|
|
@ -683,7 +683,7 @@ class DAVClient(object):
|
|||
assert d2 == d, "Data does not match"
|
||||
return ctype, rrange, d
|
||||
|
||||
def gd_put(self, path, body=None, srcpath=None, mime=None, noclobber=False, ):
|
||||
def gd_put(self, path, body=None, srcpath=None, mime=None, noclobber=False):
|
||||
""" HTTP PUT
|
||||
@param noclobber will prevent overwritting a resource (If-None-Match)
|
||||
@param mime will set the content-type
|
||||
|
@ -705,5 +705,4 @@ class DAVClient(object):
|
|||
etag = m.getheader('ETag')
|
||||
return etag or True
|
||||
|
||||
#eof
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -236,7 +236,7 @@ def mk_prop_response(self, uri, good_props, bad_props, doc):
|
|||
return re
|
||||
|
||||
|
||||
def mk_propname_response(self,uri,propnames,doc):
|
||||
def mk_propname_response(self, uri, propnames, doc):
|
||||
""" make a new <prop> result element for a PROPNAME request
|
||||
|
||||
This will simply format the propnames list.
|
||||
|
|
|
@ -81,7 +81,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
|
|||
'DELETE', 'TRACE', 'REPORT', ]
|
||||
}
|
||||
|
||||
def get_userinfo(self,user,pw):
|
||||
def get_userinfo(self, user, pw):
|
||||
return False
|
||||
|
||||
def _log(self, message):
|
||||
|
@ -167,7 +167,7 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
|
|||
self.close_connection = 1
|
||||
DAVRequestHandler.send_header(self, key, value)
|
||||
|
||||
def send_body(self, DATA, code = None, msg = None, desc = None, ctype='application/octet-stream', headers=None):
|
||||
def send_body(self, DATA, code=None, msg=None, desc=None, ctype='application/octet-stream', headers=None):
|
||||
if headers and 'Connection' in headers:
|
||||
pass
|
||||
elif self.request_version in ('HTTP/1.0', 'HTTP/0.9'):
|
||||
|
@ -441,10 +441,10 @@ class dummy_dav_interface(object):
|
|||
def __init__(self, parent):
|
||||
self.parent = parent
|
||||
|
||||
def get_propnames(self,uri):
|
||||
def get_propnames(self, uri):
|
||||
return self.PROPS
|
||||
|
||||
def get_prop(self,uri,ns,propname):
|
||||
def get_prop(self, uri, ns, propname):
|
||||
if self.M_NS.has_key(ns):
|
||||
prefix=self.M_NS[ns]
|
||||
else:
|
||||
|
@ -460,10 +460,10 @@ class dummy_dav_interface(object):
|
|||
def get_data(self, uri, range=None):
|
||||
raise DAV_NotFound
|
||||
|
||||
def _get_dav_creationdate(self,uri):
|
||||
def _get_dav_creationdate(self, uri):
|
||||
return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
|
||||
|
||||
def _get_dav_getlastmodified(self,uri):
|
||||
def _get_dav_getlastmodified(self, uri):
|
||||
return time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime())
|
||||
|
||||
def _get_dav_displayname(self, uri):
|
||||
|
|
|
@ -41,13 +41,13 @@ def name2cp(k):
|
|||
if k.startswith("&#") and k.endswith(";"): return int(k[2:-1]) # not in latin-1
|
||||
return ord(codecs.latin_1_decode(k)[0])
|
||||
|
||||
unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"',
|
||||
unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"',
|
||||
'copy':'(C)', 'mdash':'--', 'nbsp':' ', 'rarr':'->', 'larr':'<-', 'middot':'*',
|
||||
'ndash':'-', 'oelig':'oe', 'aelig':'ae',
|
||||
'agrave':'a', 'aacute':'a', 'acirc':'a', 'atilde':'a', 'auml':'a', 'aring':'a',
|
||||
'egrave':'e', 'eacute':'e', 'ecirc':'e', 'euml':'e',
|
||||
'agrave':'a', 'aacute':'a', 'acirc':'a', 'atilde':'a', 'auml':'a', 'aring':'a',
|
||||
'egrave':'e', 'eacute':'e', 'ecirc':'e', 'euml':'e',
|
||||
'igrave':'i', 'iacute':'i', 'icirc':'i', 'iuml':'i',
|
||||
'ograve':'o', 'oacute':'o', 'ocirc':'o', 'otilde':'o', 'ouml':'o',
|
||||
'ograve':'o', 'oacute':'o', 'ocirc':'o', 'otilde':'o', 'ouml':'o',
|
||||
'ugrave':'u', 'uacute':'u', 'ucirc':'u', 'uuml':'u'}
|
||||
|
||||
unifiable_n = {}
|
||||
|
@ -60,7 +60,7 @@ def charref(name):
|
|||
c = int(name[1:], 16)
|
||||
else:
|
||||
c = int(name)
|
||||
|
||||
|
||||
if not UNICODE_SNOB and c in unifiable_n.keys():
|
||||
return unifiable_n[c]
|
||||
else:
|
||||
|
@ -76,14 +76,14 @@ def entityref(c):
|
|||
|
||||
def replaceEntities(s):
|
||||
s = s.group(1)
|
||||
if s[0] == "#":
|
||||
if s[0] == "#":
|
||||
return charref(s[1:])
|
||||
else: return entityref(s)
|
||||
|
||||
r_unescape = re.compile(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));")
|
||||
def unescape(s):
|
||||
return r_unescape.sub(replaceEntities, s)
|
||||
|
||||
|
||||
def fixattrs(attrs):
|
||||
# Fix bug in sgmllib.py
|
||||
if not attrs: return attrs
|
||||
|
@ -105,7 +105,7 @@ def optwrap(text):
|
|||
"""Wrap all paragraphs in the provided text."""
|
||||
if not BODY_WIDTH:
|
||||
return text
|
||||
|
||||
|
||||
assert wrap, "Requires Python 2.3."
|
||||
result = ''
|
||||
newlines = 0
|
||||
|
@ -136,7 +136,7 @@ def hn(tag):
|
|||
class _html2text(sgmllib.SGMLParser):
|
||||
def __init__(self, out=sys.stdout.write, baseurl=''):
|
||||
sgmllib.SGMLParser.__init__(self)
|
||||
|
||||
|
||||
if out is None: self.out = self.outtextf
|
||||
else: self.out = out
|
||||
self.outtext = u''
|
||||
|
@ -157,43 +157,43 @@ class _html2text(sgmllib.SGMLParser):
|
|||
self.abbr_data = None # last inner HTML (for abbr being defined)
|
||||
self.abbr_list = {} # stack of abbreviations to write later
|
||||
self.baseurl = baseurl
|
||||
|
||||
def outtextf(self, s):
|
||||
|
||||
def outtextf(self, s):
|
||||
self.outtext += s
|
||||
|
||||
|
||||
def close(self):
|
||||
sgmllib.SGMLParser.close(self)
|
||||
|
||||
|
||||
self.pbr()
|
||||
self.o('', 0, 'end')
|
||||
|
||||
|
||||
return self.outtext
|
||||
|
||||
|
||||
def handle_charref(self, c):
|
||||
self.o(charref(c))
|
||||
|
||||
def handle_entityref(self, c):
|
||||
self.o(entityref(c))
|
||||
|
||||
|
||||
def unknown_starttag(self, tag, attrs):
|
||||
self.handle_tag(tag, attrs, 1)
|
||||
|
||||
|
||||
def unknown_endtag(self, tag):
|
||||
self.handle_tag(tag, None, 0)
|
||||
|
||||
|
||||
def previousIndex(self, attrs):
|
||||
""" returns the index of certain set of attributes (of a link) in the
|
||||
self.a list
|
||||
|
||||
|
||||
If the set of attributes is not found, returns None
|
||||
"""
|
||||
if not attrs.has_key('href'): return None
|
||||
|
||||
|
||||
i = -1
|
||||
for a in self.a:
|
||||
i += 1
|
||||
match = 0
|
||||
|
||||
|
||||
if a.has_key('href') and a['href'] == attrs['href']:
|
||||
if a.has_key('title') or attrs.has_key('title'):
|
||||
if (a.has_key('title') and attrs.has_key('title') and
|
||||
|
@ -206,13 +206,13 @@ class _html2text(sgmllib.SGMLParser):
|
|||
|
||||
def handle_tag(self, tag, attrs, start):
|
||||
attrs = fixattrs(attrs)
|
||||
|
||||
|
||||
if hn(tag):
|
||||
self.p()
|
||||
if start: self.o(hn(tag)*"#" + ' ')
|
||||
|
||||
if tag in ['p', 'div']: self.p()
|
||||
|
||||
|
||||
if tag == "br" and start: self.o(" \n")
|
||||
|
||||
if tag == "hr" and start:
|
||||
|
@ -220,21 +220,21 @@ class _html2text(sgmllib.SGMLParser):
|
|||
self.o("* * *")
|
||||
self.p()
|
||||
|
||||
if tag in ["head", "style", 'script']:
|
||||
if tag in ["head", "style", 'script']:
|
||||
if start: self.quiet += 1
|
||||
else: self.quiet -= 1
|
||||
|
||||
if tag in ["body"]:
|
||||
self.quiet = 0 # sites like 9rules.com never close <head>
|
||||
|
||||
|
||||
if tag == "blockquote":
|
||||
if start:
|
||||
if start:
|
||||
self.p(); self.o('> ', 0, 1); self.start = 1
|
||||
self.blockquote += 1
|
||||
else:
|
||||
self.blockquote -= 1
|
||||
self.p()
|
||||
|
||||
|
||||
if tag in ['em', 'i', 'u']: self.o("_")
|
||||
if tag in ['strong', 'b']: self.o("**")
|
||||
if tag == "code" and not self.pre: self.o('`') #TODO: `` `this` ``
|
||||
|
@ -243,7 +243,7 @@ class _html2text(sgmllib.SGMLParser):
|
|||
attrsD = {}
|
||||
for (x, y) in attrs: attrsD[x] = y
|
||||
attrs = attrsD
|
||||
|
||||
|
||||
self.abbr_title = None
|
||||
self.abbr_data = ''
|
||||
if attrs.has_key('title'):
|
||||
|
@ -253,13 +253,13 @@ class _html2text(sgmllib.SGMLParser):
|
|||
self.abbr_list[self.abbr_data] = self.abbr_title
|
||||
self.abbr_title = None
|
||||
self.abbr_data = ''
|
||||
|
||||
|
||||
if tag == "a":
|
||||
if start:
|
||||
attrsD = {}
|
||||
for (x, y) in attrs: attrsD[x] = y
|
||||
attrs = attrsD
|
||||
if attrs.has_key('href') and not (SKIP_INTERNAL_LINKS and attrs['href'].startswith('#')):
|
||||
if attrs.has_key('href') and not (SKIP_INTERNAL_LINKS and attrs['href'].startswith('#')):
|
||||
self.astack.append(attrs)
|
||||
self.o("[")
|
||||
else:
|
||||
|
@ -277,7 +277,7 @@ class _html2text(sgmllib.SGMLParser):
|
|||
a['outcount'] = self.outcount
|
||||
self.a.append(a)
|
||||
self.o("][" + `a['count']` + "]")
|
||||
|
||||
|
||||
if tag == "img" and start:
|
||||
attrsD = {}
|
||||
for (x, y) in attrs: attrsD[x] = y
|
||||
|
@ -296,20 +296,20 @@ class _html2text(sgmllib.SGMLParser):
|
|||
self.o("![")
|
||||
self.o(alt)
|
||||
self.o("]["+`attrs['count']`+"]")
|
||||
|
||||
|
||||
if tag == 'dl' and start: self.p()
|
||||
if tag == 'dt' and not start: self.pbr()
|
||||
if tag == 'dd' and start: self.o(' ')
|
||||
if tag == 'dd' and not start: self.pbr()
|
||||
|
||||
|
||||
if tag in ["ol", "ul"]:
|
||||
if start:
|
||||
self.list.append({'name':tag, 'num':0})
|
||||
else:
|
||||
if self.list: self.list.pop()
|
||||
|
||||
|
||||
self.p()
|
||||
|
||||
|
||||
if tag == 'li':
|
||||
if start:
|
||||
self.pbr()
|
||||
|
@ -323,10 +323,10 @@ class _html2text(sgmllib.SGMLParser):
|
|||
self.start = 1
|
||||
else:
|
||||
self.pbr()
|
||||
|
||||
|
||||
if tag in ["table", "tr"] and start: self.p()
|
||||
if tag == 'td': self.pbr()
|
||||
|
||||
|
||||
if tag == "pre":
|
||||
if start:
|
||||
self.startpre = 1
|
||||
|
@ -334,34 +334,35 @@ class _html2text(sgmllib.SGMLParser):
|
|||
else:
|
||||
self.pre = 0
|
||||
self.p()
|
||||
|
||||
|
||||
def pbr(self):
|
||||
if self.p_p == 0: self.p_p = 1
|
||||
|
||||
def p(self): self.p_p = 2
|
||||
|
||||
def p(self):
|
||||
self.p_p = 2
|
||||
|
||||
def o(self, data, puredata=0, force=0):
|
||||
if self.abbr_data is not None: self.abbr_data += data
|
||||
|
||||
if not self.quiet:
|
||||
|
||||
if not self.quiet:
|
||||
if puredata and not self.pre:
|
||||
data = re.sub('\s+', ' ', data)
|
||||
if data and data[0] == ' ':
|
||||
self.space = 1
|
||||
data = data[1:]
|
||||
if not data and not force: return
|
||||
|
||||
|
||||
if self.startpre:
|
||||
#self.out(" :") #TODO: not output when already one there
|
||||
self.startpre = 0
|
||||
|
||||
|
||||
bq = (">" * self.blockquote)
|
||||
if not (force and data and data[0] == ">") and self.blockquote: bq += " "
|
||||
|
||||
|
||||
if self.pre:
|
||||
bq += " "
|
||||
data = data.replace("\n", "\n"+bq)
|
||||
|
||||
|
||||
if self.start:
|
||||
self.space = 0
|
||||
self.p_p = 0
|
||||
|
@ -377,7 +378,7 @@ class _html2text(sgmllib.SGMLParser):
|
|||
if self.p_p:
|
||||
self.out(('\n'+bq)*self.p_p)
|
||||
self.space = 0
|
||||
|
||||
|
||||
if self.space:
|
||||
if not self.lastWasNL: self.out(' ')
|
||||
self.space = 0
|
||||
|
@ -388,7 +389,7 @@ class _html2text(sgmllib.SGMLParser):
|
|||
newa = []
|
||||
for link in self.a:
|
||||
if self.outcount > link['outcount']:
|
||||
self.out(" ["+`link['count']`+"]: " + urlparse.urljoin(self.baseurl, link['href']))
|
||||
self.out(" ["+`link['count']`+"]: " + urlparse.urljoin(self.baseurl, link['href']))
|
||||
if link.has_key('title'): self.out(" ("+link['title']+")")
|
||||
self.out("\n")
|
||||
else:
|
||||
|
@ -397,7 +398,7 @@ class _html2text(sgmllib.SGMLParser):
|
|||
if self.a != newa: self.out("\n") # Don't need an extra line when nothing was done.
|
||||
|
||||
self.a = newa
|
||||
|
||||
|
||||
if self.abbr_list and force == "end":
|
||||
for abbr, definition in self.abbr_list.items():
|
||||
self.out(" *[" + abbr + "]: " + definition + "\n")
|
||||
|
@ -410,8 +411,9 @@ class _html2text(sgmllib.SGMLParser):
|
|||
def handle_data(self, data):
|
||||
if r'\/script>' in data: self.quiet -= 1
|
||||
self.o(data, 1)
|
||||
|
||||
def unknown_decl(self, data): pass
|
||||
|
||||
def unknown_decl(self, data):
|
||||
pass
|
||||
|
||||
def wrapwrite(text): sys.stdout.write(text.encode('utf8'))
|
||||
|
||||
|
|
|
@ -223,6 +223,7 @@ class event_event(osv.osv):
|
|||
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'event.event', context=c),
|
||||
'user_id': lambda obj, cr, uid, context: uid,
|
||||
}
|
||||
|
||||
def subscribe_to_event(self, cr, uid, ids, context=None):
|
||||
register_pool = self.pool.get('event.registration')
|
||||
user_pool = self.pool.get('res.users')
|
||||
|
@ -252,6 +253,7 @@ class event_event(osv.osv):
|
|||
_constraints = [
|
||||
(_check_closing_date, 'Error ! Closing Date cannot be set before Beginning Date.', ['date_end']),
|
||||
]
|
||||
|
||||
def onchange_event_type(self, cr, uid, ids, type_event, context=None):
|
||||
if type_event:
|
||||
type_info = self.pool.get('event.type').browse(cr,uid,type_event,context)
|
||||
|
@ -347,7 +349,6 @@ class event_registration(osv.osv):
|
|||
'phone': fields.char('Phone', size=64),
|
||||
'name': fields.char('Name', size=128, select=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'nb_register': 1,
|
||||
'state': 'draft',
|
||||
|
|
|
@ -21,4 +21,4 @@
|
|||
|
||||
import report_event_registration
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -34,4 +34,4 @@ class event_confirm(osv.osv_memory):
|
|||
|
||||
event_confirm()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -127,7 +127,7 @@ class event_moodle(osv.osv):
|
|||
passwd = passwd + '+'
|
||||
return passwd
|
||||
|
||||
def check_email(self,email):
|
||||
def check_email(self, email):
|
||||
|
||||
"""
|
||||
check if email is correct
|
||||
|
|
|
@ -55,4 +55,4 @@ class event(osv.osv):
|
|||
|
||||
event()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue