Khushbu Modi(openerp) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-polish2_improve_testcase_yml_project_issue-kmo
into lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-polish2_improve_testcase_yml_project_issue-kmo/+merge/83607
Hello
=========Project_issue=========
* Added draft2open2close.yml.
* Added cancel_issue.yml.
* Added subscribe_issue.yml.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-polish2_improve_testcase_yml_project_issue-kmo/+merge/83607
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-polish2_improve_testcase_yml_project_issue-kmo.
=== modified file 'project/project.py'
--- project/project.py 2011-11-23 13:31:32 +0000
+++ project/project.py 2011-11-28 13:36:48 +0000
@@ -25,7 +25,6 @@
from tools.translate import _
from osv import fields, osv
-from resource.faces import task as Task
# I think we can remove this in v6.1 since VMT's improvements in the framework ?
#class project_project(osv.osv):
@@ -143,7 +142,6 @@
'project.task': (_get_project_task, ['planned_hours', 'effective_hours', 'remaining_hours', 'total_hours', 'progress', 'delay_hours','state'], 10),
}),
'effective_hours': fields.function(_progress_rate, multi="progress", string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects."),
- 'resource_calendar_id': fields.many2one('resource.calendar', 'Working Time', help="Timetable working hours to adjust the gantt diagram report", states={'close':[('readonly',True)]} ),
'total_hours': fields.function(_progress_rate, multi="progress", string='Total Time', help="Sum of total hours of all tasks related to this project and its child projects.",
store = {
'project.project': (lambda self, cr, uid, ids, c={}: ids, ['tasks'], 10),
@@ -310,105 +308,6 @@
self.setActive(cr, uid, child_ids, value, context=None)
return True
- def _schedule_header(self, cr, uid, ids, force_members=True, context=None):
- context = context or {}
- if type(ids) in (long, int,):
- ids = [ids]
- projects = self.browse(cr, uid, ids, context=context)
-
- for project in projects:
- if (not project.members) and force_members:
- raise osv.except_osv(_('Warning !'),_("You must assign members on the project '%s' !") % (project.name,))
-
- resource_pool = self.pool.get('resource.resource')
-
- result = "from resource.faces import *\n"
- result += "import datetime\n"
- for project in self.browse(cr, uid, ids, context=context):
- u_ids = [i.id for i in project.members]
- if project.user_id and (project.user_id.id not in u_ids):
- u_ids.append(project.user_id.id)
- for task in project.tasks:
- if task.state in ('done','cancelled'):
- continue
- if task.user_id and (task.user_id.id not in u_ids):
- u_ids.append(task.user_id.id)
- calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
- resource_objs = resource_pool.generate_resources(cr, uid, u_ids, calendar_id, context=context)
- for key, vals in resource_objs.items():
- result +='''
-class User_%s(Resource):
- efficiency = %s
-''' % (key, vals.get('efficiency', False))
-
- result += '''
-def Project():
- '''
- return result
-
- def _schedule_project(self, cr, uid, project, context=None):
- resource_pool = self.pool.get('resource.resource')
- calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
- working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context)
- # TODO: check if we need working_..., default values are ok.
- puids = [x.id for x in project.members]
- if project.user_id:
- puids.append(project.user_id.id)
- result = """
- def Project_%d():
- start = \'%s\'
- working_days = %s
- resource = %s
-""" % (
- project.id,
- project.date_start, working_days,
- '|'.join(['User_'+str(x) for x in puids])
- )
- vacation = calendar_id and tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) or False
- if vacation:
- result+= """
- vacation = %s
-""" % ( vacation, )
- return result
-
- #TODO: DO Resource allocation and compute availability
- def compute_allocation(self, rc, uid, ids, start_date, end_date, context=None):
- if context == None:
- context = {}
- allocation = {}
- return allocation
-
- def schedule_tasks(self, cr, uid, ids, context=None):
- context = context or {}
- if type(ids) in (long, int,):
- ids = [ids]
- projects = self.browse(cr, uid, ids, context=context)
- result = self._schedule_header(cr, uid, ids, False, context=context)
- for project in projects:
- result += self._schedule_project(cr, uid, project, context=context)
- result += self.pool.get('project.task')._generate_task(cr, uid, project.tasks, ident=4, context=context)
-
- local_dict = {}
- exec result in local_dict
- projects_gantt = Task.BalancedProject(local_dict['Project'])
-
- for project in projects:
- project_gantt = getattr(projects_gantt, 'Project_%d' % (project.id,))
- for task in project.tasks:
- if task.state in ('done','cancelled'):
- continue
-
- p = getattr(project_gantt, 'Task_%d' % (task.id,))
-
- self.pool.get('project.task').write(cr, uid, [task.id], {
- 'date_start': p.start.strftime('%Y-%m-%d %H:%M:%S'),
- 'date_end': p.end.strftime('%Y-%m-%d %H:%M:%S')
- }, context=context)
- if (not task.user_id) and (p.booked_resource):
- self.pool.get('project.task').write(cr, uid, [task.id], {
- 'user_id': int(p.booked_resource[0].name[5:]),
- }, context=context)
- return True
project()
class users(osv.osv):
@@ -424,6 +323,7 @@
_log_create = True
_date_name = "date_start"
+<<<<<<< TREE
def _resolve_project_id_from_context(self, cr, uid, context=None):
"""Return ID of project based on the value of 'project_id'
@@ -480,6 +380,8 @@
}
+=======
+>>>>>>> MERGE-SOURCE
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
obj_project = self.pool.get('project.project')
for domain in args:
@@ -789,7 +691,6 @@
Close Task
"""
request = self.pool.get('res.request')
- if not isinstance(ids,list): ids = [ids]
for task in self.browse(cr, uid, ids, context=context):
vals = {}
project = task.project_id
@@ -864,7 +765,6 @@
return True
def do_open(self, cr, uid, ids, context={}):
- if not isinstance(ids,list): ids = [ids]
tasks= self.browse(cr, uid, ids, context=context)
for t in tasks:
data = {'state': 'open'}
@@ -995,33 +895,6 @@
res = super(task, self).unlink(cr, uid, ids, context)
return res
- def _generate_task(self, cr, uid, tasks, ident=4, context=None):
- context = context or {}
- result = ""
- ident = ' '*ident
- for task in tasks:
- if task.state in ('done','cancelled'):
- continue
- result += '''
-%sdef Task_%s():
-%s todo = \"%.2fH\"
-%s effort = \"%.2fH\"''' % (ident,task.id, ident,task.remaining_hours, ident,task.total_hours)
- start = []
- for t2 in task.parent_ids:
- start.append("up.Task_%s.end" % (t2.id,))
- if start:
- result += '''
-%s start = max(%s)
-''' % (ident,','.join(start))
-
- if task.user_id:
- result += '''
-%s resource = %s
-''' % (ident, 'User_'+str(task.user_id.id))
-
- result += "\n"
- return result
-
task()
class project_work(osv.osv):
=== modified file 'project_issue/__openerp__.py'
--- project_issue/__openerp__.py 2011-10-11 20:05:49 +0000
+++ project_issue/__openerp__.py 2011-11-28 13:36:48 +0000
@@ -54,8 +54,9 @@
],
'demo_xml': ['project_issue_demo.xml'],
'test': [
- 'test/convert_issue_to_task.yml',
- 'test/test_project_issue_states.yml'
+ 'test/subscribe_issue.yml',
+ 'test/draft2open2close.yml',
+ 'test/cancel_issue.yml',
],
'installable': True,
'active': False,
=== modified file 'project_issue/project_issue.py'
--- project_issue/project_issue.py 2011-11-16 13:17:24 +0000
+++ project_issue/project_issue.py 2011-11-28 13:36:48 +0000
@@ -294,7 +294,6 @@
data_obj = self.pool.get('ir.model.data')
task_obj = self.pool.get('project.task')
-
if context is None:
context = {}
@@ -314,11 +313,10 @@
'description':bug.description,
'date': bug.date,
'project_id': bug.project_id.id,
- 'priority': bug.priority,
+ 'priority': tools.ustr(int(bug.priority) - 1),
'user_id': bug.user_id.id,
'planned_hours': 0.0,
})
-
vals = {
'task_id': new_task_id,
'state':'pending'
=== removed file 'project_issue/test/convert_issue_to_task.yml'
--- project_issue/test/convert_issue_to_task.yml 2011-10-16 01:28:00 +0000
+++ project_issue/test/convert_issue_to_task.yml 1970-01-01 00:00:00 +0000
@@ -1,32 +0,0 @@
--
- Create an issue
--
- !record {model: project.issue, id: project_issue_onchangeevent0}:
- categ_id: project_issue.bug_categ
- name: on_change event does not pass context to the method
- project_id: project.project_project_22
- working_hours_close: 0.0
- working_hours_open: 0.0
-
--
- Check there is no task attached to issue
--
- !assert {model: project.issue, id: project_issue_onchangeevent0, string: There must not be any task attached to issue}:
- - task_id.id == False
-
--
- Convert issue to task
--
- !python {model: project.issue}: |
- self.convert_issue_task(cr, uid, [ref("project_issue_onchangeevent0")],
- {"lang": "en_US", "project_id": False, "tz": False, "active_model": "ir.ui.menu",
- "department_id": False, "section_id": False, "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "active_ids": [ref("project_issue.menu_project_issue_track")], "active_id":
- ref("project_issue.menu_project_issue_track"), })
-
--
- Check there is a task attached to issue
--
- !assert {model: project.issue, id: project_issue_onchangeevent0, string: After creating a task for the issue there must be a task attached to it}:
- - task_id.id != False
=== removed file 'project_issue/test/test_project_issue_states.yml'
--- project_issue/test/test_project_issue_states.yml 2011-10-16 01:28:00 +0000
+++ project_issue/test/test_project_issue_states.yml 1970-01-01 00:00:00 +0000
@@ -1,112 +0,0 @@
--
- Create an issue
--
- !record {model: project.issue, id: project_issue_stockmovedates0}:
- categ_id: project_issue.bug_categ
- name: Stock Move dates
- project_id: project.project_project_22
- working_hours_close: 0.0
- working_hours_open: 0.0
--
- Check if issue in 'draft' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in draft state}:
- - state == 'draft'
-
--
- Open the issue
--
- !python {model: project.issue}: |
- self.case_open(cr, uid, [ref("project_issue_stockmovedates0")], {"lang":
- "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")], "tz":
- False, "active_model": "ir.ui.menu", "search_default_project_id": False, "search_default_my_bugs":
- 1, "search_default_user_id": 1, "search_default_current_bugs": 1, "project_id":
- False, "active_id": ref("project_issue.menu_project_issue_track"), })
--
- Check if issue in 'open' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in open state}:
- - state == 'open'
-
--
- Keep issue pending
--
- !python {model: project.issue}: |
- self.case_pending(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'pending' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in pending state}:
- - state == 'pending'
-
-
--
- Open the issue
--
- !python {model: project.issue}: |
- self.case_open(cr, uid, [ref("project_issue_stockmovedates0")], {"lang":
- "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")], "tz":
- False, "active_model": "ir.ui.menu", "search_default_project_id": False, "search_default_my_bugs":
- 1, "search_default_user_id": 1, "search_default_current_bugs": 1, "project_id":
- False, "active_id": ref("project_issue.menu_project_issue_track"), })
--
- Check if issue in 'open' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in open state}:
- - state == 'open'
-
-
--
- Cancel the issue
--
- !python {model: project.issue}: |
- self.case_cancel(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'cancel' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in cancel state}:
- - state == 'cancel'
-
-
--
- Reset the issue
--
- !python {model: project.issue}: |
- self.case_reset(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'draft' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in draft state}:
- - state == 'draft'
-
-
--
- Close the issue
--
- !python {model: project.issue}: |
- self.case_close(cr, uid, [ref("project_issue_stockmovedates0")],
- {"lang": "en_US", "active_ids": [ref("project_issue.menu_project_issue_track")],
- "tz": False, "active_model": "ir.ui.menu", "search_default_project_id":
- False, "search_default_my_bugs": 1, "search_default_user_id": 1, "search_default_current_bugs":
- 1, "project_id": False, "active_id": ref("project_issue.menu_project_issue_track"),
- })
--
- Check if issue in 'done' state
--
- !assert {model: project.issue, id: project_issue_stockmovedates0, severity: error, string: Issue is in done state}:
- - state == 'done'
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp