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
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)