summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Reporting
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Reporting')
-rw-r--r--src/lib/Bcfg2/Reporting/Storage/DjangoORM.py6
-rw-r--r--src/lib/Bcfg2/Reporting/models.py8
-rw-r--r--src/lib/Bcfg2/Reporting/templates/base.html2
-rw-r--r--src/lib/Bcfg2/Reporting/templates/clients/index.html5
-rw-r--r--src/lib/Bcfg2/Reporting/views.py7
5 files changed, 22 insertions, 6 deletions
diff --git a/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py b/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
index fb7af7465..bca4a9c1e 100644
--- a/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
+++ b/src/lib/Bcfg2/Reporting/Storage/DjangoORM.py
@@ -224,7 +224,11 @@ class DjangoORM(StorageBase):
inter.extra_count = counter_fields[TYPE_EXTRA]
inter.save()
for entry_type in updates.keys():
- getattr(inter, entry_type).add(*updates[entry_type])
+ # batch this for sqlite
+ i = 0
+ while(i < len(updates[entry_type])):
+ getattr(inter, entry_type).add(*updates[entry_type][i:i+100])
+ i += 100
# performance metrics
for times in stats.findall('OpStamps'):
diff --git a/src/lib/Bcfg2/Reporting/models.py b/src/lib/Bcfg2/Reporting/models.py
index c7850f4af..ab2dc8418 100644
--- a/src/lib/Bcfg2/Reporting/models.py
+++ b/src/lib/Bcfg2/Reporting/models.py
@@ -392,7 +392,13 @@ class BaseEntry(models.Model):
@classmethod
def prune_orphans(cls):
'''Remove unused entries'''
- cls.objects.filter(interaction__isnull=True).delete()
+ # yeat another sqlite hack
+ cls_orphans = [x['id'] \
+ for x in cls.objects.filter(interaction__isnull=True).values("id")]
+ i = 0
+ while i < len(cls_orphans):
+ cls.objects.filter(id__in=cls_orphans[i:i+100]).delete()
+ i += 100
class SuccessEntry(BaseEntry):
diff --git a/src/lib/Bcfg2/Reporting/templates/base.html b/src/lib/Bcfg2/Reporting/templates/base.html
index 1ec6b8c24..533dcc79e 100644
--- a/src/lib/Bcfg2/Reporting/templates/base.html
+++ b/src/lib/Bcfg2/Reporting/templates/base.html
@@ -88,7 +88,7 @@
<div style='clear:both'></div>
</div><!-- document -->
<div id="footer">
- <span>Bcfg2 Version 1.3.0rc1</span>
+ <span>Bcfg2 Version 1.3.0rc2</span>
</div>
<div id="calendar_div" style='position:absolute; visibility:hidden; background-color:white; layer-background-color:white;'></div>
diff --git a/src/lib/Bcfg2/Reporting/templates/clients/index.html b/src/lib/Bcfg2/Reporting/templates/clients/index.html
index 45ba20b86..d9c415c20 100644
--- a/src/lib/Bcfg2/Reporting/templates/clients/index.html
+++ b/src/lib/Bcfg2/Reporting/templates/clients/index.html
@@ -30,6 +30,9 @@
{% endif %}
{% endfor %}
</table>
-{% else %}<p>No client records are available.</p>
+{% else %}
+ <div class='client_list_box'>
+ <p>No client records are available.</p>
+ </div>
{% endif %}
{% endblock %}
diff --git a/src/lib/Bcfg2/Reporting/views.py b/src/lib/Bcfg2/Reporting/views.py
index 8ab3f8e59..0341a18af 100644
--- a/src/lib/Bcfg2/Reporting/views.py
+++ b/src/lib/Bcfg2/Reporting/views.py
@@ -213,8 +213,11 @@ def entry_status(request, entry_type, pk, timestamp=None, **kwargs):
# There is no good way to do this...
items = []
- for it in cls.objects.filter(interaction__in=current_clients, name=item.name).distinct("id").select_related():
- items.append((it, it.interaction_set.filter(pk__in=current_clients).order_by('client__name').select_related('client')))
+ seen = []
+ for it in cls.objects.filter(interaction__in=current_clients, name=item.name).select_related():
+ if it.pk not in seen:
+ items.append((it, it.interaction_set.filter(pk__in=current_clients).order_by('client__name').select_related('client')))
+ seen.append(it.pk)
return render_to_response('config_items/entry_status.html',
{'entry': item,