Controller scaffold with GET /fusion_clock/kiosk/nfc, placeholder QWeb template, and HttpCase tests (10 pass, 0 failures). Fixed Odoo 19 res.users create API: groups_id -> group_ids. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
|
|
import logging
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class FusionClockNfcKiosk(http.Controller):
|
|
"""NFC tap-to-clock kiosk controller. Reuses FusionClockAPI helpers."""
|
|
|
|
@http.route('/fusion_clock/kiosk/nfc', type='http', auth='user', website=True)
|
|
def nfc_kiosk_page(self, **kw):
|
|
"""Render the NFC kiosk page for a wall-mounted tablet."""
|
|
user = request.env.user
|
|
if not user.has_group('fusion_clock.group_fusion_clock_manager'):
|
|
return request.redirect('/my')
|
|
|
|
ICP = request.env['ir.config_parameter'].sudo()
|
|
if ICP.get_param('fusion_clock.enable_nfc_kiosk', 'False') != 'True':
|
|
return request.redirect('/my')
|
|
|
|
company = request.env.company
|
|
location = company.x_fclk_nfc_kiosk_location_id
|
|
values = {
|
|
'page_name': 'nfc_kiosk',
|
|
'company_name': company.name,
|
|
'location_name': location.name if location else 'No location configured',
|
|
'location_configured': bool(location),
|
|
'photo_required': ICP.get_param('fusion_clock.nfc_photo_required', 'True') == 'True',
|
|
'debug_enabled': ICP.get_param('fusion_clock.nfc_kiosk_debug', 'False') == 'True',
|
|
}
|
|
return request.render('fusion_clock.nfc_kiosk_page', values)
|