PURPOSE Make aliases usage more unique, prevent re-using bounce or catchall aliases and remove auto-uniqueness of aliases. SPECIFICATIONS Before this commit, user could create an email alias having same name as catchall/bounce email alias, which should not happen. Also, while creating or duplicating alias, if the same name was already available, a new unique name was generated by adding a sequence number to existing name. This behavior is not considered as a good one as it magically creates aliases different from what user expects. User could even not own the newly-created alias, leading to a broken mail gateway. In this commit we improve that behavior by ensuring that no duplicate alias name should be entered while creation / updation for both catcall/bounce and mail alias. Also, while duplicating an alias, name will now be blank by default to force user to enter the name. Finally when creating an alias an error is raised if the name is already taken. Task ID 2160070
176 lines
6.9 KiB
Python
176 lines
6.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import time
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.exceptions import AccessError
|
|
|
|
|
|
class TestEquipmentMulticompany(TransactionCase):
|
|
|
|
def test_00_equipment_multicompany_user(self):
|
|
"""Test Check maintenance with equipment manager and user in multi company environment"""
|
|
|
|
# Use full models
|
|
Equipment = self.env['maintenance.equipment']
|
|
MaintenanceRequest = self.env['maintenance.request']
|
|
Category = self.env['maintenance.equipment.category']
|
|
ResUsers = self.env['res.users']
|
|
ResCompany = self.env['res.company']
|
|
MaintenanceTeam = self.env['maintenance.team']
|
|
|
|
# Use full reference.
|
|
group_user = self.env.ref('base.group_user')
|
|
group_manager = self.env.ref('maintenance.group_equipment_manager')
|
|
|
|
# Company A
|
|
company_a = ResCompany.create({
|
|
'name': 'Company A',
|
|
'currency_id': self.env.ref('base.USD').id,
|
|
})
|
|
|
|
# Create one child company having parent company is 'Your company'
|
|
company_b = ResCompany.create({
|
|
'name': 'Company B',
|
|
'currency_id': self.env.ref('base.USD').id,
|
|
})
|
|
|
|
# Create equipment manager.
|
|
cids = [company_a.id, company_b.id]
|
|
equipment_manager = ResUsers.create({
|
|
'name': 'Equipment Manager',
|
|
'company_id': company_a.id,
|
|
'login': 'e_equipment_manager',
|
|
'email': 'eqmanager@yourcompany.example.com',
|
|
'groups_id': [(6, 0, [group_manager.id])],
|
|
'company_ids': [(6, 0, [company_a.id, company_b.id])]
|
|
})
|
|
|
|
# Create equipment user
|
|
user = ResUsers.create({
|
|
'name': 'Normal User/Employee',
|
|
'company_id': company_b.id,
|
|
'login': 'emp',
|
|
'email': 'empuser@yourcompany.example.com',
|
|
'groups_id': [(6, 0, [group_user.id])],
|
|
'company_ids': [(6, 0, [company_b.id])]
|
|
})
|
|
|
|
# create a maintenance team for company A user
|
|
team = MaintenanceTeam.with_user(equipment_manager).create({
|
|
'name': 'Metrology',
|
|
'company_id': company_a.id,
|
|
})
|
|
# create a maintenance team for company B user
|
|
teamb = MaintenanceTeam.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
|
|
'name': 'Subcontractor',
|
|
'company_id': company_b.id,
|
|
})
|
|
|
|
# User should not able to create equipment category.
|
|
with self.assertRaises(AccessError):
|
|
Category.with_user(user).create({
|
|
'name': 'Software',
|
|
'company_id': company_b.id,
|
|
'technician_user_id': user.id,
|
|
})
|
|
|
|
# create equipment category for equipment manager
|
|
category_1 = Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
|
|
'name': 'Monitors - Test',
|
|
'company_id': company_b.id,
|
|
'technician_user_id': equipment_manager.id,
|
|
})
|
|
|
|
# create equipment category for equipment manager
|
|
Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
|
|
'name': 'Computers - Test',
|
|
'company_id': company_b.id,
|
|
'technician_user_id': equipment_manager.id,
|
|
})
|
|
|
|
# create equipment category for equipment user
|
|
Category.with_user(equipment_manager).create({
|
|
'name': 'Phones - Test',
|
|
'company_id': company_a.id,
|
|
'technician_user_id': equipment_manager.id,
|
|
})
|
|
|
|
# Check category for user equipment_manager and user
|
|
self.assertEqual(Category.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 3)
|
|
self.assertEqual(Category.with_user(user).search_count([]), 2)
|
|
|
|
# User should not able to create equipment.
|
|
with self.assertRaises(AccessError):
|
|
Equipment.with_user(user).create({
|
|
'name': 'Samsung Monitor 15',
|
|
'category_id': category_1.id,
|
|
'assign_date': time.strftime('%Y-%m-%d'),
|
|
'company_id': company_b.id,
|
|
'owner_user_id': user.id,
|
|
})
|
|
|
|
Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
|
|
'name': 'Acer Laptop',
|
|
'category_id': category_1.id,
|
|
'assign_date': time.strftime('%Y-%m-%d'),
|
|
'company_id': company_b.id,
|
|
'owner_user_id': user.id,
|
|
})
|
|
|
|
# create an equipment for user
|
|
Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).create({
|
|
'name': 'HP Laptop',
|
|
'category_id': category_1.id,
|
|
'assign_date': time.strftime('%Y-%m-%d'),
|
|
'company_id': company_b.id,
|
|
'owner_user_id': equipment_manager.id,
|
|
})
|
|
# Now there are total 2 equipments created and can view by equipment_manager user
|
|
self.assertEqual(Equipment.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 2)
|
|
|
|
# And there is total 1 equipment can be view by Normal User ( Which user is followers)
|
|
self.assertEqual(Equipment.with_user(user).search_count([]), 1)
|
|
|
|
# create an equipment team BY user
|
|
with self.assertRaises(AccessError):
|
|
MaintenanceTeam.with_user(user).create({
|
|
'name': 'Subcontractor',
|
|
'company_id': company_b.id,
|
|
})
|
|
|
|
# create an equipment category BY user
|
|
with self.assertRaises(AccessError):
|
|
Category.with_user(user).create({
|
|
'name': 'Computers',
|
|
'company_id': company_b.id,
|
|
'technician_user_id': user.id,
|
|
})
|
|
|
|
# create an maintenance stage BY user
|
|
with self.assertRaises(AccessError):
|
|
self.env['maintenance.stage'].with_user(user).create({
|
|
'name': 'identify corrective maintenance requirements',
|
|
})
|
|
|
|
# Create an maintenance request for ( User Follower ).
|
|
MaintenanceRequest.with_user(user).create({
|
|
'name': 'Some keys are not working',
|
|
'company_id': company_b.id,
|
|
'user_id': user.id,
|
|
'owner_user_id': user.id,
|
|
})
|
|
|
|
# Create an maintenance request for equipment_manager (Admin Follower)
|
|
MaintenanceRequest.with_user(equipment_manager).create({
|
|
'name': 'Battery drains fast',
|
|
'company_id': company_a.id,
|
|
'user_id': equipment_manager.id,
|
|
'owner_user_id': equipment_manager.id,
|
|
})
|
|
|
|
# Now here is total 1 maintenance request can be view by Normal User
|
|
self.assertEqual(MaintenanceRequest.with_user(equipment_manager).with_context(allowed_company_ids=cids).search_count([]), 2)
|
|
self.assertEqual(MaintenanceRequest.with_user(user).search_count([]), 1)
|