|
48 | 48 | update_dataset = reqparse.RequestParser()
|
49 | 49 | update_dataset.add_argument('categories', location='json', type=list, help="New list of categories")
|
50 | 50 | update_dataset.add_argument('default_annotation_metadata', location='json', type=dict,
|
51 |
| - help="Default annotation metadata") |
| 51 | + help="Default annotation metadata") |
52 | 52 |
|
53 | 53 | dataset_generate = reqparse.RequestParser()
|
54 | 54 | dataset_generate.add_argument('keywords', location='json', type=list, default=[],
|
@@ -193,20 +193,31 @@ def delete(self, dataset_id):
|
193 | 193 |
|
194 | 194 | @api.expect(update_dataset)
|
195 | 195 | def post(self, dataset_id):
|
| 196 | + |
196 | 197 | """ Updates dataset by ID """
|
| 198 | + |
197 | 199 | dataset = current_user.datasets.filter(id=dataset_id, deleted=False).first()
|
198 | 200 | if dataset is None:
|
199 | 201 | return {"message": "Invalid dataset id"}, 400
|
200 | 202 |
|
201 | 203 | args = update_dataset.parse_args()
|
202 | 204 | categories = args.get('categories')
|
203 | 205 | default_annotation_metadata = args.get('default_annotation_metadata')
|
| 206 | + set_default_annotation_metadata = args.get('set_default_annotation_metadata') |
204 | 207 |
|
205 | 208 | if categories is not None:
|
206 | 209 | dataset.categories = CategoryModel.bulk_create(categories)
|
207 | 210 |
|
208 | 211 | if default_annotation_metadata is not None:
|
| 212 | + |
| 213 | + update = {} |
| 214 | + for key, value in default_annotation_metadata.items(): |
| 215 | + if key not in dataset.default_annotation_metadata: |
| 216 | + update[f'set__metadata__{key}'] = value |
| 217 | + |
209 | 218 | dataset.default_annotation_metadata = default_annotation_metadata
|
| 219 | + AnnotationModel.objects(dataset_id=dataset.id, deleted=False)\ |
| 220 | + .update(**update) |
210 | 221 |
|
211 | 222 | dataset.update(
|
212 | 223 | categories=dataset.categories,
|
|
0 commit comments