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))
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))
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)
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