Changeset 509

Show
Ignore:
Timestamp:
09/04/06 11:29:30
Author:
chervol
Message:

fixed fields distplay list, moved the CSV generation method into qTopic

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qTopic/trunk/qTopic.py

    r508 r509  
    1717from Products.CMFPlone.PloneBatch import Batch 
    1818from Products.ATContentTypes.config import TOOLNAME 
     19from StringIO import StringIO 
     20from csv import DictWriter 
     21import csv 
    1922 
    2023qTopic_schema = ATTopicSchema.copy() + Schema(( 
     
    4649          )) 
    4750qTopic_schema["customViewFields"].schemata = "export" 
    48 qTopic_schema["customViewFields"].vocabulary = "getFieldsList
     51qTopic_schema["customViewFields"].vocabulary = "listMetaDataFields
    4952qTopic_schema["customViewFields"].default=("id","getFullName","getEmail") 
    5053 
     
    7780        catalogs = at_tool.getCatalogsInSite() 
    7881        return  DisplayList(zip(catalogs, catalogs)) 
    79  
    80     def getFieldsList(self): 
    81         """ return DisplayList of fields 
    82         """ 
    83         pcatalog = getToolByName( self, self.getCatalog() ) 
    84         available = pcatalog.schema() 
    85         val = [ field 
    86                  for field in available 
    87                  if  field not in IGNORED_FIELDS 
    88                ] 
    89         val.sort(lambda x,y: strcoll(self.translate(x),self.translate( y))) 
    90         return [(i, i, i)for i in val] 
    9182 
    9283    security.declareProtected(ChangeTopics, "criteriaByIndexId") 
     
    114105            allowed = DisplayList(flat) 
    115106        return allowed 
    116     """ 
    117     security.declareProtected(ChangeTopics, "listFields") 
    118     def listFields(self): 
    119         pcatalog = getToolByName( self, self.getCatalog() ) 
    120         available = pcatalog.indexes() 
    121         val = [ field 
    122                  for field in available 
    123                  if  field not in IGNORED_FIELDS 
    124                ] 
    125         val.sort(lambda x,y: strcoll(self.translate(x),self.translate( y))) 
    126         return [(i, i, i)for i in val] 
    127      """ 
     107 
    128108    security.declareProtected(ChangeTopics, "listFields") 
    129109    def listFields(self): 
     
    202182        return results 
    203183 
     184    def toCSV(self, fields, data): 
     185        dialect = csv.excel() 
     186        dialect.delimiter = self.getDelimiter() 
     187        buffer = StringIO() 
     188        writer = DictWriter(buffer, fieldnames=fields, dialect=dialect) 
     189        writer.writerow(dict(zip(fields, fields))) 
     190        writer.writerows(data) 
     191        return buffer.getvalue() 
    204192 
    205193 
  • qTopic/trunk/skins/qtopic/export_csv.py

    r508 r509  
    77##bind subpath=traverse_subpath 
    88##parameters=download=0,fields=None,show_header=1 
    9 from Products.qTopic.utils import toCSV 
    109if download: 
    1110    context.REQUEST.RESPONSE.setHeader('Content-Type', 'plain/text') 
     
    1716for r in res: 
    1817    csv_data.append(dict([(f, getattr(r, f, ''))for f in fields])) 
    19 print toCSV(fields, csv_data) 
    20 return printed 
     18return context.toCSV(fields, csv_data)