From 3833852f93b51d841560f2832390c43f7e8dbe2d Mon Sep 17 00:00:00 2001 From: "aag (OpenERP)" Date: Tue, 28 Sep 2010 18:47:10 +0530 Subject: [PATCH 1/3] diff --git a/addons/account_analytic_default/account_analytic_default_view.xml b/addons/account_analytic_default/account_analytic_default_view.xml index 2513d1229b6..95a39eb11e6 100644 --- a/addons/account_analytic_default/account_analytic_default_view.xml +++ b/addons/account_analytic_default/account_analytic_default_view.xml @@ -66,14 +66,16 @@ id="act_account_acount_move_line_open" res_model="account.move.line" src_model="account.account" - domain="[('account_id', '=', active_id)]"/> + context="{'search_default_account_id': [active_id]}" + /> + diff --git a/addons/account_budget/crossovered_budget_view.xml b/addons/account_budget/crossovered_budget_view.xml index 263dee3f686..448fc12fef6 100644 --- a/addons/account_budget/crossovered_budget_view.xml +++ b/addons/account_budget/crossovered_budget_view.xml @@ -260,7 +260,7 @@ diff --git a/addons/account_voucher/voucher_view.xml b/addons/account_voucher/voucher_view.xml index d007d20acab..972850e0114 100644 --- a/addons/account_voucher/voucher_view.xml +++ b/addons/account_voucher/voucher_view.xml @@ -161,10 +161,10 @@ diff --git a/addons/auction/auction_view.xml b/addons/auction/auction_view.xml index d149fc89f1c..c3068753a6e 100644 --- a/addons/auction/auction_view.xml +++ b/addons/auction/auction_view.xml @@ -765,7 +765,7 @@ diff --git a/addons/base_contact/base_contact_view.xml b/addons/base_contact/base_contact_view.xml index 1f22b550bdc..59894ab55d0 100644 --- a/addons/base_contact/base_contact_view.xml +++ b/addons/base_contact/base_contact_view.xml @@ -408,8 +408,9 @@ diff --git a/addons/crm/crm_meeting_menu.xml b/addons/crm/crm_meeting_menu.xml index 53eabcf0136..7601fcdab43 100644 --- a/addons/crm/crm_meeting_menu.xml +++ b/addons/crm/crm_meeting_menu.xml @@ -8,8 +8,7 @@ res_model="crm.meeting" src_model="res.partner" view_mode="calendar,tree,form,gantt" - context="{'default_partner_id': active_id, 'default_duration': 4.0}" - domain="[('partner_id', '=', active_id)]" + context="{'search_default_partner_id': active_id, 'default_duration': 4.0}" /> diff --git a/addons/crm/crm_phonecall_menu.xml b/addons/crm/crm_phonecall_menu.xml index 8585ddc7fe4..cd1f75b01f5 100644 --- a/addons/crm/crm_phonecall_menu.xml +++ b/addons/crm/crm_phonecall_menu.xml @@ -8,8 +8,7 @@ res_model="crm.phonecall" src_model="res.partner" view_mode="calendar,tree,form" - context="{'default_partner_id': active_id, 'default_duration': 1.0}" - domain="[('partner_id', '=', active_id)]" + context="{'search_default_partner_id': [active_id], 'default_duration': 1.0}" groups="base.group_extended" /> diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml index a341915bc39..3062c15364c 100644 --- a/addons/crm_claim/crm_claim_view.xml +++ b/addons/crm_claim/crm_claim_view.xml @@ -311,8 +311,7 @@ - diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index c791b0baefd..f58a948fad2 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -264,7 +264,7 @@ res_model="event.registration" src_model="event.event" view_mode="tree,form,calendar,graph" - domain="[('event_id', '=', active_id)]" + context="{'search_default_event_id': [active_id]}" view_type="form"/> diff --git a/addons/event_project/event_view.xml b/addons/event_project/event_view.xml index 5060ed2cb3f..7793d4fbcf7 100644 --- a/addons/event_project/event_view.xml +++ b/addons/event_project/event_view.xml @@ -36,7 +36,7 @@ res_model="project.task" src_model="event.event" view_mode="tree,form,calendar,graph" - domain="[('project_id', '=', project_id)]" + context="{'search_default_project_id': project_id}" view_type="form"/> diff --git a/addons/hr_contract/hr_contract_view.xml b/addons/hr_contract/hr_contract_view.xml index cb486df91b1..c8f84ce55cc 100644 --- a/addons/hr_contract/hr_contract_view.xml +++ b/addons/hr_contract/hr_contract_view.xml @@ -279,7 +279,12 @@ - + diff --git a/addons/hr_evaluation/hr_evaluation_view.xml b/addons/hr_evaluation/hr_evaluation_view.xml index 9ec02b4ad0b..5dcc7b6f346 100644 --- a/addons/hr_evaluation/hr_evaluation_view.xml +++ b/addons/hr_evaluation/hr_evaluation_view.xml @@ -385,7 +385,12 @@ action="action_hr_evaluation_send_mail" sequence="45"/> - + diff --git a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml index ba155d3590a..c0f82b0475b 100644 --- a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml +++ b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml @@ -395,13 +395,34 @@ - + + - + - + - + diff --git a/addons/hr_timesheet_invoice/report/report_analytic_view.xml b/addons/hr_timesheet_invoice/report/report_analytic_view.xml index 32129287470..f5573a394ef 100644 --- a/addons/hr_timesheet_invoice/report/report_analytic_view.xml +++ b/addons/hr_timesheet_invoice/report/report_analytic_view.xml @@ -134,7 +134,13 @@ - + diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml index 19a9af3c33d..f078be2dbe1 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml @@ -290,11 +290,27 @@ - + - + + - + hr.timesheet.sheet.tree.simplified diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml index 7d1c8d3d2bf..614055dddcd 100644 --- a/addons/marketing_campaign/marketing_campaign_view.xml +++ b/addons/marketing_campaign/marketing_campaign_view.xml @@ -446,18 +446,20 @@ view_type="form" view_mode="tree,form" id="act_marketing_campaing_segment_opened" - domain="[('campaign_id','=',active_id)]" + context="{'search_default_campaign_id': [active_id]}" /> - - - + - + diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 81834ebbdbf..4ae9f9e1ac8 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -360,15 +360,14 @@ - + - + diff --git a/addons/sale_journal/sale_journal_view.xml b/addons/sale_journal/sale_journal_view.xml index fd09f362000..f4305329d0d 100644 --- a/addons/sale_journal/sale_journal_view.xml +++ b/addons/sale_journal/sale_journal_view.xml @@ -303,7 +303,7 @@ @@ -311,7 +311,8 @@ @@ -319,7 +320,8 @@ @@ -327,7 +329,8 @@ @@ -335,7 +338,8 @@ diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index e80e9856023..0a741d4a3ff 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1851,8 +1851,7 @@ src_model="stock.location"/> - - - tree,form - - Date: Wed, 29 Sep 2010 13:35:01 +0530 Subject: [PATCH 2/3] [REMOVE]: mx.Date from trunk bzr revid: aag@tinyerp.co.in-20100929080501-j7hqsb3qfftp6qbo --- addons/account/report/account_report.py | 11 ++++----- .../account_report_aged_partner_balance.py | 16 ++++++------- addons/account_report/account.py | 3 --- ...ccount_report_print_indicators_with_pdf.py | 1 - addons/account_reporting/account.py | 3 --- .../wizard/base_calendar_set_exrule.py | 1 - addons/crm/crm_lead.py | 5 ++-- addons/crm/crm_opportunity.py | 1 - .../document_ics_config_wizard.py | 1 - .../report/attendance_by_month.py | 10 ++++---- addons/hr_attendance/report/timesheet.py | 20 +++++++++------- .../report/report_emp_salary_structure.py | 1 - .../report/report_employees_detail.py | 2 -- .../report/report_payroll_advice.py | 4 ++-- .../report/report_payroll_register.py | 4 ++-- addons/hr_payroll/report/report_payslip.py | 4 ++-- .../hr_payroll/report/report_year_salary.py | 2 -- addons/l10n_ch/report/bvr_report.py | 2 +- addons/l10n_ch/wizard/create_dta.py | 8 +++---- addons/mrp/report/workcenter_load.py | 12 ++++++---- addons/mrp_repair/mrp_repair.py | 9 ++++--- addons/project_planning/project_planning.py | 5 ++-- .../project_timesheet/report/task_report.py | 7 +++--- addons/stock_planning/stock_planning.py | 19 ++++++++------- .../wizard/stock_planning_create_periods.py | 24 +++++++++---------- addons/survey/survey.py | 6 ++--- 26 files changed, 86 insertions(+), 95 deletions(-) diff --git a/addons/account/report/account_report.py b/addons/account/report/account_report.py index 362d0adb414..b7d3441913f 100644 --- a/addons/account/report/account_report.py +++ b/addons/account/report/account_report.py @@ -20,9 +20,8 @@ ############################################################################## import time -import datetime -import mx.DateTime - +from datetime import datetime +from dateutil.relativedelta import relativedelta import pooler import tools from osv import fields,osv @@ -128,13 +127,13 @@ class report_aged_receivable(osv.osv): LIST_RANGES = [] if fy_id: fy_start_date = pool_obj_fy.read(cr, uid, fy_id, ['date_start'])['date_start'] - fy_start_date = mx.DateTime.strptime(fy_start_date, '%Y-%m-%d') - last_month_date = mx.DateTime.strptime(today, '%Y-%m-%d') - mx.DateTime.RelativeDateTime(months=1) + fy_start_date = datetime.strptime(fy_start_date, '%Y-%m-%d') + last_month_date = datetime.strptime(today, '%Y-%m-%d') - relativedelta(months=1) while (last_month_date > fy_start_date): LIST_RANGES.append(today + " to " + last_month_date.strftime('%Y-%m-%d')) today = (last_month_date- 1).strftime('%Y-%m-%d') - last_month_date = mx.DateTime.strptime(today, '%Y-%m-%d') - mx.DateTime.RelativeDateTime(months=1) + last_month_date = datetime.strptime(today, '%Y-%m-%d') - relativedelta(months=1) LIST_RANGES.append(today +" to " + fy_start_date.strftime('%Y-%m-%d')) cr.execute('delete from temp_range') diff --git a/addons/account/wizard/account_report_aged_partner_balance.py b/addons/account/wizard/account_report_aged_partner_balance.py index 99983654c82..10548095131 100644 --- a/addons/account/wizard/account_report_aged_partner_balance.py +++ b/addons/account/wizard/account_report_aged_partner_balance.py @@ -20,8 +20,8 @@ ############################################################################## import time -import datetime -from mx.DateTime import * +from datetime import datetime +from dateutil.relativedelta import relativedelta from lxml import etree from osv import osv, fields @@ -69,26 +69,26 @@ class account_aged_trial_balance(osv.osv_memory): if not data['form']['date_from']: raise osv.except_osv(_('UserError'), _('Enter a Start date !')) - start = datetime.date.fromtimestamp(time.mktime(time.strptime(data['form']['date_from'], "%Y-%m-%d"))) - start = DateTime(int(start.year), int(start.month), int(start.day)) + start = datetime.strptime(data['form']['date_from'], "%Y-%m-%d") + if data['form']['direction_selection'] == 'past': for i in range(5)[::-1]: - stop = start - RelativeDateTime(days=period_length) + stop = start - relativedelta(days=period_length) res[str(i)] = { 'name': (i!=0 and (str((5-(i+1)) * period_length) + '-' + str((5-i) * period_length)) or ('+'+str(4 * period_length))), 'stop': start.strftime('%Y-%m-%d'), 'start': (i!=0 and stop.strftime('%Y-%m-%d') or False), } - start = stop - RelativeDateTime(days=1) + start = stop - relativedelta(days=1) else: for i in range(5): - stop = start + RelativeDateTime(days=period_length) + stop = start + relativedelta(days=period_length) res[str(5-(i+1))] = { 'name' : (i!=4 and str((i) * period_length)+'-' + str((i+1) * period_length) or ('+'+str(4 * period_length))), 'start': start.strftime('%Y-%m-%d'), 'stop': (i!=4 and stop.strftime('%Y-%m-%d') or False), } - start = stop + RelativeDateTime(days=1) + start = stop + relativedelta(days=1) data['form'].update(res) return { diff --git a/addons/account_report/account.py b/addons/account_report/account.py index 5dffc0c6a78..6e5fbc94026 100644 --- a/addons/account_report/account.py +++ b/addons/account_report/account.py @@ -26,9 +26,6 @@ import pooler from tools.misc import currency from tools.translate import _ -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime - class account_report(osv.osv): _name = "account.report.report" diff --git a/addons/account_report/wizard/account_report_print_indicators_with_pdf.py b/addons/account_report/wizard/account_report_print_indicators_with_pdf.py index 9e71d3e88c9..2ae373e58f0 100644 --- a/addons/account_report/wizard/account_report_print_indicators_with_pdf.py +++ b/addons/account_report/wizard/account_report_print_indicators_with_pdf.py @@ -19,7 +19,6 @@ # ############################################################################## import time -from mx.DateTime import * import os import base64 import StringIO diff --git a/addons/account_reporting/account.py b/addons/account_reporting/account.py index c1c68f04d9b..7fc08401496 100644 --- a/addons/account_reporting/account.py +++ b/addons/account_reporting/account.py @@ -24,9 +24,6 @@ from osv import fields, osv from tools.misc import currency -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime - class color_rml(osv.osv): _name = "color.rml" diff --git a/addons/base_calendar/wizard/base_calendar_set_exrule.py b/addons/base_calendar/wizard/base_calendar_set_exrule.py index ab458c8f7f5..995d2a98dcc 100644 --- a/addons/base_calendar/wizard/base_calendar_set_exrule.py +++ b/addons/base_calendar/wizard/base_calendar_set_exrule.py @@ -23,7 +23,6 @@ from base_calendar import base_calendar from osv import fields, osv from tools.translate import _ import tools -import mx.DateTime import re diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 0a552a4165a..c15307530f1 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -23,7 +23,6 @@ from osv import fields, osv from datetime import datetime import crm import time -import mx.DateTime from tools.translate import _ from crm import crm_case import binascii @@ -84,12 +83,12 @@ class crm_lead(crm_case, osv.osv): new_dates = cal_obj.interval_get(cr, uid, lead.section_id.resource_calendar_id and lead.section_id.resource_calendar_id.id or False, - mx.DateTime.strptime(lead.create_date, '%Y-%m-%d %H:%M:%S'), + datetime.strptime(lead.create_date, '%Y-%m-%d %H:%M:%S'), duration, resource=resource_id ) no_days = [] - date_until = mx.DateTime.strptime(date_until, '%Y-%m-%d %H:%M:%S') + date_until = datetime.strptime(date_until, '%Y-%m-%d %H:%M:%S') for in_time, out_time in new_dates: if in_time.date not in no_days: no_days.append(in_time.date) diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py index 84e1392168f..771212a171d 100644 --- a/addons/crm/crm_opportunity.py +++ b/addons/crm/crm_opportunity.py @@ -24,7 +24,6 @@ from osv import fields,osv,orm from tools.translate import _ import crm import time -import mx.DateTime AVAILABLE_STATES = [ ('draft','Draft'), diff --git a/addons/document_ics/document_ics_config_wizard.py b/addons/document_ics/document_ics_config_wizard.py index 611c804a62c..51ccab59204 100644 --- a/addons/document_ics/document_ics_config_wizard.py +++ b/addons/document_ics/document_ics_config_wizard.py @@ -23,7 +23,6 @@ import time import tools from osv import fields, osv, orm import os -import mx.DateTime import base64 import pooler diff --git a/addons/hr_attendance/report/attendance_by_month.py b/addons/hr_attendance/report/attendance_by_month.py index 650df0048bf..a4a50f61320 100644 --- a/addons/hr_attendance/report/attendance_by_month.py +++ b/addons/hr_attendance/report/attendance_by_month.py @@ -19,9 +19,9 @@ # ############################################################################## -from mx import DateTime -from mx.DateTime import now import time +from datetime import datetime +from dateutil.relativedelta import relativedelta import datetime import netsvc import pooler @@ -31,7 +31,7 @@ from report.interface import toxml from report import report_sxw -one_day = DateTime.RelativeDateTime(days=1) +one_day = relativedelta(days=1) month2name = [0, 'January', 'February', 'March', 'April', 'May', 'Jun', 'July', 'August', 'September', 'October', 'November', 'December'] #def hour2str(h): @@ -57,7 +57,7 @@ class report_custom(report_rml): obj_emp = pooler.get_pool(cr.dbname).get('hr.employee') if context is None: context = {} - month = DateTime.DateTime(datas['form']['year'], datas['form']['month'], 1) + month = datetime(datas['form']['year'], datas['form']['month'], 1) emp_ids = context.get('active_ids', []) user_xml = ['%s' % month2name[month.month], '%s' % month.year] if emp_ids: @@ -89,7 +89,7 @@ class report_custom(report_rml): attendences.append({'name': tomor.strftime('%Y-%m-%d %H:%M:%S'), 'action':'sign_out'}) # sum up the attendances' durations for att in attendences: - dt = DateTime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') + dt = datetime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') if att['action'] == 'sign_out': wh += (dt - ldt).hours ldt = dt diff --git a/addons/hr_attendance/report/timesheet.py b/addons/hr_attendance/report/timesheet.py index 94dc1edcbbd..1465be81bc8 100644 --- a/addons/hr_attendance/report/timesheet.py +++ b/addons/hr_attendance/report/timesheet.py @@ -19,16 +19,16 @@ # ############################################################################## -from mx import DateTime -from mx.DateTime import now +from datetime import datetime +from dateutil.relativedelta import relativedelta import pooler from report.interface import report_rml from report.interface import toxml -one_week = DateTime.RelativeDateTime(days=7) +one_week = relativedelta(days=7) num2day = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] def to_hour(h): @@ -38,10 +38,12 @@ class report_custom(report_rml): def create_xml(self, cr, uid, ids, datas, context=None): obj_emp = pooler.get_pool(cr.dbname).get('hr.employee') - start_date = DateTime.strptime(datas['form']['init_date'], '%Y-%m-%d') - end_date = DateTime.strptime(datas['form']['end_date'], '%Y-%m-%d') - first_monday = start_date - DateTime.RelativeDateTime(days=start_date.day_of_week) - last_monday = end_date + DateTime.RelativeDateTime(days=7 - end_date.day_of_week) + + start_date = datetime.strptime(datas['form']['init_date'], '%Y-%m-%d') + end_date = datetime.strptime(datas['form']['end_date'], '%Y-%m-%d') + first_monday = start_date - relativedelta(days=start_date.day_of_week) + last_monday = end_date + relativedelta(days=7 - end_date.day_of_week) + if last_monday < first_monday: first_monday, last_monday = last_monday, first_monday @@ -67,7 +69,7 @@ class report_custom(report_rml): order by att.name ''' for idx in range(7): - cr.execute(sql, (monday.strftime('%Y-%m-%d %H:%M:%S'), (monday + DateTime.RelativeDateTime(days=idx+1)).strftime('%Y-%m-%d %H:%M:%S'), employee_id)) + cr.execute(sql, (monday.strftime('%Y-%m-%d %H:%M:%S'), (monday + relativedelta(days=idx+1)).strftime('%Y-%m-%d %H:%M:%S'), employee_id)) attendances = cr.dictfetchall() week_wh = {} # Fake sign ins/outs at week ends, to take attendances across week ends into account @@ -78,7 +80,7 @@ class report_custom(report_rml): attendances.append({'name': n_monday.strftime('%Y-%m-%d %H:%M:%S'), 'action': 'sign_out'}) # sum up the attendances' durations for att in attendances: - dt = DateTime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') + dt = datetime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') if att['action'] == 'sign_out': week_wh[ldt.day_of_week] = week_wh.get(ldt.day_of_week, 0) + (dt - ldt).hours ldt = dt diff --git a/addons/hr_payroll/report/report_emp_salary_structure.py b/addons/hr_payroll/report/report_emp_salary_structure.py index d4365a8423b..7deafcf63e4 100644 --- a/addons/hr_payroll/report/report_emp_salary_structure.py +++ b/addons/hr_payroll/report/report_emp_salary_structure.py @@ -23,7 +23,6 @@ ############################################################################## import time -import mx.DateTime from report import report_sxw from tools import amount_to_text_en diff --git a/addons/hr_payroll/report/report_employees_detail.py b/addons/hr_payroll/report/report_employees_detail.py index ca06af969e7..5a9f25afa9f 100644 --- a/addons/hr_payroll/report/report_employees_detail.py +++ b/addons/hr_payroll/report/report_employees_detail.py @@ -5,8 +5,6 @@ from report import report_sxw import time import pooler import rml_parse -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime class employees_salary_report(rml_parse.rml_parse): diff --git a/addons/hr_payroll/report/report_payroll_advice.py b/addons/hr_payroll/report/report_payroll_advice.py index 2f4d82c263b..1c7fbd91357 100644 --- a/addons/hr_payroll/report/report_payroll_advice.py +++ b/addons/hr_payroll/report/report_payroll_advice.py @@ -1,5 +1,5 @@ import time -import mx.DateTime +from datetime import datetime from report import report_sxw from tools import amount_to_text_en @@ -22,7 +22,7 @@ class payroll_advice_report(report_sxw.rml_parse): res = { 'mname':'' } - date = mx.DateTime.strptime(input_date, '%Y-%m-%d') + date = datetime.strptime(input_date, '%Y-%m-%d') res['mname']= date.strftime('%B')+'-'+date.strftime('%Y') return res diff --git a/addons/hr_payroll/report/report_payroll_register.py b/addons/hr_payroll/report/report_payroll_register.py index 6ab5b0c35c9..b146e2900af 100644 --- a/addons/hr_payroll/report/report_payroll_register.py +++ b/addons/hr_payroll/report/report_payroll_register.py @@ -1,5 +1,5 @@ import time -import mx.DateTime +from datetime import datetime from report import report_sxw from tools import amount_to_text_en @@ -56,7 +56,7 @@ class report_payroll_register(report_sxw.rml_parse): return self.net def get_month(self, indate): - new_date = mx.DateTime.strptime(indate, '%Y-%m-%d') + new_date = datetime.strptime(indate, '%Y-%m-%d') out_date = new_date.strftime('%B')+'-'+new_date.strftime('%Y') return out_date diff --git a/addons/hr_payroll/report/report_payslip.py b/addons/hr_payroll/report/report_payslip.py index 4fc9410861d..e818e0f3727 100755 --- a/addons/hr_payroll/report/report_payslip.py +++ b/addons/hr_payroll/report/report_payslip.py @@ -23,7 +23,7 @@ ############################################################################## import time -import mx.DateTime +from datetime import datetime from report import report_sxw from tools import amount_to_text_en @@ -93,7 +93,7 @@ class payslip_report(report_sxw.rml_parse): res = { 'mname':'' } - date = mx.DateTime.strptime(obj.date, '%Y-%m-%d') + date = datetime.strptime(obj.date, '%Y-%m-%d') res['mname']= date.strftime('%B')+"-"+date.strftime('%Y') return res['mname'] diff --git a/addons/hr_payroll/report/report_year_salary.py b/addons/hr_payroll/report/report_year_salary.py index 66cf05db601..31dae5abffe 100755 --- a/addons/hr_payroll/report/report_year_salary.py +++ b/addons/hr_payroll/report/report_year_salary.py @@ -5,8 +5,6 @@ from report import report_sxw import time import pooler import rml_parse -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime class year_salary_report(rml_parse.rml_parse): diff --git a/addons/l10n_ch/report/bvr_report.py b/addons/l10n_ch/report/bvr_report.py index 646806b202f..e0c7ca624a5 100644 --- a/addons/l10n_ch/report/bvr_report.py +++ b/addons/l10n_ch/report/bvr_report.py @@ -35,7 +35,7 @@ import os import sys import shutil import time -from mx.DateTime import * +from datetime import datetime from report import report_sxw from tools import mod10r diff --git a/addons/l10n_ch/wizard/create_dta.py b/addons/l10n_ch/wizard/create_dta.py index 8bde159013a..d3e2856387d 100644 --- a/addons/l10n_ch/wizard/create_dta.py +++ b/addons/l10n_ch/wizard/create_dta.py @@ -31,7 +31,7 @@ ############################################################################## import time -import mx.DateTime +from datetime import datetime import base64 from osv import osv, fields @@ -469,11 +469,11 @@ def _create_dta(obj, cr, uid, data, context=None): 'on line: ' + pline.name) if pline.order_id.date_scheduled: - date_value = mx.DateTime.strptime(pline.order_id.date_scheduled, '%Y-%m-%d') + date_value = datetime.strptime(pline.order_id.date_scheduled, '%Y-%m-%d') elif pline.date: - date_value = mx.DateTime.strptime(pline.date, '%Y-%m-%d') + date_value = datetime.strptime(pline.date, '%Y-%m-%d') else: - date_value = mx.DateTime.now() + date_value = datetime.now() v['date_value'] = date_value.strftime("%y%m%d") # si compte iban -> iban (836) diff --git a/addons/mrp/report/workcenter_load.py b/addons/mrp/report/workcenter_load.py index 473dedd9d1a..15e94bd6f4c 100644 --- a/addons/mrp/report/workcenter_load.py +++ b/addons/mrp/report/workcenter_load.py @@ -23,8 +23,12 @@ from report.render import render from report.interface import report_int from pychart import * from mx.DateTime import * +import time +from datetime import datetime +from dateutil.relativedelta import relativedelta + from report.misc import choice_colors -import time, mx + import random import StringIO @@ -62,8 +66,8 @@ class report_custom(report_int): months = {1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"} dates[i] = { 'name' :months[month], - 'start':(Date(year, month, 2) + RelativeDateTime(day=1)).strftime('%Y-%m-%d'), - 'stop' :(Date(year, month, 2) + RelativeDateTime(day=-1)).strftime('%Y-%m-%d'), + 'start':(datetime.date(year, month, 2) + relativedelta(day=1)).strftime('%Y-%m-%d'), + 'stop' :(datetime.date(year, month, 2) + relativedelta(day=-1)).strftime('%Y-%m-%d'), } return dates elif time_unit == 'week': @@ -90,7 +94,7 @@ class report_custom(report_int): 'start':i.strftime('%Y-%m-%d'), 'stop' :i.strftime('%Y-%m-%d'), } - i = i + RelativeDateTime(days=+1) + i = i + relativedelta(days=+1) return dates return {} diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index 7aafee1a447..af88c32f42a 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -21,8 +21,8 @@ from osv import fields,osv import netsvc -import mx.DateTime -from mx.DateTime import RelativeDateTime, today +from datetime import datetime, date +from dateutil.relativedelta import relativedelta from tools.translate import _ import decimal_precision as dp @@ -222,8 +222,7 @@ class mrp_repair(osv.osv): if move_id: move = self.pool.get('stock.move').browse(cr, uid, move_id) product = self.pool.get('product.product').browse(cr, uid, prod_id) - date = move.date_planned - limit = mx.DateTime.strptime(date, '%Y-%m-%d %H:%M:%S') + RelativeDateTime(months=product.warranty) + limit = datetime.strptime(move.date_planned, '%Y-%m-%d %H:%M:%S') + relativedelta(months=product.warranty) data['value']['guarantee_limit'] = limit.strftime('%Y-%m-%d') data['value']['location_id'] = move.location_dest_id.id data['value']['location_dest_id'] = move.location_dest_id.id @@ -688,7 +687,7 @@ class mrp_repair_line(osv.osv, ProductChangeMixin): if type == 'add': stock_id = self.pool.get('stock.location').search(cr, uid, [('name','=','Stock')])[0] to_invoice = False - if guarantee_limit and today() > mx.DateTime.strptime(guarantee_limit, '%Y-%m-%d'): + if guarantee_limit and date.today() > datetime.strptime(guarantee_limit, '%Y-%m-%d'): to_invoice=True return {'value': { 'to_invoice': to_invoice, diff --git a/addons/project_planning/project_planning.py b/addons/project_planning/project_planning.py index 2044772e6cc..729a8ee6bbb 100644 --- a/addons/project_planning/project_planning.py +++ b/addons/project_planning/project_planning.py @@ -21,7 +21,8 @@ ############################################################################## import time -import mx.DateTime +from datetime import datetime +from dateutil.relativedelta import relativedelta from osv import fields, osv from tools.translate import _ @@ -139,7 +140,7 @@ class report_account_analytic_planning(osv.osv): } _defaults = { 'date_from': time.strftime('%Y-%m-01'), - 'date_to': (mx.DateTime.now()+mx.DateTime.RelativeDateTime(months=1, day=1, days=-1)).strftime('%Y-%m-%d'), + 'date_to': (datetime.now()+relativedelta(months=1, day=1, days=-1)).strftime('%Y-%m-%d'), 'user_id': lambda self, cr, uid, c: uid, 'state': 'draft', 'business_days': 20, diff --git a/addons/project_timesheet/report/task_report.py b/addons/project_timesheet/report/task_report.py index ea454519394..261f4e17c64 100644 --- a/addons/project_timesheet/report/task_report.py +++ b/addons/project_timesheet/report/task_report.py @@ -18,7 +18,8 @@ # along with this program. If not, see . # ############################################################################## -import mx.DateTime +from datetime import datetime +from dateutil.relativedelta import relativedelta from osv import fields,osv import tools @@ -31,7 +32,7 @@ class report_timesheet_task_user(osv.osv): def _get_task_hours(self, cr, uid, ids, name,args,context): result = {} for record in self.browse(cr, uid, ids,context): - last_date = mx.DateTime.strptime(record.name, '%Y-%m-%d') + mx.DateTime.RelativeDateTime(months=1) - 1 + last_date = datetime(record.name, '%Y-%m-%d') + relativedelta(months=1) - 1 task_obj=self.pool.get('project.task.work') task_ids = task_obj.search(cr, uid, [('user_id','=',record.user_id.id),('date','>=',record.name),('date','<=',last_date.strftime('%Y-%m-%d'))]) tsk_hrs = task_obj.read(cr, uid, task_ids, ['hours','date','user_id']) @@ -45,7 +46,7 @@ class report_timesheet_task_user(osv.osv): result = {} sum = 0.0 for record in self.browse(cr, uid, ids, context): - last_date = mx.DateTime.strptime(record.name, '%Y-%m-%d') + mx.DateTime.RelativeDateTime(months=1) - 1 + last_date = datetime.strptime(record.name, '%Y-%m-%d') + relativedelta(months=1) - 1 obj=self.pool.get('hr_timesheet_sheet.sheet.day') sheet_ids = obj.search(cr, uid, [('sheet_id.user_id','=',record.user_id.id),('name','>=',record.name),('name','<=',last_date.strftime('%Y-%m-%d'))]) data_days = obj.read(cr, uid, sheet_ids, ['name','sheet_id.user_id','total_attendance']) diff --git a/addons/stock_planning/stock_planning.py b/addons/stock_planning/stock_planning.py index f6668130415..9d08fe3077e 100644 --- a/addons/stock_planning/stock_planning.py +++ b/addons/stock_planning/stock_planning.py @@ -20,8 +20,8 @@ ############################################################################## import time -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime +from datetime import datetime +from dateutil.relativedelta import relativedelta from osv import osv, fields import netsvc @@ -538,14 +538,14 @@ class stock_planning(osv.osv): return res / product.uom_id.factor, uom.rounding def calculate_planning(self, cr, uid, ids, context, *args): - one_minute = RelativeDateTime(minutes=1) - current_date_beginning_c = mx.DateTime.today() - current_date_end_c = current_date_beginning_c + RelativeDateTime(days=1, minutes=-1) # to get hour 23:59:00 + one_minute = relativedelta(minutes=1) + current_date_beginning_c = datetime.today() + current_date_end_c = current_date_beginning_c + relativedelta(days=1, minutes=-1) # to get hour 23:59:00 current_date_beginning = current_date_beginning_c.strftime('%Y-%m-%d %H:%M:%S') current_date_end = current_date_end_c.strftime('%Y-%m-%d %H:%M:%S') for val in self.browse(cr, uid, ids, context=context): - day = mx.DateTime.strptime(val.period_id.date_start, '%Y-%m-%d %H:%M:%S') - dbefore = mx.DateTime.DateTime(day.year, day.month, day.day) - one_minute + day = datetime.strptime(val.period_id.date_start, '%Y-%m-%d %H:%M:%S') + dbefore = datetime(day.year, day.month, day.day) - one_minute day_before_calculated_period = dbefore.strftime('%Y-%m-%d %H:%M:%S') # one day before start of calculated period cr.execute("SELECT date_start \ FROM stock_period AS period \ @@ -556,8 +556,9 @@ class stock_planning(osv.osv): date = cr.fetchone() start_date_current_period = date and date[0] or False start_date_current_period = start_date_current_period or current_date_beginning - day = mx.DateTime.strptime(start_date_current_period, '%Y-%m-%d %H:%M:%S') - dbefore = mx.DateTime.DateTime(day.year, day.month, day.day) - one_minute + + day = datetime.strptime(start_date_current_period, '%Y-%m-%d %H:%M:%S') + dbefore = datetime.datetime(day.year, day.month, day.day) - one_minute date_for_start = dbefore.strftime('%Y-%m-%d %H:%M:%S') # one day before current period already_out = self._get_in_out(cr, uid, val, start_date_current_period, current_date_end, direction='out', done=True, context=context), already_in = self._get_in_out(cr, uid, val, start_date_current_period, current_date_end, direction='in', done=True, context=context), diff --git a/addons/stock_planning/wizard/stock_planning_create_periods.py b/addons/stock_planning/wizard/stock_planning_create_periods.py index 61e699c84f7..12e0d56e755 100644 --- a/addons/stock_planning/wizard/stock_planning_create_periods.py +++ b/addons/stock_planning/wizard/stock_planning_create_periods.py @@ -20,8 +20,8 @@ ############################################################################## import time -import mx.DateTime -from mx.DateTime import RelativeDateTime, now, DateTime, localtime +from datetime import datetime +from dateutil.relativedelta import relativedelta from osv import osv, fields @@ -35,10 +35,10 @@ class stock_period_createlines(osv.osv_memory): result = cr.fetchone() last_date = result and result[0] or False if last_date: - period_start = mx.DateTime.strptime(last_date,"%Y-%m-%d %H:%M:%S")+ RelativeDateTime(days=1) - period_start = period_start - RelativeDateTime(hours=period_start.hour, minutes=period_start.minute, seconds=period_start.second) + period_start = datetime(last_date,"%Y-%m-%d %H:%M:%S")+ relativedelta(days=1) + period_start = period_start - relativedelta(hours=period_start.hour, minutes=period_start.minute, seconds=period_start.second) else: - period_start = mx.DateTime.today() + period_start = datetime.today() return period_start.strftime('%Y-%m-%d') @@ -59,35 +59,35 @@ class stock_period_createlines(osv.osv_memory): lines = [] for p in self.browse(cr, uid, ids, context=context): dt = p.date_start - ds = mx.DateTime.strptime(p.date_start, '%Y-%m-%d') + ds = datetime.strptime(p.date_start, '%Y-%m-%d') while ds.strftime('%Y-%m-%d') < p.date_stop: if name =='Daily': - de = ds + RelativeDateTime(days=interval, minutes =-1) + de = ds + relativedelta(days=interval, minutes =-1) new_name = de.strftime('%Y-%m-%d') new_id = period_obj.create(cr, uid, { 'name': new_name, 'date_start': ds.strftime('%Y-%m-%d'), 'date_stop': de.strftime('%Y-%m-%d %H:%M:%S'), }) - ds = ds + RelativeDateTime(days=interval) + 1 + ds = ds + relativedelta(days=interval) + 1 if name =="Weekly": - de = ds + RelativeDateTime(days=interval, minutes =-1) + de = ds + relativedelta(days=interval, minutes =-1) new_name = de.strftime('%Y, week %W') new_id = period_obj.create(cr, uid, { 'name': new_name, 'date_start': ds.strftime('%Y-%m-%d'), 'date_stop': de.strftime('%Y-%m-%d %H:%M:%S'), }) - ds = ds + RelativeDateTime(days=interval) + 1 + ds = ds + relativedelta(days=interval) + 1 if name == "Monthly": - de = ds + RelativeDateTime(months=interval, minutes=-1) + de = ds + relativedelta(months=interval, minutes=-1) new_name = ds.strftime('%Y/%m') new_id =period_obj.create(cr, uid, { 'name': new_name, 'date_start': ds.strftime('%Y-%m-%d'), 'date_stop': de.strftime('%Y-%m-%d %H:%M:%S'), }) - ds = ds + RelativeDateTime(months=interval) + ds = ds + relativedelta(months=interval) lines.append(new_id) return { 'domain': "[('id','in', ["+','.join(map(str, lines))+"])]", diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 61d96f792f8..57a78e9ac5d 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -27,9 +27,9 @@ import netsvc from tools.translate import _ from time import strftime -import datetime +from datetime import datetime +from dateutil.relativedelta import relativedelta import copy -from mx.DateTime import * import os class survey_type(osv.osv): @@ -694,7 +694,7 @@ class survey_request(osv.osv): } _defaults = { 'state': lambda * a: 'draft', -# 'date_deadline': lambda * a : (now() + RelativeDateTime(months=+1)).strftime("%Y-%m-%d %H:%M:%S") +# 'date_deadline': lambda * a : (datetime.now() + relativedelta(months=+1)).strftime("%Y-%m-%d %H:%M:%S") } def survey_req_waiting_answer(self, cr, uid, ids, arg): self.write(cr, uid, ids, { 'state' : 'waiting_answer'}) From f78b03a134690db4f722bd3e490f83964a17ff7f Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Wed, 29 Sep 2010 14:13:40 +0200 Subject: [PATCH 3/3] [IMP] resource: performance improvement: created a 'resource.calendar' interval_get_multi which takes a list of tuples instead of single arguments 'interval_get' is not removed and now uses the multi method to avoid duplicated code bzr revid: olt@tinyerp.com-20100929121340-g9hpmkavpguizajg --- addons/mrp_operations/mrp_operations.py | 14 ++-- addons/resource/resource.py | 99 ++++++++++++++++--------- 2 files changed, 72 insertions(+), 41 deletions(-) diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py index 919f65903ae..52a8a81cb49 100644 --- a/addons/mrp_operations/mrp_operations.py +++ b/addons/mrp_operations/mrp_operations.py @@ -62,26 +62,30 @@ class mrp_production_workcenter_line(osv.osv): else: res[op.id]=False return res - + def _get_date_end(self, cr, uid, ids, field_name, arg, context): """ Finds ending date. @return: Dictionary of values. """ + ops = self.browse(cr, uid, ids, context=context) + date_and_hours_by_cal = [(op.date_planned, op.hour, op.workcenter_id.calendar_id.id) for op in ops] + intervals = self.pool.get('resource.calendar').interval_get_multi(cr, uid, date_and_hours_by_cal) + res = {} - for op in self.browse(cr, uid, ids, context=context): + for op in ops: res[op.id] = False if op.date_planned: d = DateTime.strptime(op.date_planned,'%Y-%m-%d %H:%M:%S') - i = self.pool.get('resource.calendar').interval_get(cr, uid, op.workcenter_id.calendar_id.id or False, d, op.hour or 0.0) + i = intervals[(op.date_planned, op.hour, op.workcenter_id.calendar_id.id)] if i: res[op.id] = i[-1][1].strftime('%Y-%m-%d %H:%M:%S') else: res[op.id] = op.date_planned return res - + _inherit = 'mrp.production.workcenter.line' _order = "sequence, date_planned" - + _columns = { 'state': fields.selection([('draft','Draft'),('startworking', 'In Progress'),('pause','Pause'),('cancel','Cancelled'),('done','Finished')],'State', readonly=True, help="* When a work order is created it is set in 'Draft' state.\n" \ diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 4a2ff3e34dd..24efc179c03 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -20,12 +20,17 @@ ############################################################################## from datetime import datetime, timedelta +from mx import DateTime import math from faces import * from new import classobj from osv import fields, osv from tools.translate import _ +from itertools import groupby +from operator import itemgetter + + class resource_calendar(osv.osv): _name = "resource.calendar" _description = "Resource Calendar" @@ -44,11 +49,12 @@ class resource_calendar(osv.osv): dt_leave = [] resource_leave_ids = resource_cal_leaves.search(cr, uid, [('calendar_id','=',id), '|', ('resource_id','=',False), ('resource_id','=',resource)]) - res_leaves = resource_cal_leaves.read(cr, uid, resource_leave_ids, ['date_from', 'date_to']) + #res_leaves = resource_cal_leaves.read(cr, uid, resource_leave_ids, ['date_from', 'date_to']) + res_leaves = resource_cal_leaves.browse(cr, uid, resource_leave_ids) for leave in res_leaves: - dtf = datetime.strptime(leave['date_from'], '%Y-%m-%d %H:%M:%S') - dtt = datetime.strptime(leave['date_to'], '%Y-%m-%d %H:%M:%S') + dtf = datetime.strptime(leave.date_from, '%Y-%m-%d %H:%M:%S') + dtt = datetime.strptime(leave.date_to, '%Y-%m-%d %H:%M:%S') no = dtt - dtf [dt_leave.append((dtf + timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(no.days + 1))] dt_leave.sort() @@ -92,40 +98,61 @@ class resource_calendar(osv.osv): result.reverse() return result + # def interval_get(self, cr, uid, id, dt_from, hours, resource=False, byday=True): + def interval_get_multi(self, cr, uid, date_and_hours_by_cal, resource=False, byday=True): + def group(lst, key): + lst.sort(key=itemgetter(key)) + grouped = groupby(lst, itemgetter(key)) + return dict([(k, [v for v in itr]) for k, itr in grouped]) + # END group + + cr.execute("select calendar_id, dayofweek, hour_from, hour_to from resource_calendar_attendance order by hour_from") + hour_res = cr.dictfetchall() + hours_by_cal = group(hour_res, 'calendar_id') + + results = {} + + for d, hours, id in date_and_hours_by_cal: + dt_from = DateTime.strptime(d, '%Y-%m-%d %H:%M:%S') + if not id: + td = int(hours)*3 + results[(d, hours, id)] = [(dt_from, dt_from + timedelta(hours=td))] + continue + + dt_leave = self._get_leaves(cr, uid, id, resource) + todo = hours + result = [] + maxrecur = 100 + current_hour = dt_from.hour + while (todo>0) and maxrecur: + for (hour_from,hour_to) in [(item['hour_from'], item['hour_to']) for item in hours_by_cal[id] if item['dayofweek'] == str(dt_from.weekday())]: + leave_flag = False + if (hour_to>current_hour) and (todo>0): + m = max(hour_from, current_hour) + if (hour_to-m)>todo: + hour_to = m+todo + dt_check = dt_from.strftime('%Y-%m-%d') + for leave in dt_leave: + if dt_check == leave: + dt_check = datetime.strptime(dt_check, '%Y-%m-%d') + timedelta(days=1) + leave_flag = True + if leave_flag: + break + else: + d1 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(m)), int((m%1) * 60)) + d2 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(hour_to)), int((hour_to%1) * 60)) + result.append((d1, d2)) + current_hour = hour_to + todo -= (hour_to - m) + dt_from += timedelta(days=1) + current_hour = 0 + maxrecur -= 1 + results[(d, hours, id)] = result + return results + def interval_get(self, cr, uid, id, dt_from, hours, resource=False, byday=True): - if not id: - td = int(hours)*3 - return [(dt_from, dt_from + timedelta(hours=td))] - dt_leave = self._get_leaves(cr, uid, id, resource) - todo = hours - result = [] - maxrecur = 100 - current_hour = dt_from.hour - while (todo>0) and maxrecur: - cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.weekday(),id)) - for (hour_from,hour_to) in cr.fetchall(): - leave_flag = False - if (hour_to>current_hour) and (todo>0): - m = max(hour_from, current_hour) - if (hour_to-m)>todo: - hour_to = m+todo - dt_check = dt_from.strftime('%Y-%m-%d') - for leave in dt_leave: - if dt_check == leave: - dt_check = datetime.strptime(dt_check, '%Y-%m-%d') + timedelta(days=1) - leave_flag = True - if leave_flag: - break - else: - d1 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(m)), int((m%1) * 60)) - d2 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(hour_to)), int((hour_to%1) * 60)) - result.append((d1, d2)) - current_hour = hour_to - todo -= (hour_to - m) - dt_from += timedelta(days=1) - current_hour = 0 - maxrecur -= 1 - return result + res = self.interval_get_multi(cr, uid, [(dt_from.strftime('%Y-%m-%d %H:%M:%S'), hours, id)], resource, byday)[(dt_from.strftime('%Y-%m-%d %H:%M:%S'), hours, id)] + return res def interval_hours_get(self, cr, uid, id, dt_from, dt_to, resource=False): if not id: