Пример #1
0
 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()
Пример #2
0
    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'])
Пример #3
0
    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'])
Пример #4
0
 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=';')
Пример #5
0
 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)
Пример #6
0
 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()
Пример #7
0
 def test_to_str_without_schema(self):
     handler = CSVFile(string=TEST_DATA_1)
     self.assertEqual(
         handler.to_str(),
         u'"python","http://python.org/","52343","2003-10-23"\n'
         u'"ruby","http://ruby-lang.org/","42352","2001-03-28"')
Пример #8
0
 def test_to_str_without_schema(self):
     handler = CSVFile(string=TEST_DATA_1)
     self.assertEqual(
         handler.to_str(),
         u'"python","http://python.org/","52343","2003-10-23"\n'
         u'"ruby","http://ruby-lang.org/","42352","2001-03-28"')
Пример #9
0
 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()