def test_between_date(self): g = df_generate(self.df, "2014-01-01:2014-02-01", "filter__date__between__date__:Y-:m-:d") self.assertEquals(g, u"date in ['2014-01-01', '2014-01-02', " "'2014-01-03', '2014-01-04', '2014-01-05', " "'2014-01-06', '2014-01-07', '2014-01-08', " "'2014-01-09', '2014-01-10', '2014-01-11', " "'2014-01-12', '2014-01-13', '2014-01-14', " "'2014-01-15', '2014-01-16', '2014-01-17', " "'2014-01-18', '2014-01-19', '2014-01-20', " "'2014-01-21', '2014-01-22', '2014-01-23', " "'2014-01-24', '2014-01-25', '2014-01-26', " "'2014-01-27', '2014-01-28', '2014-01-29', " "'2014-01-30', '2014-01-31', '2014-02-01']")
def get(self, slug, ext='xls'): mc = memcache.Client(['127.0.0.1:11211'], debug=0) columns = json.loads(MyBucket.get('{}-columns'.format(slug)).data) fields = columns if self.get_argument('fields', None): fields = self.get_argument('fields').split(',') filters = [i[0] for i in self.request.arguments.iteritems() if len(i[0].split('filter__')) > 1] fields_json = json.dumps(fields) filters_json = json.dumps({f: self.get_argument(f) for f in filters}) if mc.get(str(slug)) and\ mc.get('{}-columns'.format(slug)) == fields_json and\ mc.get('{}-fulters'.format(slug)) == filters_json: self.write(mc.get(str(slug))) self.finish() mc.set('{}-columns'.format(slug), fields_json) mc.set('{}-filters'.format(slug), filters_json) df = DataFrame(MyBucket.get(slug).data, columns=fields) if len(filters) >= 1: for f in filters: df = df.query(df_generate(df, self.get_argument(f), f)) file_name = 'assets/exports/openmining-{}.{}'.format(slug, ext) if ext == 'csv': df.to_csv(file_name) contenttype = 'text/csv' else: df.to_excel(file_name) contenttype = 'application/vnd.ms-excel' self.set_header('Content-Type', contenttype) self.set_header('Content-disposition', 'attachment; ' 'filename={}.{}'.format(slug, ext)) ifile = open(file_name, "r") self.write(ifile.read()) ifile.close() self.finish()
def open(self, slug): columns = json.loads(MyBucket.get('{}-columns'.format(slug)).data) fields = columns if self.get_argument('fields', None): fields = self.get_argument('fields').split(',') self.write_message({'type': 'columns', 'data': fields}) filters = [i[0] for i in self.request.arguments.iteritems() if len(i[0].split('filter__')) > 1] df = DataFrame(MyBucket.get(slug).data, columns=fields) if len(filters) >= 1: for f in filters: df = df.query(df_generate(df, self.get_argument(f), f)) # CLEAN MEMORY del filters, fields, columns gc.collect() ca = None for e in MyAdminBucket.get('element').data: if e['slug'] == slug: ca = e['categories'] categories = [] for i in df.to_dict(outtype='records'): if ca: categories.append(i[ca]) self.write_message({'type': 'data', 'data': i}) # CLEAN MEMORY del df gc.collect() self.write_message({'type': 'categories', 'data': categories}) self.write_message({'type': 'close'}) # CLEAN MEMORY del categories gc.collect()
def test_notin_str(self): g = df_generate(self.df, "1,2,3", "filter__int__notin") self.assertEquals(g, u"['1', '2', '3'] not in int")
def test_in_int(self): g = df_generate(self.df, "1,2,3", "filter__int__in__int") self.assertEquals(g, u"int in [1, 2, 3]")
def test_in_str_text(self): g = df_generate(self.df, "Diamond,Angular", "filter__str__in__str") self.assertEquals(g, u"str in ['Diamond', 'Angular']")
def test_lte(self): g = df_generate(self.df, "1", "filter__int__lte") self.assertEquals(g, u"int <= 1")
def test_is_type_str(self): g = df_generate(self.df, "1", "filter__int__is__str") self.assertEquals(g, u"int == '1'")
def test_is_type_int(self): g = df_generate(self.df, "1", "filter__int__is__int") self.assertEquals(g, u"int == 1")
def test_is_type_str_text(self): g = df_generate(self.df, "Diamon", "filter__nivel__is__str") self.assertEquals(g, u"nivel == 'Diamon'")
def test_is(self): g = df_generate(self.df, "2014-01-01", "filter__date") self.assertEquals(g, u"date == '2014-01-01'")