def obj_create(self, bundle, **kwargs): bundle = super(MediatorResource, self).obj_create(bundle, **kwargs) vil_list = bundle.data.get('assigned_villages') for vil in vil_list: vil = Village.objects.get(id=int(vil.split('/')[-2])) u = AnimatorAssignedVillage(animator=bundle.obj, village=vil) u.save() bundle.obj.role = 0 return bundle
def obj_create(self, bundle, **kwargs): bundle = super(MediatorResource, self).obj_create(bundle, **kwargs) vil_list = bundle.data.get('assigned_villages') for vil in vil_list: vil = Village.objects.get(id = int(vil.split('/')[-2])) u = AnimatorAssignedVillage(animator=bundle.obj, village=vil) u.save() return bundle
def obj_create(self, bundle, **kwargs): attempt = Animator.objects.filter(partner_id=bundle.data['partner']['online_id'], gender=bundle.data[ 'gender'], district_id=bundle.data['district']['online_id'], name=bundle.data['name'], phone_no=bundle.data['phone_no']) if attempt.count() < 1: bundle = super(MediatorResource, self).obj_create(bundle, **kwargs) vil_list = bundle.data.get('assigned_villages') for vil in vil_list: vil = Village.objects.get(id=int(vil.split('/')[-2])) u = AnimatorAssignedVillage(animator=bundle.obj, village=vil) u.save() else: send_duplicate_message(int(attempt[0].id)) return bundle
def obj_create(self, bundle, **kwargs): attempt = Animator.objects.filter(partner_id=bundle.data['partner']['online_id'], gender=bundle.data[ 'gender'], district_id=bundle.data['district']['online_id'], name=bundle.data['name'], phone_no=bundle.data['phone_no']) if attempt.count() < 1: bundle = super(MediatorResource, self).obj_create(bundle, **kwargs) vil_list = bundle.data.get('assigned_villages') for vil in vil_list: vil = Village.objects.get(id=int(vil.split('/')[-2])) u = AnimatorAssignedVillage(animator=bundle.obj, village=vil) u.save() else: raise MediatorNotSaved( {"online_id": int(attempt[0].id), "error": "Duplicate"}) return bundle
def obj_update(self, bundle, **kwargs): #Edit case many to many handling. First clear out the previous related objects and create new objects bundle = super(MediatorResource, self).obj_update(bundle, **kwargs) mediator_id = bundle.data.get('id') vil_id_list = [] for vil_resource in bundle.data.get('assigned_villages'): vil_id_list.append(int(vil_resource.split('/')[-2])) existing_vil_ids = AnimatorAssignedVillage.objects.filter(animator__id=mediator_id).values_list('village__id', flat=True) #delete only if assigned villages are different if len(list(set(vil_id_list) & set(existing_vil_ids))) != len(vil_id_list) : #first delete the old associations del_objs = AnimatorAssignedVillage.objects.filter(animator__id=mediator_id).delete() #add new villages again vil_list = bundle.data.get('assigned_villages') for vil in vil_list: vil = Village.objects.get(id = int(vil.split('/')[-2])) u = AnimatorAssignedVillage(animator=bundle.obj, village=vil) u.save() return bundle