[IMP] hr_attendance: sign in out wizard

[IMP] project_scrum: add translation message

bzr revid: mra@mra-laptop-20100810044151-yzl9iogokxckqfyh
This commit is contained in:
PSI(OpenERP) 2010-08-10 10:11:51 +05:30 committed by Mustufa Rangwala
parent a4b4a79226
commit ebb9370343
6 changed files with 113 additions and 39 deletions

View File

@ -149,8 +149,8 @@ class hr_sign_in_out(osv.osv_memory):
if cond:
return self.sign_out(cr, uid, data, context)
else:
model_data_ids = att_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_hr_attendance_si_ask')], context=context)
resource_id = att_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
model_data_ids = obj_model.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_hr_attendance_si_ask')], context=context)
resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
return {
'name': _('Sign in / Sign out'),
'view_type': 'form',

View File

@ -28,7 +28,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Sign in / Sign out">
<label string="Sign-Out Entry must follow Sign-In." colspan="4" />
<separator string="Sign-Out Entry must follow Sign-In." colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Ok"/>
</group>
@ -60,6 +60,7 @@
<field name="name" />
<field name="last_time" string="Your last sign out" />
</group>
<separator colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-go-back" string="Sign in" name="sign_in" type="object"/>
@ -79,6 +80,7 @@
<field name="name" />
<field name="last_time" string="Your last sign in" />
</group>
<separator colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-go-back" string="Sign out" name="sign_out" type="object"/>

View File

@ -2,12 +2,13 @@
# This file contains the translation of the following modules:
# * project_scrum
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01:52+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"PO-Revision-Date: 2010-08-09 18:42:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -1199,7 +1200,36 @@ msgid "Expected End"
msgstr ""
#. module: project_scrum
#: field:project.scrum.project,warn_footer:0
msgid "Mail Footer"
#:
msgid "Hello"
msgstr ""
#. module: project_scrum
#:
msgid "I am sending you Daily Meeting Details of date"
msgstr ""
#. module: project_scrum
#:
msgid "for the Sprint"
msgstr ""
#. module: project_scrum
#:
msgid "Task for Today"
msgstr ""
#. module: project_scrum
#:
msgid "No Blocks"
msgstr ""
#. module: project_scrum
#:
msgid "Thank you"
msgstr ""
#. module: project_scrum
#:
msgid "Scrum Meeting of"
msgstr ""

View File

@ -35,7 +35,7 @@ class project_scrum_project(osv.osv):
'scrum': fields.integer('Is a Scrum Project'),
}
_defaults = {
'product_owner_id': lambda self,cr,uid,context={}: uid,
'product_owner_id': lambda self, cr, uid, context={}: uid,
'sprint_size': 15,
'scrum': 1
}
@ -45,8 +45,10 @@ class project_scrum_sprint(osv.osv):
_name = 'project.scrum.sprint'
_description = 'Project Scrum Sprint'
def _calc_progress(self, cr, uid, ids, name, args, context):
def _calc_progress(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for sprint in self.browse(cr, uid, ids):
tot = 0.0
prog = 0.0
@ -58,53 +60,69 @@ class project_scrum_sprint(osv.osv):
res[sprint.id] = round(prog/tot*100)
return res
def _calc_effective(self, cr, uid, ids, name, args, context):
def _calc_effective(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for sprint in self.browse(cr, uid, ids):
res.setdefault(sprint.id, 0.0)
for bl in sprint.backlog_ids:
res[sprint.id] += bl.effective_hours
return res
def _calc_planned(self, cr, uid, ids, name, args, context):
def _calc_planned(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for sprint in self.browse(cr, uid, ids):
res.setdefault(sprint.id, 0.0)
for bl in sprint.backlog_ids:
res[sprint.id] += bl.expected_hours
return res
def _calc_expected(self, cr, uid, ids, name, args, context):
def _calc_expected(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for sprint in self.browse(cr, uid, ids):
res.setdefault(sprint.id, 0.0)
for bl in sprint.backlog_ids:
res[sprint.id] += bl.expected_hours
return res
def button_cancel(self, cr, uid, ids, context={}):
def button_cancel(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'cancel'}, context=context)
return True
def button_draft(self, cr, uid, ids, context={}):
def button_draft(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'draft'}, context=context)
return True
def button_open(self, cr, uid, ids, context={}):
def button_open(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'open'}, context=context)
for (id, name) in self.name_get(cr, uid, ids):
message = _('Sprint ') + " '" + name + "' "+ _("is Open.")
self.log(cr, uid, id, message)
return True
def button_close(self, cr, uid, ids, context={}):
def button_close(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'done'}, context=context)
for (id, name) in self.name_get(cr, uid, ids):
message = _('Sprint ') + " '" + name + "' "+ _("is Closed.")
self.log(cr, uid, id, message)
return True
def button_pending(self, cr, uid, ids, context={}):
def button_pending(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'pending'}, context=context)
return True
@ -144,7 +162,7 @@ class project_scrum_sprint(osv.osv):
default.update({'backlog_ids': [], 'meeting_ids': []})
return super(scrum_sprint, self).copy(cr, uid, id, default=default, context=context)
def onchange_project_id(self, cr, uid, ids, project_id):
def onchange_project_id(self, cr, uid, ids, project_id=False):
v = {}
if project_id:
proj = self.pool.get('project.project').browse(cr, uid, [project_id])[0]
@ -170,8 +188,10 @@ class project_scrum_product_backlog(osv.osv):
return self.name_get(cr, uid, ids, context=context)
return super(project_scrum_product_backlog, self).name_search(cr, uid, name, args, operator,context, limit=limit)
def _calc_progress(self, cr, uid, ids, name, args, context):
def _calc_progress(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for bl in self.browse(cr, uid, ids):
tot = 0.0
prog = 0.0
@ -183,41 +203,53 @@ class project_scrum_product_backlog(osv.osv):
res[bl.id] = round(prog/tot*100)
return res
def _calc_effective(self, cr, uid, ids, name, args, context):
def _calc_effective(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for bl in self.browse(cr, uid, ids):
res.setdefault(bl.id, 0.0)
for task in bl.tasks_id:
res[bl.id] += task.effective_hours
return res
def _calc_task(self, cr, uid, ids, name, args, context):
def _calc_task(self, cr, uid, ids, name, args, context=None):
res = {}
if context is None:
context = {}
for bl in self.browse(cr, uid, ids):
res.setdefault(bl.id, 0.0)
for task in bl.tasks_id:
res[bl.id] += task.total_hours
return res
def button_cancel(self, cr, uid, ids, context={}):
def button_cancel(self, cr, uid, ids, context=None):
obj_project_task = self.pool.get('project.task')
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'cancel'}, context=context)
for backlog in self.browse(cr, uid, ids, context=context):
obj_project_task.write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'cancelled'})
return True
def button_draft(self, cr, uid, ids, context={}):
def button_draft(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'draft'}, context=context)
return True
def button_open(self, cr, uid, ids, context={}):
def button_open(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'open'}, context=context)
for (id, name) in self.name_get(cr, uid, ids):
message = _('Product Backlog ') + " '" + name + "' "+ _("is Open.")
self.log(cr, uid, id, message)
return True
def button_close(self, cr, uid, ids, context={}):
def button_close(self, cr, uid, ids, context=None):
if context is None:
context = {}
obj_project_task = self.pool.get('project.task')
self.write(cr, uid, ids, {'state':'done'}, context=context)
for backlog in self.browse(cr, uid, ids, context=context):
@ -226,11 +258,15 @@ class project_scrum_product_backlog(osv.osv):
self.log(cr, uid, backlog.id, message)
return True
def button_pending(self, cr, uid, ids, context={}):
def button_pending(self, cr, uid, ids, context=None):
if context is None:
context = {}
self.write(cr, uid, ids, {'state':'pending'}, context=context)
return True
def button_postpone(self, cr, uid, ids, context=None):
if context is None:
context = {}
for product in self.browse(cr, uid, ids, context=context):
tasks_id = []
for task in product.tasks_id:
@ -273,8 +309,10 @@ class project_scrum_task(osv.osv):
_name = 'project.task'
_inherit = 'project.task'
def _get_task(self, cr, uid, ids, context={}):
def _get_task(self, cr, uid, ids, context=None):
result = {}
if context is None:
context = {}
for line in self.pool.get('project.scrum.product.backlog').browse(cr, uid, ids, context=context):
for task in line.tasks_id:
result[task.id] = True
@ -288,7 +326,7 @@ class project_scrum_task(osv.osv):
}),
}
def onchange_backlog_id(self, cr, uid, backlog_id):
def onchange_backlog_id(self, cr, uid, backlog_id=False):
if not backlog_id:
return {}
project_id = self.pool.get('project.scrum.product.backlog').browse(cr, uid, backlog_id).project_id.id
@ -350,10 +388,10 @@ class project_scrum_meeting(osv.osv):
meeting_id = self.browse(cr,uid,ids)[0]
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
user_email = email_from or user.address_id.email or email_from
body = "Hello " + meeting_id.sprint_id.scrum_master_id.name+",\n" +" \nI am sending you Daily Meeting Details of date %s for the Sprint %s \n" % (meeting_id.date, meeting_id.sprint_id.name)
body += '\n*Tasks since yesterday: \n_______________________%s' % (meeting_id.question_yesterday) + '\n*Task for Today :\n_______________________ %s\n' % (meeting_id.question_today )+ '\n*Blocks encountered: \n_______________________ %s' % (meeting_id.question_blocks or 'No Blocks')
body += "\n\nThank you,\n"+ user.name
sub_name = meeting_id.name or 'Scrum Meeting of %s '%meeting_id.date
body = _('Hello ') + meeting_id.sprint_id.scrum_master_id.name + ",\n" + " \n" +_('I am sending you Daily Meeting Details of date')+ ' %s ' % (meeting_id.date)+ _('for the Sprint')+ ' %s\n' % (meeting_id.sprint_id.name)
body += "\n"+ _('*Tasks since yesterday:')+ '\n_______________________%s' % (meeting_id.question_yesterday) + '\n' +_("*Task for Today:")+ '\n_______________________ %s\n' % (meeting_id.question_today )+ '\n' +_('*Blocks encountered:') +'\n_______________________ %s' % (meeting_id.question_blocks or _('No Blocks'))
body += "\n\n"+_('Thank you')+",\n"+ user.name
sub_name = meeting_id.name or _('Scrum Meeting of')+ "%s" %meeting_id.date
flag = tools.email_send(user_email , [email], sub_name, body, reply_to=None, openobject_id=str(meeting_id.id))
if not flag:
return False

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@ -15,7 +15,7 @@
# 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 <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@ -42,7 +42,9 @@ class external_pdf(render):
return self.pdf
class report_tasks(report_int):
def create(self, cr, uid, ids, datas, context={}):
def create(self, cr, uid, ids, datas, context=None):
if context is None:
context = {}
io = StringIO.StringIO()
canv = canvas.init(fname=io, format='pdf')
@ -68,9 +70,9 @@ class report_tasks(report_int):
if (not result) or result[-1]<>res:
result.append(res)
return result
guideline__data=[(datas[0][0],max_hour), (datas[-1][0],0)]
ar = area.T(x_grid_style=line_style.gray50_dash1,
x_axis=axis.X(label="Date", format=int_to_date),
y_axis=axis.Y(label="Burndown Chart - Planned Hours"),
@ -81,12 +83,12 @@ class report_tasks(report_int):
size = (680,450))
ar.add_plot(line_plot.T(data=guideline__data, line_style=line_style.red))
ar.add_plot(line_plot.T(data=datas, line_style=line_style.green))
entr1 = pychart.legend.Entry(label="guideline", line_style=line_style.red)
entr2 = pychart.legend.Entry(label="burndownchart",line_style=line_style.green)
legend = pychart.legend.T(nr_rows=2, inter_row_sep=5)
legend.draw(ar,[entr1,entr2],canv)
ar.draw(canv)
canv.close()

View File

@ -68,7 +68,9 @@ def burndown_chart(cr, uid, tasks_id, date_start, date_stop):
return result
class report_tasks(report_int):
def create(self, cr, uid, ids, datas, context={}):
def create(self, cr, uid, ids, datas, context=None):
if context is None:
context = {}
io = StringIO.StringIO()
if 'date_start' not in datas: