Merge pull request #2626 from expsa/task_11959

Task 11959
This commit is contained in:
FathiaBMExp 2025-03-12 12:59:05 +01:00 committed by GitHub
commit e97bee18d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 163 additions and 30 deletions

View File

@ -1,35 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="view_event_form">
<field name="name">event.event.form</field>
<field name="model">event.event</field>
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='organizer_id']" position="attributes">
<attribute name="context">{ 'default_is_company': True}</attribute>
</xpath>
<xpath expr="//field[@name='address_id']" position="attributes">
<attribute name="context">{'default_is_company': True}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_event_sponsor_inherit_form">
<field name="name">event.sponsor.form</field>
<field name="model">event.sponsor</field>
<field name="inherit_id" ref="website_event_track.event_sponsor_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="context">{'default_is_company': True}</attribute>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_event_track_inherit_form">
<field name="name">event.track.form</field>
<field name="model">event.track</field>

View File

@ -9,10 +9,12 @@
'version': '1.0',
'description': """This module helps analyzing and organizing event tracks.
For that purpose it adds a gantt view on event tracks.""",
'depends': ['website_event_track', 'odex25_web_gantt'],
'depends': ['base', 'website_event_track', 'odex25_web_gantt', 'event', 'contacts'],
'auto_install': True,
'data': [
'views/event_event_views.xml',
'views/event_track_views.xml',
'views/res_partner_views.xml',
'views/event_sponsor_views.xml',
],
}

View File

@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
from . import event_event
from . import res_partner
from . import event_sponsor

View File

@ -17,6 +17,22 @@ class Event(models.Model):
address_id = fields.Many2one(
'res.partner', string='Venue', default=lambda self: self.env.company.partner_id.id,
tracking=True, domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]")
manager_can_edit = fields.Boolean(
string="Manager Can Edit", compute="_compute_manager_can_edit"
)
# address fields
street = fields.Char(related="address_id.street", readonly=True)
street2 = fields.Char(related="address_id.street2", readonly=True)
city = fields.Char(related="address_id.city", readonly=True)
state_id = fields.Many2one("res.country.state", string='State', ondelete='restrict',
domain="[('country_id', '=?', country_id)]", related="address_id.state_id", readonly=True)
country_id = fields.Many2one('res.country', string='Country', ondelete='restrict', related="address_id.country_id", readonly=True)
@api.depends_context('uid')
def _compute_manager_can_edit(self):
""" Compute whether the user can edit the address_id, organizer_id field """
for record in self:
record.manager_can_edit = self.env.user.has_group('event.group_event_manager')
@api.depends('date_begin', 'date_end')
def _compute_remaining_time(self):

View File

@ -0,0 +1,15 @@
from odoo import api, fields, models
class Sponsor(models.Model):
_inherit = "event.sponsor"
manager_can_edit = fields.Boolean(
string="Manager Can Edit", compute="_compute_manager_can_edit"
)
@api.depends_context('uid')
def _compute_manager_can_edit(self):
""" Compute whether the user can edit the address_id, organizer_id field """
for record in self:
record.manager_can_edit = self.env.user.has_group('event.group_event_manager')

View File

@ -0,0 +1,9 @@
from odoo import fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
is_event_address = fields.Boolean(string="Event address ?")
is_organizer = fields.Boolean(string="Organizer ?")
is_sponsor = fields.Boolean(string="Sponsor ?")

View File

@ -24,8 +24,31 @@
<xpath expr="//field[@name='tag_ids']" position="after">
<field name="Description_event"/>
</xpath>
<xpath expr="//field[@name='address_id']" position="attributes">
<attribute name="context">{'show_address': 1, 'default_is_event_address': True,'default_is_company':
True}
</attribute>
<attribute name="attrs">{'readonly': [('manager_can_edit', '=', False)]}</attribute>
<attribute name="domain">[('is_event_address','=',True)]</attribute>
</xpath>
<xpath expr="//field[@name='organizer_id']" position="attributes">
<attribute name="context">{'default_is_company': True,'default_is_organizer': True,}</attribute>
<attribute name="attrs">{'readonly': [('manager_can_edit', '=', False)]}</attribute>
<attribute name="domain">[('is_organizer','=',True)]</attribute>
</xpath>
<xpath expr="//field[@name='address_id']" position="after">
<label for="street" string="Address"/>
<div class="o_address_format">
<field name="street" placeholder="Street..." class="o_address_street"/>
<field name="street2" placeholder="Street 2..." class="o_address_street"/>
<field name="city" placeholder="City" class="o_address_city"/>
<field name="state_id" class="o_address_state" placeholder="State"
options="{'no_open': True, 'no_quick_create': True}"/>
<field name="country_id" placeholder="Country" class="o_address_country"
options='{"no_open": True, "no_create": True}'/>
</div>
<field name="link" widget="url"/>
<field name="manager_can_edit" invisible="1"/>
</xpath>
</field>
</record>

View File

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<odoo>
<record id="event_sponsor_view_form_inherit" model="ir.ui.view">
<field name="name">event.sponsor.view.form.inherit</field>
<field name="model">event.sponsor</field>
<field name="inherit_id" ref="website_event_track.event_sponsor_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="manager_can_edit" invisible="1"/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="context">{'default_is_company': True, 'default_is_sponsor': True}</attribute>
<attribute name="attrs">{'readonly': [('manager_can_edit', '=', False)]}</attribute>
<attribute name="domain">[('is_sponsor','=',True)]</attribute>
</xpath>
</field>
</record>
<menuitem name="Event Sponsors"
id="menu_event_sponsor"
sequence="4"
parent="event.menu_event_configuration"
action="website_event_track.event_sponsor_action_from_event"
groups="event.group_event_manager"/>
</odoo>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_inherited" model="ir.ui.view">
<field name="name">view.partner.form.inherited</field>
<field name="model">res.partner</field>
<field name="priority">10</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after">
<field name="is_event_address"/>
<field name="is_organizer"/>
<field name="is_sponsor"/>
</xpath>
<xpath expr="//sheet/group/group[2]/field[@name='email']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='website']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='phone']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='mobile']" position="attributes">
<attribute name="attrs">{'required': [('is_sponsor', '=', True)]}</attribute>
</xpath>
</field>
</record>
<record id="contacts.action_contacts" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="base.action_partner_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="base.action_partner_customer_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="base.action_partner_supplier_form" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="account.res_partner_action_customer" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="account.res_partner_action_supplier" model="ir.actions.act_window">
<field name="domain">[('is_organizer','=',False),('is_event_address','=',False),('is_sponsor','=',False)]</field>
</record>
<record id="action_organizer_form" model="ir.actions.act_window">
<field name="name">Event organizers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'default_is_company': True,'default_is_organizer': True,}</field>
<field name="domain">[('is_organizer','=',True)]</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new customer in your address book
</p>
<p>
Odoo helps you easily track all activities related to a customer.
</p>
</field>
</record>
<menuitem name="Event Organizers"
id="menu_event_organizer"
sequence="3"
parent="event.menu_event_configuration"
action="action_organizer_form"
groups="event.group_event_manager"/>
</odoo>