[Erp5-report] r18864 - in /experimental/bt5/erp5_garbage_collector_experimental: SkinTempla...
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jan 25 18:26:47 CET 2008
Author: bartek
Date: Fri Jan 25 18:26:47 2008
New Revision: 18864
URL: http://svn.erp5.org?rev=18864&view=rev
Log:
check for inbound relations before removal (as in Folder_delete), so that we don't break relations while degarbaging
Modified:
experimental/bt5/erp5_garbage_collector_experimental/SkinTemplateItem/portal_skins/erp5_garbage_collector_experimental/ERP5Site_collectGarbage.xml
experimental/bt5/erp5_garbage_collector_experimental/bt/revision
Modified: experimental/bt5/erp5_garbage_collector_experimental/SkinTemplateItem/portal_skins/erp5_garbage_collector_experimental/ERP5Site_collectGarbage.xml
URL: http://svn.erp5.org/experimental/bt5/erp5_garbage_collector_experimental/SkinTemplateItem/portal_skins/erp5_garbage_collector_experimental/ERP5Site_collectGarbage.xml?rev=18864&r1=18863&r2=18864&view=diff
==============================================================================
--- experimental/bt5/erp5_garbage_collector_experimental/SkinTemplateItem/portal_skins/erp5_garbage_collector_experimental/ERP5Site_collectGarbage.xml (original)
+++ experimental/bt5/erp5_garbage_collector_experimental/SkinTemplateItem/portal_skins/erp5_garbage_collector_experimental/ERP5Site_collectGarbage.xml Fri Jan 25 18:26:47 2008
@@ -79,6 +79,23 @@
activities (or run it often enough or rarely enough to make it acceptable).\n
"""\n
\n
+def Object_hasRelation(obj):\n
+ # Check if there is some related objets.\n
+ result = 0\n
+ for o in obj.getIndexableChildValueList():\n
+ for related in obj.portal_categories.getRelatedValueList(o):\n
+ related_url = related.getRelativeUrl()\n
+ if related_url.startswith(obj.getRelativeUrl()):\n
+ continue\n
+ elif related_url.startswith(\'portal_simulation\'):\n
+ continue\n
+ elif related_url.startswith(\'portal_trash\'):\n
+ continue\n
+ else:\n
+ result = 1\n
+ break\n
+ return result\n
+\n
context.log(\'>>>>>>>>>>>>>>> Collecting garbage\')\n
sec = DateTime().timeTime() - context.getGarbageObjectAge()\n
before_date = DateTime(sec).strftime(\'%Y/%m/%d %H:%M:%S\')\n
@@ -92,7 +109,6 @@
params[\'portal_type\'] = portal_type\n
res = context.portal_catalog(**params)\n
predicate = getattr(context, \'%s_isGarbage\' % portal_type.replace(\' \', \'\'), None)\n
- context.log(predicate)\n
if predicate is None:\n
predicate = lambda x: (x.getTitle() is None or x.getTitle() == \'\')\n
# iterate over the result\n
@@ -102,7 +118,7 @@
parent_child_dict = {}\n
for r in res:\n
o = r.getObject()\n
- if predicate(o):\n
+ if predicate(o) and not Object_hasRelation(o): # predicate is usu. easier so we do it first\n
parent = o.getParentValue()\n
if parent_child_dict.has_key(parent):\n
parent_child_dict[parent].append(o.getId())\n
@@ -156,6 +172,7 @@
<value>
<tuple>
<string>kw</string>
+ <string>Object_hasRelation</string>
<string>_getattr_</string>
<string>context</string>
<string>DateTime</string>
Modified: experimental/bt5/erp5_garbage_collector_experimental/bt/revision
URL: http://svn.erp5.org/experimental/bt5/erp5_garbage_collector_experimental/bt/revision?rev=18864&r1=18863&r2=18864&view=diff
==============================================================================
--- experimental/bt5/erp5_garbage_collector_experimental/bt/revision (original)
+++ experimental/bt5/erp5_garbage_collector_experimental/bt/revision Fri Jan 25 18:26:47 2008
@@ -1,1 +1,1 @@
-4
+6
More information about the Erp5-report
mailing list