Ejemplo n.º 1
0
def add_edit_item_assertion(request, uuid):
    """ Handles POST requests to add an assertion for an item """
    item_edit = ItemBasicEdit(uuid, request)
    if item_edit.manifest is not False:
        if request.method == 'POST':
            if item_edit.edit_permitted or request.user.is_superuser:
                field_data = False
                if 'field_data' in request.POST:
                    field_data_json = request.POST['field_data']
                    try:
                        field_data = json.loads(field_data_json)
                    except:
                        field_data = False
                if field_data is False:
                    json_output = json.dumps(
                        {
                            'error':
                            'Need to POST "field_data" with JSON encoded text.'
                        },
                        indent=4,
                        ensure_ascii=False)
                    return HttpResponse(
                        json_output,
                        content_type='application/json; charset=utf8',
                        status=400)
                else:
                    item_ass = ItemAssertion()
                    item_ass.uuid = uuid
                    item_ass.project_uuid = item_edit.manifest.project_uuid
                    result = item_ass.add_edit_assertions(
                        field_data, item_edit.manifest)
                    result['errors'] = item_edit.errors
                    json_output = json.dumps(result,
                                             indent=4,
                                             ensure_ascii=False)
                    return HttpResponse(
                        json_output,
                        content_type='application/json; charset=utf8')
            else:
                json_output = json.dumps({'error': 'edit permission required'},
                                         indent=4,
                                         ensure_ascii=False)
                return HttpResponse(
                    json_output,
                    content_type='application/json; charset=utf8',
                    status=401)
        else:
            return HttpResponseForbidden
    else:
        raise Http404
Ejemplo n.º 2
0
    def profile_field_update(self, item_man, sub_field_key, act_sub_field):
        """ lookup the object for the profile's input field
            based on the field_uuid

            Only returns a field that is NOT
            required by open context,
            since those get special handling
        """
        # field_uuid is the field identifier from the data
        # submitted by the user
        field_uuid = act_sub_field['field_uuid']
        for fgroup in self.profile_obj['fgroups']:
            obs_num = fgroup['obs_num']
            for field in fgroup['fields']:
                if field['oc_required'] is False \
                   and field['id'] == field_uuid:
                    if 'obs_num' not in act_sub_field:
                        act_sub_field['obs_num'] = obs_num
                    # we've found the field!
                    # first delete existing uses of this field
                    item_ass = ItemAssertion()
                    item_ass.source_id = item_man.source_id
                    add_edit_field_data = {sub_field_key: act_sub_field}
                    item_ass.add_edit_assertions(add_edit_field_data, item_man)
Ejemplo n.º 3
0
    def profile_field_update(self, item_man, sub_field_key, act_sub_field):
        """ lookup the object for the profile's input field
            based on the field_uuid

            Only returns a field that is NOT
            required by open context,
            since those get special handling
        """
        # field_uuid is the field identifier from the data
        # submitted by the user
        field_uuid = act_sub_field['field_uuid']
        for fgroup in self.profile_obj['fgroups']:
            obs_num = fgroup['obs_num']
            for field in fgroup['fields']:
                if field['oc_required'] is False \
                   and field['id'] == field_uuid:
                    if 'obs_num' not in act_sub_field:
                        act_sub_field['obs_num'] = obs_num
                    # we've found the field!
                    # first delete existing uses of this field
                    item_ass = ItemAssertion()
                    item_ass.source_id = item_man.source_id
                    add_edit_field_data = {sub_field_key: act_sub_field}
                    item_ass.add_edit_assertions(add_edit_field_data, item_man)