-
+
diff --git a/openerp/addons/base/publisher_warranty/__init__.py b/openerp/addons/base/publisher_warranty/__init__.py
deleted file mode 100644
index 6b60ddf3ca1..00000000000
--- a/openerp/addons/base/publisher_warranty/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
-# 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 the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program 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 Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import publisher_warranty
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty.py b/openerp/addons/base/publisher_warranty/publisher_warranty.py
deleted file mode 100644
index 897210ce817..00000000000
--- a/openerp/addons/base/publisher_warranty/publisher_warranty.py
+++ /dev/null
@@ -1,354 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 OpenERP S.A. ().
-#
-# 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 the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program 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 Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-"""
-Module to handle publisher warranty contracts as well as notifications from
-OpenERP.
-"""
-
-import datetime
-import logging
-import sys
-import urllib
-import urllib2
-
-import pooler
-import release
-from osv import osv, fields
-from tools.translate import _
-from tools.safe_eval import safe_eval
-from tools.config import config
-from tools import misc
-
-_logger = logging.getLogger(__name__)
-
-"""
-Time interval that will be used to determine up to which date we will
-check the logs to see if a message we just received was already logged.
-@type: datetime.timedelta
-"""
-_PREVIOUS_LOG_CHECK = datetime.timedelta(days=365)
-
-class publisher_warranty_contract(osv.osv):
- """
- Osv representing a publisher warranty contract.
- """
- _name = "publisher_warranty.contract"
-
- def _get_valid_contracts(self, cr, uid):
- """
- Return the list of the valid contracts encoded in the system.
-
- @return: A list of contracts
- @rtype: list of publisher_warranty.contract browse records
- """
- return [contract for contract in self.browse(cr, uid, self.search(cr, uid, []))
- if contract.state == 'valid']
-
- def status(self, cr, uid):
- """ Method called by the client to check availability of publisher warranty contract. """
-
- contracts = self._get_valid_contracts(cr, uid)
- return {
- 'status': "full" if contracts else "none" ,
- 'uncovered_modules': list(),
- }
-
- def send(self, cr, uid, tb, explanations, remarks=None, issue_name=None):
- """ Method called by the client to send a problem to the publisher warranty server. """
-
- if not remarks:
- remarks = ""
-
- valid_contracts = self._get_valid_contracts(cr, uid)
- valid_contract = valid_contracts[0]
-
- try:
- origin = 'client'
- dbuuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
- db_create_date = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.create_date')
- user = self.pool.get("res.users").browse(cr, uid, uid)
- user_name = user.name
- email = user.email
-
- msg = {'contract_name': valid_contract.name,
- 'tb': tb,
- 'explanations': explanations,
- 'remarks': remarks,
- 'origin': origin,
- 'dbname': cr.dbname,
- 'dbuuid': dbuuid,
- 'db_create_date': db_create_date,
- 'issue_name': issue_name,
- 'email': email,
- 'user_name': user_name,
- }
-
-
- add_arg = {"timeout":30} if sys.version_info >= (2,6) else {}
- uo = urllib2.urlopen(config.get("publisher_warranty_url"),
- urllib.urlencode({'arg0': msg, "action": "send",}),**add_arg)
- try:
- submit_result = uo.read()
- finally:
- uo.close()
-
- result = safe_eval(submit_result)
-
- crm_case_id = result
-
- if not crm_case_id:
- return False
-
- except osv.except_osv:
- raise
- except Exception:
- _logger.warning("Error sending problem report", exc_info=1)
- raise osv.except_osv(_("Error"),
- _("Error during communication with the publisher warranty server."))
-
- return True
-
- def check_validity(self, cr, uid, ids, context=None):
- """
- Check the validity of a publisher warranty contract. This method just call get_logs() but checks
- some more things, so it can be called from a user interface.
- """
- contract_id = ids[0]
- contract = self.browse(cr, uid, contract_id)
- state = contract.state
- validated = state != "unvalidated"
-
- self.get_logs(cr, uid, ids, cron_mode=False, context=context)
-
- contract = self.browse(cr, uid, contract_id)
- validated2 = contract.state != "unvalidated"
- if not validated and not validated2:
- raise osv.except_osv(_("Contract validation error"),
- _("Please verify your publisher warranty serial number and validity."))
- return True
-
- def get_logs(self, cr, uid, ids, cron_mode=True, context=None):
- """
- Send a message to OpenERP's publisher warranty server to check the validity of
- the contracts, get notifications, etc...
-
- @param cron_mode: If true, catch all exceptions (appropriate for usage in a cron).
- @type cron_mode: boolean
- """
- try:
- try:
- result = get_sys_logs(cr, uid)
- except Exception:
- if cron_mode: # we don't want to see any stack trace in cron
- return False
- _logger.debug("Exception while sending a get logs messages", exc_info=1)
- raise osv.except_osv(_("Error"), _("Error during communication with the publisher warranty server."))
-
- contracts = result["contracts"]
- for contract in contracts:
- c_id = self.search(cr, uid, [("name","=",contract)])[0]
- # for backward compatibility
- if type(contracts[contract]) == tuple:
- self.write(cr, uid, c_id, {
- "date_start": contracts[contract][0],
- "date_stop": contracts[contract][1],
- "state": contracts[contract][2],
- "check_support": False,
- "check_opw": False,
- "kind": "",
- })
- else:
- self.write(cr, uid, c_id, {
- "date_start": contracts[contract]["date_from"],
- "date_stop": contracts[contract]["date_to"],
- "state": contracts[contract]["state"],
- "check_support": contracts[contract]["check_support"],
- "check_opw": contracts[contract]["check_opw"],
- "kind": contracts[contract]["kind"],
- })
-
-
- limit_date = (datetime.datetime.now() - _PREVIOUS_LOG_CHECK).strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT)
-
- # old behavior based on res.log; now on mail.message, that is not necessarily installed
- mail_message_obj = self.pool.get('mail.message')
- if mail_message_obj:
- for message in result["messages"]:
- ids = mail_message_obj.search(cr, uid, [("model", "=", "publisher_warranty.contract"),
- ("create_date", ">=", limit_date),
- ("body_text", "=", message)])
- if ids:
- continue
- mail_message_obj.create(cr, uid, {
- 'name': message,
- 'model': "publisher_warranty.contract",
- 'user_id': False,
- }, context=context)
- except Exception:
- if cron_mode:
- return False # we don't want to see any stack trace in cron
- else:
- raise
- return True
-
- def get_last_user_messages(self, cr, uid, limit, context=None):
- """
- Get the messages to be written in the web client.
- @return: A list of html messages with ids, can be False or empty.
- @rtype: list of tuples(int,string)
- """
- if not self.pool.get('mail.message'):
- return []
- ids = self.pool.get('mail.message').search(cr, uid, [("model", "=", "publisher_warranty.contract")]
- , order="create_date desc", limit=limit, context=context)
- if not ids:
- return []
- messages = [(x.id, x.name) for x in self.pool.get('mail.message').browse(cr, uid, ids, context=context)]
- return messages
-
- _columns = {
- 'name' : fields.char('Serial Key', size=384, required=True, help="Your OpenERP Publisher's Warranty Contract unique key, also called serial number."),
- 'date_start' : fields.date('Starting Date', readonly=True),
- 'date_stop' : fields.date('Ending Date', readonly=True),
- 'state' : fields.selection([('unvalidated', 'Unvalidated'), ('valid', 'Valid')
- , ('terminated', 'Terminated'), ('canceled', 'Canceled')], string="State", readonly=True),
- 'kind' : fields.char('Contract Category', size=64, readonly=True),
- "check_support": fields.boolean("Support Level 1", readonly=True),
- "check_opw": fields.boolean("OPW", readonly=True, help="Checked if this is an OpenERP Publisher's Warranty contract (versus older contract types"),
- }
-
- _defaults = {
- 'state': 'unvalidated',
- }
-
- _sql_constraints = [
- ('uniq_name', 'unique(name)', "That contract is already registered in the system.")
- ]
-
-publisher_warranty_contract()
-
-class maintenance_contract(osv.osv_memory):
- """ Old osv we only keep for compatibility with the clients. """
-
- _name = "maintenance.contract"
-
- def status(self, cr, uid):
- return self.pool.get("publisher_warranty.contract").status(cr, uid)
-
- def send(self, cr, uid, tb, explanations, remarks=None, issue_name=None):
- return self.pool.get("publisher_warranty.contract").send(cr, uid, tb,
- explanations, remarks, issue_name)
-
-maintenance_contract()
-
-class publisher_warranty_contract_wizard(osv.osv_memory):
- """
- A wizard osv to help people entering a publisher warranty contract.
- """
- _name = 'publisher_warranty.contract.wizard'
- _inherit = "ir.wizard.screen"
-
- _columns = {
- 'name' : fields.char('Serial Key', size=256, required=True, help="Your OpenERP Publisher's Warranty Contract unique key, also called serial number."),
- 'state' : fields.selection([("draft", "Draft"), ("finished", "Finished")])
- }
-
- _defaults = {
- "state": "draft",
- }
-
- def action_validate(self, cr, uid, ids, context=None):
- if not ids:
- return False
-
- wiz = self.browse(cr, uid, ids[0])
- c_name = wiz.name
-
- contract_osv = self.pool.get("publisher_warranty.contract")
- contracts = contract_osv.search(cr, uid, [("name","=",c_name)])
- if contracts:
- raise osv.except_osv(_("Error"), _("That contract is already registered in the system."))
-
- contract_id = contract_osv.create(cr, uid, {
- "name": c_name,
- "state": "unvalidated",
- })
-
- contract_osv.check_validity(cr, uid, [contract_id])
-
- self.write(cr, uid, ids, {"state": "finished"})
-
- # We should return an action ?
- return True
-
-
-publisher_warranty_contract_wizard()
-
-def get_sys_logs(cr, uid):
- """
- Utility method to send a publisher warranty get logs messages.
- """
- pool = pooler.get_pool(cr.dbname)
-
- dbuuid = pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
- db_create_date = pool.get('ir.config_parameter').get_param(cr, uid, 'database.create_date')
- limit_date = datetime.datetime.now()
- limit_date = limit_date - datetime.timedelta(15)
- limit_date_str = limit_date.strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT)
- nbr_users = pool.get("res.users").search(cr, uid, [], count=True)
- nbr_active_users = pool.get("res.users").search(cr, uid, [("date", ">=", limit_date_str)], count=True)
- nbr_share_users = False
- nbr_active_share_users = False
- if "share" in pool.get("res.users")._all_columns:
- nbr_share_users = pool.get("res.users").search(cr, uid, [("share", "=", True)], count=True)
- nbr_active_share_users = pool.get("res.users").search(cr, uid, [("share", "=", True), ("date", ">=", limit_date_str)], count=True)
- contractosv = pool.get('publisher_warranty.contract')
- contracts = contractosv.browse(cr, uid, contractosv.search(cr, uid, []))
- user = pool.get("res.users").browse(cr, uid, uid)
- msg = {
- "dbuuid": dbuuid,
- "nbr_users": nbr_users,
- "nbr_active_users": nbr_active_users,
- "nbr_share_users": nbr_share_users,
- "nbr_active_share_users": nbr_active_share_users,
- "dbname": cr.dbname,
- "db_create_date": db_create_date,
- "version": release.version,
- "contracts": [c.name for c in contracts],
- "language": user.lang,
- }
-
- add_arg = {"timeout":30} if sys.version_info >= (2,6) else {}
- arguments = {'arg0': msg, "action": "update",}
- arguments_raw = urllib.urlencode(arguments)
- url = config.get("publisher_warranty_url")
- uo = urllib2.urlopen(url, arguments_raw, **add_arg)
- try:
- submit_result = uo.read()
- finally:
- uo.close()
-
- result = safe_eval(submit_result) if submit_result else {}
-
- return result
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty_data.xml b/openerp/addons/base/publisher_warranty/publisher_warranty_data.xml
deleted file mode 100644
index 68594e5d88f..00000000000
--- a/openerp/addons/base/publisher_warranty/publisher_warranty_data.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
- Update System Logs
-
-
- 1
- weeks
- -1
-
-
-
-
- 1000
-
-
-
-
\ No newline at end of file
diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty_view.xml b/openerp/addons/base/publisher_warranty/publisher_warranty_view.xml
deleted file mode 100644
index f4c196db672..00000000000
--- a/openerp/addons/base/publisher_warranty/publisher_warranty_view.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
- publisher_warranty.contract.tree
- publisher_warranty.contract
-
-
-
-
-
-
-
-
-
-
-
- publisher_warranty.contract.form
- publisher_warranty.contract
-
-
-
-
-
-
- publisher_warranty.contract.search
- publisher_warranty.contract
-
-
-
-
-
-
-
-
-
-
- publisher_warranty.contract.calendar
- publisher_warranty.contract
-
-
-
-
-
-
-
-
-
- Contracts
- ir.actions.act_window
- publisher_warranty.contract
- form
- tree,form,calendar
-
-
-
-
-
-
- publisher_warranty.contract.add.wizard
- publisher_warranty.contract.wizard
-
-
-
-
-
-
- Register a Contract
- ir.actions.act_window
- publisher_warranty.contract.wizard
- form
- form
- new
-
-
-
-
-
diff --git a/openerp/addons/base/res/res_currency.py b/openerp/addons/base/res/res_currency.py
index ac8ce1758cf..81dedbc992f 100644
--- a/openerp/addons/base/res/res_currency.py
+++ b/openerp/addons/base/res/res_currency.py
@@ -98,7 +98,10 @@ class res_currency(osv.osv):
def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
res = super(res_currency, self).read(cr, user, ids, fields, context, load)
currency_rate_obj = self.pool.get('res.currency.rate')
- for r in res:
+ values = res
+ if not isinstance(values, (list)):
+ values = [values]
+ for r in values:
if r.__contains__('rate_ids'):
rates=r['rate_ids']
if rates:
diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml
index 92a264f0089..7e70e68c35c 100644
--- a/openerp/addons/base/res/res_partner_view.xml
+++ b/openerp/addons/base/res/res_partner_view.xml
@@ -176,7 +176,7 @@
X
-
+
@@ -184,7 +184,7 @@
-
+
|
@@ -302,11 +302,11 @@
-
+
-
+
diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv
index d49aa18db8c..2d7b751860a 100644
--- a/openerp/addons/base/security/ir.model.access.csv
+++ b/openerp/addons/base/security/ir.model.access.csv
@@ -9,10 +9,14 @@
"access_ir_exports_group_system","ir_exports group_system","model_ir_exports","base.group_user",1,1,1,1
"access_ir_exports_line_group_system","ir_exports_line group_system","model_ir_exports_line","base.group_user",1,1,1,1
"access_ir_model_group_erp_manager","ir_model group_erp_manager","model_ir_model","group_erp_manager",1,1,1,1
+"access_ir_model_constraint_group_erp_manager","ir_model_constraint group_erp_manager","model_ir_model_constraint","group_erp_manager",1,1,1,1
+"access_ir_model_relation_group_erp_manager","ir_model_relation group_erp_manager","model_ir_model_relation","group_erp_manager",1,1,1,1
"access_ir_model_access_group_erp_manager","ir_model_access_group_erp_manager","model_ir_model_access","group_erp_manager",1,1,1,1
"access_ir_model_data_group_erp_manager","ir_model_data group_erp_manager","model_ir_model_data","group_erp_manager",1,1,1,1
"access_ir_model_fields_group_erp_manager","ir_model_fields group_erp_manager","model_ir_model_fields","group_erp_manager",1,1,1,1
"access_ir_model_all","ir_model_all","model_ir_model",,1,0,0,0
+"access_ir_model_constraint","ir_model_constraint","model_ir_model_constraint",,1,0,0,0
+"access_ir_model_relation","ir_model_relation","model_ir_model_relation",,1,0,0,0
"access_ir_model_access_all","ir_model_access_all","model_ir_model_access",,1,0,0,0
"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,0,0,0
"access_ir_model_fields_all","ir_model_fields all","model_ir_model_fields",,1,0,0,0
@@ -106,8 +110,6 @@
"access_res_payterm_group_system","res_payterm_group_system","model_res_payterm","group_system",1,1,1,1
"access_res_bank_group_partner_manager","res_bank_group_partner_manager","model_res_bank","group_partner_manager",1,1,1,1
"access_res_bank_user","res_bank user","model_res_bank","group_user",1,0,0,0
-"access_publisher_warranty_group_user","publisher_warranty_contract group_user","model_publisher_warranty_contract","group_system",1,1,1,1
-"access_publisher_warranty_all","publisher_warranty_contract all","model_publisher_warranty_contract",,1,0,0,0
"access_multi_company_default user","multi_company_default all","model_multi_company_default",,1,0,0,0
"access_multi_company_default manager","multi_company_default Manager","model_multi_company_default","group_erp_manager",1,1,1,1
"access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0
diff --git a/openerp/addons/base/test/test_osv_expression.yml b/openerp/addons/base/test/test_osv_expression.yml
index d607b17f801..3843d374e64 100644
--- a/openerp/addons/base/test/test_osv_expression.yml
+++ b/openerp/addons/base/test/test_osv_expression.yml
@@ -206,8 +206,7 @@
# that don't have OpenERP has a parent company, you expect to find,
# among others, the companies that don't have parent company.
#
- # ('parent_id', 'not in', [0]) must give the same result than
- # ('parent_id', 'not in', []), i.e. a empty set or a set with non-
+
# existing values be treated similarly if we simply check that some
# existing value belongs to them.
@@ -215,7 +214,7 @@
res_0.sort()
res_1 = self.search(cr, uid, [('parent_id', 'not in', [max_partner_id + 1])]) # get all rows, included null parent_id
res_1.sort()
- res_2 = self.search(cr, uid, [('parent_id', 'not in', False)]) # get rows with not null parent_id, deprecated syntax
+ res_2 = self.search(cr, uid, [('parent_id', '!=', False)]) # get rows with not null parent_id, deprecated syntax
res_2.sort()
res_3 = self.search(cr, uid, [('parent_id', 'not in', [])]) # get all rows, included null parent_id
res_3.sort()
@@ -235,7 +234,7 @@
res_5.sort()
res_6 = self.search(cr, uid, [('parent_id', 'in', [max_partner_id + 1])])
res_6.sort()
- res_7 = self.search(cr, uid, [('parent_id', 'in', False)])
+ res_7 = self.search(cr, uid, [('parent_id', '=', False)])
res_7.sort()
res_8 = self.search(cr, uid, [('parent_id', 'in', [])])
res_8.sort()
@@ -256,7 +255,7 @@
res_10.sort()
res_11 = self.search(cr, uid, ['!', ('parent_id', 'in', [max_partner_id + 1])])
res_11.sort()
- res_12 = self.search(cr, uid, ['!', ('parent_id', 'in', False)])
+ res_12 = self.search(cr, uid, ['!', ('parent_id', '=', False)])
res_12.sort()
res_13 = self.search(cr, uid, ['!', ('parent_id', 'in', [])])
res_13.sort()
@@ -277,7 +276,7 @@
res_16.sort()
assert res_16 == partner_ids
- res_17 = self.search(cr, uid, [('website', 'not in', False)])
+ res_17 = self.search(cr, uid, [('website', '!=', False)])
res_17.sort()
assert res_17 == with_website
@@ -292,21 +291,21 @@
assert res_101 == [], 'res_101: expected %r, got %r' % ([], res_101)
assert res_102 == company_ids, 'res_102: expected %r, got %r' % (company_ids, res_102)
-
- Property of the query (one2many not in False).
+ Property of the query (one2many != False).
-
!python {model: res.currency }: |
ids = self.search(cr, uid, [])
referenced_companies = set([x.company_id.id for x in self.browse(cr, uid, ids)])
- companies = set(self.pool.get('res.company').search(cr, uid, [('currency_ids', 'not in', False)]))
+ companies = set(self.pool.get('res.company').search(cr, uid, [('currency_ids', '!=', False)]))
assert referenced_companies == companies
-
- Property of the query (one2many in False).
+ Property of the query (one2many = False).
-
!python {model: res.currency }: |
ids = self.search(cr, uid, [])
referenced_companies = set([x.company_id.id for x in self.browse(cr, uid, ids)])
unreferenced_companies = set(self.pool.get('res.company').search(cr, uid, [])).difference(referenced_companies)
- companies = set(self.pool.get('res.company').search(cr, uid, [('currency_ids', 'in', False)]))
+ companies = set(self.pool.get('res.company').search(cr, uid, [('currency_ids', '=', False)]))
assert unreferenced_companies == companies
-
Equivalent queries.
@@ -317,7 +316,7 @@
res_1 = self.search(cr, uid, [('name', 'not like', 'probably_unexisting_name')])
res_2 = self.search(cr, uid, [('id', 'not in', [max_currency_id + 1003])])
res_3 = self.search(cr, uid, [('id', 'not in', [])])
- res_4 = self.search(cr, uid, [('id', 'not in', False)])
+ res_4 = self.search(cr, uid, [('id', '!=', False)])
res_0.sort()
res_1.sort()
res_2.sort()
@@ -400,7 +399,7 @@
# get the companies referenced by some currency (this is normally the main company)
res_10 = self.search(cr, uid, [('currency_ids', 'not like', 'probably_unexisting_name')])
res_11 = self.search(cr, uid, [('currency_ids', 'not in', [max_currency_id + 1])])
- res_12 = self.search(cr, uid, [('currency_ids', 'not in', False)])
+ res_12 = self.search(cr, uid, [('currency_ids', '!=', False)])
res_13 = self.search(cr, uid, [('currency_ids', 'not in', [])])
res_10.sort()
res_11.sort()
diff --git a/openerp/pychart/__init__.py b/openerp/pychart/__init__.py
deleted file mode 100644
index a45c23cc87f..00000000000
--- a/openerp/pychart/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com)
-#
-# Jockey is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any
-# later version.
-#
-# Jockey 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 General Public License
-# for more details.
-#
-##############################################################################
-__all__ = [ "axis", "area", "basecanvas", "canvas",
- "line_plot", "pie_plot", "rose_plot", "tick_mark",
- "bar_plot", "chart_data", "arrow", "text_box", "color", "font",
- "fill_style", "error_bar", "range_plot", "chart_object",
- "line_style", "legend", "pychart_util", "theme", "scaling",
- "zap", "coord", "linear_coord", "log_coord",
- "category_coord", "afm", "interval_bar_plot" ]
-
diff --git a/openerp/pychart/afm/AvantGarde_Book.py b/openerp/pychart/afm/AvantGarde_Book.py
deleted file mode 100644
index bfaaec0050d..00000000000
--- a/openerp/pychart/afm/AvantGarde_Book.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font AvantGarde-Book (path: /usr/share/fonts/afms/adobe/pagk8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["AvantGarde-Book"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 332, 277, 437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606, 606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462, 919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351, 605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203, 502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536, 425, 351, 672, 351, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 295, 554, 554, 166, 554, 554, 615, 554, 198, 502, 425, 251, 251, 487, 485, 500, 500, 553, 553, 277, 500, 564, 606, 354, 502, 484, 425, 1000, 1174, 500, 591, 500, 378, 375, 502, 439, 485, 453, 222, 369, 500, 332, 324, 500, 552, 302, 502, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 992, 500, 369, 500, 500, 500, 500, 517, 868, 1194, 369, 500, 500, 500, 500, 500, 1157, 500, 500, 500, 200, 500, 500, 300, 653, 1137, 554, )
diff --git a/openerp/pychart/afm/AvantGarde_BookOblique.py b/openerp/pychart/afm/AvantGarde_BookOblique.py
deleted file mode 100644
index 1db8aa7dddf..00000000000
--- a/openerp/pychart/afm/AvantGarde_BookOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font AvantGarde-BookOblique (path: /usr/share/fonts/afms/adobe/pagko8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["AvantGarde-BookOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 277, 295, 309, 554, 554, 775, 757, 351, 369, 369, 425, 606, 277, 332, 277, 437, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 277, 277, 606, 606, 606, 591, 867, 740, 574, 813, 744, 536, 485, 872, 683, 226, 482, 591, 462, 919, 740, 869, 592, 871, 607, 498, 426, 655, 702, 960, 609, 592, 480, 351, 605, 351, 606, 500, 351, 683, 682, 647, 685, 650, 314, 673, 610, 200, 203, 502, 200, 938, 610, 655, 682, 682, 301, 388, 339, 608, 554, 831, 480, 536, 425, 351, 672, 351, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 295, 554, 554, 166, 554, 554, 615, 554, 198, 502, 425, 251, 251, 487, 485, 500, 500, 553, 553, 277, 500, 564, 606, 354, 502, 484, 425, 1000, 1174, 500, 591, 500, 378, 375, 502, 439, 485, 453, 222, 369, 500, 332, 324, 500, 552, 302, 502, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 992, 500, 369, 500, 500, 500, 500, 517, 868, 1194, 369, 500, 500, 500, 500, 500, 1157, 500, 500, 500, 200, 500, 500, 300, 653, 1137, 554, )
diff --git a/openerp/pychart/afm/AvantGarde_Demi.py b/openerp/pychart/afm/AvantGarde_Demi.py
deleted file mode 100644
index 295b3e7d7c2..00000000000
--- a/openerp/pychart/afm/AvantGarde_Demi.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font AvantGarde-Demi (path: /usr/share/fonts/afms/adobe/pagd8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["AvantGarde-Demi"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 420, 280, 460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600, 600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440, 900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320, 640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260, 580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580, 460, 340, 600, 340, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 280, 560, 560, 160, 560, 560, 560, 560, 220, 480, 460, 240, 240, 520, 520, 500, 500, 560, 560, 280, 500, 600, 600, 280, 480, 480, 460, 1000, 1280, 500, 560, 500, 420, 420, 540, 480, 420, 480, 280, 500, 500, 360, 340, 500, 700, 340, 540, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 900, 500, 360, 500, 500, 500, 500, 480, 840, 1060, 360, 500, 500, 500, 500, 500, 1080, 500, 500, 500, 240, 500, 500, 320, 660, 1080, 600, )
diff --git a/openerp/pychart/afm/AvantGarde_DemiOblique.py b/openerp/pychart/afm/AvantGarde_DemiOblique.py
deleted file mode 100644
index 7b6c04feb52..00000000000
--- a/openerp/pychart/afm/AvantGarde_DemiOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font AvantGarde-DemiOblique (path: /usr/share/fonts/afms/adobe/pagdo8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["AvantGarde-DemiOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 280, 280, 360, 560, 560, 860, 680, 280, 380, 380, 440, 600, 280, 420, 280, 460, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600, 600, 560, 740, 740, 580, 780, 700, 520, 480, 840, 680, 280, 480, 620, 440, 900, 740, 840, 560, 840, 580, 520, 420, 640, 700, 900, 680, 620, 500, 320, 640, 320, 600, 500, 280, 660, 660, 640, 660, 640, 280, 660, 600, 240, 260, 580, 240, 940, 600, 640, 660, 660, 320, 440, 300, 600, 560, 800, 560, 580, 460, 340, 600, 340, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 280, 560, 560, 160, 560, 560, 560, 560, 220, 480, 460, 240, 240, 520, 520, 500, 500, 560, 560, 280, 500, 600, 600, 280, 480, 480, 460, 1000, 1280, 500, 560, 500, 420, 420, 540, 480, 420, 480, 280, 500, 500, 360, 340, 500, 700, 340, 540, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 900, 500, 360, 500, 500, 500, 500, 480, 840, 1060, 360, 500, 500, 500, 500, 500, 1080, 500, 500, 500, 240, 500, 500, 320, 660, 1080, 600, )
diff --git a/openerp/pychart/afm/Bookman_Demi.py b/openerp/pychart/afm/Bookman_Demi.py
deleted file mode 100644
index 255593de85e..00000000000
--- a/openerp/pychart/afm/Bookman_Demi.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Bookman-Demi (path: /usr/share/fonts/afms/adobe/pbkd8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Bookman-Demi"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 340, 360, 420, 660, 660, 940, 800, 320, 320, 320, 460, 600, 340, 360, 340, 600, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 340, 340, 600, 600, 600, 660, 820, 720, 720, 740, 780, 720, 680, 780, 820, 400, 640, 800, 640, 940, 740, 800, 660, 800, 780, 660, 700, 740, 720, 940, 780, 700, 640, 300, 600, 300, 600, 500, 320, 580, 600, 580, 640, 580, 380, 580, 680, 360, 340, 660, 340, 1000, 680, 620, 640, 620, 460, 520, 460, 660, 600, 800, 600, 620, 560, 320, 600, 320, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 360, 660, 660, 120, 660, 660, 600, 660, 240, 540, 400, 220, 220, 740, 740, 500, 500, 440, 380, 340, 500, 800, 460, 320, 540, 540, 400, 1000, 1360, 500, 660, 500, 400, 400, 500, 480, 460, 500, 320, 500, 500, 340, 360, 500, 440, 320, 500, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1140, 500, 400, 500, 500, 500, 500, 640, 800, 1220, 400, 500, 500, 500, 500, 500, 880, 500, 500, 500, 360, 500, 500, 340, 620, 940, 660, )
diff --git a/openerp/pychart/afm/Bookman_DemiItalic.py b/openerp/pychart/afm/Bookman_DemiItalic.py
deleted file mode 100644
index 865ebd45917..00000000000
--- a/openerp/pychart/afm/Bookman_DemiItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Bookman-DemiItalic (path: /usr/share/fonts/afms/adobe/pbkdi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Bookman-DemiItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 340, 320, 380, 680, 680, 880, 980, 320, 260, 260, 460, 600, 340, 280, 340, 360, 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, 340, 340, 620, 600, 620, 620, 780, 720, 720, 700, 760, 720, 660, 760, 800, 380, 620, 780, 640, 860, 740, 760, 640, 760, 740, 700, 700, 740, 660, 1000, 740, 660, 680, 260, 580, 260, 620, 500, 320, 680, 600, 560, 680, 560, 420, 620, 700, 380, 320, 700, 380, 960, 680, 600, 660, 620, 500, 540, 440, 680, 540, 860, 620, 600, 560, 300, 620, 300, 620, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 320, 680, 680, 120, 680, 680, 620, 680, 180, 520, 380, 220, 220, 820, 820, 500, 500, 420, 420, 340, 500, 680, 360, 300, 520, 520, 380, 1000, 1360, 500, 620, 500, 380, 340, 480, 480, 480, 460, 380, 520, 500, 360, 360, 500, 560, 320, 480, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1140, 500, 440, 500, 500, 500, 500, 640, 760, 1180, 440, 500, 500, 500, 500, 500, 880, 500, 500, 500, 380, 500, 500, 380, 600, 920, 660, )
diff --git a/openerp/pychart/afm/Bookman_Light.py b/openerp/pychart/afm/Bookman_Light.py
deleted file mode 100644
index 924e2110b7f..00000000000
--- a/openerp/pychart/afm/Bookman_Light.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Bookman-Light (path: /usr/share/fonts/afms/adobe/pbkl8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Bookman-Light"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 320, 300, 380, 620, 620, 900, 800, 220, 300, 300, 440, 600, 320, 400, 320, 600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 320, 320, 600, 600, 600, 540, 820, 680, 740, 740, 800, 720, 640, 800, 800, 340, 600, 720, 600, 920, 740, 800, 620, 820, 720, 660, 620, 780, 700, 960, 720, 640, 640, 300, 600, 300, 600, 500, 220, 580, 620, 520, 620, 520, 320, 540, 660, 300, 300, 620, 300, 940, 660, 560, 620, 580, 440, 520, 380, 680, 520, 780, 560, 540, 480, 280, 600, 280, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 300, 620, 620, 140, 620, 620, 520, 620, 220, 400, 360, 240, 240, 620, 620, 500, 500, 540, 540, 320, 500, 600, 460, 220, 400, 400, 360, 1000, 1280, 500, 540, 500, 340, 340, 420, 440, 440, 460, 260, 420, 500, 320, 320, 500, 380, 320, 420, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1260, 500, 420, 500, 500, 500, 500, 600, 800, 1240, 420, 500, 500, 500, 500, 500, 860, 500, 500, 500, 300, 500, 500, 320, 560, 900, 660, )
diff --git a/openerp/pychart/afm/Bookman_LightItalic.py b/openerp/pychart/afm/Bookman_LightItalic.py
deleted file mode 100644
index 55a3bca71a6..00000000000
--- a/openerp/pychart/afm/Bookman_LightItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Bookman-LightItalic (path: /usr/share/fonts/afms/adobe/pbkli8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Bookman-LightItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 300, 320, 360, 620, 620, 800, 820, 280, 280, 280, 440, 600, 300, 320, 300, 600, 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, 300, 300, 600, 600, 600, 540, 780, 700, 720, 720, 740, 680, 620, 760, 800, 320, 560, 720, 580, 860, 720, 760, 600, 780, 700, 640, 600, 720, 680, 960, 700, 660, 580, 260, 600, 260, 600, 500, 280, 620, 600, 480, 640, 540, 340, 560, 620, 280, 280, 600, 280, 880, 620, 540, 600, 560, 400, 540, 340, 620, 540, 880, 540, 600, 520, 360, 600, 380, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 320, 620, 620, 20, 620, 620, 620, 620, 200, 440, 300, 180, 180, 640, 660, 500, 500, 620, 620, 300, 500, 620, 460, 320, 480, 440, 300, 1000, 1180, 500, 540, 500, 340, 320, 440, 440, 440, 440, 260, 420, 500, 300, 320, 500, 340, 260, 440, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1220, 500, 440, 500, 500, 500, 500, 580, 760, 1180, 400, 500, 500, 500, 500, 500, 880, 500, 500, 500, 280, 500, 500, 340, 540, 900, 620, )
diff --git a/openerp/pychart/afm/Courier.py b/openerp/pychart/afm/Courier.py
deleted file mode 100644
index 66d6aca798d..00000000000
--- a/openerp/pychart/afm/Courier.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Courier (path: /usr/share/fonts/afms/adobe/pcrr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Courier"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 600, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 500, 600, 500, 500, 500, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 600, 500, 500, 500, 600, 500, 500, 600, 600, 600, 600, )
diff --git a/openerp/pychart/afm/Courier_Bold.py b/openerp/pychart/afm/Courier_Bold.py
deleted file mode 100644
index 39575e834da..00000000000
--- a/openerp/pychart/afm/Courier_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Courier-Bold (path: /usr/share/fonts/afms/adobe/pcrb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Courier-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 600, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 500, 600, 500, 500, 500, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 600, 500, 500, 500, 600, 500, 500, 600, 600, 600, 600, )
diff --git a/openerp/pychart/afm/Courier_BoldOblique.py b/openerp/pychart/afm/Courier_BoldOblique.py
deleted file mode 100644
index 9724375ef1d..00000000000
--- a/openerp/pychart/afm/Courier_BoldOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Courier-BoldOblique (path: /usr/share/fonts/afms/adobe/pcrbo8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Courier-BoldOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 600, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 500, 600, 500, 500, 500, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 600, 500, 500, 500, 600, 500, 500, 600, 600, 600, 600, )
diff --git a/openerp/pychart/afm/Courier_Oblique.py b/openerp/pychart/afm/Courier_Oblique.py
deleted file mode 100644
index b95fd09170f..00000000000
--- a/openerp/pychart/afm/Courier_Oblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Courier-Oblique (path: /usr/share/fonts/afms/adobe/pcrro8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Courier-Oblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 600, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 500, 600, 600, 600, 600, 600, 600, 600, 600, 500, 600, 600, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 600, 500, 600, 500, 500, 500, 500, 600, 600, 600, 600, 500, 500, 500, 500, 500, 600, 500, 500, 500, 600, 500, 500, 600, 600, 600, 600, )
diff --git a/openerp/pychart/afm/Helvetica.py b/openerp/pychart/afm/Helvetica.py
deleted file mode 100644
index 01e829d3be9..00000000000
--- a/openerp/pychart/afm/Helvetica.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica (path: /usr/share/fonts/afms/adobe/phvr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 355, 556, 556, 889, 667, 222, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 191, 333, 556, 333, 333, 500, 500, 500, 556, 556, 556, 278, 500, 537, 350, 222, 333, 333, 556, 1000, 1000, 500, 611, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 370, 500, 500, 500, 500, 556, 778, 1000, 365, 500, 500, 500, 500, 500, 889, 500, 500, 500, 278, 500, 500, 222, 611, 944, 611, )
diff --git a/openerp/pychart/afm/Helvetica_Bold.py b/openerp/pychart/afm/Helvetica_Bold.py
deleted file mode 100644
index b3d3b2175b8..00000000000
--- a/openerp/pychart/afm/Helvetica_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Bold (path: /usr/share/fonts/afms/adobe/phvb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 238, 500, 556, 333, 333, 611, 611, 500, 556, 556, 556, 278, 500, 556, 350, 278, 500, 500, 556, 1000, 1000, 500, 611, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 370, 500, 500, 500, 500, 611, 778, 1000, 365, 500, 500, 500, 500, 500, 889, 500, 500, 500, 278, 500, 500, 278, 611, 944, 611, )
diff --git a/openerp/pychart/afm/Helvetica_BoldOblique.py b/openerp/pychart/afm/Helvetica_BoldOblique.py
deleted file mode 100644
index c439205c602..00000000000
--- a/openerp/pychart/afm/Helvetica_BoldOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-BoldOblique (path: /usr/share/fonts/afms/adobe/phvbo8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-BoldOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 333, 474, 556, 556, 889, 722, 278, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 278, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 238, 500, 556, 333, 333, 611, 611, 500, 556, 556, 556, 278, 500, 556, 350, 278, 500, 500, 556, 1000, 1000, 500, 611, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 370, 500, 500, 500, 500, 611, 778, 1000, 365, 500, 500, 500, 500, 500, 889, 500, 500, 500, 278, 500, 500, 278, 611, 944, 611, )
diff --git a/openerp/pychart/afm/Helvetica_Light.py b/openerp/pychart/afm/Helvetica_Light.py
deleted file mode 100644
index 7f7eb864d88..00000000000
--- a/openerp/pychart/afm/Helvetica_Light.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Light (path: /usr/share/fonts/afms/adobe/phvl8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Light"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 333, 278, 556, 556, 889, 667, 222, 333, 333, 389, 660, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 660, 660, 660, 500, 800, 667, 667, 722, 722, 611, 556, 778, 722, 278, 500, 667, 556, 833, 722, 778, 611, 778, 667, 611, 556, 722, 611, 889, 611, 611, 611, 333, 278, 333, 660, 500, 222, 556, 611, 556, 611, 556, 278, 611, 556, 222, 222, 500, 222, 833, 556, 556, 611, 611, 333, 500, 278, 556, 500, 722, 500, 500, 500, 333, 222, 333, 660, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 222, 389, 556, 389, 389, 500, 500, 500, 500, 556, 556, 278, 500, 650, 500, 222, 389, 389, 556, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 334, 500, 500, 500, 500, 556, 778, 1000, 334, 500, 500, 500, 500, 500, 889, 500, 500, 500, 222, 500, 500, 222, 556, 944, 500, )
diff --git a/openerp/pychart/afm/Helvetica_LightOblique.py b/openerp/pychart/afm/Helvetica_LightOblique.py
deleted file mode 100644
index 5da8c82f48a..00000000000
--- a/openerp/pychart/afm/Helvetica_LightOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-LightOblique (path: /usr/share/fonts/afms/adobe/phvlo8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-LightOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 333, 278, 556, 556, 889, 667, 222, 333, 333, 389, 660, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 660, 660, 660, 500, 800, 667, 667, 722, 722, 611, 556, 778, 722, 278, 500, 667, 556, 833, 722, 778, 611, 778, 667, 611, 556, 722, 611, 889, 611, 611, 611, 333, 278, 333, 660, 500, 222, 556, 611, 556, 611, 556, 278, 611, 556, 222, 222, 500, 222, 833, 556, 556, 611, 611, 333, 500, 278, 556, 500, 722, 500, 500, 500, 333, 222, 333, 660, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 222, 389, 556, 389, 389, 500, 500, 500, 500, 556, 556, 278, 500, 650, 500, 222, 389, 389, 556, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 334, 500, 500, 500, 500, 556, 778, 1000, 334, 500, 500, 500, 500, 500, 889, 500, 500, 500, 222, 500, 500, 222, 556, 944, 500, )
diff --git a/openerp/pychart/afm/Helvetica_Narrow.py b/openerp/pychart/afm/Helvetica_Narrow.py
deleted file mode 100644
index 3c7a78b0704..00000000000
--- a/openerp/pychart/afm/Helvetica_Narrow.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Narrow (path: /usr/share/fonts/afms/adobe/phvr8an.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Narrow"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479, 479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456, 683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228, 228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182, 410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410, 410, 274, 213, 274, 479, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 273, 456, 456, 137, 456, 456, 456, 456, 157, 273, 456, 273, 273, 410, 410, 500, 456, 456, 456, 228, 500, 440, 287, 182, 273, 273, 456, 820, 820, 500, 501, 500, 273, 273, 273, 273, 273, 273, 273, 273, 500, 273, 273, 500, 273, 273, 273, 820, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 820, 500, 303, 500, 500, 500, 500, 456, 638, 820, 299, 500, 500, 500, 500, 500, 729, 500, 500, 500, 228, 500, 500, 182, 501, 774, 501, )
diff --git a/openerp/pychart/afm/Helvetica_Narrow_Bold.py b/openerp/pychart/afm/Helvetica_Narrow_Bold.py
deleted file mode 100644
index d96f0648fed..00000000000
--- a/openerp/pychart/afm/Helvetica_Narrow_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Narrow-Bold (path: /usr/share/fonts/afms/adobe/phvb8an.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Narrow-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479, 479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501, 683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273, 228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228, 456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456, 410, 319, 230, 319, 479, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 273, 456, 456, 137, 456, 456, 456, 456, 195, 410, 456, 273, 273, 501, 501, 500, 456, 456, 456, 228, 500, 456, 287, 228, 410, 410, 456, 820, 820, 500, 501, 500, 273, 273, 273, 273, 273, 273, 273, 273, 500, 273, 273, 500, 273, 273, 273, 820, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 820, 500, 303, 500, 500, 500, 500, 501, 638, 820, 299, 500, 500, 500, 500, 500, 729, 500, 500, 500, 228, 500, 500, 228, 501, 774, 501, )
diff --git a/openerp/pychart/afm/Helvetica_Narrow_BoldOblique.py b/openerp/pychart/afm/Helvetica_Narrow_BoldOblique.py
deleted file mode 100644
index 6445397cb2a..00000000000
--- a/openerp/pychart/afm/Helvetica_Narrow_BoldOblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Narrow-BoldOblique (path: /usr/share/fonts/afms/adobe/phvbo8an.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Narrow-BoldOblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 228, 273, 389, 456, 456, 729, 592, 228, 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 273, 273, 479, 479, 479, 501, 800, 592, 592, 592, 592, 547, 501, 638, 592, 228, 456, 592, 501, 683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 273, 228, 273, 479, 456, 228, 456, 501, 456, 501, 456, 273, 501, 501, 228, 228, 456, 228, 729, 501, 501, 501, 501, 319, 456, 273, 501, 456, 638, 456, 456, 410, 319, 230, 319, 479, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 273, 456, 456, 137, 456, 456, 456, 456, 195, 410, 456, 273, 273, 501, 501, 500, 456, 456, 456, 228, 500, 456, 287, 228, 410, 410, 456, 820, 820, 500, 501, 500, 273, 273, 273, 273, 273, 273, 273, 273, 500, 273, 273, 500, 273, 273, 273, 820, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 820, 500, 303, 500, 500, 500, 500, 501, 638, 820, 299, 500, 500, 500, 500, 500, 729, 500, 500, 500, 228, 500, 500, 228, 501, 774, 501, )
diff --git a/openerp/pychart/afm/Helvetica_Narrow_Oblique.py b/openerp/pychart/afm/Helvetica_Narrow_Oblique.py
deleted file mode 100644
index 23675c1b3ba..00000000000
--- a/openerp/pychart/afm/Helvetica_Narrow_Oblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Narrow-Oblique (path: /usr/share/fonts/afms/adobe/phvro8an.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Narrow-Oblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 228, 228, 291, 456, 456, 729, 547, 182, 273, 273, 319, 479, 228, 273, 228, 228, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 228, 228, 479, 479, 479, 456, 832, 547, 547, 592, 592, 547, 501, 638, 592, 228, 410, 547, 456, 683, 592, 638, 547, 638, 592, 547, 501, 592, 547, 774, 547, 547, 501, 228, 228, 228, 385, 456, 182, 456, 456, 410, 456, 456, 228, 456, 456, 182, 182, 410, 182, 683, 456, 456, 456, 456, 273, 410, 228, 456, 410, 592, 410, 410, 410, 274, 213, 274, 479, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 273, 456, 456, 137, 456, 456, 456, 456, 157, 273, 456, 273, 273, 410, 410, 500, 456, 456, 456, 228, 500, 440, 287, 182, 273, 273, 456, 820, 820, 500, 501, 500, 273, 273, 273, 273, 273, 273, 273, 273, 500, 273, 273, 500, 273, 273, 273, 820, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 820, 500, 303, 500, 500, 500, 500, 456, 638, 820, 299, 500, 500, 500, 500, 500, 729, 500, 500, 500, 228, 500, 500, 182, 501, 774, 501, )
diff --git a/openerp/pychart/afm/Helvetica_Oblique.py b/openerp/pychart/afm/Helvetica_Oblique.py
deleted file mode 100644
index 10117189f69..00000000000
--- a/openerp/pychart/afm/Helvetica_Oblique.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Helvetica-Oblique (path: /usr/share/fonts/afms/adobe/phvro8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Helvetica-Oblique"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 355, 556, 556, 889, 667, 222, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 222, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 556, 556, 191, 333, 556, 333, 333, 500, 500, 500, 556, 556, 556, 278, 500, 537, 350, 222, 333, 333, 556, 1000, 1000, 500, 611, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 370, 500, 500, 500, 500, 556, 778, 1000, 365, 500, 500, 500, 500, 500, 889, 500, 500, 500, 278, 500, 500, 222, 611, 944, 611, )
diff --git a/openerp/pychart/afm/NewCenturySchlbk_Bold.py b/openerp/pychart/afm/NewCenturySchlbk_Bold.py
deleted file mode 100644
index f37530e92e8..00000000000
--- a/openerp/pychart/afm/NewCenturySchlbk_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font NewCenturySchlbk-Bold (path: /usr/share/fonts/afms/adobe/pncb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["NewCenturySchlbk-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 287, 296, 333, 574, 574, 833, 852, 241, 389, 389, 500, 606, 278, 333, 278, 278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 278, 278, 606, 606, 606, 500, 747, 759, 778, 778, 833, 759, 722, 833, 870, 444, 648, 815, 722, 981, 833, 833, 759, 833, 815, 667, 722, 833, 759, 981, 722, 722, 667, 389, 606, 389, 606, 500, 241, 611, 648, 556, 667, 574, 389, 611, 685, 370, 352, 667, 352, 963, 685, 611, 667, 648, 519, 500, 426, 685, 611, 889, 611, 611, 537, 389, 606, 389, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 296, 574, 574, 167, 574, 574, 500, 574, 241, 481, 500, 333, 333, 685, 685, 500, 500, 500, 500, 278, 500, 747, 606, 241, 481, 481, 500, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 981, 500, 367, 500, 500, 500, 500, 722, 833, 1000, 367, 500, 500, 500, 500, 500, 870, 500, 500, 500, 370, 500, 500, 352, 611, 907, 611, )
diff --git a/openerp/pychart/afm/NewCenturySchlbk_BoldItalic.py b/openerp/pychart/afm/NewCenturySchlbk_BoldItalic.py
deleted file mode 100644
index a5c5c172414..00000000000
--- a/openerp/pychart/afm/NewCenturySchlbk_BoldItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font NewCenturySchlbk-BoldItalic (path: /usr/share/fonts/afms/adobe/pncbi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["NewCenturySchlbk-BoldItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 287, 333, 400, 574, 574, 889, 889, 259, 407, 407, 500, 606, 287, 333, 287, 278, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 287, 287, 606, 606, 606, 481, 747, 741, 759, 759, 833, 741, 704, 815, 870, 444, 667, 778, 704, 944, 852, 833, 741, 833, 796, 685, 722, 833, 741, 944, 741, 704, 704, 407, 606, 407, 606, 500, 259, 667, 611, 537, 667, 519, 389, 611, 685, 389, 370, 648, 389, 944, 685, 574, 648, 630, 519, 481, 407, 685, 556, 833, 574, 519, 519, 407, 606, 407, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 574, 574, 167, 574, 574, 500, 574, 287, 481, 481, 278, 278, 685, 685, 500, 500, 500, 500, 287, 500, 650, 606, 259, 481, 481, 481, 1000, 1167, 500, 481, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 889, 500, 412, 500, 500, 500, 500, 704, 833, 963, 356, 500, 500, 500, 500, 500, 815, 500, 500, 500, 389, 500, 500, 389, 574, 852, 574, )
diff --git a/openerp/pychart/afm/NewCenturySchlbk_Italic.py b/openerp/pychart/afm/NewCenturySchlbk_Italic.py
deleted file mode 100644
index 612a8c60b27..00000000000
--- a/openerp/pychart/afm/NewCenturySchlbk_Italic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font NewCenturySchlbk-Italic (path: /usr/share/fonts/afms/adobe/pncri8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["NewCenturySchlbk-Italic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 333, 400, 556, 556, 833, 852, 204, 333, 333, 500, 606, 278, 333, 278, 606, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606, 606, 444, 747, 704, 722, 722, 778, 722, 667, 778, 833, 407, 611, 741, 667, 944, 815, 778, 667, 778, 741, 667, 685, 815, 704, 926, 704, 685, 667, 333, 606, 333, 606, 500, 204, 574, 556, 444, 611, 444, 333, 537, 611, 333, 315, 556, 333, 889, 611, 500, 574, 556, 444, 444, 352, 611, 519, 778, 500, 500, 463, 333, 606, 333, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 556, 556, 167, 556, 556, 500, 556, 278, 389, 426, 333, 333, 611, 611, 500, 500, 500, 500, 278, 500, 650, 606, 204, 389, 389, 426, 1000, 1000, 500, 444, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 870, 500, 422, 500, 500, 500, 500, 667, 778, 981, 372, 500, 500, 500, 500, 500, 722, 500, 500, 500, 333, 500, 500, 333, 500, 778, 556, )
diff --git a/openerp/pychart/afm/NewCenturySchlbk_Roman.py b/openerp/pychart/afm/NewCenturySchlbk_Roman.py
deleted file mode 100644
index 010b8c7042a..00000000000
--- a/openerp/pychart/afm/NewCenturySchlbk_Roman.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font NewCenturySchlbk-Roman (path: /usr/share/fonts/afms/adobe/pncr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["NewCenturySchlbk-Roman"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 296, 389, 556, 556, 833, 815, 204, 333, 333, 500, 606, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 606, 606, 606, 444, 737, 722, 722, 722, 778, 722, 667, 778, 833, 407, 556, 778, 667, 944, 815, 778, 667, 778, 722, 630, 667, 815, 722, 981, 704, 704, 611, 333, 606, 333, 606, 500, 204, 556, 556, 444, 574, 500, 333, 537, 611, 315, 296, 593, 315, 889, 611, 500, 574, 556, 444, 463, 389, 611, 537, 778, 537, 537, 481, 333, 606, 333, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 296, 556, 556, 167, 556, 556, 500, 556, 204, 389, 426, 259, 259, 611, 611, 500, 556, 500, 500, 278, 500, 606, 606, 204, 389, 389, 426, 1000, 1000, 500, 444, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 334, 500, 500, 500, 500, 667, 778, 1000, 300, 500, 500, 500, 500, 500, 796, 500, 500, 500, 315, 500, 500, 315, 500, 833, 574, )
diff --git a/openerp/pychart/afm/Palatino_Bold.py b/openerp/pychart/afm/Palatino_Bold.py
deleted file mode 100644
index cd0394bdd69..00000000000
--- a/openerp/pychart/afm/Palatino_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Palatino-Bold (path: /usr/share/fonts/afms/adobe/pplb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Palatino-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 278, 402, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 333, 250, 296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606, 606, 444, 747, 778, 667, 722, 833, 611, 556, 833, 833, 389, 389, 778, 611, 1000, 833, 833, 611, 833, 722, 611, 667, 778, 778, 1000, 667, 667, 667, 333, 606, 333, 606, 500, 278, 500, 611, 444, 611, 500, 389, 556, 611, 333, 333, 611, 333, 889, 611, 556, 611, 611, 389, 444, 333, 611, 556, 833, 500, 556, 500, 310, 606, 310, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 500, 500, 167, 500, 500, 500, 500, 227, 500, 500, 389, 389, 611, 611, 500, 500, 500, 500, 250, 500, 641, 606, 333, 500, 500, 500, 1000, 1000, 500, 444, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 438, 500, 500, 500, 500, 611, 833, 1000, 488, 500, 500, 500, 500, 500, 778, 500, 500, 500, 333, 500, 500, 333, 556, 833, 611, )
diff --git a/openerp/pychart/afm/Palatino_BoldItalic.py b/openerp/pychart/afm/Palatino_BoldItalic.py
deleted file mode 100644
index dbea3e12343..00000000000
--- a/openerp/pychart/afm/Palatino_BoldItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Palatino-BoldItalic (path: /usr/share/fonts/afms/adobe/pplbi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Palatino-BoldItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 500, 500, 500, 889, 833, 278, 333, 333, 444, 606, 250, 389, 250, 315, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606, 606, 444, 833, 722, 667, 685, 778, 611, 556, 778, 778, 389, 389, 722, 611, 944, 778, 833, 667, 833, 722, 556, 611, 778, 667, 1000, 722, 611, 667, 333, 606, 333, 606, 500, 278, 556, 537, 444, 556, 444, 333, 500, 556, 333, 333, 556, 333, 833, 556, 556, 556, 537, 389, 444, 389, 556, 556, 833, 500, 556, 500, 333, 606, 333, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 500, 500, 167, 500, 500, 556, 500, 250, 500, 500, 333, 333, 611, 611, 500, 500, 556, 556, 250, 500, 556, 606, 250, 500, 500, 500, 1000, 1000, 500, 444, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 556, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 944, 500, 333, 500, 500, 500, 500, 611, 833, 944, 333, 500, 500, 500, 500, 500, 738, 500, 500, 500, 333, 500, 500, 333, 556, 778, 556, )
diff --git a/openerp/pychart/afm/Palatino_Italic.py b/openerp/pychart/afm/Palatino_Italic.py
deleted file mode 100644
index e9618f5ade2..00000000000
--- a/openerp/pychart/afm/Palatino_Italic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Palatino-Italic (path: /usr/share/fonts/afms/adobe/pplri8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Palatino-Italic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 500, 500, 500, 889, 778, 278, 333, 333, 389, 606, 250, 333, 250, 296, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606, 606, 500, 747, 722, 611, 667, 778, 611, 556, 722, 778, 333, 333, 667, 556, 944, 778, 778, 611, 778, 667, 556, 611, 778, 722, 944, 722, 667, 667, 333, 606, 333, 606, 500, 278, 444, 463, 407, 500, 389, 278, 500, 500, 278, 278, 444, 278, 778, 556, 444, 500, 463, 389, 389, 333, 556, 500, 722, 500, 500, 444, 333, 606, 333, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 500, 500, 167, 500, 500, 500, 500, 333, 500, 500, 333, 333, 528, 545, 500, 500, 500, 500, 250, 500, 500, 500, 278, 500, 500, 500, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 941, 500, 333, 500, 500, 500, 500, 556, 778, 1028, 333, 500, 500, 500, 500, 500, 638, 500, 500, 500, 278, 500, 500, 278, 444, 669, 500, )
diff --git a/openerp/pychart/afm/Palatino_Roman.py b/openerp/pychart/afm/Palatino_Roman.py
deleted file mode 100644
index c846b9ad9ba..00000000000
--- a/openerp/pychart/afm/Palatino_Roman.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Palatino-Roman (path: /usr/share/fonts/afms/adobe/pplr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Palatino-Roman"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 278, 371, 500, 500, 840, 778, 278, 333, 333, 389, 606, 250, 333, 250, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 250, 606, 606, 606, 444, 747, 778, 611, 709, 774, 611, 556, 763, 832, 337, 333, 726, 611, 946, 831, 786, 604, 786, 668, 525, 613, 778, 722, 1000, 667, 667, 667, 333, 606, 333, 606, 500, 278, 500, 553, 444, 611, 479, 333, 556, 582, 291, 234, 556, 291, 883, 582, 546, 601, 560, 395, 424, 326, 603, 565, 834, 516, 556, 500, 333, 606, 333, 606, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 500, 500, 167, 500, 500, 500, 500, 208, 500, 500, 331, 331, 605, 608, 500, 500, 500, 500, 250, 500, 628, 606, 278, 500, 500, 500, 1000, 1144, 500, 444, 500, 333, 333, 333, 333, 333, 333, 250, 333, 500, 333, 333, 500, 380, 313, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 944, 500, 333, 500, 500, 500, 500, 611, 833, 998, 333, 500, 500, 500, 500, 500, 758, 500, 500, 500, 287, 500, 500, 291, 556, 827, 556, )
diff --git a/openerp/pychart/afm/Symbol.py b/openerp/pychart/afm/Symbol.py
deleted file mode 100644
index 9ddd708a8df..00000000000
--- a/openerp/pychart/afm/Symbol.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Symbol (path: /usr/share/fonts/afms/adobe/psyr.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Symbol"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333, 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768, 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439, 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603, 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 620, 247, 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400, 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000, 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713, 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603, 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384, 384, 384, 384, 494, 494, 494, 494, 500, 329, 274, 686, 686, 686, 384, 384, 384, 384, 384, 384, 494, 494, 494, )
diff --git a/openerp/pychart/afm/Times_Bold.py b/openerp/pychart/afm/Times_Bold.py
deleted file mode 100644
index c966cfc6c6c..00000000000
--- a/openerp/pychart/afm/Times_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Times-Bold (path: /usr/share/fonts/afms/adobe/ptmb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Times-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 555, 500, 500, 1000, 833, 333, 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570, 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944, 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333, 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833, 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394, 520, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 500, 500, 167, 500, 500, 500, 500, 278, 500, 500, 333, 333, 556, 556, 500, 500, 500, 500, 250, 500, 540, 350, 333, 500, 500, 500, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1000, 500, 300, 500, 500, 500, 500, 667, 778, 1000, 330, 500, 500, 500, 500, 500, 722, 500, 500, 500, 278, 500, 500, 278, 500, 722, 556, )
diff --git a/openerp/pychart/afm/Times_BoldItalic.py b/openerp/pychart/afm/Times_BoldItalic.py
deleted file mode 100644
index 75b0c316128..00000000000
--- a/openerp/pychart/afm/Times_BoldItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Times-BoldItalic (path: /usr/share/fonts/afms/adobe/ptmbi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Times-BoldItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 389, 555, 500, 500, 833, 778, 333, 333, 333, 500, 570, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570, 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889, 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333, 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778, 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348, 570, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 389, 500, 500, 167, 500, 500, 500, 500, 278, 500, 500, 333, 333, 556, 556, 500, 500, 500, 500, 250, 500, 500, 350, 333, 500, 500, 500, 1000, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 944, 500, 266, 500, 500, 500, 500, 611, 722, 944, 300, 500, 500, 500, 500, 500, 722, 500, 500, 500, 278, 500, 500, 278, 500, 722, 500, )
diff --git a/openerp/pychart/afm/Times_Italic.py b/openerp/pychart/afm/Times_Italic.py
deleted file mode 100644
index c057c8ff2b7..00000000000
--- a/openerp/pychart/afm/Times_Italic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Times-Italic (path: /usr/share/fonts/afms/adobe/ptmri8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Times-Italic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 420, 500, 500, 833, 778, 333, 333, 333, 500, 675, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675, 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833, 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389, 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722, 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400, 541, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 389, 500, 500, 167, 500, 500, 500, 500, 214, 556, 500, 333, 333, 500, 500, 500, 500, 500, 500, 250, 500, 523, 350, 333, 556, 556, 500, 889, 1000, 500, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 889, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 889, 500, 276, 500, 500, 500, 500, 556, 722, 944, 310, 500, 500, 500, 500, 500, 667, 500, 500, 500, 278, 500, 500, 278, 500, 667, 500, )
diff --git a/openerp/pychart/afm/Times_Roman.py b/openerp/pychart/afm/Times_Roman.py
deleted file mode 100644
index b2eb7a0bb90..00000000000
--- a/openerp/pychart/afm/Times_Roman.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Times-Roman (path: /usr/share/fonts/afms/adobe/ptmr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Times-Roman"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 250, 333, 408, 500, 500, 833, 778, 333, 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333, 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778, 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480, 541, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 500, 500, 167, 500, 500, 500, 500, 180, 444, 500, 333, 333, 556, 556, 500, 500, 500, 500, 250, 500, 453, 350, 333, 444, 444, 500, 1000, 1000, 500, 444, 500, 333, 333, 333, 333, 333, 333, 333, 333, 500, 333, 333, 500, 333, 333, 333, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 889, 500, 276, 500, 500, 500, 500, 611, 722, 889, 310, 500, 500, 500, 500, 500, 667, 500, 500, 500, 278, 500, 500, 278, 500, 722, 500, )
diff --git a/openerp/pychart/afm/Utopia_Bold.py b/openerp/pychart/afm/Utopia_Bold.py
deleted file mode 100644
index d7f5cd519ae..00000000000
--- a/openerp/pychart/afm/Utopia_Bold.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Utopia-Bold (path: /usr/share/fonts/afms/adobe/putb8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Utopia-Bold"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 210, 278, 473, 560, 560, 887, 748, 252, 365, 365, 442, 600, 280, 392, 280, 378, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600, 600, 456, 833, 644, 683, 689, 777, 629, 593, 726, 807, 384, 386, 707, 585, 918, 739, 768, 650, 768, 684, 561, 624, 786, 645, 933, 634, 617, 614, 335, 379, 335, 600, 500, 252, 544, 605, 494, 605, 519, 342, 533, 631, 316, 316, 582, 309, 948, 638, 585, 615, 597, 440, 446, 370, 629, 520, 774, 522, 524, 483, 365, 284, 365, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 560, 560, 100, 560, 560, 566, 560, 252, 473, 487, 287, 287, 639, 639, 500, 500, 510, 486, 280, 500, 552, 455, 252, 473, 473, 487, 1000, 1289, 500, 456, 500, 430, 430, 430, 430, 430, 430, 430, 430, 500, 430, 430, 500, 430, 430, 430, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 879, 500, 405, 500, 500, 500, 500, 591, 768, 1049, 427, 500, 500, 500, 500, 500, 806, 500, 500, 500, 316, 500, 500, 321, 585, 866, 662, )
diff --git a/openerp/pychart/afm/Utopia_BoldItalic.py b/openerp/pychart/afm/Utopia_BoldItalic.py
deleted file mode 100644
index f29af4a95f4..00000000000
--- a/openerp/pychart/afm/Utopia_BoldItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Utopia-BoldItalic (path: /usr/share/fonts/afms/adobe/putbi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Utopia-BoldItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 210, 285, 455, 560, 560, 896, 752, 246, 350, 350, 500, 600, 280, 392, 280, 260, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 280, 280, 600, 600, 600, 454, 828, 634, 680, 672, 774, 622, 585, 726, 800, 386, 388, 688, 586, 921, 741, 761, 660, 761, 681, 551, 616, 776, 630, 920, 630, 622, 618, 350, 460, 350, 600, 500, 246, 596, 586, 456, 609, 476, 348, 522, 629, 339, 333, 570, 327, 914, 635, 562, 606, 584, 440, 417, 359, 634, 518, 795, 516, 489, 466, 340, 265, 340, 600, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 285, 560, 560, 100, 560, 560, 568, 560, 246, 455, 560, 360, 360, 651, 652, 500, 500, 514, 490, 280, 500, 580, 465, 246, 455, 455, 560, 1000, 1297, 500, 454, 500, 400, 400, 400, 400, 400, 400, 402, 400, 500, 400, 400, 500, 400, 350, 400, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 890, 500, 444, 500, 500, 500, 500, 592, 761, 1016, 412, 500, 500, 500, 500, 500, 789, 500, 500, 500, 339, 500, 500, 339, 562, 811, 628, )
diff --git a/openerp/pychart/afm/Utopia_Italic.py b/openerp/pychart/afm/Utopia_Italic.py
deleted file mode 100644
index 33eb26837d8..00000000000
--- a/openerp/pychart/afm/Utopia_Italic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Utopia-Italic (path: /usr/share/fonts/afms/adobe/putri8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Utopia-Italic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 225, 240, 402, 530, 530, 826, 725, 216, 350, 350, 412, 570, 265, 392, 265, 270, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 265, 265, 570, 570, 570, 425, 794, 624, 632, 661, 763, 596, 571, 709, 775, 345, 352, 650, 565, 920, 763, 753, 614, 753, 640, 533, 606, 794, 637, 946, 632, 591, 622, 330, 390, 330, 570, 500, 216, 561, 559, 441, 587, 453, 315, 499, 607, 317, 309, 545, 306, 912, 618, 537, 590, 559, 402, 389, 341, 618, 510, 785, 516, 468, 468, 340, 270, 340, 570, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 240, 530, 530, 100, 530, 530, 530, 530, 216, 402, 462, 277, 277, 607, 603, 500, 500, 500, 490, 265, 500, 560, 500, 216, 402, 402, 462, 1000, 1200, 500, 425, 500, 400, 400, 400, 400, 400, 400, 402, 400, 500, 400, 400, 500, 400, 350, 400, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 880, 500, 425, 500, 500, 500, 500, 571, 753, 1020, 389, 500, 500, 500, 500, 500, 779, 500, 500, 500, 317, 500, 500, 318, 537, 806, 577, )
diff --git a/openerp/pychart/afm/Utopia_Regular.py b/openerp/pychart/afm/Utopia_Regular.py
deleted file mode 100644
index 0a61b2ee497..00000000000
--- a/openerp/pychart/afm/Utopia_Regular.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font Utopia-Regular (path: /usr/share/fonts/afms/adobe/putr8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["Utopia-Regular"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 225, 242, 458, 530, 530, 838, 706, 278, 350, 350, 412, 570, 265, 392, 265, 460, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 265, 265, 570, 570, 570, 389, 793, 635, 646, 684, 779, 606, 580, 734, 798, 349, 350, 658, 568, 944, 780, 762, 600, 762, 644, 541, 621, 791, 634, 940, 624, 588, 610, 330, 460, 330, 570, 500, 278, 523, 598, 496, 598, 514, 319, 520, 607, 291, 280, 524, 279, 923, 619, 577, 608, 591, 389, 436, 344, 606, 504, 768, 486, 506, 480, 340, 228, 340, 570, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 242, 530, 530, 150, 530, 530, 554, 530, 278, 458, 442, 257, 257, 610, 610, 500, 500, 504, 488, 265, 500, 555, 409, 278, 458, 458, 442, 1000, 1208, 500, 389, 500, 400, 400, 400, 400, 400, 400, 400, 400, 500, 400, 400, 500, 400, 400, 400, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 876, 500, 390, 500, 500, 500, 500, 574, 762, 1025, 398, 500, 500, 500, 500, 500, 797, 500, 500, 500, 291, 500, 500, 294, 577, 882, 601, )
diff --git a/openerp/pychart/afm/ZapfChancery_MediumItalic.py b/openerp/pychart/afm/ZapfChancery_MediumItalic.py
deleted file mode 100644
index 86622dad380..00000000000
--- a/openerp/pychart/afm/ZapfChancery_MediumItalic.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font ZapfChancery-MediumItalic (path: /usr/share/fonts/afms/adobe/pzcmi8a.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["ZapfChancery-MediumItalic"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 220, 280, 220, 440, 440, 680, 780, 240, 260, 220, 420, 520, 220, 280, 220, 340, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 260, 240, 520, 520, 520, 380, 700, 620, 600, 520, 700, 620, 580, 620, 680, 380, 400, 660, 580, 840, 700, 600, 540, 600, 600, 460, 500, 740, 640, 880, 560, 560, 620, 240, 480, 320, 520, 500, 240, 420, 420, 340, 440, 340, 320, 400, 440, 240, 220, 440, 240, 620, 460, 400, 440, 400, 300, 320, 320, 460, 440, 680, 420, 400, 440, 240, 520, 240, 520, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 280, 440, 440, 60, 440, 440, 420, 440, 160, 340, 340, 240, 260, 520, 520, 500, 500, 460, 480, 220, 500, 500, 600, 180, 280, 360, 380, 1000, 960, 500, 400, 500, 220, 300, 340, 440, 440, 440, 220, 360, 500, 300, 300, 500, 400, 280, 340, 1000, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 740, 500, 260, 500, 500, 500, 500, 580, 660, 820, 260, 500, 500, 500, 500, 500, 540, 500, 500, 500, 240, 500, 500, 300, 440, 560, 420, )
diff --git a/openerp/pychart/afm/ZapfDingbats.py b/openerp/pychart/afm/ZapfDingbats.py
deleted file mode 100644
index acdfcd3b178..00000000000
--- a/openerp/pychart/afm/ZapfDingbats.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# AFM font ZapfDingbats (path: /usr/share/fonts/afms/adobe/pzdr.afm).
-# Derived from Ghostscript distribution.
-# Go to www.cs.wisc.edu/~ghost to get the Ghostcript source code.
-import dir
-dir.afm["ZapfDingbats"] = (500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855, 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759, 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823, 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776, 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696, 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892, 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 732, 544, 544, 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918, 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836, 836, 867, 867, 696, 696, 874, 500, 874, 760, 946, 771, 865, 771, 888, 967, 888, 831, 873, 927, 970, 918, )
diff --git a/openerp/pychart/afm/__init__.py b/openerp/pychart/afm/__init__.py
deleted file mode 100644
index 83ce5c3234b..00000000000
--- a/openerp/pychart/afm/__init__.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
-# 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 the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program 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 Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-__all__ = ["Courier_Oblique", "AvantGarde_BookOblique", "Times_Italic", "Helvetica_Bold", "NewCenturySchlbk_Roman", "Helvetica", "Helvetica_Narrow", "AvantGarde_Demi", "Times_BoldItalic", "Helvetica_Narrow_Bold", "Helvetica_Light", "Bookman_DemiItalic", "Utopia_Regular", "Times_Roman", "Palatino_Italic", "Courier_Bold", "ZapfChancery_MediumItalic", "NewCenturySchlbk_Italic", "NewCenturySchlbk_BoldItalic", "Helvetica_Narrow_BoldOblique", "Courier", "AvantGarde_DemiOblique", "Courier_BoldOblique", "Bookman_LightItalic", "Symbol", "Utopia_Bold", "Times_Bold", "Helvetica_BoldOblique", "Utopia_BoldItalic", "AvantGarde_Book", "Bookman_Demi", "Palatino_Roman", "Bookman_Light", "Utopia_Italic", "NewCenturySchlbk_Bold", "Helvetica_LightOblique", "ZapfDingbats", "Helvetica_Narrow_Oblique", "Helvetica_Oblique", "Palatino_BoldItalic", "Palatino_Bold", "dir"]
diff --git a/openerp/pychart/afm/dir.py b/openerp/pychart/afm/dir.py
deleted file mode 100644
index e48804e6a88..00000000000
--- a/openerp/pychart/afm/dir.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# -*- coding: utf-8 -*-
-afm = {}
-
diff --git a/openerp/pychart/area.py b/openerp/pychart/area.py
deleted file mode 100644
index 0f714d068d8..00000000000
--- a/openerp/pychart/area.py
+++ /dev/null
@@ -1,250 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com)
-#
-# Jockey is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any
-# later version.
-#
-# Jockey 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 General Public License
-# for more details.
-#
-import coord
-import line_style
-import legend
-import axis
-import pychart_util
-import chart_object
-import fill_style
-import canvas
-import area_doc
-import linear_coord
-import category_coord
-import theme
-from pychart_types import *
-from types import *
-
-_dummy_legend = legend.T()
-
-def range_doc(t):
- u = t.upper()
-
- return """Specifies the range of %s values that are displayed in the
- chart. IF the value is None, both the values are computed
- automatically from the samples. Otherwise, the value must be a
- tuple of format (MIN, MAX). MIN and MAX must be either None or a
- number. If None, the value is computed automatically from the
- samples. For example, if %s_range = (None,5), then the minimum %s
- value is computed automatically, but the maximum %s value is fixed
- at 5.""" % (u, t, u, u)
-
-_keys = {
- "loc" : (CoordType, (0,0),
- """The location of the bottom-left corner of the chart.
-@cindex chart location
-@cindex location, chart
-"""),
- "size" : (CoordType, (120,110),
- """The size of the chart-drawing area, excluding axis labels,
- legends, tick marks, etc.
-@cindex chart size
-@cindex size, chart
- """),
- "bg_style": (fill_style.T, None, "Background fill-pattern."),
- "border_line_style": (line_style.T, None, "Line style of the outer frame of the chart."),
- "x_coord":
- (coord.T, linear_coord.T(),
- """Set the X coordinate system.""",
- """A linear coordinate system."""),
- "y_coord": (coord.T, linear_coord.T(),
- "Set the Y coordinate system.",
- """A linear coordinate system."""),
- "x_range": (CoordType, None, range_doc("x")),
- "y_range": (CoordType, None, range_doc("y")),
- "x_axis": (axis.X, None, "The X axis. <>."),
- "x_axis2": (axis.X, None, """The second X axis. This axis should be non-None either when you want to display plots with two distinct domains or when
- you just want to display two axes at the top and bottom of the chart.
- <>"""),
- "y_axis": (axis.Y, None, "The Y axis. <>."),
- "y_axis2": (axis.Y, None,
- """The second Y axis. This axis should be non-None either when you want to display plots with two distinct ranges or when
- you just want to display two axes at the left and right of the chart. <>"""),
- "x_grid_style" : (line_style.T, None,
- """The style of horizontal grid lines.
-@cindex grid lines"""),
- "y_grid_style" : (line_style.T, line_style.gray70_dash3,
- "The style of vertical grid lines."),
- "x_grid_interval": (IntervalType, None,
- """The horizontal grid-line interval.
- A numeric value
- specifies the interval at which
- lines are drawn. If value is a function, it
- takes two arguments, (MIN, MAX), that tells
- the minimum and maximum values found in the
- sample data. The function should return a list
- of values at which lines are drawn."""),
- "y_grid_interval": (IntervalType, None,
- "The vertical grid-line interval. See also x_grid_interval"),
- "x_grid_over_plot": (IntType, False,
- "If True, grid lines are drawn over plots. Otherwise, plots are drawn over grid lines."),
- "y_grid_over_plot": (IntType, False, "See x_grid_over_plot."),
- "plots": (ListType, pychart_util.new_list,
- """Used only internally by pychart."""),
- "legend": (legend.T, _dummy_legend, "The legend of the chart.",
- """a legend is by default displayed
- in the right-center of the chart."""),
- }
-
-
-class T(chart_object.T):
- keys = _keys
- __doc__ = area_doc.doc
-##AUTOMATICALLY GENERATED
-
-##END AUTOMATICALLY GENERATED
- def x_pos(self, xval):
- "Return the x position (on the canvas) corresponding to XVAL."
- off = self.x_coord.get_canvas_pos(self.size[0], xval,
- self.x_range[0], self.x_range[1])
- return self.loc[0] + off
-
- def y_pos(self, yval):
- "Return the y position (on the canvas) corresponding to YVAL."
- off = self.y_coord.get_canvas_pos(self.size[1], yval,
- self.y_range[0], self.y_range[1])
- return self.loc[1] + off
-
- def x_tic_points(self, interval):
- "Return the list of X values for which tick marks and grid lines are drawn."
- if type(interval) == FunctionType:
- return apply(interval, self.x_range)
-
- return self.x_coord.get_tics(self.x_range[0], self.x_range[1], interval)
- def y_tic_points(self, interval):
- "Return the list of Y values for which tick marks and grid lines are drawn."
- if type(interval) == FunctionType:
- return apply(interval, self.y_range)
-
- return self.y_coord.get_tics(self.y_range[0], self.y_range[1], interval)
- def __draw_x_grid_and_axis(self, can):
- if self.x_grid_style:
- for i in self.x_tic_points(self.x_grid_interval):
- x = self.x_pos(i)
- if x > self.loc[0]:
- can.line(self.x_grid_style,
- x, self.loc[1], x, self.loc[1]+self.size[1])
- if self.x_axis:
- self.x_axis.draw(self, can)
- if self.x_axis2:
- self.x_axis2.draw(self, can)
- def __draw_y_grid_and_axis(self, can):
- if self.y_grid_style:
- for i in self.y_tic_points(self.y_grid_interval):
- y = self.y_pos(i)
- if y > self.loc[1]:
- can.line(self.y_grid_style,
- self.loc[0], y,
- self.loc[0]+self.size[0], y)
- if self.y_axis:
- self.y_axis.draw(self, can)
- if self.y_axis2:
- self.y_axis2.draw(self, can)
-
- def __get_data_range(self, r, which, coord, interval):
- if isinstance(coord, category_coord.T):
- # This info is unused for the category coord type.
- # So I just return a random value.
- return ((0,0), 1)
-
- r = r or (None, None)
-
- if len(self.plots) == 0:
- raise ValueError, "No chart to draw, and no data range specified.\n";
- dmin, dmax = 999999, -999999
-
- for plot in self.plots:
- this_min, this_max = plot.get_data_range(which)
- dmin = min(this_min, dmin)
- dmax = max(this_max, dmax)
-
- if interval and type(interval) == FunctionType:
- tics = apply(interval, (dmin, dmax))
- dmin = tics[0]
- dmax = tics[len(tics)-1]
- else:
- dmin, dmax, interval = coord.get_min_max(dmin, dmax, interval)
-
- if r[0] != None:
- dmin = r[0]
- if r[1] != None:
- dmax = r[1]
- return ((dmin, dmax), interval)
- def draw(self, can = None):
- "Draw the charts."
-
- if can == None:
- can = canvas.default_canvas()
-
- self.type_check()
- for plot in self.plots:
- plot.check_integrity()
-
- self.x_range, self.x_grid_interval = \
- self.__get_data_range(self.x_range, 'X',
- self.x_coord,
- self.x_grid_interval)
-
- self.y_range, self.y_grid_interval = \
- self.__get_data_range(self.y_range, 'Y',
- self.y_coord,
- self.y_grid_interval)
-
- can.rectangle(self.border_line_style, self.bg_style,
- self.loc[0], self.loc[1],
- self.loc[0] + self.size[0], self.loc[1] + self.size[1])
-
- if not self.x_grid_over_plot:
- self.__draw_x_grid_and_axis(can)
-
- if not self.y_grid_over_plot:
- self.__draw_y_grid_and_axis(can)
-
- clipbox = theme.adjust_bounding_box([self.loc[0], self.loc[1],
- self.loc[0] + self.size[0],
- self.loc[1] + self.size[1]])
-
- can.clip(clipbox[0], clipbox[1],
- clipbox[2], clipbox[3])
-
- for plot in self.plots:
- plot.draw(self, can)
-
- can.endclip()
-
- if self.x_grid_over_plot:
- self.__draw_x_grid_and_axis(can)
- if self.y_grid_over_plot:
- self.__draw_y_grid_and_axis(can)
-
- if self.legend == _dummy_legend:
- self.legend = legend.T()
-
- if self.legend:
- legends = []
- for plot in self.plots:
- entry = plot.get_legend_entry()
- if entry == None:
- pass
- elif type(entry) != ListType:
- legends.append(entry)
- else:
- for e in entry:
- legends.append(e)
- self.legend.draw(self, legends, can)
-
- def add_plot(self, *plots):
- "Add PLOTS... to the area."
- self.plots.extend(plots)
diff --git a/openerp/pychart/area_doc.py b/openerp/pychart/area_doc.py
deleted file mode 100644
index a23e71bc31f..00000000000
--- a/openerp/pychart/area_doc.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- coding: utf-8 -*-
-# automatically generated by generate_docs.py.
-doc="""Attributes supported by this class are:
-plots(type:list) default="Used only internally by pychart.".
-loc(type:(x,y)) default="The location of the bottom-left corner of the chart.
-@cindex chart location
-@cindex location, chart
-".
-y_grid_style(type:line_style.T) default="The style of vertical grid lines.".
-y_grid_interval(type:Number or function) default="The vertical grid-line interval. See also x_grid_interval".
-x_grid_over_plot(type:int) default="If True, grid lines are drawn over plots. Otherwise, plots are drawn over grid lines.".
-x_range(type:(x,y)) default="Specifies the range of X values that are displayed in the
- chart. IF the value is None, both the values are computed
- automatically from the samples. Otherwise, the value must be a
- tuple of format (MIN, MAX). MIN and MAX must be either None or a
- number. If None, the value is computed automatically from the
- samples. For example, if x_range = (None,5), then the minimum X
- value is computed automatically, but the maximum X value is fixed
- at 5.".
-y_coord(type:coord.T) default="Set the Y coordinate system.".
- A linear coordinate system.
-
-y_range(type:(x,y)) default="Specifies the range of Y values that are displayed in the
- chart. IF the value is None, both the values are computed
- automatically from the samples. Otherwise, the value must be a
- tuple of format (MIN, MAX). MIN and MAX must be either None or a
- number. If None, the value is computed automatically from the
- samples. For example, if y_range = (None,5), then the minimum Y
- value is computed automatically, but the maximum Y value is fixed
- at 5.".
-x_axis(type:axis.X) default="The X axis. <>.".
-bg_style(type:fill_style.T) default="Background fill-pattern.".
-x_coord(type:coord.T) default="Set the X coordinate system.".
- A linear coordinate system.
-
-legend(type:legend.T) default="The legend of the chart.".
- a legend is by default displayed in the right-center of the
- chart.
-
-y_grid_over_plot(type:int) default="See x_grid_over_plot.".
-x_axis2(type:axis.X) default="The second X axis. This axis should be non-None either when you want to display plots with two distinct domains or when
- you just want to display two axes at the top and bottom of the chart.
- <>".
-y_axis2(type:axis.Y) default="The second Y axis. This axis should be non-None either when you want to display plots with two distinct ranges or when
- you just want to display two axes at the left and right of the chart. <>".
-x_grid_style(type:line_style.T) default="The style of horizontal grid lines.
-@cindex grid lines".
-y_axis(type:axis.Y) default="The Y axis. <>.".
-border_line_style(type:line_style.T) default="Line style of the outer frame of the chart.".
-x_grid_interval(type:Number or function) default="The horizontal grid-line interval.
- A numeric value
- specifies the interval at which
- lines are drawn. If value is a function, it
- takes two arguments, (MIN, MAX), that tells
- the minimum and maximum values found in the
- sample data. The function should return a list
- of values at which lines are drawn.".
-size(type:(x,y)) default="The size of the chart-drawing area, excluding axis labels,
- legends, tick marks, etc.
-@cindex chart size
-@cindex size, chart
- ".
-"""
-
diff --git a/openerp/pychart/arrow.py b/openerp/pychart/arrow.py
deleted file mode 100644
index 4271c36f66b..00000000000
--- a/openerp/pychart/arrow.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com)
-#
-# Jockey is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any
-# later version.
-#
-# Jockey 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 General Public License
-# for more details.
-#
-import line_style
-import color
-import chart_object
-import object_set
-import math
-import arrow_doc
-import canvas
-
-from pychart_types import *
-from types import *
-from scaling import *
-
-__doc__ = """
-Arrow is an optional component of a chart that draws line segments with
-an arrowhead. To draw an arrow, one creates an arrow.T object, and calls
-its "draw" method usually after area.draw() is called (otherwise, area.draw()
-may overwrite the arrow). For example, the below code draws an arrow
-from (10,10) to (20,30).
-
-ar = area.T(...)
-a = arrow.T(head_style = 1)
-ar.draw()
-a.draw([(10,10), (20,30)])
-"""
-
-def draw_arrowhead(can, tailx, taily, tipx, tipy, thickness, head_len, style):
- can.comment("ARROWHEAD tail=(%d,%d) tip=(%d,%d)\n"
- % (tailx, taily, tipx, tipy))
-
- halfthickness = thickness/2.0
- dx = tipx - tailx
- dy = tipy - taily
- arrow_len = math.sqrt(dx*dx + dy*dy)
- angle = math.atan2(dy, dx) * 360 / (2*math.pi)
- base = arrow_len - head_len
- can.push_transformation((tailx, taily), None, angle)
-
- can.newpath()
- if style == 0:
- can.moveto(base, - halfthickness)
- can.lineto(base, halfthickness)
- can.lineto(arrow_len, 0)
- can.closepath()
- elif style == 1:
- depth = head_len / 2.5
- can.moveto(base - depth, -halfthickness)
- can.lineto(base, 0)
- can.lineto(base - depth, halfthickness)
- can.lineto(arrow_len, 0)
- can.closepath()
- elif style == 2:
- can.moveto(base + head_len/2.0, 0)
- can.path_arc(base + head_len / 2.0, 0, head_len / 2.0, 1.0, 0, 400)
- elif style == 3:
- can.moveto(base, 0)
- can.lineto(base + head_len/2.0, -halfthickness)
- can.lineto(arrow_len, 0)
- can.lineto(base + head_len/2.0, halfthickness)
- can.closepath()
- else:
- raise Exception, "Arrow style must be a number between 0 and 3."
- can.fill()
- can.pop_transformation()
- can.comment("end ARROWHEAD.\n")
-
-def draw_arrowbody(can, tailx, taily, tipx, tipy, head_len):
- dx = tipx - tailx
- dy = tipy - taily
- arrow_len = math.sqrt(dx*dx + dy*dy)
- angle = math.atan2(dy, dx) * 360 / (2*math.pi)
- base = arrow_len - head_len
- can.push_transformation((tailx, taily), None, angle)
- can.moveto(0, 0)
- can.lineto(base+head_len*0.1, 0)
- can.stroke()
- can.pop_transformation()
-
-
-class T(chart_object.T):
- __doc__ = arrow_doc.doc
- keys = {
- "thickness" : (UnitType, 4,
- "The width of the arrow head."),
- "head_len": (UnitType, 8,
- "The length of the arrow head."),
- "head_color": (color.T, color.default,
- "The color of the arrow head."),
- "line_style": (line_style.T, line_style.default,
- "Line style."),
- "head_style": (IntType, 1,
- "The value of 0 draws a triangular arrow head. The value of 1 draws a swallow-tail arrow head. The value of 2 draws a circular head. The value of 3 draws a diamond-shaped head.")
- }
-##AUTOMATICALLY GENERATED
-
-##END AUTOMATICALLY GENERATED
- def draw(self, points, can = None):
- """Parameter specifies the
- list of points the arrow traverses through.
- It should contain at least two points, i.e.,
- the tail and tip. Parameter
- is an optional parameter that specifies the output.
- <