def obj_create(self, bundle, **kwargs): ky = bundle.request.user.id req = ['uuid'] ren = ['name'] data = bundle.data for value in req: if value not in data or data[value] == '' or is_valid_uuid(data[value]) == False: for vl2 in ren: if vl2 not in data or data[vl2] == '': data_res = {'error_uuid': "uuid is not valid", 'error_name': "name is not valid"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: data_res = {'error': "%s is not valid" % value} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) for value1 in ren: if value1 not in data or data[value1] == '': for vl3 in req: if vl3 not in data or data[vl3] == '' or is_valid_uuid(data[vl3]) == False: data_res = {'error_uuid': "uuid is not valid", 'error_name': "name is not valid"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: data_res = {'error': "%s is not valid" % value1} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if RingGroup.objects.filter(ring_group_uuid=data['uuid']).count() > 0: data_res = {'error': "uuid exists, you cant create new one"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: for value in data: if data[value] in ['true', 'True']: data[value] = True elif data[value] in ['false', 'False']: data[value] = False i = 0 while i < 10000000: i += 1 kwargs['ring_group_extension'] = random.randint(100000,999999) if RingGroup.objects.filter(ring_group_extension=kwargs['ring_group_extension']).count() == 0: break kwargs['domain_uuid'] = '09f10c29-9f49-4209-9050-52bd09d1886a' kwargs['dialplan_uuid'] = uuid.uuid4() kwargs['ring_group_name'] = data['name'] rg = RingGroup() rg.ring_group_extension = kwargs['ring_group_extension'] rg.ring_group_uuid = data['uuid'] rg.ring_group_name = kwargs['ring_group_name'] rg.dialplan_uuid = kwargs['dialplan_uuid'] rg.save() User.objects.get(id=ky).ring_group.add(data['uuid']) # rg.user.add(user) # ext.accountcode = bundle.request.user from device.models import sync_dialplan_rg sync_dialplan_rg(rg.ring_group_uuid) data_res = {"department_name": kwargs['ring_group_name'], "department_extension": kwargs['ring_group_extension'], "resource_uri": "/api/v1/department/%s/" % data['uuid']} response = self.error_response(bundle.request, data_res, response_class=HttpOK) raise ImmediateHttpResponse(response=response)
def obj_create(self, bundle, **kwargs): rg = ['depuuid'] ext = ['extuuid'] data = bundle.data ky = bundle.request.user.id listrg = bundle.request.user.ring_group.all() listext = Extension.objects.filter(accountcode=ky) er1 = 0 er2 = 0 if len(bundle.request.user.ring_group.all()) == 0: if Extension.objects.filter(accountcode=ky).count() == 0: data_res = { 'error_dep': "have no department, let's create new one", 'error_sip': "have no sip account, let's create new one" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: data_res = { 'error_dep': "have no department, let's create new one" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) for vlex in ext: if vlex not in data or data[vlex] == '': er2 = 2 else: if type(data[vlex]) is not list: data[vlex] = data[vlex].replace(' ', '') lextadd = data[vlex].split(';') for exte in lextadd: if is_valid_uuid(exte) == False: er2 = 3 else: if listext.filter( extension_uuid=exte).count() == 0: er2 = 4 else: ledt = listext.filter(extension_uuid=exte) for a in ledt: if a.description == 'is_bell': er2 = 5 for vlrg in rg: if vlrg not in data or data[vlrg] == '' or is_valid_uuid( data[vlrg]) == False: er1 = 1 else: if listrg.filter(ring_group_uuid=data[vlrg]).count() == 0: er1 = 2 if er1 == 1: if er2 == 2 or er2 == 3: data_res = { 'error_dep': "department uuid is not valid", 'error_sip': "sip uuid is not valid" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 4: data_res = { 'error_dep': "department uuid is not valid", 'error_sip': "sip uuid is not exist in list" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 5: data_res = { 'error_dep': "department uuid is not valid", 'error_sip': "sip uuid is bell. Let's set another sip account" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: data_res = {'error_dep': "department uuid is not valid"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er1 == 2: if er2 == 2 or er2 == 3: data_res = { 'error_dep': "department uuid is not exits in list", 'error_sip': "sip uuid is not valid" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 4: data_res = { 'error_dep': "department uuid is not exits in list", 'error_sip': "sip uuid is not exist in list" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 5: data_res = { 'error_dep': "department uuid is not exits in list", 'error_sip': "sip uuid is bell. Let's set another sip account" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: data_res = { 'error_dep': "department uuid is not exits in list" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 2 or er2 == 3: data_res = {'error_sip': "sip uuid is not valid"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 4: data_res = {'error_sip': "sip uuid is not exist in list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er2 == 5: data_res = { 'error_sip': "sip uuid is bell. Let's set another sip account" } response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er1 == 0 and er2 == 0: rgd = RingGroupDestination() listextnb = Extension.objects.filter(extension_uuid__in=lextadd) rgu = RingGroup.objects.get(ring_group_uuid=data[vlrg]) print rgu for uuinli in lextadd: extext = Extension.objects.get(extension_uuid=uuinli) print extext kwargs['ring_group_destination_uuid'] = uuid.uuid4() kwargs['domain_uuid'] = '09f10c29-9f49-4209-9050-52bd09d1886a' rgd.ring_group_uuid = rgu rgd.destination_number = extext rgd.domain_uuid = kwargs['domain_uuid'] rgd.ring_group_destination_uuid = kwargs[ 'ring_group_destination_uuid'] rgd.save() from device.models import sync_dialplan_rg sync_dialplan_rg(data[vlrg]) # return self.get_object_list(self, request, **kwargs) data_res = { "ring_group_destination_uuid": kwargs['ring_group_destination_uuid'], "resource_uri": "/api/v1/rgdes/%s/" % data[vlrg] } response = self.error_response(bundle.request, data_res, response_class=HttpOK) raise ImmediateHttpResponse(response=response)
def obj_update(self, bundle, **kwargs): ky = bundle.request.user.id data = bundle.data unchange_list = ['department_extension', 'department_uuid'] for value in unchange_list: if value in data: del data[value] ret = super(RingGroupResource, self).obj_update(bundle, **kwargs) obj = bundle.obj if data.get('department_name'): if data['department_name'] != '': obj.ring_group_name = data['department_name'] obj.save() if data.get('remove_sip'): le = "" data['remove_sip'] = data['remove_sip'].replace(' ','') data['remove_sip'] = data['remove_sip'].replace(';',',') if data['remove_sip'] == 'all': if RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid).count() >0: RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid).delete() from device.models import sync_dialplan_rg sync_dialplan_rg(obj.ring_group_uuid) return ret if data['remove_sip'] != '': listextrmv = data['remove_sip'].split(',') if Extension.objects.filter(accountcode=ky).count() == 0: data_res = {'error': "have no sip account, let's create new one"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: listextuser = Extension.objects.filter(accountcode=ky) if RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid).count() == 0: data_res = {'error': "have no sip account in the department's list, let's add new one"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: listrguser = RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid) for rguuid in listrguser: abc = Extension.objects.filter(extension=rguuid.destination_number)[0] le = str(abc.extension_uuid) + ', ' + le listextold = le.rstrip(', ') listextold = listextold.replace(' ','') listextold = listextold.split(',') for extel in listextrmv: er = 0 if is_valid_uuid(extel) == False: er = 1 data_res = {'error_sip': "at least one invalid sip uuid exists. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if listextuser.filter(extension_uuid=extel).count() == 0: er = 1 data_res = {'error_sip': "at least one sip uuid doesn't exists in this user's sip list. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if extel not in listextold: er = 1 data_res = {'error_sip': "at least one sip uuid doesn't exists in this department's list. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er == 0: for extel in listextrmv: extp = Extension.objects.filter(extension_uuid=extel)[0] RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid).filter(destination_number=extp.extension).delete() if data.get('add_sip'): le = "" data['add_sip'] = data['add_sip'].replace(' ','') data['add_sip'] = data['add_sip'].replace(';',',') if data['add_sip'] != '': listextadd = data['add_sip'].split(',') if Extension.objects.filter(accountcode=ky).count() == 0: data_res = {'error': "have no sip account, let's create new one"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: listextuser = Extension.objects.filter(accountcode=ky) listrguser = RingGroupDestination.objects.filter(ring_group_uuid=obj.ring_group_uuid) for rguuid in listrguser: abc = Extension.objects.filter(extension=rguuid.destination_number)[0] le = str(abc.extension_uuid) + ', ' + le listextold = le.rstrip(', ') listextold = listextold.split(',') er = 0 for extel in listextadd: if is_valid_uuid(extel) == False: er = 1 data_res = {'error_sip': "at least one invalid sip uuid exists. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if listextuser.filter(extension_uuid=extel).count() == 0: er = 1 data_res = {'error_sip': "at least one sip uuid doesn't exists in this user's sip list. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: ck_bell = listextuser.filter(extension_uuid=extel)[0] if ck_bell.description == 'is_bell': er = 1 data_res = {'error_sip': "at least one sip uuid is bell. Please check sip uuid list"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if er == 0: for extel in listextadd: if extel not in listextold: rdg = RingGroupDestination() rdg.ring_group_destination_uuid = uuid.uuid4() rdg.ring_group_uuid = RingGroup.objects.get(ring_group_uuid=obj.ring_group_uuid) rdg.destination_number = Extension.objects.get(extension_uuid=extel) rdg.save() from device.models import sync_dialplan_rg sync_dialplan_rg(obj.ring_group_uuid) return ret
def obj_update(self, bundle, **kwargs): ky = bundle.request.user.id data = bundle.data unchange_list = ['departmen_extension', 'department_uuid'] for value in unchange_list: if value in data: del data[value] ret = super(RingGroupResource, self).obj_update(bundle, **kwargs) obj = bundle.obj if data.get('department_name'): print data['department_name'] if data['department_name'] != '': obj.ring_group_name = data['department_name'] obj.save() if data.get('list_sip'): data['list_sip'] = data['list_sip'].replace(' ', '') data['list_sip'] = data['list_sip'].replace(';', ',') if data['list_sip'] == '': if RingGroupDestination.objects.filter( ring_group_uuid=obj.ring_group_uuid).count() > 0: RingGroupDestination.objects.filter( ring_group_uuid=obj.ring_group_uuid).delete() # RingGroupDestination.save() else: data['list_sip'] = data['list_sip'].replace(' ', '') data['list_sip'] = data['list_sip'].replace(';', ',') data['list_sip'] = data['list_sip'].rstrip(',') listextadd = data['list_sip'].split(',') if Extension.objects.filter(accountcode=ky).count() == 0: data_res = { 'error': "have no sip account, let's create new one" } response = self.error_response( bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: listextuser = Extension.objects.filter(accountcode=ky) # print data['list_sip'], listextadd, listextusero RingGroupDestination.objects.filter( ring_group_uuid=obj.ring_group_uuid).delete() for extel in listextadd: if is_valid_uuid(extel) == False: data_res = { 'error_sip': "at least one invalid sip uuid exists. Please check sip uuid list" } response = self.error_response( bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if listextuser.filter(extension_uuid=extel).count() == 0: data_res = { 'error_sip': "at least one sip uuid doesn't exists in this user's sip list. Please check sip uuid list" } response = self.error_response( bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: ck_bell = listextuser.filter(extension_uuid=extel)[0] if ck_bell.description == 'is_bell': data_res = { 'error_sip': "at least one sip uuid is bell. Please check sip uuid list" } response = self.error_response( bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) rdg = RingGroupDestination() rdg.ring_group_destination_uuid = uuid.uuid4() rdg.ring_group_uuid = RingGroup.objects.get( ring_group_uuid=obj.ring_group_uuid) rdg.destination_number = Extension.objects.get( extension_uuid=extel) rdg.save() from device.models import sync_dialplan_rg sync_dialplan_rg(obj.ring_group_uuid) return ret