api: allow multiple occurences of same document in portfolio (#23339)
This commit is contained in:
parent
ef7a272c3f
commit
6d753a0f45
|
@ -125,15 +125,15 @@ class PushDocument(CommonAPIMixin, GenericAPIView):
|
|||
document, created = Document.objects.get_or_create(
|
||||
content_hash=content_hash,
|
||||
defaults={'content': document_file})
|
||||
if not created:
|
||||
raise api_errors.APIError('DOCUMENT_EXISTS')
|
||||
|
||||
user_document = UserDocument(
|
||||
user_document, created = UserDocument.objects.get_or_create(
|
||||
user=data.get('user'),
|
||||
filename=data.get('file_name'),
|
||||
document=document,
|
||||
origin=origin,
|
||||
deletable_by_user=data.get('deletable_by_user'))
|
||||
if not created:
|
||||
raise api_errors.APIError('DOCUMENT_EXISTS')
|
||||
user_document.save()
|
||||
|
||||
response_status = status.HTTP_200_OK
|
||||
|
|
|
@ -76,6 +76,7 @@ class UserDocument(models.Model):
|
|||
verbose_name = _('user document')
|
||||
verbose_name_plural = _('user documents')
|
||||
ordering = ('-created', 'user')
|
||||
unique_together = ('user', 'filename', 'document', 'origin', 'deletable_by_user')
|
||||
|
||||
@property
|
||||
def filename_encoded(self):
|
||||
|
|
|
@ -98,6 +98,14 @@ def test_push_document(app, admin_user, john_doe):
|
|||
assert models.UserDocument.objects.count() == 3 # new document
|
||||
assert models.UserDocument.objects.filter(deletable_by_user=True).count() == 2
|
||||
|
||||
# same document
|
||||
data['file_b64_content'] = base64.b64encode('coin3')
|
||||
data['deletable_by_user'] = True
|
||||
response = app.post_json(url, params=data, status=400)
|
||||
assert response.json['result'] == 0
|
||||
assert response.json['errors'][0]['code'] == 'document-exists'
|
||||
assert models.UserDocument.objects.count() == 3 # no new document
|
||||
|
||||
|
||||
def test_push_document_max_document_size(app, private_settings, admin_user, john_doe):
|
||||
private_settings.FARGO_MAX_DOCUMENT_SIZE = 1
|
||||
|
|
Loading…
Reference in New Issue