def _time_query_string(self, epoch, col, symbol="="):
     if self.timeLayer.getDateType() == time_util.DateTypes.IntegerTimestamps:
         return "{} {} {}".format(QgsExpression.quotedColumnRef(col), symbol, epoch)
     else:
         timeStr = time_util.epoch_to_str(epoch, self.timeLayer.getTimeFormat())
         return "{} {} {}".format(QgsExpression.quotedColumnRef(col), symbol,
                                  QgsExpression.quotedString(timeStr))
Esempio n. 2
0
 def _time_query_string(self, epoch, col, symbol="="):
     if self.timeLayer.getDateType(
     ) == time_util.DateTypes.IntegerTimestamps:
         return "{} {} {}".format(QgsExpression.quotedColumnRef(col),
                                  symbol, epoch)
     else:
         timeStr = time_util.epoch_to_str(epoch,
                                          self.timeLayer.getTimeFormat())
         return "{} {} {}".format(QgsExpression.quotedColumnRef(col),
                                  symbol,
                                  QgsExpression.quotedString(timeStr))
Esempio n. 3
0
 def _set_rule(renderer):
     root_rule = renderer.rootRule()
     if is_new:
         rule = root_rule.children()[0]
     else:
         rule = root_rule.children()[0].clone()
     rule.setLabel(name)
     expression = '"name" = {}'.format(QgsExpression.quotedString(name))
     rule.setFilterExpression(expression)
     rule.symbol().setColor(QColor(*style['color'], 255))
     rule.symbol().setOpacity(1 - style['transparency'])
     rule.symbol().symbolLayers()[0].setStrokeWidth(style['stroke_width'])
     rule.symbol().symbolLayers()[0].setStrokeColor(QColor(255, 255, 255))
     if not is_new:
         root_rule.appendChild(rule)
Esempio n. 4
0
 def _value_for_query(self, val, col):
     if qgs.isNumericField(self.timeLayer.layer, col):
         return val
     else:
         return QgsExpression.quotedString(val)
 def _value_for_query(self, val, col):
     if qgs.isNumericField(self.timeLayer.layer, col):
         return val
     else:
         return QgsExpression.quotedString(val)
    def get_lizmap_layer_filter(self, layer: 'QgsVectorLayer') -> str:
        """ Get lizmap layer filter based on login filter """
        layer_filter = ''

        # Get Lizmap config
        cfg = self.get_lizmap_config()
        if not cfg:
            # Return empty filter
            return layer_filter

        # Get layers config
        cfg_layers = get_lizmap_layers_config(cfg)
        if not cfg_layers:
            # Return empty filter
            return layer_filter

        # Get layer name
        layer_name = layer.name()
        # Check that
        if layer_name not in cfg_layers:
            # Return empty filter
            return layer_filter

        # Get layer login filter
        cfg_layer_login_filter = get_lizmap_layer_login_filter(cfg, layer_name)
        if not cfg_layer_login_filter:
            # Return empty filter
            return layer_filter

        # Layer login fliter only for edition does not filter layer
        is_edition_only = 'edition_only' in cfg_layer_login_filter
        if is_edition_only and config_value_to_boolean(
                cfg_layer_login_filter['edition_only']):
            return layer_filter

        # Get Lizmap user groups provided by the request
        groups = self.get_lizmap_groups()
        user_login = self.get_lizmap_user_login()

        # If groups is empty, no Lizmap user groups provided by the request
        # Return empty filter
        if len(groups) == 0 and not user_login:
            return layer_filter

        # Override filter
        override_filter = self.get_lizmap_override_filter()
        if override_filter:
            return layer_filter

        attribute = cfg_layer_login_filter['filterAttribute']

        # Default filter for no user connected
        # we use expression tools also for subset string
        layer_filter = QgsExpression.createFieldEqualityExpression(
            attribute, 'all')

        # If groups is not empty but the only group like user login has no name
        # Return the filter for no user connected
        if len(groups) == 1 and groups[0] == '' and user_login == '':
            return layer_filter

        # List of quoted values for expression
        quoted_values = []
        if config_value_to_boolean(cfg_layer_login_filter['filterPrivate']):
            # If filter is private use user_login
            quoted_values.append(QgsExpression.quotedString(user_login))
        else:
            # Else use user groups
            quoted_values = [QgsExpression.quotedString(g) for g in groups]
        # Add all to quoted values
        quoted_values.append(QgsExpression.quotedString('all'))

        # Build filter
        layer_filter = '{} IN ({})'.format(
            QgsExpression.quotedColumnRef(attribute), ', '.join(quoted_values))

        # Return build filter
        return layer_filter