Commit 7b266f4d by François

Modifications pour test borne accueil (présences validées date autre que 'maintenant')

parent a8b0fcb4
...@@ -9,7 +9,7 @@ from products.models import OFF ...@@ -9,7 +9,7 @@ from products.models import OFF
from envelops.models import CagetteEnvelops from envelops.models import CagetteEnvelops
import sys import sys
from pytz import timezone import pytz
import locale import locale
import re import re
import dateutil.parser import dateutil.parser
...@@ -653,7 +653,7 @@ class CagetteMember(models.Model): ...@@ -653,7 +653,7 @@ class CagetteMember(models.Model):
locale.setlocale(locale.LC_ALL, 'fr_FR.utf8') locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
if len(res) > 0: if len(res) > 0:
local_tz = timezone('Europe/Paris') local_tz = pytz.timezone('Europe/Paris')
for s in res: for s in res:
date, t = s['date_begin'].split(' ') date, t = s['date_begin'].split(' ')
year, month, day = date.split('-') year, month, day = date.split('-')
...@@ -712,8 +712,8 @@ class CagetteMember(models.Model): ...@@ -712,8 +712,8 @@ class CagetteMember(models.Model):
cond = [['id', '=', m['tmpl_reg_line_ids'][0]]] cond = [['id', '=', m['tmpl_reg_line_ids'][0]]]
fields = ['shift_template_id'] fields = ['shift_template_id']
shift_templ_res = api.search_read('shift.template.registration.line', cond, fields) shift_templ_res = api.search_read('shift.template.registration.line', cond, fields)
if (len(shift_templ_res) > 0 if (len(shift_templ_res) > 0
and and
int(shift_templ_res[0]['shift_template_id'][0]) == int(shift_id)): int(shift_templ_res[0]['shift_template_id'][0]) == int(shift_id)):
keep_it = True keep_it = True
else: else:
...@@ -1078,7 +1078,7 @@ class CagetteServices(models.Model): ...@@ -1078,7 +1078,7 @@ class CagetteServices(models.Model):
res = api.search_read('shift.shift', c, f, 1, 0, 'date_begin ASC') res = api.search_read('shift.shift', c, f, 1, 0, 'date_begin ASC')
if (res and res[0]): if (res and res[0]):
locale.setlocale(locale.LC_ALL, 'fr_FR.utf8') locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')
local_tz = timezone('Europe/Paris') local_tz = pytz.timezone('Europe/Paris')
date, t = res[0]['date_begin'].split(' ') date, t = res[0]['date_begin'].split(' ')
year, month, day = date.split('-') year, month, day = date.split('-')
start = datetime.datetime(int(year), int(month), int(day), start = datetime.datetime(int(year), int(month), int(day),
...@@ -1090,7 +1090,7 @@ class CagetteServices(models.Model): ...@@ -1090,7 +1090,7 @@ class CagetteServices(models.Model):
@staticmethod @staticmethod
def get_services_at_time(time, tz_offset, with_members=True): def get_services_at_time(time, tz_offset, with_members=True):
"""Retrieve present services with member linked.""" """Retrieve present services with member linked."""
# import operator # import operator
min_before_shift_starts_delay = 20 min_before_shift_starts_delay = 20
min_after_shift_starts_delay = 20 min_after_shift_starts_delay = 20
...@@ -1141,22 +1141,25 @@ class CagetteServices(models.Model): ...@@ -1141,22 +1141,25 @@ class CagetteServices(models.Model):
return services return services
@staticmethod @staticmethod
def registration_done(registration_id): def registration_done(registration_id, overrided_date=""):
"""Equivalent to click present in presence form.""" """Equivalent to click present in presence form."""
api = OdooAPI() api = OdooAPI()
f = {'state': 'done'} f = {'state': 'done'}
late_mode = getattr(settings, 'ENTRANCE_WITH_LATE_MODE', False) late_mode = getattr(settings, 'ENTRANCE_WITH_LATE_MODE', False)
if late_mode is True: if late_mode is True:
# services = CagetteServices.get_services_at_time('14:28',0, with_members=False) # services = CagetteServices.get_services_at_time('14:28',0, with_members=False)
local_tz = timezone('Europe/Paris') if len(overrided_date) > 0 and getattr(settings, 'APP_ENV', "prod") != "prod":
now = datetime.datetime.now().astimezone(local_tz).strftime("%H:%MZ") now = overrided_date
# coop_logger.info("Maintenant = %s", now) else:
services = CagetteServices.get_services_at_time(now,0, with_members=False) local_tz = pytz.timezone('Europe/Paris')
now = datetime.datetime.utcnow().replace(tzinfo=pytz.utc).astimezone(local_tz).strftime("%H:%MZ")
# coop_logger.info("Maintenant = %s (overrided %s) %s", now, overrided_date)
services = CagetteServices.get_services_at_time(now, 0, with_members=False)
if len(services) > 0: if len(services) > 0:
# Notice : Despite is_late is defined as boolean in Odoo, 0 or 1 is needed for api call # Notice : Despite is_late is defined as boolean in Odoo, 0 or 1 is needed for api call
is_late = 0 is_late = 0
if services[0]['late'] is True: if services[0]['late'] is True:
is_late = 1 is_late = 1
f['is_late'] = is_late f['is_late'] = is_late
else: else:
return False return False
...@@ -1301,8 +1304,8 @@ class CagetteServices(models.Model): ...@@ -1301,8 +1304,8 @@ class CagetteServices(models.Model):
cond = [['id', '=', coop[0]['tmpl_reg_line_ids'][0]]] cond = [['id', '=', coop[0]['tmpl_reg_line_ids'][0]]]
fields = ['shift_template_id'] fields = ['shift_template_id']
shift_templ_res = api.search_read('shift.template.registration.line', cond, fields) shift_templ_res = api.search_read('shift.template.registration.line', cond, fields)
if (len(shift_templ_res) > 0 if (len(shift_templ_res) > 0
and and
shift_templ_res[0]['shift_template_id'][0] == committees_shift_id): shift_templ_res[0]['shift_template_id'][0] == committees_shift_id):
evt_name = getattr(settings, 'ENTRANCE_ADD_PT_EVENT_NAME', 'Validation service comité') evt_name = getattr(settings, 'ENTRANCE_ADD_PT_EVENT_NAME', 'Validation service comité')
......
...@@ -47,7 +47,7 @@ def index(request): ...@@ -47,7 +47,7 @@ def index(request):
return HttpResponse("Le créneau des comités n'est pas configuré dans Odoo !") return HttpResponse("Le créneau des comités n'est pas configuré dans Odoo !")
else: else:
context['committees_shift_id'] = committees_shift_id context['committees_shift_id'] = committees_shift_id
if 'no_picture_member_advice' in msettings: if 'no_picture_member_advice' in msettings:
if len(msettings['no_picture_member_advice']['value']) > 0: if len(msettings['no_picture_member_advice']['value']) > 0:
context['no_picture_member_advice'] = msettings['no_picture_member_advice']['value'] context['no_picture_member_advice'] = msettings['no_picture_member_advice']['value']
...@@ -245,7 +245,7 @@ def search(request, needle, shift_id): ...@@ -245,7 +245,7 @@ def search(request, needle, shift_id):
except ValueError: except ValueError:
key = needle key = needle
k_type = 'name' k_type = 'name'
res = CagetteMember.search(k_type, key, shift_id) res = CagetteMember.search(k_type, key, shift_id)
return JsonResponse({'res': res}) return JsonResponse({'res': res})
...@@ -274,7 +274,14 @@ def record_service_presence(request): ...@@ -274,7 +274,14 @@ def record_service_presence(request):
mid = int(request.POST.get("mid", 0)) # member id mid = int(request.POST.get("mid", 0)) # member id
sid = int(request.POST.get("sid", 0)) # shift id sid = int(request.POST.get("sid", 0)) # shift id
stid = int(request.POST.get("stid", 0)) # shift_ticket_id stid = int(request.POST.get("stid", 0)) # shift_ticket_id
app_env = getattr(settings, 'APP_ENV', "prod")
if (rid > -1 and mid > 0): if (rid > -1 and mid > 0):
overrided_date = ""
if app_env != "prod":
import re
o_date = re.search(r'/([^\/]+?)$', request.META.get('HTTP_REFERER'))
if o_date:
overrided_date = o_date.group(1)
# rid = 0 => C'est un rattrapage, sur le service # rid = 0 => C'est un rattrapage, sur le service
if sid > 0 and stid > 0: if sid > 0 and stid > 0:
# Add member to service and take presence into account # Add member to service and take presence into account
...@@ -282,7 +289,8 @@ def record_service_presence(request): ...@@ -282,7 +289,8 @@ def record_service_presence(request):
if res['rattrapage'] is True: if res['rattrapage'] is True:
res['update'] = 'ok' res['update'] = 'ok'
else: else:
if (CagetteServices.registration_done(rid) is True):
if (CagetteServices.registration_done(rid, overrided_date) is True):
res['update'] = 'ok' res['update'] = 'ok'
else: else:
res['update'] = 'ko' res['update'] = 'ko'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment