Issue when no timezone set to a regular worker. It try to use the user
timezone but has it doesn't exists runs into an error.
To solve this, it first takes the timezone of the user, if it is
empty, it takes the timezone of the context, and if also empty it uses
UTC.
[IMP] website_shift: Next shifts for regular
Refactor the generation of the next shift for regular worker.
Fix: no next shifts shown when the worker is a new worker and doesn't have any
past shift
Fix: no next shifts shown when the next shift of the worker is not
generated yet.
[ADD] website_shift: Help texts
[FIX] website_shift: Help texts
Fix help text for the status based on the input from the members office
[IMP] website_shift: Help texts translation
Add translation for the help texts.
[IMP] website_shift: Future alert date
The future alert date has moved to beesdoo_shift module. So we use this
one instead of re-compute it in the controller.
[IMP] website_shift: Update manifest
[FIX] website_shift: Better position for help text
On a small screen help texts appear on the top of the page leaving
useful info on the bottom. Now help texts is moved on the bottom of the
page.
[ADD] website_shift: Feedback when subscribing
Add a feedback to the user about the successfulness of the subscription.
[FIX] website_shift: Super-cooperator info modal
The modal showing the super-cooperator information didn't work for the
'fictive' shift generated for regular workers. It's due to the fact that
a 'fictive' shift doesn't have an id. So we should not use it to
generate xml ids. Instead we use the index of the foreach loop.
[FIX] website_shift: Wrong time when crossing DST
The issue: There was a time difference of one hour when the fictive
shifts cross the DST (Daylight Saving Time).
Explanation: Python works with two types of datetime. The datetime
without a timezone called *naive* and the one with a timezone called
*non-naive*. `timedelta()` is used to add a number of day to a datetime.
However, changing a non-naive datetime with `timedelta` just change the
date but leave the timezone unchanged. That's no correct because the new
date may not be in the same timezone because of the DST. If the new date
is after a change of time, due to DST, the timezone of the non-naive
datetime should be updated. Python don't do that because `timedelta`
doesn't realy add days but add the corresponding hours ! So when adding
hours it's consistent to not change the timezone (you can use
`normalize()` to get your datetime in the right timezone after a cross
of DST). To fix this, after adding a `timedelta` the timezone of the
datetime should be set to none and the relocalized with the `localize()`
function of the `pytz` corresponding timezone.
[FIX] website_shift: Translations
* [ADD] website_shift: Add configuration
irregular_shift_limit: Maximum shift that will be shown
highlight_rule: Treshold of available space in a shift that trigger the
highlight of the shift
hide_rule: Treshold ((available space)/(max space)) in percentage of
available space under wich the shift is hidden
The last one replaces the old hide filter.
* [FIX] website_shift: Wrong mail on regular shift
Fix the wrong email address that is shown on the public page that show
available shift for irregular worker.
* [ADD] website_shift: Irregular personal work page
Add personal shift page for irregular worker that allows you to
subscribe to a shift.
* [ADD] website_shift: Personal page for non-worker
Add a personal page for non-worker that shows a simple message telling
them that they don't have to do a shift.
* [ADD] website_shift: Regular personal work page
Add personal shift page for regular worker.
* [ADD] website_shift: Exempted personal work page
Add personal shift page for exempted worker.
* [IMP] website_shift: Shopping status personal page
This add a label that shows the shopping status of a user.
If the label is green the user can shop.
If the label is red the user cannot shop.
There is also icons for disambiguation.
* [ADD] website_shift: Config en & dis shift sign up
This add a configuration boolean that enable or disable the shift sign
up for irregular worker.
* [IMP] website_shift: Status on personal pages
Show dates properly.
Hide what's useless.
Give meaningful name.
* [IMP] website_shift: Design of personal pages
* Lower size of h2 title.
* Add top margin to h1.
* Change highlight color.
* Change position of explanation test.
* [IMP] website_shift: Refactor templates
Refactor templates to avoid dupplicate code.
Refactor the controller to match with new templates.
Add license.
* [ADD] website_shift: Past shifts on personal page
Add a list of the previous shifts for a worker.
* [ADD] website_shift: Super Coop info
Add a button to show email and phone of the super cooperator of a shift.
Tell you if you are a Super Co-operator
* [IMP] website_shift: Next shifts regular worker
Add configuration to specify how many next shifts for regular worker
must be shown to them on their personal web page. This config is called
`regular_next_shift_limit`.
Improve the view that shows the next shifts on the personal page for a
regular worker regarding to the `regular_next_shift_limit`.
Because all the next shifts are not created in the database, we need to
create 'fictive' one that are not stored.
* [ADD] website_shift: Warning about holidays
Add a warning message on the personal page for a regular worker that
tells that public holidays are not taken into account for the moment.
* [IMP] website_theme: colors for warnings
* [FIX] website_shift: 403 when subscribing
Fix the case when an irregular worker that doesn't have write access to
beesdoo.shift.shift try to subscribe to a shift and got a 403 error.
* [FIX] website_theme: Theme must be an application
As wrote in this document :
https://www.odoo.com/documentation/9.0/howtos/themes.html#create-a-theme-module
a theme module must be an application.
* [FIX] webs_shift: Wrong display of date last shift
Fix the case when an irregular worker is in alert and that the date
before last shift is displayed.
The `date_before_last_shift` is renamed in `future_alert_start_time`.
This name better represent what this variable contains. It also explains
why this information does not have to be displayed when the worker is
already in alert mode as this date is the date in the future on which
the worker will be in alert.
* [FIX] website_shift: Co-operator -> Cooperator
* [FIX] website_shift: Past shifts not ordered desc
The past shift was not properly ordered. This fix by ordering the past
shifts from the newest to the oldest.
* [FIX] website_shift: Holiday shown after end of it
Before:
The holiday is shown even if the holiday is in the past.
After:
The holiday is shown only if the holiday is now or in the future.
The menu entry was recorded in data folder. But this folder is reserved
for buisness data. So I moved the menu entry in the views directory.
[IMP] website_shift: Responsive design
[IMP] website_shift: change rules of display
Shows only available space:
if more than 5 max worker and at least two available spaces
if less than 5 max worker and at least one available spaces
This take care of the case where no task_template is defined in the task
[IMP] website_shift: Make template CMS compliant
This adds a configurable limit under which the regular worker is
unsubscribed. The regular worker is unsubscribed when the sum of his
shift counter and his compensation shift counter reach the configured
limit.
This improves the calculation of the future alert date in other to take
holidays and temporary exemption into account.
This also adds the date of the next countdown that also take holidays
and temporary exemption into account.
Before this commit, the alert_start_time was not erased when a status
change from 'alert' to 'ok' for an irregular worker.
People find that unintuitive (despite this date was in the past when
you are in 'ok' status).
Now, this alert_start_time was erased when the status change from
'alert' to 'ok'.
This fix the case where a worker is unsubscribed from a shift where he
is supercooperator.
In the function unsubscribed_from_today, when removing the supercoop,
the field is_regular was also set to False. I seams that this is not
correct as this field is related to the worker_id not to the supercoop.
Also, I found other issues as when removing a worker_id the fields
is_regular and is_compensation was not reset.
This let me think about other cases where worker_id is emptied, the
is_regular and is_compensation would be never been reset if the
programmer doesn't think to reset it.
So I modified the constrains on these field in order to have these field
reset properly when worker_id is changed.
This commit brings fix a bug that occur when a worker do a shift before
her future_alert_date and the shift was marked as attended after the
future_alert_date. In such a case, the worker fell in alert state and
get a -2. This don't fix the fact that the worker fall in alert. But
brings correction when the shift is finally marked as attended.
They become unsubscribe when the regular counter fall under a value that can be define in parameter
[FIX] don't show unsubscribed or resigning worker in the list of worker you can assign on a shift
The bug was that some shift are 'misstimezoned' near DST moment and for
timezone far from the UTC time. Now the date and time of a shift is
calculated in the local timezone then converted into UTC time to be
stored in database.