[FIX] open_workshop: sichere Zugriffskontrolle auf Partner im POS-Widget
- Speichert den aktuellen Partner explizit in state.client - Dadurch wird im POS Frontend im Widget Geburtstag, HA, ... angezeigt.
This commit is contained in:
parent
a23afea36d
commit
a1eb146137
|
|
@ -466,6 +466,28 @@ class OwsMachine(models.Model):
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def get_access_list_grouped(self, partner_id):
|
def get_access_list_grouped(self, partner_id):
|
||||||
|
"""
|
||||||
|
Gibt eine gruppierte Liste von Maschinenzugängen für einen bestimmten Partner zurück. Diese Funktion wird in
|
||||||
|
Odoo POS Frontend verwendet um die Ansicht zu erzeugen auf Welche Maschinen der Partner Zugriff hat.
|
||||||
|
|
||||||
|
Für einen gegebenen Partner (über die partner_id) werden alle Maschinenbereiche (areas) abgefragt.
|
||||||
|
Für jeden Bereich wird geprüft, auf welche Maschinen der Partner Zugriff hat. Das Ergebnis wird
|
||||||
|
als Liste von Bereichen mit jeweils zugehörigen Maschinen und Zugriffsstatus zurückgegeben.
|
||||||
|
|
||||||
|
Zusätzlich werden sicherheitsrelevante Informationen des Partners (wie Sicherheitsunterweisung,
|
||||||
|
Sicherheits-ID, RFID-Karte und Geburtstag) aus dem zugehörigen ows_user ermittelt und mitgeliefert.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
partner_id (int): Die ID des Partners, für den die Zugriffsübersicht erstellt werden soll.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: Ein Dictionary mit folgenden Schlüsseln:
|
||||||
|
- 'access_by_area': Liste von Bereichen mit Maschinen und Zugriffsstatus.
|
||||||
|
- 'security_briefing': Sicherheitsunterweisung des Nutzers (bool oder False).
|
||||||
|
- 'security_id': Sicherheits-ID des Nutzers (str oder '').
|
||||||
|
- 'rfid_card': RFID-Kartennummer des Nutzers (str oder '').
|
||||||
|
- 'birthday': Geburtstag des Nutzers (str oder '').
|
||||||
|
"""
|
||||||
partner = self.env['res.partner'].browse(partner_id)
|
partner = self.env['res.partner'].browse(partner_id)
|
||||||
areas = self.env['ows.machine.area'].search([], order="name")
|
areas = self.env['ows.machine.area'].search([], order="name")
|
||||||
|
|
||||||
|
|
@ -520,7 +542,7 @@ class OwsMachineAccess(models.Model):
|
||||||
class OwsMachineProduct(models.Model):
|
class OwsMachineProduct(models.Model):
|
||||||
_name = 'ows.machine.product'
|
_name = 'ows.machine.product'
|
||||||
_table = 'ows_machine_product'
|
_table = 'ows_machine_product'
|
||||||
_description = 'OWS: Zurordnung Produkt der Nutzung zur die Maschine'
|
_description = 'OWS: Zuordnung Produkt der Nutzung zu der Maschine'
|
||||||
|
|
||||||
product_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade')
|
product_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade')
|
||||||
machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade')
|
machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade')
|
||||||
|
|
@ -528,7 +550,7 @@ class OwsMachineProduct(models.Model):
|
||||||
class OwsMachineTraining(models.Model):
|
class OwsMachineTraining(models.Model):
|
||||||
_name = 'ows.machine.training'
|
_name = 'ows.machine.training'
|
||||||
_table = 'ows_machine_training'
|
_table = 'ows_machine_training'
|
||||||
_description = 'OWS: Zurordnung Produkt der Einweisung zur die Maschine'
|
_description = 'OWS: Zuordnung Produkt der Einweisung zu der Maschine'
|
||||||
|
|
||||||
training_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade')
|
training_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade')
|
||||||
machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade')
|
machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade')
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ export class OwsMachineAccessList extends Component {
|
||||||
this.pos = usePos();
|
this.pos = usePos();
|
||||||
|
|
||||||
this.state = useState({
|
this.state = useState({
|
||||||
|
client: null,
|
||||||
grouped_accesses: [],
|
grouped_accesses: [],
|
||||||
security_briefing: false,
|
security_briefing: false,
|
||||||
security_id: '',
|
security_id: '',
|
||||||
|
|
@ -31,7 +32,7 @@ export class OwsMachineAccessList extends Component {
|
||||||
async updateAccessList() {
|
async updateAccessList() {
|
||||||
const order = this.pos.get_order();
|
const order = this.pos.get_order();
|
||||||
const partner = order?.get_partner?.();
|
const partner = order?.get_partner?.();
|
||||||
|
this.state.client = partner || null;
|
||||||
if (!partner) {
|
if (!partner) {
|
||||||
this.state.grouped_accesses = [];
|
this.state.grouped_accesses = [];
|
||||||
this.state.security_briefing = false;
|
this.state.security_briefing = false;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user