|
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