Browse Source

May 25 : [ADD] Initial Commit 'remove_studio_field'

pull/275/head
Sayooj 2 years ago
parent
commit
fa12aa864d
  1. 48
      remove_studio_field/README.rst
  2. 23
      remove_studio_field/__init__.py
  3. 49
      remove_studio_field/__manifest__.py
  4. 7
      remove_studio_field/doc/RELEASE_NOTES.md
  5. 2
      remove_studio_field/security/ir.model.access.csv
  6. 14
      remove_studio_field/security/remove_studio_field_groups.xml
  7. BIN
      remove_studio_field/static/description/assets/icons/check.png
  8. BIN
      remove_studio_field/static/description/assets/icons/chevron.png
  9. BIN
      remove_studio_field/static/description/assets/icons/cogs.png
  10. BIN
      remove_studio_field/static/description/assets/icons/consultation.png
  11. BIN
      remove_studio_field/static/description/assets/icons/ecom-black.png
  12. BIN
      remove_studio_field/static/description/assets/icons/education-black.png
  13. BIN
      remove_studio_field/static/description/assets/icons/hotel-black.png
  14. BIN
      remove_studio_field/static/description/assets/icons/license.png
  15. BIN
      remove_studio_field/static/description/assets/icons/lifebuoy.png
  16. BIN
      remove_studio_field/static/description/assets/icons/logo.png
  17. BIN
      remove_studio_field/static/description/assets/icons/manufacturing-black.png
  18. BIN
      remove_studio_field/static/description/assets/icons/pos-black.png
  19. BIN
      remove_studio_field/static/description/assets/icons/puzzle.png
  20. BIN
      remove_studio_field/static/description/assets/icons/restaurant-black.png
  21. BIN
      remove_studio_field/static/description/assets/icons/service-black.png
  22. BIN
      remove_studio_field/static/description/assets/icons/trading-black.png
  23. BIN
      remove_studio_field/static/description/assets/icons/training.png
  24. BIN
      remove_studio_field/static/description/assets/icons/update.png
  25. BIN
      remove_studio_field/static/description/assets/icons/user.png
  26. BIN
      remove_studio_field/static/description/assets/icons/wrench.png
  27. BIN
      remove_studio_field/static/description/assets/modules/approval_image.png
  28. BIN
      remove_studio_field/static/description/assets/modules/gantt_image.png
  29. BIN
      remove_studio_field/static/description/assets/modules/hide_menu_image.png
  30. BIN
      remove_studio_field/static/description/assets/modules/laundry_image.png
  31. BIN
      remove_studio_field/static/description/assets/modules/list_view_image.png
  32. BIN
      remove_studio_field/static/description/assets/modules/print_image.png
  33. BIN
      remove_studio_field/static/description/assets/screenshots/hero.gif
  34. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_1.png
  35. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_2.png
  36. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_3.png
  37. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_4.png
  38. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_5.png
  39. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_6.png
  40. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_7.png
  41. BIN
      remove_studio_field/static/description/banner.png
  42. BIN
      remove_studio_field/static/description/icon.png
  43. 549
      remove_studio_field/static/description/index.html
  44. 23
      remove_studio_field/wizard/__init__.py
  45. 120
      remove_studio_field/wizard/remove_studio_field.py
  46. 47
      remove_studio_field/wizard/remove_studio_field_views.xml

48
remove_studio_field/README.rst

@ -0,0 +1,48 @@
.. image:: https://img.shields.io/badge/licence-OPL--1-red.svg
:target: https://www.odoo.com/documentation/14.0/legal/licenses.html#odoo-apps
:alt: License: OPL-1
Remove Studio Fields
====================
This module helps to remove the fields added using the Studio Module.
Configuration
=============
Add the users to the new security group 'Remove Studio Fields' to give access to
the new menu item.
License
-------
Odoo Proprietary License v1.0 (OPL-1)
(https://www.odoo.com/documentation/14.0/legal/licenses.html#odoo-apps)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
Developer: Abhishek E T @cybrosys, Contact: odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if
your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

23
remove_studio_field/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Abhishek E T (Contact : odoo@cybrosys.com)
#
# This program is under the terms of the Odoo Proprietary License v1.0
# (OPL-1)
# It is forbidden to publish, distribute, sublicense, or sell copies of the
# Software or modified copies of the Software.
#
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
###############################################################################
from . import wizard

49
remove_studio_field/__manifest__.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Abhishek E T (Contact : odoo@cybrosys.com)
#
# This program is under the terms of the Odoo Proprietary License v1.0
# (OPL-1)
# It is forbidden to publish, distribute, sublicense, or sell copies of the
# Software or modified copies of the Software.
#
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
###############################################################################
{
'name': 'Remove Studio Fields',
'version': '14.0.1.0.0',
'category': 'Extra Tools',
'summary': 'The module helps to remove fields added from Studio',
'description': """
We can add fields in models and add them in the views of the corresponding
model using the Odoo Studio. In some cases, the type of fields that we
will create will be Basic. This module simplify the deletion of those
fields, and Custom fields created using Odoo Studio.
""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'images': ['static/description/banner.png'],
'website': 'https://www.cybrosys.com',
'depends': ['base', 'web', 'web_studio'],
'data': [
'security/remove_studio_field_groups.xml',
'security/ir.model.access.csv',
'wizard/remove_studio_field_views.xml'
],
'license': 'OPL-1',
'installable': True,
'auto_install': False,
'application': False
}

7
remove_studio_field/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <remove_studio_field>
#### 17.05.2023
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Remove Studio Fields

2
remove_studio_field/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_remove_studio_field_admin,access.remove.studio.field.admin,model_remove_studio_field,remove_studio_field.remove_studio_field_group_admin,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_remove_studio_field_admin access.remove.studio.field.admin model_remove_studio_field remove_studio_field.remove_studio_field_group_admin 1 1 1 1

14
remove_studio_field/security/remove_studio_field_groups.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Module category for the security groups of this module -->
<record id="ir_module_category_remove_studio_field" model="ir.module.category">
<field name="name">Remove Studio Fields</field>
<field name="description">Helps to manage access to the wizard for removing fields added through Studio</field>
</record>
<!-- Security group to use the Remove Custom Fields wizard -->
<record id="remove_studio_field_group_admin" model="res.groups">
<field name="name">Administrator</field>
<field name="comment">Access to the Remove Studio Fields wizard menu</field>
<field name="category_id" ref="remove_studio_field.ir_module_category_remove_studio_field"/>
</record>
</odoo>

BIN
remove_studio_field/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
remove_studio_field/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
remove_studio_field/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
remove_studio_field/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
remove_studio_field/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
remove_studio_field/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
remove_studio_field/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
remove_studio_field/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
remove_studio_field/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
remove_studio_field/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
remove_studio_field/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
remove_studio_field/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
remove_studio_field/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
remove_studio_field/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
remove_studio_field/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
remove_studio_field/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
remove_studio_field/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
remove_studio_field/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
remove_studio_field/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
remove_studio_field/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
remove_studio_field/static/description/assets/modules/approval_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
remove_studio_field/static/description/assets/modules/gantt_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
remove_studio_field/static/description/assets/modules/hide_menu_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
remove_studio_field/static/description/assets/modules/laundry_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
remove_studio_field/static/description/assets/modules/list_view_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
remove_studio_field/static/description/assets/modules/print_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
remove_studio_field/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
remove_studio_field/static/description/assets/screenshots/remove_studio_field_7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
remove_studio_field/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
remove_studio_field/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

549
remove_studio_field/static/description/index.html

@ -0,0 +1,549 @@
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12" style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Remove Studio Fields
</h1>
<p style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
This module helps to remove the fields which are added using the Odoo Studio.
The fields have to be removed from the views before deleting them. If any of the fields selected
for deletion is present in any view, the names of the views will be displayed. The name can be
used to search the view and remove the field from the corresponding view.
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive" width="100%" height="auto"/>
</div>
</div>
<div class="row">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
</div>
<div class="col-md-6">
<a href="#overview" style="text-decoration: none !important;">
<div class="row" style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">Overview</h3>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module
</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#configuration" style="text-decoration: none !important;">
<div class="row" style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Configuration</h3>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View configurations for this module
</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features" style="text-decoration: none !important;">
<div class="row" style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module
</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots" style="text-decoration: none !important;">
<div class="row" style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">Screenshots</h3>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module
</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
</div>
<div class="row" id="overview">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">
This module crafted by Cybrosys Technologies provides an option to delete the fields which are
added using Odoo Studio. Removing those fields are always a headache since sometimes there will
be multiple fields created in different models on adding new field in one model. For e.g, if we
add a field in the Invoice from Studio, a custom field will be added in the 'account.move' model
and another base fields will be added in the models 'account.payment' and 'account.bank.statement.line'
with the same field name (By default, we are not able to delete the base fields in Odoo).
This module makes the life easier for those who use Odoo Studio for customizations as it helps to
delete all the fields(both custom fields and base fields) added using Studio.
</p>
</div>
</div>
<div class="row" id="configuration">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-cogs mr-2"></i>Configuration
</h2>
</div>
<div class="col-mg-12 pl-3">
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">Add the users to the new security group(Remove Studio Fields: Administrator) to give
access to the new menu item.</p>
<img src="assets/screenshots/remove_studio_field_1.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
</div>
<div class="row" id="features">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
New menu</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
New menu: Remove Studio Fields to access the new wizard.
</p>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4 style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
New wizard</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Select and remove fields using the new wizard.
</p>
</div>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2 style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">New menu</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
<a href="https://www.odoo.com/documentation/14.0/applications/general/developer_mode.html"
target="_blank" style="text-decoration: none;">Enable debug mode</a>
to see the new menu; Technical -> Database Structure -> Remove Studio Fields
to access the new wizard.
</p>
<img src="assets/screenshots/remove_studio_field_2.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">Select Studio fields for delete</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
In the wizard, you can select the fields which are added using Studio.
</p>
<img src="assets/screenshots/remove_studio_field_3.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">More fields can be selected from the tree view</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Click on 'Search More...' from the dropdown to open the tree view to select more fields. As we can
have multiple fields with same name as mentioned in the <a href="#overview">Overview</a>, it is
recommended to select all those fields together(the one which is added through Studio and the other
fields created automatically).
</p>
<img src="assets/screenshots/remove_studio_field_4.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">Delete field: Lose data</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Once you delete a field, you will lose the data stored with that field. So, ensure that you don't need
the data anymore. Else, backup or store the data before deleting the fields. Click on the button
'REMOVE FIELDS' to delete the selected fields.
</p>
<img src="assets/screenshots/remove_studio_field_5.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">Check the views</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
If we delete the fields which are added in any view, we cannot access those views. So, we have to
remove the fields from the view before deleting. This module makes this step easier. It checks the
views first and return the list of fields and the views in which the fields are used. Then, we can
either open the corresponding view through Studio, select the field in the view, and click on the
button 'REMOVE FROM VIEW', or we can navigate to Settings/ Technical/ User Interface/ Views, search
for the view and edit the XML code to remove the field from the view.
</p>
<img src="assets/screenshots/remove_studio_field_6.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2" style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">Notification</h4>
<p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
If we don't have the fields in any views or if we already removed the fields from the views, then a
notification will be displayed after deleting the fields.
</p>
<img src="assets/screenshots/remove_studio_field_7.png" class="img-responsive img-thumbnail border" width="100%" height="auto"/>
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center" style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/custom_gantt_view/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/gantt_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/hide_menu_user/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/hide_menu_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/product_approval_management/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/approval_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/mrp_work_order_print/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/print_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/list_view_sticky_header/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/list_view_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/laundry_management/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="./assets/modules/laundry_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="left:-25px;width: 35px;color: #000;">
<span class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span>
</a>
<a class="carousel-control-next" href="#demo1" data-slide="next" style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Customization
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Implementation
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Support
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire Odoo Developer
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Integration
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Migration
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Implementation
</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Licensing Consultancy
</h6>
</div>
</div>
</section>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure and sell your products
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy configuration and convivial experience
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for educational management
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and schedule your operations
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile friendly, awe-inspiring product pages
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of services and invoice
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or restaurant methodically
</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An all-inclusive hotel management application
</p>
</div>
</div>
</div>
</section>
<!-- END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center" style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover" style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;">
<i class="fa fa-envelope mr-2"></i>odoo@cybrosys.com
</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank" class="btn btn-block mb-2 deep_hover" style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;">
<i class="fa fa-whatsapp mr-2"></i>WhatsApp
</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto"/>
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

23
remove_studio_field/wizard/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Abhishek E T (Contact : odoo@cybrosys.com)
#
# This program is under the terms of the Odoo Proprietary License v1.0
# (OPL-1)
# It is forbidden to publish, distribute, sublicense, or sell copies of the
# Software or modified copies of the Software.
#
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
###############################################################################
from . import remove_studio_field

120
remove_studio_field/wizard/remove_studio_field.py

@ -0,0 +1,120 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Abhishek E T (Contact : odoo@cybrosys.com)
#
# This program is under the terms of the Odoo Proprietary License v1.0
# (OPL-1)
# It is forbidden to publish, distribute, sublicense, or sell copies of the
# Software or modified copies of the Software.
#
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
###############################################################################
"""
The module helps to remove fields added from Odoo UI or Studio.
"""
import logging
from odoo import fields, models, _
from odoo.exceptions import UserError, ValidationError
_logger = logging.getLogger(__name__)
class RemoveStudioField(models.TransientModel):
"""
Wizard to select studio fields(x_studio_) and remove them.
Methods:
action_remove_studio_field():
Delete the selected studio fields.
"""
_name = 'remove.studio.field'
_description = 'Remove Studio Fields'
field_ids = fields.Many2many(
'ir.model.fields', string='Studio Fields', required=True,
domain="[('name', 'like', 'x_studio_')]",
help='You can select the fields which are added through Odoo Studio.')
def action_remove_studio_field(self):
""" Search for the selected fields(x_studio_) in views. If any of the
field is used in any view an error is thrown with the fields and
corresponding views. If the selected fields are not used in any views,
remove them.
Raises: UserError: If any of the selected fields is/are still present
in any view.
Raises: UserError: if there is any error while unlinking the fields.
Returns:
dict: dictionary to show the success notification.
"""
# remove the pending towrite for the selected fields from the towrite
# queue
for field in self.field_ids:
for record_values in self.env.all.towrite[field.model].values():
record_values.pop(field.name, None)
error_popup_message = ''
# Search the selected fields in the views and create a list of the
# views
for field in self.field_ids:
self.env[field.model]._pop_field(field.name)
domain = [('arch_db', 'like', field.name),
('model', '=', field.model)]
views = self.env['ir.ui.view'].search(domain)
field_views = []
for view in views:
try:
view._check_xml()
except ValidationError as error:
_logger.info(error)
field_views.append(view.name)
if field_views:
error_popup_message = '\n'.join(
[error_popup_message, _('Field: %s', field.display_name),
_('Views: %s') % ', '.join(
str(view) for view in field_views)
])
# If the fields are present in any views, display them, so that those
# can be removed from the mentioned views
if error_popup_message:
# if Studio module is installed, we will perform a module upgrade
studio = self.env['ir.module.module'].sudo().search(
[('name', '=', 'web_studio')], limit=1)
if studio and studio.state == 'installed':
studio.button_immediate_upgrade()
raise UserError('\n'.join([
_("Cannot delete the fields that are still present in views:"),
error_popup_message
]))
# Set the state of the selected fields as Custom Field(manual) and then
# unlink those fields
query = f"""
UPDATE ir_model_fields set state = 'manual'
WHERE id in {str(tuple(self.field_ids.ids)).replace(',)', ')')};
"""
try:
self.env.cr.execute(query)
self.env.cr.commit()
self.field_ids.sudo().unlink()
except Exception as error:
raise UserError(f'An error occurred! {error}') from error
return {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'title': _('Success'),
'message': _('The selected fields are deleted.'),
'sticky': False,
'type': 'success',
'next': {'type': 'ir.actions.act_window_close'},
}
}

47
remove_studio_field/wizard/remove_studio_field_views.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Form view for the Remove Studio Fields wizard -->
<record id="remove_studio_field_view_form" model="ir.ui.view">
<field name="name">remove.studio.field.view.form</field>
<field name="model">remove.studio.field</field>
<field name="arch" type="xml">
<form string="Remove Studio Fields">
<sheet>
<div class="alert alert-danger" role="alert"
attrs="{'invisible': [('field_ids', '=', [])]}">
You will lose the data once you remove the fields!
</div>
<div class="alert alert-info" role="alert"
attrs="{'invisible': [('field_ids', '!=', [])]}">
You can only select the fields which are added through Odoo Studio(If any)!
</div>
<group colspan="12">
<field name="field_ids" widget="many2many_tags"
options="{'no_create_edit': True, 'no_create': True}"/>
</group>
<footer>
<button name="action_remove_studio_field" string="Remove Fields"
type="object" disabled="1" attrs="{'invisible': [('field_ids', '!=', [])]}"
style="border: 1px solid #999999; background-color: #cccccc; color: #666666;"/>
<button name="action_remove_studio_field" string="Remove Fields"
type="object" class="oe_highlight" attrs="{'invisible': [('field_ids', '=', [])]}"
confirm="Are you sure you want to delete the selected fields?"/>
<button string="Cancel" class="btn btn-default" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<!-- Action window for the Remove Studio Fields wizard -->
<record id="remove_studio_field_action" model="ir.actions.act_window">
<field name="name">Remove Studio Fields</field>
<field name="res_model">remove.studio.field</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- Menu for the Remove Studio Fields wizard -->
<menuitem id="remove_studio_field_menu_action" name="Remove Studio Fields"
action="remove_studio_field_action" parent="base.next_id_9" sequence="5"
groups="remove_studio_field.remove_studio_field_group_admin"/>
</odoo>
Loading…
Cancel
Save