Repository URL to install this package:
|
Version:
0.1.4 ▾
|
from rest_framework.decorators import api_view
from rest_framework.response import Response
from crm.models.dynamic_fields import DynamicField, Linkage
from crm.models.entries import Entry
from wbutils.views import AppModelResponseHeaderMixin
@api_view(['POST', 'GET'])
def update_additional_field(request, entry, additional_field_key, format=None):
# TODO: Check for permissions
try:
entry = Entry.objects.get(id=entry)
except Entry.DoesNotExist:
return Response({
'error': 'This entry does not exist.'
})
field = DynamicField.get_field_for_key(additional_field_key)
if not field:
return Response({
'error': 'This dynamic field does not exist.'
})
if entry.get_casted_entry().get_linkage_value() != field.linkage and field.linkage != Linkage.BOTH.value:
return Response({
'error': 'This dynamic field does not work with this entry type.'
})
if request.method == 'POST':
try:
additional_field_content = request.data['content']
except KeyError:
return Response({
'error': 'No value supplied as a POST Parameter.'
})
valid, status, content = field.validate_field(additional_field_content)
if valid:
entry.additional_fields[additional_field_key]['content'] = content
entry.save()
return Response({
'updated': True,
'content': content
})
else:
return Response({
'error': status
})
return Response({
'post-parameter': 'content',
})