web/views/plots.py
branchstable
changeset 2161 200481e7b156
parent 2009 b1e2b9e4c809
child 2312 af4d8f75c5db
equal deleted inserted replaced
2160:17d624698661 2161:200481e7b156
    18 from cubicweb.utils import make_uid, UStringIO, datetime2ticks
    18 from cubicweb.utils import make_uid, UStringIO, datetime2ticks
    19 from cubicweb.vregistry import objectify_selector
    19 from cubicweb.vregistry import objectify_selector
    20 from cubicweb.web.views import baseviews
    20 from cubicweb.web.views import baseviews
    21 
    21 
    22 @objectify_selector
    22 @objectify_selector
    23 def at_least_two_columns(cls, req, rset, *args, **kwargs):
    23 def at_least_two_columns(cls, req, rset=None, *args, **kwargs):
    24     if not rset:
    24     if not rset:
    25         return 0
    25         return 0
    26     return len(rset.rows[0]) >= 2
    26     return len(rset.rows[0]) >= 2
    27 
    27 
    28 @objectify_selector
    28 @objectify_selector
    29 def all_columns_are_numbers(cls, req, rset, *args, **kwargs):
    29 def all_columns_are_numbers(cls, req, rset=None, *args, **kwargs):
    30     """accept result set with at least one line and two columns of result
    30     """accept result set with at least one line and two columns of result
    31     all columns after second must be of numerical types"""
    31     all columns after second must be of numerical types"""
    32     for etype in rset.description[0]:
    32     for etype in rset.description[0]:
    33         if etype not in ('Int', 'Float'):
    33         if etype not in ('Int', 'Float'):
    34             return 0
    34             return 0
    35     return 1
    35     return 1
    36 
    36 
    37 @objectify_selector
    37 @objectify_selector
    38 def second_column_is_number(cls, req, rset, *args, **kwargs):
    38 def second_column_is_number(cls, req, rset=None, *args, **kwargs):
    39     etype = rset.description[0][1]
    39     etype = rset.description[0][1]
    40     if etype not  in ('Int', 'Float'):
    40     if etype not  in ('Int', 'Float'):
    41         return 0
    41         return 0
    42     return 1
    42     return 1
    43 
    43 
    44 @objectify_selector
    44 @objectify_selector
    45 def columns_are_date_then_numbers(cls, req, rset, *args, **kwargs):
    45 def columns_are_date_then_numbers(cls, req, rset=None, *args, **kwargs):
    46     etypes = rset.description[0]
    46     etypes = rset.description[0]
    47     if etypes[0] not in ('Date', 'Datetime'):
    47     if etypes[0] not in ('Date', 'Datetime'):
    48         return 0
    48         return 0
    49     for etype in etypes[1:]:
    49     for etype in etypes[1:]:
    50         if etype not in ('Int', 'Float'):
    50         if etype not in ('Int', 'Float'):