source: products/qMemberdataExport/tags/0.0.2/Extensions/getMemberData.py @ 1591

Last change on this file since 1591 was 1, checked in by myroslav, 19 years ago

Building directory structure

  • Property svn:eol-style set to native
File size: 1.5 KB
Line 
1def getMemberData(self, start=0, batch=400, exclude_props=None, include_props=None):
2
3    import csv
4    from cStringIO import StringIO
5    from DateTime import DateTime
6    from Products.qMemberdataExport import getRegisteredMemberdataHandlers as registry
7    from Products.qMemberdataExport.config import EXCLUDE_PROPS, CLEAR_CACHE_COUNTER
8
9    if exclude_props is None: exclude_props = EXCLUDE_PROPS
10
11    memberdatahandler = False
12
13    for handler in registry():
14        try:
15            memberdatahandler = handler(self)
16            break
17        except:
18            pass
19
20    if not memberdatahandler: return None
21
22    members = memberdatahandler.getAllMembers()
23
24    if batch > len(members) - start: batch = len(members) - start
25
26    members_list = []
27    counter = 0
28
29    for member in members[start:start+batch]:
30        counter += 1
31        if counter % CLEAR_CACHE_COUNTER == 0: 
32            self._p_jar.sync()
33        members_list.append(memberdatahandler.getMemberProperties(member, exclude_props, include_props))
34
35    res = StringIO()
36    writer = csv.DictWriter(res, fieldnames = memberdatahandler.fieldnames, quoting=csv.QUOTE_ALL)
37
38    # writing header row
39    writer.writer.writerow(memberdatahandler.fieldnames)
40    # writing body of csv file
41    writer.writerows(members_list)
42
43    # setting headers for attaching file
44    self.REQUEST.RESPONSE.setHeader('Content-Type', 'text/csv')
45    self.REQUEST.RESPONSE.setHeader('Content-Disposition', 'attachment; filename=memberdata-%s.csv' % DateTime().strftime("%Y-%m-%d-%H-%M-%S"))
46
47    return res.getvalue()
Note: See TracBrowser for help on using the repository browser.