Commit 6e903196 by Owo Sugiana

Tidak bisa kirim undangan bila tujuan sudah login

1 parent 4e782117
...@@ -13,6 +13,11 @@ HUBUNGAN_KELUARGA = [ ...@@ -13,6 +13,11 @@ HUBUNGAN_KELUARGA = [
'Kepala Keluarga', 'Suami', 'Istri', 'Anak', 'Menantu', 'Cucu', 'Kepala Keluarga', 'Suami', 'Istri', 'Anak', 'Menantu', 'Cucu',
'Orang Tua', 'Mertua', 'Famili Lain'] 'Orang Tua', 'Mertua', 'Famili Lain']
# https://gis.dukcapil.kemendagri.go.id/arcgis/apps/MapSeries/index.html?appid=0510ddf68e094d56a07a7bf9f5330dfe
RELIGIONS = [
'Islam', 'Kristen', 'Katholik', 'Hindu', 'Budha', 'Konghucu',
'Kepercayaan Lain']
ERR_NIK = ValidationError(f'NIK harus 16 angka') ERR_NIK = ValidationError(f'NIK harus 16 angka')
...@@ -34,7 +39,16 @@ class HubunganKeluarga(models.Model): ...@@ -34,7 +39,16 @@ class HubunganKeluarga(models.Model):
_order = 'name' _order = 'name'
_description = 'Hubungan Keluarga' _description = 'Hubungan Keluarga'
name = fields.Char(string='Hubungan Keluarga') name = fields.Char(string='Hubungan Keluarga', required=True)
# https://github.com/open-synergy/opnsynid-partner-contact/tree/8.0/partner_contact_religion/models
class PartnerReligion(models.Model):
_name = 'partner.religion'
_order = 'id'
_description = 'Agama'
name = fields.Char(string='Religion', required=True)
class Partner(models.Model): class Partner(models.Model):
...@@ -67,9 +81,28 @@ class Partner(models.Model): ...@@ -67,9 +81,28 @@ class Partner(models.Model):
[('male', 'Laki-laki'), ('female', 'Perempuan')]) [('male', 'Laki-laki'), ('female', 'Perempuan')])
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_birthdate # https://github.com/OCA/partner-contact/blob/15.0/partner_contact_birthdate
birthdate_date = fields.Date('Tanggal Lahir') birthdate_date = fields.Date('Tanggal Lahir')
age = fields.Integer(readonly=True, compute='_compute_age') age = fields.Integer(string='Usia', readonly=True, compute='_compute_age')
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality # https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality
nationality_id = fields.Many2one('res.country', 'Warga Negara') nationality_id = fields.Many2one('res.country', 'Warga Negara')
religion_id = fields.Many2one('partner.religion', 'Agama')
def _create_hubungan_keluarga(self):
# Buat daftar Hubungan Keluarga
for name in HUBUNGAN_KELUARGA:
res = self.env['hubungan.keluarga'].search(
[('name', '=', name)], limit=1)
if not res:
d = dict(name=name)
self.env['hubungan.keluarga'].create(d)
def _create_religion(self):
# Buat daftar Agama
for name in RELIGIONS:
res = self.env['partner.religion'].search(
[('name', '=', name)], limit=1)
if not res:
d = dict(name=name)
self.env['partner.religion'].create(d)
@api.model @api.model
def create(self, vals): def create(self, vals):
...@@ -83,13 +116,8 @@ class Partner(models.Model): ...@@ -83,13 +116,8 @@ class Partner(models.Model):
# RT ? # RT ?
if self.env.ref('warga.res_partner_category_warga_rt') == \ if self.env.ref('warga.res_partner_category_warga_rt') == \
res.category_id: res.category_id:
# Buat daftar Hubungan Keluarga self._create_hubungan_keluarga()
for name in HUBUNGAN_KELUARGA: self._create_religion()
hk = self.env['hubungan.keluarga'].search(
[('name', '=', name)], limit=1)
if not hk:
d = dict(name=name)
self.env['hubungan.keluarga'].create(d)
return res return res
@api.depends("birthdate_date") @api.depends("birthdate_date")
......
...@@ -4,3 +4,4 @@ access_undangan_portal,access_undangan_dari_portal,model_warga_undangan,base.gro ...@@ -4,3 +4,4 @@ access_undangan_portal,access_undangan_dari_portal,model_warga_undangan,base.gro
access_pop_message_user,access_pop_message_user,model_custom_pop_message,base.group_user,1,0,0,0 access_pop_message_user,access_pop_message_user,model_custom_pop_message,base.group_user,1,0,0,0
access_pop_message_portal,access_pop_message_portal,model_custom_pop_message,base.group_portal,1,0,0,0 access_pop_message_portal,access_pop_message_portal,model_custom_pop_message,base.group_portal,1,0,0,0
access_hubungan_keluarga,access_hubungan_keluarga,model_hubungan_keluarga,base.group_user,1,1,1,1 access_hubungan_keluarga,access_hubungan_keluarga,model_hubungan_keluarga,base.group_user,1,1,1,1
access_partner_religion,access_partner_religion,model_partner_religion,base.group_user,1,1,1,1
...@@ -22,6 +22,13 @@ ...@@ -22,6 +22,13 @@
[('create_uid', '=', user.id)] [('create_uid', '=', user.id)]
</field> </field>
</record> </record>
<record model="ir.rule" id="akses_partner_religion">
<field name="name">Hak Akses Agama</field>
<field name="model_id" ref="model_partner_religion"/>
<field name="domain_force">
[('create_uid', '=', user.id)]
</field>
</record>
<record model="ir.rule" id="base.res_partner_rule_private_employee"> <record model="ir.rule" id="base.res_partner_rule_private_employee">
<field name="groups" eval="[Command.unlink(ref('base.group_user')), Command.link(ref('base.group_erp_manager'))]"/> <field name="groups" eval="[Command.unlink(ref('base.group_user')), Command.link(ref('base.group_erp_manager'))]"/>
</record> </record>
......
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
'default_zip': zip}"> 'default_zip': zip}">
<tree> <tree>
<field name="name"/> <field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="age"/> <field name="age"/>
<field name="street" string="Jalan / No."/> <field name="street" string="Jalan / No."/>
<field name="mobile"/> <field name="mobile"/>
...@@ -72,7 +73,8 @@ ...@@ -72,7 +73,8 @@
<group> <group>
<group> <group>
<field name="name"/> <field name="name"/>
<!-- field name="title" options='{"no_open": True}'/--> <!-- https://www.odoo.com/id_ID/forum/help-1/can-contacts-have-a-nickname-197033 -->
<field name="ref" string="Panggilan"/>
<field name="gender"/> <field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/> <field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/> <field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
...@@ -80,6 +82,8 @@ ...@@ -80,6 +82,8 @@
<field name="email" widget="email"/> <field name="email" widget="email"/>
<field name="phone" widget="phone"/> <field name="phone" widget="phone"/>
<field name="nationality_id"/> <field name="nationality_id"/>
<field name="function" string="Pekerjaan"/>
<field name="religion_id"/>
</group> </group>
<group> <group>
<label for="street" string="Alamat"/> <label for="street" string="Alamat"/>
...@@ -111,9 +115,11 @@ ...@@ -111,9 +115,11 @@
'default_kecamatan_id': kecamatan_id, 'default_kecamatan_id': kecamatan_id,
'default_kelurahan_id': kelurahan_id, 'default_kelurahan_id': kelurahan_id,
'default_rw': rw, 'default_rt': rt, 'default_rw': rw, 'default_rt': rt,
'default_zip': zip}"> 'default_zip': zip,
'default_religion_id': religion_id}">
<tree> <tree>
<field name="name"/> <field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="gender"/> <field name="gender"/>
<field name="age"/> <field name="age"/>
<field name="hubungan_keluarga"/> <field name="hubungan_keluarga"/>
...@@ -127,6 +133,7 @@ ...@@ -127,6 +133,7 @@
<group> <group>
<group> <group>
<field name="name"/> <field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="gender"/> <field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/> <field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/> <field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
...@@ -135,6 +142,8 @@ ...@@ -135,6 +142,8 @@
<field name="email" widget="email"/> <field name="email" widget="email"/>
<field name="phone" widget="phone"/> <field name="phone" widget="phone"/>
<field name="nationality_id"/> <field name="nationality_id"/>
<field name="function" string="Pekerjaan"/>
<field name="religion_id"/>
</group> </group>
<group> <group>
<label for="rt" string="Alamat"/> <label for="rt" string="Alamat"/>
......
...@@ -28,13 +28,19 @@ class KirimUndangan(models.TransientModel): ...@@ -28,13 +28,19 @@ class KirimUndangan(models.TransientModel):
t = self.email.split('@') t = self.email.split('@')
if len(t) != 2: if len(t) != 2:
raise ValidationError(f'Email {self.email} tidak benar') raise ValidationError(f'Email {self.email} tidak benar')
partner = self.env['res.partner'].sudo().search(
[('email', '=', self.email)], limit=1)
if partner and not partner.signup_token:
raise ValidationError(f'Email {self.email} sudah terdaftar')
template = self.env.ref('warga.warga_undangan_email') template = self.env.ref('warga.warga_undangan_email')
if not template: if not template:
raise UserError( raise UserError(
_('The template "Portal: new user" not found for sending ' _('The template "Portal: new user" not found for sending '
'email to the portal user.')) 'email to the portal user.'))
d = dict(name=self.name, email=self.email, user_id=self.env.user.id) if not partner:
partner = self.env['res.partner'].create(d) d = dict(
name=self.name, email=self.email, user_id=self.env.user.id)
partner = self.env['res.partner'].create(d)
lang = partner.sudo().lang lang = partner.sudo().lang
portal_url = partner.with_context( portal_url = partner.with_context(
signup_force_type_in_url='', lang=lang).\ signup_force_type_in_url='', lang=lang).\
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!