Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
wbcrm / crm / views / api / dynamic_fields.py
Size: Mime:
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',
    })