Skip to content

Commit

Permalink
[FIX] module and add new wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
archetipo committed Dec 4, 2024
1 parent d024f39 commit d6f6367
Show file tree
Hide file tree
Showing 15 changed files with 171 additions and 43 deletions.
6 changes: 2 additions & 4 deletions controllo_accessi_inrim_app/models/ca_persona.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

logger = logging.getLogger(__name__)

get_addressbook_path = "/api/get_addressbook"
# get_addressbook_path = "/api/get_addressbook"
get_personal_types = "/api/getpersonaltypes"
get_job_titles = "/api/get_job_titles"

Expand Down Expand Up @@ -43,14 +43,12 @@ def get_people_data(self, url_path):
@api.model
def _cron_people_get_addressbook(self):
with self.env.cr.savepoint():
for upath in [get_personal_types, get_job_titles, get_addressbook_path]:
for upath in [get_personal_types, get_job_titles]:
data = self.get_people_data(upath)
if data and upath == get_personal_types:
self.update_work_info_type(data)
if data and upath == get_job_titles:
self.update_titolo_persona(data)
if data and upath == get_addressbook_path:
self.get_addressbook_data(data)

def update_work_info_type(self, data):
logger.info("Update tipo persona work_info_type")
Expand Down
5 changes: 3 additions & 2 deletions inrim_anagrafiche/models/ca_documento.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,12 @@ class CaDocumento(models.Model):
tipo_documento_name = fields.Char(related="tipo_documento_id.name")
validity_start_date = fields.Date(required=True)
validity_end_date = fields.Date(required=True)
image_ids = fields.One2many('ca.img_documento', 'ca_documento_id', required=True)
document_code = fields.Char(required=True)
issued_by = fields.Char(required=True)
image_ids = fields.One2many('ca.img_documento', 'ca_documento_id')
ca_stato_documento_id = fields.Many2one('ca.stato_documento', readonly=True)
ca_stato_documento_name = fields.Char(related="ca_stato_documento_id.name")
issued_by = fields.Char(required=True)


@api.constrains('validity_start_date', 'validity_end_date')
def _check_date(self):
Expand Down
17 changes: 13 additions & 4 deletions inrim_anagrafiche/models/ca_model_base_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
import logging
import urllib.parse
from datetime import datetime
import pytz

import pytz
from odoo import models

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -144,12 +144,21 @@ def f_img(cls, record_o):

@classmethod
def f_m2o(cls, record_o, name="name"):
return {"name": record_o.id, "label": record_o.display_name}
if record_o:
return {"name": record_o.id, "label": record_o.display_name}
else:
return False

@classmethod
def f_o2m(cls, record_o, name="name"):
return [{"name": p.id, "label": p.display_name} for p in record_o]
if record_o:
return [{"name": p.id, "label": p.display_name} for p in record_o]
else:
return []

@classmethod
def f_m2m(cls, record_o, name="name"):
return [{"name": p.id, "label": p.display_name} for p in record_o]
if record_o:
return [{"name": p.id, "label": p.display_name} for p in record_o]
else:
return []
16 changes: 3 additions & 13 deletions inrim_anagrafiche/models/ca_persona.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,17 +183,6 @@ def _check_unique_fiscalcode(self):
raise UserError(
_(msg))

@api.constrains('freshman', 'active')
def _check_unique_freshman(self):
for record in self:
if record.freshman:
persona_id = self.env['ca.persona'].search([
('id', '!=', record.id),
('freshman', '=', record.freshman)
])
if persona_id:
raise UserError(_('Esiste già una persona con questa matricola'))

@api.constrains('ca_documento_ids')
def _check_external_documento_ids(self):
for record in self:
Expand Down Expand Up @@ -523,7 +512,7 @@ def rest_get_record(self):
'associated_user_id': self.f_m2o(self.associated_user_id),
'domicile_street': self.domicile_street or "",
'domicile_street2': self.domicile_street2 or "",
'domicile_city_id': self.f_m2o(self.associated_user_id),
'domicile_city_id': self.f_m2o(self.domicile_city_id),
'domicile_state_id': self.f_m2o(self.domicile_state_id),
'domicile_zip_id': self.f_m2o(self.domicile_zip_id),
'domicile_country_id': self.f_m2o(self.domicile_country_id),
Expand All @@ -541,7 +530,8 @@ def rest_get_record(self):
'residence_country_id': self.f_m2o(self.residence_country_id),
'email': self.email,
'phone': self.phone,
'mobile': self.mobile
'mobile': self.mobile,
'ca_workinfo_ids': self.f_o2m(self.ca_workinfo_ids)
}
if self.env.user.has_group('controllo_accessi.ca_gdpr'):
vals.update({
Expand Down
4 changes: 3 additions & 1 deletion inrim_anagrafiche/views/ca_ente_azienda_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,9 @@
options="{'no_create': True}"/>
<field name="ca_persona_ids"
widget="many2many_tags"
options="{'no_create': True}"/>
options="{'no_create': True}"
invisible="1"
/>
</group>
</group>
</page>
Expand Down
1 change: 1 addition & 0 deletions inrim_controllo_accessi/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
'wizard/ca_sposta_punto_accesso_views.xml',
'wizard/ca_aggiungi_movimento_accesso_views.xml',
'wizard/ca_registra_persona_views.xml',
'wizard/ca_registra_doc_persona_views.xml',
'wizard/ca_ritira_badge_views.xml',
'views/ca_tag_lettore_views.xml',
'views/ca_lettore_persona_views.xml',
Expand Down
3 changes: 2 additions & 1 deletion inrim_controllo_accessi/models/ca_persona.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
class CaPersona(models.Model):
_inherit = 'ca.persona'

person_access_ids = fields.One2many('ca.anag_registro_accesso', 'ca_persona_id')
person_access_ids = fields.One2many(
'ca.anag_registro_accesso', 'ca_persona_id')
6 changes: 5 additions & 1 deletion inrim_controllo_accessi/security/ir.model.access.csv
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,8 @@ access_ca_registra_persona_config,access_ca_registra_persona_config,model_ca_reg

access_ca_restituisci_badge_base,access_ca_restituisci_badge_base,model_ca_restituisci_badge,controllo_accessi.ca_base,1,0,0,0
access_ca_restituisci_badge_ca,access_ca_restituisci_badge_ca,model_ca_restituisci_badge,controllo_accessi.ca_ca,1,1,1,0
access_ca_restituisci_badge_config,access_ca_restituisci_badge_config,model_ca_restituisci_badge,controllo_accessi.ca_config,1,1,1,1
access_ca_restituisci_badge_config,access_ca_restituisci_badge_config,model_ca_restituisci_badge,controllo_accessi.ca_config,1,1,1,1

access_ca_registra_doc_persona_base,access_ca_registra_doc_persona_base,model_ca_registra_doc_persona,controllo_accessi.ca_base,1,0,0,0
access_ca_registra_doc_persona_ca,access_ca_registra_doc_persona_ca,model_ca_registra_doc_persona,controllo_accessi.ca_ca,1,1,1,0
access_ca_registra_doc_persona_config,access_ca_registra_doc_persona_config,model_ca_registra_doc_persona,controllo_accessi.ca_config,1,1,1,1
1 change: 1 addition & 0 deletions inrim_controllo_accessi/wizard/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from . import ca_sposta_punto_accesso
from . import ca_aggiungi_movimento_accesso
from . import ca_registra_persona
from . import ca_registra_doc_persona
from . import ca_restituisci_badge
36 changes: 36 additions & 0 deletions inrim_controllo_accessi/wizard/ca_registra_doc_persona.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import logging

from odoo import models, fields, api, _

logger = logging.getLogger(__name__)


class CaRegistraDocPersona(models.TransientModel):
_name = 'ca.registra_doc_persona'
_description = 'Registra Doc Persona'

persona_id = fields.Many2one("ca.persona", readonly=True)
tipo_documento_id = fields.Many2one('ca.tipo_doc_ident')
validity_start_date = fields.Date()
validity_end_date = fields.Date()
document_code = fields.Char()
issued_by = fields.Char()

@api.constrains('date_start', 'date_end')
def _check_date(self):
for record in self:
if record.date_end and record.date_start:
if record.date_end <= record.date_start:
raise UserError(
_('Data fine deve essere maggiore della data di inizio'))

def action_confirm(self):
res = self.env['ca.documento'].create({
'ca_persona_id': self.persona_id.id,
'tipo_documento_id': self.tipo_documento_id.id,
'validity_start_date': self.validity_start_date,
'validity_end_date': self.validity_end_date,
'document_code': self.document_code,
'issued_by': self.issued_by
})
return {'type': 'ir.actions.act_window_close'}
50 changes: 50 additions & 0 deletions inrim_controllo_accessi/wizard/ca_registra_doc_persona_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="ca_registra_doc_persona_form" model="ir.ui.view">
<field name="name">ca.registra.doc.ospite.view.form</field>
<field name="model">ca.registra_doc_persona</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<separator string="Persona"/>
<field name="persona_id"
options="{'no_create': True, 'no_quick_create': True}"
readonly="1"
/>
<field name="tipo_documento_id" string="Tipo Doc." required="1"/>
</group>
</group>
<separator string="Dati Documento"/>
<group>
<group>
<field name="validity_start_date" string="Data Rilascio" required="1"/>
<field name="document_code" string="Codice Doc" required="1"/>
</group>
<group>
<field name="validity_end_date" string="Scadenza" required="1"/>
<field name="issued_by" string="Rilasciato Da" required="1"/>
</group>
</group>

</sheet>
<footer>
<button
name="action_confirm"
string="Completa"
class="btn-primary"
type="object"
/>
</footer>
</form>
</field>
</record>

<record id="ca_registra_doc_persona_action" model="ir.actions.act_window">
<field name="name">Registra Doc Ospite</field>
<field name="res_model">ca.registra_doc_persona</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>
22 changes: 18 additions & 4 deletions inrim_controllo_accessi/wizard/ca_registra_persona.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class CaRegistraPersona(models.TransientModel):
date_end = fields.Datetime(required=True)
parent_id = fields.Many2one(
'ca.persona', string='Reference person', index=True,
domain=[('is_internal', '=', True)]
domain=[('is_internal', '=', True), ("present", "=", "yes")]
)
ca_tag_id = fields.Many2one('ca.tag', required=True)
available_tags_ids = fields.Many2many('ca.tag', compute="_compute_available_tags")
Expand Down Expand Up @@ -92,12 +92,12 @@ def populate_person(self, rec):
self.fiscalcode = rec.fiscalcode
self.email = rec.email
self.persona_id = rec.id
self.compute_available_tags()
ent_az_id = rec.ca_ente_azienda_ids.ids[0] if rec.ca_ente_azienda_ids else []
self.eval_ente_azienda_id(ent_az_id)
current_winfo = self.persona_id.get_current_winfo()
self.ca_work_info_type_id = current_winfo.ca_work_info_type_id.id
self.ca_title_id = current_winfo.ca_title_id.id
self.compute_available_tags()

def reset_person(self):
self.ensure_one()
Expand All @@ -113,7 +113,7 @@ def _compute_available_tags(self):

def compute_available_tags(self):
self.ensure_one()
if not self.persona_id or self.persona_id.is_external:
if not self.ca_title_id.structured:
self.available_tags_ids = self.env['ca.tag'].search([
('in_use', '=', False),
('revoked', '=', False),
Expand Down Expand Up @@ -193,6 +193,7 @@ def _check_date(self):
record.compute_available_tags()

def action_confirm(self):
add_doc = True
if not self.ente_azienda:
self.ente_azienda = self.env['ca.ente_azienda'].create(
{
Expand Down Expand Up @@ -225,6 +226,7 @@ def action_confirm(self):
}
)
else:
add_doc = False
vals = {
"freshman": self.freshman,
"mobile": self.mobile,
Expand All @@ -245,4 +247,16 @@ def action_confirm(self):
for access_point in access_point_group.ca_access_point_ids:
logger.info(f"wizard eval attach {access_point}")
access_point.stamping_attach()
return res
if add_doc:
add_doc_w = self.env['ca.registra_doc_persona'].create({
'persona_id': self.persona_id.id,
})
return {
'type': 'ir.actions.act_window',
'res_model': 'ca.registra_doc_persona',
'view_mode': 'form',
'res_id': add_doc_w.id,
'target': 'new',
}
else:
return {'type': 'ir.actions.act_window_close'}
31 changes: 21 additions & 10 deletions inrim_controllo_accessi/wizard/ca_registra_persona_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,56 @@
<field name="ente_interno" invisible="1"/>
<group>
<group>
<field name="persona_id" options="{'no_create': True, 'no_quick_create': True}"/>
<separator string="Nominativo"/>
<separator string="Cerca nel sistema"/>
<field name="persona_id"
options="{'no_create': True, 'no_quick_create': True}"/>
</group>
</group>

<group>
<group>
<separator string="Nuovo Nominativo"/>
<field name="lastname" string="Cognome"/>
<field name="name" string="Nome"/>
<field name="fiscalcode" class=""/>
<field name="freshman"/>
<field name="fiscalcode" class=""
string="Codice Fiscale"/>
<field name="freshman" string="Matricola"/>
<field name="email"/>
<field name="mobile"/>
</group>
<group>
<separator string="Azienda"/>
<separator string="Ente/Azienda"/>
<field name="vat"
required="not ente_interno"
invisible="ente_interno"
string="Partita IVA"
/>
<field name="ca_ente_name"/>
<field name="tipo_ente_azienda_id"/>
</group>
</group>
<separator string="Referente"/>
<separator string="Referente interno"/>
<group>
<field name="parent_id"
options="{'no_create': True, 'no_quick_create': True}"
options="{'no_create': True, 'no_quick_create': True, 'no_edit':True}"
required="not persona_id or persona_id.is_external == True"/>
</group>
<separator string="Dati Accesso"/>

<group>
<group>
<field name="ca_work_info_type_id" options="{'no_create': True, 'no_quick_create': True}"/>
<field name="ca_work_info_type_id"
options="{'no_create': True, 'no_quick_create': True}"/>
<field name="date_start"/>
<field name="ca_tag_id" string="Badge"
options="{'no_create': True, 'no_quick_create': True}"
domain="[('id', 'in', available_tags_ids)]"/>
</group>
<group>
<field name="ca_title_id" options="{'no_create': True, 'no_quick_create': True}"/>
<field name="ca_title_id"
options="{'no_create': True, 'no_quick_create': True}"/>
<field name="date_end"/>
<field name="work_id_number" />
<field name="work_id_number" invisible="1"/>
<field name="available_tags_ids" invisible="1"/>

</group>
Expand Down
Loading

0 comments on commit d6f6367

Please sign in to comment.