- `tags`: Similar to correspondent. Specify this multiple times to
have multiple tags added to the document.
- `archive_serial_number`: An optional archive serial number to set.
+- `custom_fields`: An array of custom field ids to assign (with an empty
+ value) to the document.
The endpoint will immediately return HTTP 200 if the document consumption
process was started successfully, with the UUID of the consumption task
max_value=Document.ARCHIVE_SERIAL_NUMBER_MAX,
)
+ custom_fields = serializers.PrimaryKeyRelatedField(
+ many=True,
+ queryset=CustomField.objects.all(),
+ label="Custom fields",
+ write_only=True,
+ required=False,
+ )
+
def validate_document(self, document):
document_data = document.file.read()
mime_type = magic.from_buffer(document_data, mime=True)
else:
return None
+ def validate_custom_fields(self, custom_fields):
+ if custom_fields:
+ return [custom_field.id for custom_field in custom_fields]
+ else:
+ return None
+
class BulkDownloadSerializer(DocumentListSerializer):
content = serializers.ChoiceField(
self.assertIsNone(overrides.tag_ids)
self.assertEqual(500, overrides.asn)
+ def test_upload_with_custom_fields(self):
+ self.consume_file_mock.return_value = celery.result.AsyncResult(
+ id=str(uuid.uuid4()),
+ )
+
+ custom_field = CustomField.objects.create(
+ name="stringfield",
+ data_type=CustomField.FieldDataType.STRING,
+ )
+
+ with open(
+ os.path.join(os.path.dirname(__file__), "samples", "simple.pdf"),
+ "rb",
+ ) as f:
+ response = self.client.post(
+ "/api/documents/post_document/",
+ {
+ "document": f,
+ "custom_fields": [custom_field.id],
+ },
+ )
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+
+ self.consume_file_mock.assert_called_once()
+
+ input_doc, overrides = self.get_last_consume_delay_call_args()
+
+ self.assertEqual(input_doc.original_file.name, "simple.pdf")
+ self.assertEqual(overrides.filename, "simple.pdf")
+ self.assertEqual(overrides.custom_field_ids, [custom_field.id])
+
def test_get_metadata(self):
doc = Document.objects.create(
title="test",
title = serializer.validated_data.get("title")
created = serializer.validated_data.get("created")
archive_serial_number = serializer.validated_data.get("archive_serial_number")
+ custom_field_ids = serializer.validated_data.get("custom_fields")
t = int(mktime(datetime.now().timetuple()))
created=created,
asn=archive_serial_number,
owner_id=request.user.id,
+ custom_field_ids=custom_field_ids,
)
async_task = consume_file.delay(