Skip to content

Commit 75a750a

Browse files
committed
Minor checks in the Processing about QgsProject dirty, and disable the unique key field check
1 parent 0eaf4b1 commit 75a750a

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

dynamic_layers/dynamic_layers_dialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def __init__(self, parent: QDialog = None):
167167

168168
self.expression_widgets = []
169169
temporary_list_expressions = [
170-
# Project
170+
# Project server properties
171171
self.inProjectTitle_exp,
172172
self.inProjectShortName_exp,
173173
self.inProjectAbstract_exp,

dynamic_layers/processing_provider/generate_projects.py

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
QgsProcessing,
1111
QgsProcessingAlgorithm,
1212
QgsProcessingException,
13+
# QgsFeatureRequest,
1314
QgsProcessingParameterBoolean,
1415
QgsProcessingParameterExpression,
1516
QgsProcessingParameterFeatureSource,
@@ -106,13 +107,41 @@ def checkParameterValues(self, parameters, context) -> Tuple[bool, str]:
106107
msg = tr("You must have at least one layer with the configuration.")
107108
return False, msg
108109

109-
source = self.parameterAsSource(parameters, self.INPUT, context)
110-
field = self.parameterAsString(parameters, self.FIELD, context)
111-
unique_values = source.uniqueValues(source.fields().indexFromName(field))
112-
if len(unique_values) != source.featureCount():
113-
msg = tr("You field '{}' does not have unique values within the given layer.")
110+
if context.project().isDirty():
111+
msg = tr("You must save your project first.")
114112
return False, msg
115113

114+
# source = self.parameterAsSource(parameters, self.INPUT, context)
115+
# field = self.parameterAsString(parameters, self.FIELD, context)
116+
# index = source.fields().indexFromName(field)
117+
# unique_values = source.uniqueValues(index)
118+
# if len(unique_values) != source.featureCount():
119+
#
120+
# request = QgsFeatureRequest()
121+
# request.setSubsetOfAttributes([field], source.fields())
122+
# request.addOrderBy(field)
123+
# request.setFlags(QgsFeatureRequest.NoGeometry)
124+
# count = {}
125+
# for f in source.getFeatures(request):
126+
# if f[field] not in count.keys():
127+
# count[f[field]] = 0
128+
# count[f[field]] += 1
129+
# debug = ''
130+
# for k, v in count.items():
131+
# debug += f'{k} → {v}, '
132+
#
133+
# # count = {k: v for k, v in count.items() if v >= 2}
134+
# msg = tr(
135+
# "You field '{}' does not have unique values within the given layer : "
136+
# "{} uniques values versus {} features : {}"
137+
# ).format(
138+
# field,
139+
# len(unique_values),
140+
# source.featureCount(),
141+
# debug
142+
# )
143+
# return False, msg
144+
116145
return super().checkParameterValues(parameters, context)
117146

118147
def processAlgorithm(self, parameters, context, feedback):

0 commit comments

Comments
 (0)