Beispiel #1
0
def data_to_query(data):
    """
    Transforms a view dict into a Livestatus query.

    The passed dict represents a stored (in userdata) custom view, it
    has the same structure as a forms set in custom_edit.
    """
    d = {}
    d['datasource'] = data['metadata'][0]['data_source']
    d['columns'] = [x['name'] for x in data['columns'] if x['name']]
    # we have to add columns which are in d['sorts'], otherwise the data
    # postprocessor can't do its job
    #sorts = [x['column'] for x in data['sorts']]
    add_sorts = [x['column'] for x in data['sorts'] if x not in d['columns']]
    d['columns'] = ' '.join(d['columns'] + add_sorts)
    if d['columns']:
        d['columns'] = 'Columns: ' + d['columns'] + '\n'
    d['stats'] = ''.join(['Stats: %(column)s = %(value)s\n' % x for x in data['stats']])
    d['filters'] = ''.join([str(custom_filters.get_filter(d['datasource'], x['column'])(x))
                            for x in data['filters'] if x['column']])
    query = ('GET %(datasource)s\n'
             '%(columns)s'
             '%(filters)s'
             '%(stats)s') % d
    # Remove unneeded linebreaks at the end:
    query = query.strip()
    return query
Beispiel #2
0
 def __init__(self, *args, **kwargs):
     super(FiltersForm, self).__init__(*args, **kwargs)
     
     self.fields['column'] = forms.ChoiceField(
         choices=_get_columns_names(datasource=self.datasource),
         )
     # let's get the value of this particular column
     if kwargs.get('initial', False): # GET
         try:
             column = kwargs['initial']['column']
         except KeyError:
             column = None
     else: # POST
         try:
             column = kwargs['data'][kwargs['prefix'] + '-column']
         except KeyError:
             column = None
     
     if column:
         self.fields.update(custom_filters.get_filter(self.datasource, column)().get_fields())
Beispiel #3
0
    def __init__(self, *args, **kwargs):
        super(FiltersForm, self).__init__(*args, **kwargs)

        self.fields['column'] = forms.ChoiceField(
            choices=_get_columns_names(datasource=self.datasource), )
        # let's get the value of this particular column
        if kwargs.get('initial', False):  # GET
            try:
                column = kwargs['initial']['column']
            except KeyError:
                column = None
        else:  # POST
            try:
                column = kwargs['data'][kwargs['prefix'] + '-column']
            except KeyError:
                column = None

        if column:
            self.fields.update(
                custom_filters.get_filter(self.datasource,
                                          column)().get_fields())