def test_set_state_in_memory_resource(self): handler = CSVFile(string=TEST_DATA_2) handler.add_row(['a', 'b', 'c']) data = handler.to_str() handler2 = CSVFile(string=data) self.assertEqual(handler2.get_row(3), ['a', 'b', 'c'])
def GET(self, resource, context): search = context.root.search(format='user') columns = [ 'email', 'lastname', 'firstname', 'gender', 'ctime', 'last_time', 'phone1', 'phone2' ] csv = CSVFile() from shop.user import ShopUser dynamic_schema = ShopUser.get_dynamic_schema() print dynamic_schema for brain in search.get_documents(): user = context.root.get_resource(brain.abspath) row = [] # Name row.append(user.name) row.append(str(user.get_property('is_enabled'))) row.append(user.get_property('user_group')) # Base informations for column in columns: value = user.get_property(column) try: row.append(value.encode('utf-8')) except: pass csv.add_row(row) context.set_content_type('text/csv') context.set_content_disposition('attachment; filename=export.csv') return csv.to_str()
def GET(self, resource, context): encoding = 'cp1252' # FIXME #if not resource.is_ready(): # msg = MSG(u"Your form is not finished yet.") # return context.come_back(msg, goto='/') # construct the csv csv = CSVFile() csv.add_row(["Chapitre du formulaire", "rubrique", "valeur"]) schema = resource.get_schema() handler = resource.get_value('data') for name, datatype in sorted(schema.iteritems()): if name in ('ctime', 'mtime'): continue value = handler.get_value(name, schema) data = force_encode(value, datatype, encoding) if type(data) is not str: raise ValueError, str(type(datatype)) csv.add_row([datatype.pages[0], name, data]) # Return as CSV context.set_content_type('text/comma-separated-values') context.set_content_disposition('attachment', filename="%s.csv" % (resource.name)) # Ok return csv.to_str(separator=';')
def export_csv(self, resource, context, form): columns = ['name', 'customer_id', 'workflow_state', 'total_pre_vat', 'total_vat', 'total_price', 'total_paid', 'ctime'] header = [MSG(u'Order ref.'), MSG(u'Customer ref.'), MSG(u'State'), MSG(u'Total VAT not inc.'), MSG(u'VAT'), MSG(u'Total VAT inc.'), MSG(u'Total paid'), MSG(u'Date')] header = [x.gettext().encode('utf-8') for x in header] csv = CSVFile() csv.add_row(header) lines = [] site_root = resource.get_site_root() since = datetime.combine(form['since'], time(0,0)) orders = context.root.search(AndQuery(PhraseQuery('is_order', True), get_base_path_query(site_root.get_canonical_path()), RangeQuery('ctime', since, None))) for brain in orders.get_documents(sort_by='ctime'): item_resource = resource.get_resource(brain.abspath) item = brain, item_resource row = [] for c in columns: value = self.get_csv_value(resource, context, item, c) if isinstance(value, unicode): value = value.encode('utf-8') else: value = str(value) row.append(value) csv.add_row(row) separator = ',' context.set_content_type('text/comma-separated-values') context.set_content_disposition('attachment; filename="Orders.csv"') return csv.to_str(separator=separator)
def GET(self, resource, context): search = context.root.search(format='user') columns = ['email', 'lastname', 'firstname', 'gender', 'ctime', 'last_time', 'phone1', 'phone2'] csv = CSVFile() from shop.user import ShopUser dynamic_schema = ShopUser.get_dynamic_schema() print dynamic_schema for brain in search.get_documents(): user = context.root.get_resource(brain.abspath) row = [] # Name row.append(user.name) row.append(str(user.get_property('is_enabled'))) row.append(user.get_property('user_group')) # Base informations for column in columns: value = user.get_property(column) try: row.append(value.encode('utf-8')) except: pass csv.add_row(row) context.set_content_type('text/csv') context.set_content_disposition('attachment; filename=export.csv') return csv.to_str()
def test_set_state_in_file_resource(self): handler = CSVFile('tests/test.csv') handler.add_row(['d1', 'e1', 'f1']) handler.save_state() handler2 = CSVFile('tests/test.csv') self.assertEqual(handler2.get_row(3), ['d1', 'e1', 'f1']) handler2.del_row(3) handler2.save_state() handler = CSVFile('tests/test.csv') self.assertEqual(handler.get_nrows(), 3)
def test_add_row(self): handler = CSVFile(string=TEST_DATA_2) handler.add_row(['a', 'b', 'c']) self.assertEqual(handler.get_row(3), ['a', 'b', 'c'])
def to_csv(self): csv = CSVFile() for values in self.iter_values(): row = (value.encode('utf_8') for value in values) csv.add_row(row) return csv.to_str()