예제 #1
0
파일: resources.py 프로젝트: nqganh/IOT-SMD
    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)
예제 #2
0
 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)
예제 #3
0
파일: resources.py 프로젝트: nqganh/IOT-SMD
 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
예제 #4
0
    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