Browse Source

May 25 : [ADD] Initial Commit 'remove_studio_field'

pull/257/head
Sayooj 2 years ago
parent
commit
b8823bcb7b
  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/manufacturing-black.png
  17. BIN
      remove_studio_field/static/description/assets/icons/pos-black.png
  18. BIN
      remove_studio_field/static/description/assets/icons/puzzle.png
  19. BIN
      remove_studio_field/static/description/assets/icons/restaurant-black.png
  20. BIN
      remove_studio_field/static/description/assets/icons/service-black.png
  21. BIN
      remove_studio_field/static/description/assets/icons/trading-black.png
  22. BIN
      remove_studio_field/static/description/assets/icons/training.png
  23. BIN
      remove_studio_field/static/description/assets/icons/update.png
  24. BIN
      remove_studio_field/static/description/assets/icons/user.png
  25. BIN
      remove_studio_field/static/description/assets/icons/wrench.png
  26. BIN
      remove_studio_field/static/description/assets/misc/categories.png
  27. BIN
      remove_studio_field/static/description/assets/misc/check-box.png
  28. BIN
      remove_studio_field/static/description/assets/misc/compass.png
  29. BIN
      remove_studio_field/static/description/assets/misc/corporate.png
  30. BIN
      remove_studio_field/static/description/assets/misc/customer-support.png
  31. BIN
      remove_studio_field/static/description/assets/misc/cybrosys-logo.png
  32. BIN
      remove_studio_field/static/description/assets/misc/features.png
  33. BIN
      remove_studio_field/static/description/assets/misc/gear.png
  34. BIN
      remove_studio_field/static/description/assets/misc/logo.png
  35. BIN
      remove_studio_field/static/description/assets/misc/pictures.png
  36. BIN
      remove_studio_field/static/description/assets/misc/pie-chart.png
  37. BIN
      remove_studio_field/static/description/assets/misc/right-arrow.png
  38. BIN
      remove_studio_field/static/description/assets/misc/star.png
  39. BIN
      remove_studio_field/static/description/assets/misc/support.png
  40. BIN
      remove_studio_field/static/description/assets/misc/whatsapp.png
  41. BIN
      remove_studio_field/static/description/assets/modules/1.png
  42. BIN
      remove_studio_field/static/description/assets/modules/2.png
  43. BIN
      remove_studio_field/static/description/assets/modules/3.png
  44. BIN
      remove_studio_field/static/description/assets/modules/4.png
  45. BIN
      remove_studio_field/static/description/assets/modules/5.png
  46. BIN
      remove_studio_field/static/description/assets/modules/6.png
  47. BIN
      remove_studio_field/static/description/assets/screenshots/hero.gif
  48. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_1.png
  49. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_2.png
  50. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_3.png
  51. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_4.png
  52. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_5.png
  53. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_6.png
  54. BIN
      remove_studio_field/static/description/assets/screenshots/remove_studio_field_7.png
  55. BIN
      remove_studio_field/static/description/banner.png
  56. BIN
      remove_studio_field/static/description/icon.png
  57. 652
      remove_studio_field/static/description/index.html
  58. 23
      remove_studio_field/wizard/__init__.py
  59. 120
      remove_studio_field/wizard/remove_studio_field.py
  60. 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/16.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/16.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': '16.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 16.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/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/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
remove_studio_field/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
remove_studio_field/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
remove_studio_field/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
remove_studio_field/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
remove_studio_field/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
remove_studio_field/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
remove_studio_field/static/description/assets/misc/gear.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
remove_studio_field/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
remove_studio_field/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
remove_studio_field/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
remove_studio_field/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
remove_studio_field/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
remove_studio_field/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
remove_studio_field/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
remove_studio_field/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

652
remove_studio_field/static/description/index.html

@ -0,0 +1,652 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" />
<div>
<div
style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Remove Studio Fields
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
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 XML IDs of the views will be displayed. The name can be
used to search the view and remove the field from the corresponding view.
</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;" />
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This Module
</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">
Learn more about this module
</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#configuration">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Configuration</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">
View configurations for this module
</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">
View features of this module
</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">
View screenshots for this module
</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
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.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- CONFIGURATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="configuration">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/gear.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Configuration
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
</div>
</div>
<!-- END OF CONFIGURATION SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Enterprise Support.</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
New Menu: Remove Studio Fields to Access the New Wizard.</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Alerts &amp; Notifications</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Available in Odoo 16.0 Enterprise.</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Select and Remove Fields Using the New Wizard.</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
New menu
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
<a href="https://www.odoo.com/documentation/16.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-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Select Studio fields for delete
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
More fields can be selected from the tree view
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Delete field: Lose data
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Check the views
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Notification
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/employee_documents_expiry/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/1.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/16.0/hr_zk_attendance/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/2.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/16.0/hr_contract_types/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/ecommerce_barcode_search/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/4.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/16.0/website_return_management/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/5.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/16.0/product_visibility_website/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="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="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 RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<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>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; 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: 0px; 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: 0px; 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: 0px; 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: 0px; 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: 0px; 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: 0px; 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: 0px; 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>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" />
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" />
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31" style="width:144px; height: 31px; margin-top: 40px;" />
</div>
</div>
</div>
<!-- END OF SUPPORT -->

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.
"""
# Makes the given fields clean on all records - remove pending write of
# this field and pop the pending updates of the fields out from the
# cache before unlinking the fields
for record in self.field_ids:
field = self.pool[record.model]._fields.get(record.name, False)
if field:
self.env.cache.clear_dirty_field(field)
error_popup_message = ''
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(',)', ')')};
DELETE FROM ir_model_fields
WHERE id in {str(tuple(self.field_ids.ids)).replace(',)', ')')};
"""
try:
self.env.cr.execute(query)
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