mirror of
https://gitlab.com/datalifeit/trytond-staff_workplace
synced 2023-12-14 04:42:58 +01:00
Module revision. Add tests.
This commit is contained in:
parent
a502d0e5b5
commit
20e285bb57
7 changed files with 283 additions and 77 deletions
|
@ -1,7 +1,7 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from trytond.pool import Pool
|
||||
from workplace import WorkPlace, Employee, Calendar, CalendarDay
|
||||
from .workplace import WorkPlace, Employee, Calendar, CalendarDay
|
||||
|
||||
|
||||
def register():
|
||||
|
|
226
locale/es_ES.po
226
locale/es_ES.po
|
@ -2,22 +2,22 @@
|
|||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "error:staff.calendar:"
|
||||
msgid "Year must be unique."
|
||||
msgstr "El año debe ser único."
|
||||
|
||||
msgctxt "field:company.employee,active:"
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
msgctxt "field:company.employee,workplace:"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de Trabajo"
|
||||
msgstr "Centro de empleo"
|
||||
|
||||
msgctxt "field:company.workplace,active:"
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
msgctxt "view:company.workplace:"
|
||||
msgid "WorkPlaces"
|
||||
msgstr "Centros de Trabajo"
|
||||
|
||||
msgctxt "view:company.workplace:"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de Trabajo"
|
||||
|
||||
msgctxt "field:company.workplace,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
@ -48,48 +48,196 @@ msgstr "Fecha modificación"
|
|||
|
||||
msgctxt "field:company.workplace,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario que escribe."
|
||||
msgstr "Usuario que escribe"
|
||||
|
||||
msgctxt "model:ir.action,name:act_workplace"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de Trabajo"
|
||||
msgctxt "field:staff.calendar,create_date:"
|
||||
msgid "Create Date"
|
||||
msgstr "Fecha creación"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_workplace"
|
||||
msgid "WorkPlaces"
|
||||
msgstr "Centros de Trabajo"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_calendar"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "model:res.group,name:group_workplace_admin"
|
||||
msgid "WorkPlace Admin"
|
||||
msgstr "Administrador de Centro de Trabajo"
|
||||
|
||||
msgctxt "model:company.workplace,name:"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de Trabajo"
|
||||
|
||||
msgctxt "field:staff.calendar,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.calendar,year:"
|
||||
msgid "year"
|
||||
msgstr "Año"
|
||||
msgctxt "field:staff.calendar,create_uid:"
|
||||
msgid "Create User"
|
||||
msgstr "Usuario creación"
|
||||
|
||||
msgctxt "field:staff.calendar,days:"
|
||||
msgid "Days"
|
||||
msgstr "Días"
|
||||
|
||||
msgctxt "field:staff.calendar,id:"
|
||||
msgid "ID"
|
||||
msgstr "Identificador"
|
||||
|
||||
msgctxt "field:staff.calendar,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.calendar,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.calendar,rest_day:"
|
||||
msgid "Rest Day"
|
||||
msgstr "Día de Descanso"
|
||||
|
||||
msgctxt "field:staff.calendar,write_date:"
|
||||
msgid "Write Date"
|
||||
msgstr "Fecha modificación"
|
||||
|
||||
msgctxt "field:staff.calendar,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario que escribe."
|
||||
|
||||
msgctxt "field:staff.calendar,year:"
|
||||
msgid "Year"
|
||||
msgstr "Año"
|
||||
|
||||
msgctxt "field:staff.calendar.day,calendar:"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "field:staff.calendar.day,create_date:"
|
||||
msgid "Create Date"
|
||||
msgstr "Fecha creación"
|
||||
|
||||
msgctxt "field:staff.calendar.day,create_uid:"
|
||||
msgid "Create User"
|
||||
msgstr "Usuario creación"
|
||||
|
||||
msgctxt "field:staff.calendar.day,date_:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
msgctxt "field:staff.calendar.day,day_type:"
|
||||
msgid "Day Type"
|
||||
msgstr "Tipo día"
|
||||
|
||||
msgctxt "field:staff.calendar.day,id:"
|
||||
msgid "ID"
|
||||
msgstr "Identificador"
|
||||
|
||||
msgctxt "field:staff.calendar.day,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.calendar.day,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.calendar.day,write_date:"
|
||||
msgid "Write Date"
|
||||
msgstr "Fecha modificación"
|
||||
|
||||
msgctxt "field:staff.calendar.day,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario que escribe."
|
||||
|
||||
msgctxt "field:staff.workplace,active:"
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
msgctxt "field:staff.workplace,calendar:"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendario"
|
||||
|
||||
msgctxt "field:staff.workplace,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
msgctxt "field:staff.workplace,create_date:"
|
||||
msgid "Create Date"
|
||||
msgstr "Fecha creación"
|
||||
|
||||
msgctxt "field:staff.workplace,create_uid:"
|
||||
msgid "Create User"
|
||||
msgstr "Usuario creación"
|
||||
|
||||
msgctxt "field:staff.workplace,id:"
|
||||
msgid "ID"
|
||||
msgstr "Identificador"
|
||||
|
||||
msgctxt "field:staff.workplace,name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.workplace,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:staff.workplace,write_date:"
|
||||
msgid "Write Date"
|
||||
msgstr "Fecha modificación"
|
||||
|
||||
msgctxt "field:staff.workplace,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario que escribe"
|
||||
|
||||
msgctxt "model:company.workplace,name:"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de empleo"
|
||||
|
||||
msgctxt "model:ir.action,name:act_calendar"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "model:ir.action,name:act_day"
|
||||
msgid "Calendar Day"
|
||||
msgstr "Días calendario"
|
||||
|
||||
msgctxt "model:ir.action,name:act_workplace"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centros de empleo"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_calendar"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:menu_workplace"
|
||||
msgid "WorkPlaces"
|
||||
msgstr "Centros de empleo"
|
||||
|
||||
msgctxt "model:res.group,name:group_workplace_admin"
|
||||
msgid "WorkPlace Admin"
|
||||
msgstr "Administrador de Centro de empleo"
|
||||
|
||||
msgctxt "model:staff.calendar,name:"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "model:staff.calendar.day,name:"
|
||||
msgid "Calendar Day"
|
||||
msgstr "Días calendario"
|
||||
|
||||
msgctxt "model:staff.workplace,name:"
|
||||
msgid "WorkPlace"
|
||||
msgstr "Centro de empleo"
|
||||
|
||||
msgctxt "selection:staff.calendar,rest_day:"
|
||||
msgid "Saturday"
|
||||
msgstr "Sábado"
|
||||
|
||||
msgctxt "selection:staff.calendar,rest_day:"
|
||||
msgid "Sunday"
|
||||
msgstr "Domingo"
|
||||
|
||||
msgctxt "selection:staff.calendar.day,day_type:"
|
||||
msgid "Local Holiday"
|
||||
msgstr "Festivo local"
|
||||
|
||||
msgctxt "selection:staff.calendar.day,day_type:"
|
||||
msgid "Rest"
|
||||
msgstr "Descanso"
|
||||
|
||||
msgctxt "selection:staff.calendar.day,day_type:"
|
||||
msgid "holiday"
|
||||
msgstr "Festivo"
|
||||
|
||||
msgctxt "view:staff.workplace:"
|
||||
msgid "WorkPlaces"
|
||||
msgstr "Centros de empleo"
|
||||
|
||||
msgctxt "view:staff.calendar:"
|
||||
msgid "Calendars"
|
||||
msgstr "Calendarios"
|
||||
|
||||
msgctxt "view:company.workplace:"
|
||||
msgid "Calendar"
|
||||
msgstr "Calendario"
|
||||
msgctxt "view:staff.calendar:"
|
||||
msgid "Days"
|
||||
msgstr "Días"
|
|
@ -1,27 +1,65 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
import unittest
|
||||
# import doctest
|
||||
import datetime
|
||||
import trytond.tests.test_tryton
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
# TODO: Remove if no sceneario needed.
|
||||
# from trytond.tests.test_tryton import doctest_setup, doctest_teardown
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
|
||||
from trytond.modules.company.tests import create_company, set_company
|
||||
|
||||
|
||||
class StaffWorkplaceTestCase(ModuleTestCase):
|
||||
"""Test module"""
|
||||
module = 'staff_workplace'
|
||||
|
||||
def setUp(self):
|
||||
super(StaffWorkplaceTestCase, self).setUp()
|
||||
@with_transaction()
|
||||
def test_compute_profile_prices(self):
|
||||
"""Test staff profile"""
|
||||
pool = Pool()
|
||||
Party = pool.get('party.party')
|
||||
Employee = pool.get('company.employee')
|
||||
Calendar = pool.get('staff.calendar')
|
||||
CalendarDay = pool.get('staff.calendar.day')
|
||||
Workplace = pool.get('staff.workplace')
|
||||
|
||||
special_days = [
|
||||
(datetime.date(2016, 1, 1), 'holiday'),
|
||||
(datetime.date(2016, 1, 6), 'local_holiday'),
|
||||
(datetime.date(2016, 3, 24), 'local_holiday'),
|
||||
]
|
||||
test_days = [
|
||||
(datetime.date(2016, 1, 1), 'holiday'),
|
||||
(datetime.date(2016, 1, 2), 'work'),
|
||||
(datetime.date(2016, 6, 5), 'rest'),
|
||||
(datetime.date(2016, 6, 15), 'work'),
|
||||
(datetime.date(2016, 1, 6), 'local_holiday'),
|
||||
(datetime.date(2016, 9, 1), 'work'),
|
||||
(datetime.date(2016, 3, 24), 'local_holiday'),
|
||||
]
|
||||
party = Party(name='Pam Beesly')
|
||||
party.save()
|
||||
company = create_company()
|
||||
calendar = Calendar(name='Calendar 1',
|
||||
year=2016, rest_day='7')
|
||||
calendar.save()
|
||||
workplace = Workplace(name='Workplace 1', code='WP1')
|
||||
workplace.calendar = calendar
|
||||
workplace.save()
|
||||
|
||||
with set_company(company):
|
||||
employee = Employee(party=party.id, company=company)
|
||||
employee.workplace = workplace
|
||||
employee.save()
|
||||
for date, day_type in special_days:
|
||||
CalendarDay(
|
||||
calendar=calendar,
|
||||
date_=date,
|
||||
day_type=day_type).save()
|
||||
for date, day_type in test_days:
|
||||
self.assertEqual(workplace.date_type(date), day_type)
|
||||
|
||||
|
||||
def suite():
|
||||
suite = trytond.tests.test_tryton.suite()
|
||||
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(StaffWorkplaceTestCase))
|
||||
# TODO: remove if no scenario needed.
|
||||
# suite.addTests(doctest.DocFileSuite(
|
||||
# 'scenario_staff_workplace.rst',
|
||||
# setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8',
|
||||
# optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
return suite
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<form string="Calendar" >
|
||||
<form string="Calendars" >
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="year"/>
|
||||
|
@ -10,7 +10,9 @@
|
|||
<field name="rest_day"/>
|
||||
<notebook>
|
||||
<page string="Days" id="days" col="2">
|
||||
<field name="days" view_ids="staff_workplace.day_view_calendar" mode="calendar,form"/>
|
||||
<field name="days"
|
||||
view_ids="staff_workplace.day_view_calendar"
|
||||
mode="calendar,form"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
|
@ -1,15 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<form string="WorkPlace">
|
||||
<group id="header" col="6">
|
||||
<label name="code"/>
|
||||
<field name="code"/>
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="active"/>
|
||||
<field name="active"/>
|
||||
<label name="calendar"/>
|
||||
<field name="calendar"/>
|
||||
</group>
|
||||
<form string="WorkPlaces" col="6">
|
||||
<label name="code"/>
|
||||
<field name="code"/>
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="active"/>
|
||||
<field name="active"/>
|
||||
<label name="calendar"/>
|
||||
<field name="calendar"/>
|
||||
</form>
|
30
workplace.py
30
workplace.py
|
@ -13,16 +13,22 @@ class Calendar(ModelView, ModelSQL):
|
|||
__name__ = 'staff.calendar'
|
||||
|
||||
name = fields.Char('Name')
|
||||
year = fields.Integer('Year', required=True, states={'readonly': Eval('id', 0) > 0}, depends=['id'])
|
||||
year = fields.Integer('Year', required=True,
|
||||
states={'readonly': Eval('id', 0) > 0},
|
||||
depends=['id'])
|
||||
days = fields.One2Many('staff.calendar.day', 'calendar', 'Days')
|
||||
rest_day = fields.Selection([('6', 'Saturday'), ('7', 'Sunday')], 'Rest Day'
|
||||
, states={'readonly': Eval('id', 0) > 0}, depends=['id'])
|
||||
rest_day = fields.Selection([
|
||||
('6', 'Saturday'),
|
||||
('7', 'Sunday')], 'Rest Day',
|
||||
states={'readonly': Eval('id', 0) > 0},
|
||||
depends=['id'])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Calendar, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints = [('year_uk', Unique(t, t.year), 'Year must be unique.')]
|
||||
cls._sql_constraints = [
|
||||
('year_uk', Unique(t, t.year), 'Year must be unique.')]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return str(self.name) + ' - ' + str(self.year)
|
||||
|
@ -36,9 +42,11 @@ class Calendar(ModelView, ModelSQL):
|
|||
calendarDay = pool.get('staff.calendar.day')
|
||||
if date.isoweekday() == int(self.rest_day):
|
||||
return 'rest'
|
||||
res = calendarDay.search_read([('calendar', '=', self), ('date_', '=', date)], fields_names=['day_type'])
|
||||
res = calendarDay.search_read([
|
||||
('calendar', '=', self),
|
||||
('date_', '=', date)], fields_names=['day_type'], limit=1)
|
||||
if res:
|
||||
return res.day_type
|
||||
return res[0]['day_type']
|
||||
return 'work'
|
||||
|
||||
|
||||
|
@ -67,9 +75,13 @@ class Employee:
|
|||
class CalendarDay(ModelView, ModelSQL):
|
||||
"""Calendar Day"""
|
||||
__name__ = 'staff.calendar.day'
|
||||
|
||||
name = fields.Char('Name')
|
||||
calendar = fields.Many2One('staff.calendar', 'Calendar', required=True,
|
||||
states={'readonly': Eval('id', 0) > 0})
|
||||
states={'readonly': Eval('id', 0) > 0},
|
||||
depends=['id'])
|
||||
date_ = fields.Date('Date')
|
||||
day_type = fields.Selection(
|
||||
[('holiday', 'holiday'), ('local_holiday', 'Local Holiday'), ('rest', 'Rest')], 'Day Type')
|
||||
day_type = fields.Selection([
|
||||
('holiday', 'holiday'),
|
||||
('local_holiday', 'Local Holiday'),
|
||||
('rest', 'Rest')], 'Day Type')
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
<!-- WorkPlace -->
|
||||
<record model="res.group" id="group_workplace_admin">
|
||||
<field name="name">WorkPlace Admin</field>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_workplace_admin">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_workplace_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="workplace_view_tree">
|
||||
<field name="model">staff.workplace</field>
|
||||
<field name="type">tree</field>
|
||||
|
@ -44,8 +52,8 @@
|
|||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_workplace" name="WorkPlaces" sequence="30" parent="staff.menu_staff"
|
||||
action="act_workplace"/>
|
||||
<menuitem id="menu_workplace" name="WorkPlaces" sequence="30"
|
||||
parent="staff.menu_staff" action="act_workplace"/>
|
||||
|
||||
<!-- Employee -->
|
||||
<record model="ir.ui.view" id="employee_form">
|
||||
|
@ -146,7 +154,7 @@
|
|||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_calendar" name="Calendar" sequence="50" parent="staff.menu_staff"
|
||||
action="act_calendar"/>
|
||||
<menuitem id="menu_calendar" name="Calendar" sequence="50"
|
||||
parent="staff.menu_staff" action="act_calendar"/>
|
||||
</data>
|
||||
</tryton>
|
Loading…
Reference in a new issue