Add Ajax method to return work in last 7 days

This can be used to build graphs
This commit is contained in:
Sharoon Thomas 2013-03-11 18:14:53 +00:00
parent 3de846091a
commit 9daf274daa
2 changed files with 43 additions and 0 deletions

View File

@ -1099,6 +1099,42 @@ class Project(ModelSQL, ModelView):
)
return jsonify(day_totals=day_totals, lines=lines, work_week=work_week)
@login_required
def get_7_day_performance(self):
"""
Returns the hours worked in the last 7 days.
"""
employee_obj = Pool().get('company.employee')
timesheet_obj = Pool().get('timesheet.line')
date_obj = Pool().get('ir.date')
if not request.nereid_user.employee:
return jsonify({})
end_date = date_obj.today()
start_date = end_date - relativedelta(days=7)
timesheet_line_ids = timesheet_obj.search([
('date', '>=', start_date),
('date', '<=', end_date),
('employee', '=', request.nereid_user.employee.id),
])
timesheet_lines = timesheet_obj.browse(timesheet_line_ids)
hours_by_day = {}
for line in timesheet_lines:
hours_by_day[line.date] = \
hours_by_day.setdefault(line.date, 0.0) + line.hours
days = hours_by_day.keys()
days.sort()
return jsonify({
'categories': map(lambda d:d.strftime('%d-%b'), days),
'series': ['%.2f' % hours_by_day[day] for day in days]
})
@login_required
@permissions_required(['project.admin'])
def render_global_timesheet(self):

View File

@ -265,5 +265,12 @@
<field name="methods">("POST",)</field>
<field name="url_map" ref="nereid.default_url_map" />
</record>
<record id="project_work_last_7_days" model="nereid.url_rule">
<field name="rule">/&lt;language&gt;/-project/-my-last-7-days</field>
<field name="endpoint">project.work.get_7_day_performance</field>
<field name="sequence" eval="60" />
<field name="methods">("GET",)</field>
<field name="url_map" ref="nereid.default_url_map" />
</record>
</data>
</tryton>