def do_create(request, recv_data): # validation checks for attr in recv_data["attrs"]: # formalize recv_data format if "ref_ids" not in attr: attr["ref_ids"] = [] if int(attr["type"]) & AttrTypeValue["object"] and not attr["ref_ids"]: return HttpResponse("Need to specify enabled referral ids", status=400) if any([ not Entity.objects.filter(id=x).exists() for x in attr["ref_ids"] ]): return HttpResponse("Specified referral is invalid", status=400) # duplication checks counter = collections.Counter([ attr["name"] for attr in recv_data["attrs"] if "deleted" not in attr or not attr["deleted"] ]) if len([v for v, count in counter.items() if count > 1]): return HttpResponse("Duplicated attribute names are not allowed", status=400) if custom_view.is_custom("create_entity"): resp = custom_view.call_custom("create_entity", None, recv_data["name"], recv_data["attrs"]) if resp: return resp # create EntityAttr objects entity = Entity( name=recv_data["name"], note=recv_data["note"], created_user=request.user, status=Entity.STATUS_CREATING, ) # set status parameters if recv_data["is_toplevel"]: entity.status = Entity.STATUS_TOP_LEVEL entity.save() # Create a new job to edit entity and run it job = Job.new_create_entity(request.user, entity, params=recv_data) job.run() return JsonResponse({ "entity_id": entity.id, "entity_name": entity.name, "msg": 'Success to create Entity "%s"' % entity.name, })
def do_create(request, recv_data): # validation checks for attr in recv_data['attrs']: # formalize recv_data format if 'ref_ids' not in attr: attr['ref_ids'] = [] if int(attr['type']) & AttrTypeValue['object'] and not attr['ref_ids']: return HttpResponse('Need to specify enabled referral ids', status=400) if any([ not Entity.objects.filter(id=x).exists() for x in attr['ref_ids'] ]): return HttpResponse('Specified referral is invalid', status=400) # get user object that current access user = User.objects.get(id=request.user.id) if custom_view.is_custom('create_entity'): resp = custom_view.call_custom('create_entity', None, recv_data['name'], recv_data['attrs']) if resp: return resp # create EntityAttr objects entity = Entity(name=recv_data['name'], note=recv_data['note'], created_user=user, status=Entity.STATUS_CREATING) # set status parameters if recv_data['is_toplevel']: entity.status = Entity.STATUS_TOP_LEVEL entity.save() # Create a new job to edit entity and run it job = Job.new_create_entity(user, entity, params=recv_data) job.run() return JsonResponse({ 'entity_id': entity.id, 'entity_name': entity.name, 'msg': 'Success to create Entity "%s"' % entity.name, })