annotate example.py @ 0:78e4757601ec

origination
author Atul Varma <varmaa@toolness.com>
date Tue, 22 Dec 2009 21:40:25 -0800
parents
children f2147b34d6af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 import os
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 from datetime import datetime, timedelta
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 import cPickle as pickle
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 import bzapi
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 class Picklable(object):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 def __init__(self, filename, constructor, **kwargs):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 self.__filename = filename
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 if not os.path.exists(filename):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 self.__obj = constructor(**kwargs)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 self.save()
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 else:
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 obj_file = open(filename, 'r')
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 self.__obj = pickle.load(obj_file)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 obj_file.close()
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 def save(self):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 obj_file = open(self.__filename, 'w')
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 pickle.dump(self.__obj, obj_file)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 obj_file.close()
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 def __getattr__(self, attr):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 if not attr.startswith('_Picklable_'):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 return getattr(self.__obj, attr)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 else:
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 return self.__dict__[attr]
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 def __setattr__(self, attr, value):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 if not attr.startswith('_Picklable_'):
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 setattr(self.__obj, attr, value)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 else:
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 self.__dict__[attr] = value
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 api = Picklable(
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 'example.api.pickle',
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 bzapi.BugzillaApi,
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 base_url = 'https://api-dev.bugzilla.mozilla.org/latest'
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 )
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 search = Picklable(
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 'example.cached-search.pickle',
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 bzapi.CachedSearch,
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 api = api,
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 product='Mozilla Labs',
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 component='Jetpack'
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 )
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 #search.update(api)
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 #print len([bug for bug in search.bugs.itervalues()])
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 #print search.bugs.values()[12]['summary']
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 #print api.get('/bug/510339/history')
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 #print api.get('/bug',
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 # product='Mozilla Labs', component='Jetpack',
78e4757601ec origination
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 # changed_after=now-timedelta(minutes=60))