Browse Source
[IMP] website_shift: Refactor templates
[IMP] website_shift: Refactor templates
Refactor templates to avoid dupplicate code. Refactor the controller to match with new templates. Add license.pull/33/head
Rémy Taymans
6 years ago
7 changed files with 779 additions and 673 deletions
-
10beesdoo_website_shift/__openerp__.py
-
252beesdoo_website_shift/controllers/main.py
-
4beesdoo_website_shift/data/res_config_data.xml
-
3beesdoo_website_shift/models/res_config.py
-
532beesdoo_website_shift/views/my_shift_website_templates.xml
-
14beesdoo_website_shift/views/res_config_views.xml
-
637beesdoo_website_shift/views/shift_website_templates.xml
@ -0,0 +1,532 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<!-- |
|||
Copyright 2017-2018 Rémy Taymans <remytaymans@gmail.com> |
|||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
|||
--> |
|||
<openerp> |
|||
|
|||
<!-- Add menu entries --> |
|||
<template id="my_shift_link" name="Link to frontend portal" inherit_id="website.layout"> |
|||
<xpath expr="//li[@id='o_logout']" position="before"> |
|||
<li><a href="/my/shift" role="menuitem">My Shift</a></li> |
|||
</xpath> |
|||
</template> |
|||
|
|||
<!-- Reusable templates --> |
|||
<template |
|||
id="my_shift_title" |
|||
name="My Shift Title"> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<h1 class="text-center"> |
|||
Your shifts |
|||
</h1> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</template> |
|||
|
|||
<template |
|||
id="my_shift_worker_status_title" |
|||
name="My Shift Worker Status Title"> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<h2> |
|||
Worker status |
|||
<span t-att-class="'label %s pull-right' % ('label-success' if status.can_shop else 'label-danger',)"> |
|||
<span class="fa fa-shopping-cart"></span> |
|||
<t t-if="status.can_shop"> |
|||
<span class="fa fa-check"></span> |
|||
</t> |
|||
<t t-if="not status.can_shop"> |
|||
<span class="fa fa-times"></span> |
|||
</t> |
|||
</span> |
|||
</h2> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</template> |
|||
|
|||
<template |
|||
id="my_shift_worker_status_common" |
|||
name="My Shift Worker Status Common"> |
|||
|
|||
<p> |
|||
<label>Working Mode:</label> |
|||
<t t-esc="dict(status.fields_get(allfields=['working_mode'])['working_mode']['selection'])[status.working_mode]"/> |
|||
</p> |
|||
|
|||
<p> |
|||
<label>Status:</label> |
|||
<t t-esc="dict(status.fields_get(allfields=['status'])['status']['selection'])[status.status]"/> |
|||
</p> |
|||
|
|||
<p t-if="status.holiday_start_time"> |
|||
<label>Holiday start time:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(status.holiday_start_time, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
<p t-if="status.holiday_end_time"> |
|||
<label>Holiday end time:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(status.holiday_end_time, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
</template> |
|||
|
|||
<template |
|||
id="my_shift_next_shifts" |
|||
name="My Shift : Next Shifts"> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<h2> |
|||
Your next shifts |
|||
</h2> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<div class="visible-xs" t-foreach="subscribed_shifts" t-as="shift"> |
|||
<div class="panel panel-default"> |
|||
<div class="panel-heading clearfix"> |
|||
<div class="panel-title"> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
<span t-field="shift.start_time" t-field-options='{"format": "HH:mm"}'/> - |
|||
<span t-field="shift.end_time" t-field-options='{"format": "HH:mm"}'/> |
|||
</div> |
|||
</div> |
|||
<div class="panel-body"> |
|||
<t t-esc="shift.task_type_id.name"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<table class="hidden-xs table table-striped" t-if="subscribed_shifts"> |
|||
<thead> |
|||
<tr> |
|||
<th>Day</th> |
|||
<th>Date</th> |
|||
<th>Time</th> |
|||
<th>Type of Shift</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<t t-foreach="subscribed_shifts" t-as="shift"> |
|||
<tr> |
|||
<td> |
|||
<t t-esc="time.strftime('%A', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
</td> |
|||
<td> |
|||
<t t-esc="time.strftime('%d %B %Y', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
</td> |
|||
<td> |
|||
<span t-field="shift.start_time" t-field-options='{"format": "HH:mm"}'/> - |
|||
<span t-field="shift.end_time" t-field-options='{"format": "HH:mm"}'/> |
|||
</td> |
|||
<td> |
|||
<t t-esc="shift.task_type_id.name"/> |
|||
</td> |
|||
</tr> |
|||
</t> |
|||
</tbody> |
|||
</table> |
|||
|
|||
<section class="wrap" t-if="not subscribed_shifts"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<div class="alert alert-warning"> |
|||
<strong>Warning !</strong> You have not yet signed up to a shift. |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</template> |
|||
|
|||
<template |
|||
id="available_shift_irregular_worker" |
|||
name="Available Shift for Irregular Worker"> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<div class="visible-xs" t-foreach="shift_templates" t-as="shift_count_subscribed"> |
|||
<t t-set="shift" t-value="shift_count_subscribed[0]" /> |
|||
<t t-set="count" t-value="shift_count_subscribed[1]" /> |
|||
<t t-set="is_subscribed" t-value="shift_count_subscribed[2]" /> |
|||
<t t-set="highlight_class" t-value="'panel-warning' if count >= highlight_rule else 'panel-default'"/> |
|||
<div t-att-class="'panel %s' % highlight_class"> |
|||
<div class="panel-heading clearfix"> |
|||
<div class="panel-title pull-left"> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
<span t-field="shift.start_time" t-field-options='{"format": "HH:mm"}'/> - |
|||
<span t-field="shift.end_time" t-field-options='{"format": "HH:mm"}'/> |
|||
</div> |
|||
<div class="label label-default pull-right"> |
|||
<t t-esc="count"/> space(s) |
|||
</div> |
|||
</div> |
|||
<div class="panel-body clearfix"> |
|||
<t t-esc="shift.task_type_id.name"/> |
|||
<t t-if="is_subscribed"> |
|||
<div class="label label-success pull-right"> |
|||
<span class="fa fa-check" aria-hidden="true"></span> |
|||
Subscribed |
|||
</div> |
|||
</t> |
|||
<t t-if="irregular_enable_sign_up and not is_subscribed"> |
|||
<button type="button" class="btn btn-default btn-sm pull-right" data-toggle="modal" |
|||
t-att-data-target="'#subscribe-shift-%s' % shift.id"> |
|||
<span class="fa fa-user-plus" aria-hidden="true"></span> |
|||
Subscribe |
|||
</button> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<table class="hidden-xs table table-striped"> |
|||
<thead> |
|||
<tr> |
|||
<th>Day</th> |
|||
<th>Date</th> |
|||
<th>Time</th> |
|||
<th>Type of Shift</th> |
|||
<th class="text-center">Available Spaces</th> |
|||
<th class="text-center" t-if="irregular_enable_sign_up">Subscribed</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<t t-foreach="shift_templates" t-as="shift_count_subscribed"> |
|||
<t t-set="shift" t-value="shift_count_subscribed[0]" /> |
|||
<t t-set="count" t-value="shift_count_subscribed[1]" /> |
|||
<t t-set="is_subscribed" t-value="shift_count_subscribed[2]" /> |
|||
<tr t-attf-class="{{ 'warning' if count >= highlight_rule else '' }}"> |
|||
<td> |
|||
<t t-esc="time.strftime('%A', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
</td> |
|||
<td> |
|||
<t t-esc="time.strftime('%d %B %Y', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
</td> |
|||
<td> |
|||
<span t-field="shift.start_time" t-field-options='{"format": "HH:mm"}'/> - |
|||
<span t-field="shift.end_time" t-field-options='{"format": "HH:mm"}'/> |
|||
</td> |
|||
<td> |
|||
<t t-esc="shift.task_type_id.name"/> |
|||
</td> |
|||
<td class="text-center"> |
|||
<t t-esc="count"/> |
|||
</td> |
|||
<td class="text-center" t-if="irregular_enable_sign_up"> |
|||
<t t-if="is_subscribed"> |
|||
<div class="label label-success"> |
|||
<span class="fa fa-check" aria-hidden="true"></span> |
|||
Subscribed |
|||
</div> |
|||
</t> |
|||
<t t-if="not is_subscribed"> |
|||
<button type="button" class="btn btn-default btn-sm" data-toggle="modal" |
|||
t-att-data-target="'#subscribe-shift-%s' % shift.id"> |
|||
<span class="fa fa-user-plus" aria-hidden="true"></span> |
|||
Subscribe |
|||
</button> |
|||
</t> |
|||
</td> |
|||
</tr> |
|||
</t> |
|||
</tbody> |
|||
</table> |
|||
|
|||
<!-- Subscribe check --> |
|||
<t t-foreach="shift_templates" t-as="shift_count_subscribed"> |
|||
<t t-set="shift" t-value="shift_count_subscribed[0]" /> |
|||
<t t-set="count" t-value="shift_count_subscribed[1]" /> |
|||
<t t-set="is_subscribed" t-value="shift_count_subscribed[2]" /> |
|||
<div class="modal fade" t-att-id="'subscribe-shift-%s' % shift.id" tabindex="-1" role="dialog" |
|||
t-att-aria-labelledby="'subscribe-shift-%s-label' % shift.id"> |
|||
<div class="modal-dialog" role="document"> |
|||
<div class="modal-content"> |
|||
<div class="modal-header"> |
|||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> |
|||
<span aria-hidden="true">×</span> |
|||
</button> |
|||
<h4 class="modal-title" t-att-id="'subscribe-shift-%s-label' % shift.id"> |
|||
Are you shure you want to subscribe to this shift? |
|||
</h4> |
|||
</div> |
|||
<div class="modal-body"> |
|||
<t t-esc="time.strftime('%A', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
<t t-esc="time.strftime('%d %B %Y', time.strptime(shift.start_time, '%Y-%m-%d %H:%M:%S'))"/> |
|||
<span t-field="shift.start_time" t-field-options='{"format": "HH:mm"}'/> - |
|||
<span t-field="shift.end_time" t-field-options='{"format": "HH:mm"}'/><br/> |
|||
<t t-esc="shift.task_type_id.name"/><br/> |
|||
<t t-esc="count"/> available space(s) |
|||
</div> |
|||
<div class="modal-footer"> |
|||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button> |
|||
<a class="btn btn-primary" |
|||
t-if="irregular_enable_sign_up" |
|||
t-att-href="'/shift/%s/subscribe?nexturl=%s' % (shift.id, nexturl)"> |
|||
Subscribe |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</template> |
|||
|
|||
<!-- Shift for non-worker --> |
|||
<template |
|||
id="my_shift_non_worker" |
|||
name="My Shift for Non Worker" |
|||
page="True"> |
|||
<t t-call="website.layout"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_title"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<div class="alert alert-info"> |
|||
You don't have to participate to shift system. |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</t> |
|||
</template> |
|||
|
|||
<!-- Shifts Exempted Workers --> |
|||
<template |
|||
id="my_shift_exempted_worker" |
|||
name="My Shifts for Exempted Workers" |
|||
page="True"> |
|||
<t t-call="website.layout"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_title"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-xs-12 col-md-4 pull-right"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_title"/> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_common"/> |
|||
|
|||
<p t-if="status.exempt_reason_id"> |
|||
<label>Exempt Reason:</label> |
|||
<t t-esc="status.exempt_reason_id.name"/> |
|||
</p> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</div> |
|||
|
|||
<div class="col-xs-12 col-md-8"> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<div class="alert alert-info"> |
|||
You don't have to participate to shift system. |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</div> <!-- col-md-8 --> |
|||
</div> <!-- row --> |
|||
</div> <!-- container --> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</t> |
|||
</template> |
|||
|
|||
<!-- Shifts for Regular Workers --> |
|||
<template |
|||
id="my_shift_regular_worker" |
|||
name="My Shifts for Regular Workers" |
|||
page="True"> |
|||
<t t-call="website.layout"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_title"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-xs-12 col-md-4 pull-right"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_title"/> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_common"/> |
|||
|
|||
<p t-if="status.sr != 0"> |
|||
<label>Shift in Advance:</label> |
|||
<t t-esc="status.sr"/> |
|||
</p> |
|||
|
|||
<p t-if="status.sc != 0"> |
|||
<label>Compensation Shift:</label> |
|||
<t t-esc="status.sc"/> |
|||
</p> |
|||
|
|||
<p t-if="status.alert_start_time"> |
|||
<label>In Alert Since:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(status.alert_start_time, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
<p t-if="status.extension_start_time"> |
|||
<label>In Extension Since:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(status.extension_start_time, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</div> |
|||
|
|||
<div class="col-xs-12 col-md-8"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_next_shifts"/> |
|||
|
|||
</div> <!-- col-md-8 --> |
|||
</div> <!-- row --> |
|||
</div> <!-- container --> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</t> |
|||
</template> |
|||
|
|||
<!-- Shifts for Irregular Workers --> |
|||
<template |
|||
id="my_shift_irregular_worker" |
|||
name="Shifts for Irregular Workers" |
|||
page="True"> |
|||
<t t-call="website.layout"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_title"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-xs-12 col-md-4 pull-right"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_title"/> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_worker_status_common"/> |
|||
|
|||
<p> |
|||
<label>Shift in Advance:</label> |
|||
<t t-esc="status.sr"/> |
|||
</p> |
|||
|
|||
<p t-if="date_before_last_shift"> |
|||
<label>Date Before Last Shift:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(date_before_last_shift, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
<p t-if="status.irregular_absence_date"> |
|||
<label>Last Absence Date:</label> |
|||
<t t-esc="time.strftime('%A %d %B %Y', time.strptime(status.irregular_absence_date, '%Y-%m-%d'))"/> |
|||
</p> |
|||
|
|||
<p t-if="status.irregular_absence_counter"> |
|||
<label>Number of Absence:</label> |
|||
<t t-esc="status.irregular_absence_counter"/> |
|||
</p> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</div> |
|||
|
|||
<div class="col-xs-12 col-md-8"> |
|||
|
|||
<t t-call="beesdoo_website_shift.my_shift_next_shifts"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-md-12"> |
|||
<h2> |
|||
Available Shifts |
|||
</h2> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
<section class="wrap"> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div class="col-xs-12 col-sm-6"> |
|||
<p> |
|||
Explanation text |
|||
</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<div class="oe_structure"/> |
|||
|
|||
<t t-call="beesdoo_website_shift.available_shift_irregular_worker"/> |
|||
|
|||
</div> <!-- col-md-8 --> |
|||
</div> <!-- row --> |
|||
</div> <!-- container --> |
|||
</section> |
|||
|
|||
<div class="oe_structure"/> |
|||
|
|||
</t> |
|||
</template> |
|||
|
|||
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue