|
27 | 27 | from bika.lims.interfaces import IRetracted
|
28 | 28 | from senaite.core import logger
|
29 | 29 | from senaite.core.catalog import ANALYSIS_CATALOG
|
| 30 | +from senaite.core.catalog import SAMPLE_CATALOG |
30 | 31 | from senaite.core.config import PROJECTNAME as product
|
31 | 32 | from senaite.core.upgrade import upgradestep
|
32 | 33 | from senaite.core.upgrade.utils import UpgradeUtils
|
@@ -188,3 +189,42 @@ def fix_traceback_retract_dl(tool):
|
188 | 189 | obj._p_deactivate()
|
189 | 190 |
|
190 | 191 | logger.info("Migrate LDL, UDL and result fields to string [DONE]")
|
| 192 | + |
| 193 | + |
| 194 | +def purge_computed_fields_profile(self): |
| 195 | + """Cleanup of computed fields related with Profiles field and removal of |
| 196 | + indexes and columns that are no longer required |
| 197 | + """ |
| 198 | + logger.info("Purge ComputedField from Sample related with Profiles ...") |
| 199 | + indexes_to_remove = [ |
| 200 | + ] |
| 201 | + columns_to_remove = [ |
| 202 | + ("getProfilesUID", SAMPLE_CATALOG), |
| 203 | + ("getProfilesURL", SAMPLE_CATALOG), |
| 204 | + ("getProfilesTitle", SAMPLE_CATALOG), |
| 205 | + ] |
| 206 | + |
| 207 | + # Purge the catalogs |
| 208 | + purge_catalogs(indexes_to_remove, columns_to_remove) |
| 209 | + |
| 210 | + logger.info("Purge ComputedField from Sample related with Profiles [DONE]") |
| 211 | + |
| 212 | + |
| 213 | +def purge_catalogs(indexes_to_remove, columns_to_remove): |
| 214 | + """Removes the indexes and columns from catalogs |
| 215 | + """ |
| 216 | + # remove indexes |
| 217 | + for index_name, catalog_id in indexes_to_remove: |
| 218 | + cat = api.get_tool(catalog_id) |
| 219 | + if index_name in cat.indexes(): |
| 220 | + logger.info("Removing '{}' index from '{}'".format( |
| 221 | + index_name, catalog_id)) |
| 222 | + cat.delIndex(index_name) |
| 223 | + |
| 224 | + # remove columns |
| 225 | + for col_name, catalog_id in columns_to_remove: |
| 226 | + cat = api.get_tool(catalog_id) |
| 227 | + if col_name in cat.schema(): |
| 228 | + logger.info("Removing '{}' column from '{}'".format( |
| 229 | + col_name, catalog_id)) |
| 230 | + cat.delColumn(col_name) |
0 commit comments