From 4e93c3d384c17f8e353f8d0ff1730342d742c15e Mon Sep 17 00:00:00 2001 From: Joey Hagedorn Date: Tue, 27 Jun 2006 22:26:47 +0000 Subject: working on reports performance related to building client lists git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1898 ce84e21b-d406-0410-9b95-82705330c041 --- reports/brpt/importscript.py | 12 ++++++++++++ reports/brpt/reports/models.py | 13 ++++++------- reports/brpt/reports/templatetags/django_templating_sigh.py | 1 - reports/brpt/reports/views.py | 4 ++-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/reports/brpt/importscript.py b/reports/brpt/importscript.py index 9122e7846..585018f0e 100755 --- a/reports/brpt/importscript.py +++ b/reports/brpt/importscript.py @@ -64,6 +64,8 @@ if __name__ == '__main__': for node in statsdata.findall('Node'): #if client_rec.name == node.get('name'): (client_rec, cr_created) = Client.objects.get_or_create(name=node.get('name'), defaults={'name': node.get('name'), 'creation': datetime.now()}) +# if cr_created: +# client_rec.save() for statistics in node.findall('Statistics'): t = strptime(statistics.get('time')) (interaction_rec, ir_created) = Interaction.objects.get_or_create(client=client_rec.id,timestamp=datetime(t[0],t[1],t[2],t[3],t[4],t[5]), @@ -74,6 +76,8 @@ if __name__ == '__main__': 'client_version':statistics.get('client_version'), 'goodcount':statistics.get('good', default="unknown"), 'totalcount':statistics.get('total', default="unknown")}) +# if ir_created: +# interaction_rec.save() for bad in statistics.findall('Bad'): for ele in bad.getchildren(): (ele_rec, er_created) = Bad.objects.get_or_create(name=ele.get('name'), kind=ele.tag, @@ -81,6 +85,9 @@ if __name__ == '__main__': 'kind':ele.tag, 'problemcode':'', 'reason':'Unknown'}) +# if er_created: +# ele_rec.save() + if not ele_rec in interaction_rec.bad_items.all(): interaction_rec.bad_items.add(ele_rec) @@ -91,6 +98,8 @@ if __name__ == '__main__': 'kind':ele.tag, 'problemcode':'', 'reason':'Unknown'}) + # if er_created: + # ele_rec.save() if not ele_rec in interaction_rec.modified_items.all(): interaction_rec.modified_items.add(ele_rec) @@ -101,6 +110,9 @@ if __name__ == '__main__': 'kind':ele.tag, 'problemcode':'', 'reason':'Unknown'}) + # if er_created: + # ele_rec.save() + if not ele_rec in interaction_rec.extra_items.all(): interaction_rec.extra_items.add(ele_rec) diff --git a/reports/brpt/reports/models.py b/reports/brpt/reports/models.py index 2960a9669..23ad65045 100644 --- a/reports/brpt/reports/models.py +++ b/reports/brpt/reports/models.py @@ -34,7 +34,7 @@ class Client(models.Model): #This exists for clients that are no longer in the repository even! (timeless) creation = models.DateTimeField() name = models.CharField(maxlength=128, core=True) - current_interaction = models.ForeignKey('Interaction') + current_interaction = models.ForeignKey('Interaction', null=True,blank=True, related_name="parent_client") def __str__(self): return self.name @@ -99,7 +99,7 @@ class Interaction(models.Model): return False def isstale(self): - if (self == self.client.interactions.latest('timestamp')):#Is Mostrecent + if (self == self.client.current_interaction):#Is Mostrecent if(datetime.now()-self.timestamp > timedelta(hours=25) ): return True else: @@ -112,11 +112,10 @@ class Interaction(models.Model): return True else: return False - def _post_save(self): - self.client.latest_interaction = self.client.interactions.latest() - self.client.save() - #do i need to save the self.client manually? - + def save(self): + super(Interaction,self).save() #call the real save... + self.client.current_interaction = self.client.interactions.latest() + self.client.save()#do i need to save the self.client manually? objects = InteractiveManager() diff --git a/reports/brpt/reports/templatetags/django_templating_sigh.py b/reports/brpt/reports/templatetags/django_templating_sigh.py index 321881891..2d5f76e06 100644 --- a/reports/brpt/reports/templatetags/django_templating_sigh.py +++ b/reports/brpt/reports/templatetags/django_templating_sigh.py @@ -18,7 +18,6 @@ class SetInteraction(template.Node): def __init__(self, times): self.times = times#do soemthing to select different interaction with host def render(self, context): - #context['interaction'] = context['client'].interactions.latest('timestamp') context['interaction'] = context['client_interaction_dict'][context['client'].id] return '' diff --git a/reports/brpt/reports/views.py b/reports/brpt/reports/views.py index 40a1323dd..6dbc86c82 100644 --- a/reports/brpt/reports/views.py +++ b/reports/brpt/reports/views.py @@ -18,7 +18,7 @@ def client_detail(request, hostname = -1, pk = -1): #SETUP error pages for when you specify a client or interaction that doesn't exist client = get_object_or_404(Client, name=hostname) if(pk == -1): - interaction = client.interactions.latest('timestamp') + interaction = client.current_interaction else: interaction = client.interactions.get(pk=pk) @@ -55,7 +55,7 @@ def display_timing(request): #performance_items = client.interactions.latest().performance_items.all()#allow this to be selectable(hist) d = {} #[d.update({x:y}) for x,y in [a.values() for a in client.interactions.latest().performance_items.all().values('metric','value')]] - [d.update({x["metric"]:x["value"]}) for x in client.interactions.latest().performance_items.all().values('metric','value')] + [d.update({x["metric"]:x["value"]}) for x in client.current_interaction.performance_items.all().values('metric','value')] dict_unit = {} try: -- cgit v1.2.3-1-g7c22