Browse Source

[REM] b_shift : generate_attendance_sheet views

pull/143/head
Elouan Le Bars 4 years ago
parent
commit
f1961aba92
  1. 1
      beesdoo_shift/__openerp__.py
  2. 1
      beesdoo_shift/wizard/__init__.py
  3. 80
      beesdoo_shift/wizard/generate_attendance_sheet.py
  4. 36
      beesdoo_shift/wizard/generate_attendance_sheet.xml

1
beesdoo_shift/__openerp__.py

@ -37,7 +37,6 @@
"wizard/assign_super_coop.xml",
"wizard/subscribe.xml",
"wizard/extension.xml",
"wizard/generate_attendance_sheet.xml",
"wizard/holiday.xml",
"wizard/temporary_exemption.xml",
],

1
beesdoo_shift/wizard/__init__.py

@ -1,5 +1,4 @@
import instanciate_planning
import generate_attendance_sheet
import batch_template
import assign_super_coop
import subscribe

80
beesdoo_shift/wizard/generate_attendance_sheet.py

@ -1,80 +0,0 @@
# -*- coding: utf-8 -*-
from openerp import models, fields, api, exceptions, _
from datetime import date, datetime, timedelta
class GenerateAttendanceSheet(models.TransientModel):
_name = "beesdoo.shift.sheet.generate"
_description = "Use a selected time range to generate the corresponding attendance sheet."
time_range = fields.Selection("_get_time_ranges", string="Hours")
def _get_time_ranges(self):
time_ranges = set()
tasks = self.env["beesdoo.shift.shift"]
sheets = self.env["beesdoo.shift.sheet"]
current_time = datetime.now()
allowed_time_range = timedelta(minutes=45)
tasks = tasks.search(
[
("start_time", ">", str(current_time - allowed_time_range),),
("start_time", "<", str(current_time + allowed_time_range),),
]
)
for task in tasks:
start_time = task.start_time
end_time = task.end_time
sheets = sheets.search(
[("start_time", "=", start_time), ("end_time", "=", end_time),]
)
if not sheets:
start_time_dt = fields.Datetime.from_string(start_time)
start_time_dt = fields.Datetime.context_timestamp(
self, start_time_dt
)
end_time_dt = fields.Datetime.from_string(end_time)
end_time_dt = fields.Datetime.context_timestamp(
self, end_time_dt
)
# We display contextualized time range
# but we save it according to UTC timezone
time_ranges.add(
(
start_time + "~" + end_time,
start_time_dt.strftime("%H:%M")
+ " - "
+ end_time_dt.strftime("%H:%M"),
)
)
return list(time_ranges)
@api.multi
def button_generate(self):
self.ensure_one()
tasks = self.env["beesdoo.shift.shift"]
sheets = self.env["beesdoo.shift.sheet"]
if not self.time_range:
raise exceptions.UserError(
_("Please select a time time_range to generate the sheet.")
)
time_range = self.time_range.split("~")
if len(time_range) != 2:
raise exceptions.ValidationError(
_("Selection key has wrong format.")
)
sheet = sheets.create(
{"start_time": time_range[0], "end_time": time_range[1]}
)
return {
"type": "ir.actions.act_window",
"res_model": "beesdoo.shift.sheet",
"res_id": sheet.id,
"view_type": "form",
"view_mode": "form",
}

36
beesdoo_shift/wizard/generate_attendance_sheet.xml

@ -1,36 +0,0 @@
<odoo>
<record model="ir.ui.view" id="generate_attendance_sheet_view_form">
<field name="name">Generate an attendance sheet</field>
<field name="model">beesdoo.shift.sheet.generate</field>
<field name="arch" type="xml">
<form>
<group>
<field name="time_range" />
</group>
<footer>
<button type="object" name="button_generate"
string="Generate" class="oe_highlight" />
<button special="cancel" string="Cancel" />
</footer>
</form>
</field>
</record>
<!-- Actions -->
<act_window id="action_generate_sheet_wizard"
name="Generate a non-existing sheet"
res_model="beesdoo.shift.sheet.generate"
view_mode="form"
target="new"
/>
<!-- Menu actions -->
<menuitem id="menu_generate_sheet"
name="Generate a sheet"
parent="menu_sheet_top"
action="action_generate_sheet_wizard"
/>
</odoo>
Loading…
Cancel
Save