def obj_update(self, bundle, **kwargs): data = bundle.data unchange_list = ['uuid', 'extension', 'password'] for value in unchange_list: if value in data: del data[value] ret = super(DeviceResource, self).obj_update(bundle, **kwargs) obj = bundle.obj if data.get('do_not_disturb'): if data['do_not_disturb'] == 'true': obj.dial_string = 'error/user_busy' else: obj.dial_string = '' obj.do_not_disturb = '' if data.get('is_bell'): if data.get('is_bell') == 'true': if RingGroupDestination.objects.filter(destination_number=obj.extension).count() > 0: data_res = {'error': "uuid exists in department's list, please check uuid again"} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) else: obj.description = 'is_bell' else: obj.description = '' obj.save() from device.models import sync_extension_user sync_extension_user(obj.extension) return ret
def obj_create(self, bundle, **kwargs): req = ['uuid'] data = bundle.data for value in req: if value not in data or data[value] == '' or is_valid_uuid( data[value]) == False: data_res = {'error': "%s is not valid" % value} response = self.error_response(bundle.request, data_res, response_class=HttpBadRequest) raise ImmediateHttpResponse(response=response) if Extension.objects.filter(extension_uuid=data['uuid']).count() > 0: data_res = { 'error': "uuid is exist, you cant create new one, please get sip account" } 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 kwargs['extension'] = random.randint(100000, 999999) kwargs['password'] = ''.join( random.choice(string.ascii_lowercase + string.digits) for _ in range(20)) ext = Extension() ext.extension = kwargs['extension'] ext.password = kwargs['password'] ext.extension_uuid = data['uuid'] ext.domain_uuid = '09f10c29-9f49-4209-9050-52bd09d1886a' ext.accountcode = bundle.request.user if data.get('is_bell') == 'true': ext.description = 'is_bell' ext.save() from device.models import sync_extension_user sync_extension_user(ext.extension) data_res = { "extension": kwargs['extension'], "password": kwargs['password'], "resource_uri": "/api/v1/device/%s/" % data['uuid'] } response = self.error_response(bundle.request, data_res, response_class=HttpOK) raise ImmediateHttpResponse(response=response)
def obj_update(self, bundle, **kwargs): data = bundle.data unchange_list = ['uuid', 'username', 'password'] for value in unchange_list: if value in data: del data[value] ret = super(DeviceResource, self).obj_update(bundle, **kwargs) obj = bundle.obj if data.get('do_not_disturb'): if data['do_not_disturb'] == 'true': obj.dial_string = 'error/user_busy' else: obj.dial_string = '' if data.get('is_bell'): if data.get('is_bell') == 'true': obj.description = 'is_bell' else: obj.description = '' obj.save() from device.models import sync_extension_user sync_extension_user(obj.extension) return ret