Пример #1
0
    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']")
Пример #2
0
    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()
Пример #3
0
    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()
Пример #4
0
 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")
Пример #5
0
 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]")
Пример #6
0
 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']")
Пример #7
0
 def test_lte(self):
     g = df_generate(self.df, "1", "filter__int__lte")
     self.assertEquals(g, u"int <= 1")
Пример #8
0
 def test_is_type_str(self):
     g = df_generate(self.df, "1", "filter__int__is__str")
     self.assertEquals(g, u"int == '1'")
Пример #9
0
 def test_is_type_int(self):
     g = df_generate(self.df, "1", "filter__int__is__int")
     self.assertEquals(g, u"int == 1")
Пример #10
0
 def test_is_type_str_text(self):
     g = df_generate(self.df, "Diamon", "filter__nivel__is__str")
     self.assertEquals(g, u"nivel == 'Diamon'")
Пример #11
0
 def test_is(self):
     g = df_generate(self.df, "2014-01-01", "filter__date")
     self.assertEquals(g, u"date == '2014-01-01'")