Commit 7b266f4d by François

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

parent a8b0fcb4
dev_cooperatic #5673_bug_calendrier_echange_service 3832-makeups-and-member-status-update 4081 4444_improve_presence_recording 4709 4778-reception-dont-get-finished-orders 4809-remove-shelf-value-col-to-reduce-server-load 4880-rapports-reception-faux 4950-douchage-appli-reception 5474-et-5462-Voir-les-rattrapages-choisis-dans-admin-bdm-et-corrige-lenteur-affichage-admin-rattrapages 5641-reception-trier-a-la-maj-prix-dans-ordre-de-pointage-quantites 6286_bug_encaissement_souscription_cheque_espece 6813-marking-parent-gone-when-unpairing-binom-does-not-unsuscribe-parent-from-shift-template 6832--certaines-absences-engendrent-une-erreur 7723-7559-change-purchase-order-workflow-django-side 7731-third-party-side-brinks-pos-export-not-working 7747-inventaire-par-article 7800-make-test-solution-work 7819-prevent-adding-product-already-in-order 7848-cannot-validate-qty-with-decimal-on-kg-product 7918_bug_quantites_stade_demande_prix adaptation_supercafoutch adaptation_supercoop adaptation_supercoop_supercafoutch adpatation_chouette assistance_import_article coop_dev_necessitant_modules_bdm_odoo_modifies correctif_nb_rattrapages_creation_binome_avec_ajout_automatique_au_point_negatif dev_principale docker export_capital_detenu fix_bug_process_picking fusion_custom_graoucoop graoucoop_backup graoucoop_prod graoucoop_tmp hot_fix_shelf_labels_auto_print impression_etiquettes_rayons integration_lien_precommandes_dans_espace_membre lacagette_prod local_branch master meal-voucher-and-label-printer-software-bug migration-v12 pour_graoucoop_prod pour_version_prod_cagette refonte_espace_membre_sc retouches_tickets_supercoop sc-setup-stock-app supercafoutch-preprod supercafoutch-prod-20221003 supercafoutch_prod ticket_4146 supercafoutch_20250120_151258 supercafoutch_20250120_150340 supercafoutch_20240909_080630 supercafoutch_20240609_115709 supercafoutch_20240212_082431 supercafoutch_20240107_181851 supercafoutch_prod_until_240107 supercafoutch-prod-20221003 supercafoutch-230911 supercafoutch-230824 supercafoutch-230823 supercafoutch-230823-the-true-one migration-v12-tag lacagette_20240310_074751 lacagette_20240107_122554 lacagette_20240107_120916 graoucoop_20240609_122614 cagette_testtag cagette-230814 cagette-230630
5 merge requests!103WIP: Dev cooperatic,!87Integration Evolution bdm,!104merge dev_cooperatic into dev_principale,!106Dev principale,!84Ticket 1738
...@@ -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('-')
...@@ -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),
...@@ -1141,17 +1141,20 @@ class CagetteServices(models.Model): ...@@ -1141,17 +1141,20 @@ 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
......
...@@ -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