コード例 #1
0
    def retrieve(self, request, *args, **kwargs):
        ip = request.META.get('REMOTE_ADDR')
        auth_json = ModifyAuthJson()

        return Response({
            'success': True,
            'data': {
                'source': {
                    'server': auth_json.get_base_url('source'),
                    'user': auth_json.get_username('source')
                },
                'target': {
                    'server': auth_json.get_base_url('target'),
                    'user': auth_json.get_username('target')
                }
            }
        }, status=status.HTTP_200_OK)
コード例 #2
0
def re_auth(server_type):
    auth_json = ModifyAuthJson()
    json_file_data = auth_json.get_auth_data()
    response_status, cookies, response_body = authenticate_company(
        base_url=auth_json.get_base_url(server_type),
        username=auth_json.get_username(server_type),
        password=auth_json.get_password(server_type),
    )
    if response_status != 200:
        raise Exception('Not able to authenticate source server')

    json_file_data[server_type]['cookies'] = cookies.get_dict()
    if server_type == 'target':
        json_file_data[server_type]['cookies']['XSRF-TOKEN'] = get_account(
            base_url=auth_json.get_base_url(server_type),
            cookies=cookies.get_dict())

    auth_json.set_auth_data(json_file_data)
コード例 #3
0
    def retrieve(self, request, *args, **kwargs):
        re_auth('target')
        auth_json = ModifyAuthJson()
        target_headers = auth_json.get_xsrf_header('target')
        target_headers['Content-Type'] = "application/json"
        response = requests.post(auth_json.get_base_url('target') +
                                 'v1/app/rest/cities',
                                 data=json.dumps({
                                     'name': 'Default City',
                                     'enabled': True
                                 }),
                                 headers=target_headers,
                                 cookies=auth_json.get_cookies('target'))

        city_id = ''

        if response.status_code != 200:
            if 'City name already exist' not in str(response.content):
                return Response(
                    {
                        'success': False,
                        'data': {
                            'request': 'add default city',
                            'server': auth_json.get_base_url('target'),
                            'body': json.loads(response.content),
                            'status': response.status_code
                        }
                    },
                    status=response.status_code)
            else:
                response = requests.get(
                    url=auth_json.get_base_url('target') +
                    "v1/app/rest/cities",
                    cookies=auth_json.get_cookies('target'))
                if response.status_code != 200:
                    return Response(
                        {
                            'success': False,
                            'data': {
                                'request': 'get cities',
                                'server': auth_json.get_base_url('target'),
                                'body': json.loads(response.content),
                                'status': response.status_code
                            }
                        },
                        status=response.status_code)
                cities = json.loads(response.content)
                if 'Default City' in [city['name'] for city in cities]:
                    city_id = [
                        city['id'] for city in cities
                        if city['name'] == 'Default City'
                    ][0]
        else:
            city_id = (json.loads(response.content))['id']

        response = requests.get(url=auth_json.get_base_url('target') +
                                'v1/app/rest/hubs/pageable',
                                cookies=auth_json.get_cookies('target'),
                                params={
                                    'city_id': city_id,
                                    'pageNo': '0',
                                    'recordsPerPage': '500',
                                    'sortOn': 'id',
                                    'sortType': 'DESC'
                                },
                                headers=target_headers)

        should_add_branch = False
        branch_id = ''
        if response.status_code != 200 and response.status_code != 204:
            return Response(
                {
                    'success': False,
                    'data': {
                        'request': 'get branch of Default City',
                        'server': auth_json.get_base_url('target'),
                        'body': json.loads(response.content),
                        'status': response.status_code
                    }
                },
                status=response.status_code)

        elif response.status_code == 204:
            should_add_branch = True
        elif response.status_code == 200:
            branches = json.loads(response.content)['content']
            if 'DefaultBranch' not in [branch['code'] for branch in branches]:
                should_add_branch = True
            else:
                branch_id = [
                    branch['id'] for branch in branches
                    if branch['code'] == 'DefaultBranch'
                ][0]

        if should_add_branch:
            response = requests.post(auth_json.get_base_url('target') +
                                     'v1/app/rest/hubs',
                                     data=json.dumps({
                                         "defaultNewUI": False,
                                         "name": "Default Branch",
                                         "code": "DefaultBranch",
                                         "enabled": True,
                                         "timeZone": None,
                                         "latitude": "0",
                                         "longitude": "0",
                                         "cityId": city_id
                                     }),
                                     headers=target_headers,
                                     cookies=auth_json.get_cookies('target'))
            if response.status_code != 200:
                return Response(
                    {
                        'success': False,
                        'data': {
                            'request': 'add branch',
                            'server': auth_json.get_base_url('target'),
                            'body': json.loads(response.content),
                            'status': response.status_code
                        }
                    },
                    status=response.status_code)
            branch_id = json.loads(response.content)['id']

        response = requests.get(auth_json.get_base_url('target') +
                                'v1/app/rest/users',
                                params={
                                    'activatedUser': True,
                                    'pageNo': 0,
                                    'query': '',
                                    'recordsPerPage': 10,
                                    'sortOn': 'id',
                                    'sortType': 'ASC',
                                    'userTypeId': 1
                                },
                                cookies=auth_json.get_cookies('target'))

        if response.status_code != 200:
            return Response(
                {
                    'success': False,
                    'data': {
                        'request': 'get admin users',
                        'server': auth_json.get_base_url('target'),
                        'body': json.loads(response.content),
                        'status': response.status_code
                    }
                },
                status=response.status_code)

        response_body = json.loads(response.content)
        admin_user = [
            user for user in response_body['content']
            if user['login'] == auth_json.get_username('target')
        ][0]

        payload = {
            'data': (None,
                     json.dumps({
                         "id":
                         admin_user['id'],
                         "authUserId":
                         None,
                         "login":
                         admin_user['login'],
                         "firstName":
                         admin_user['firstName'],
                         "lastName":
                         admin_user['lastName'],
                         "email":
                         admin_user['email'],
                         "mobileNumber":
                         admin_user['mobileNumber'],
                         "employeeCode":
                         admin_user['employeeCode'],
                         "userTypeId":
                         1,
                         "cityId":
                         city_id,
                         "hubId":
                         branch_id,
                         "activated":
                         True,
                         "autoPushMailActivated":
                         admin_user['autoPushMailActivated'],
                         "serviceProviderCode":
                         admin_user['serviceProviderCode'],
                         "profileImage":
                         admin_user['profileImage'],
                         "routingJson":
                         admin_user['routingJson'],
                         "icdr":
                         admin_user['icdr']
                     })),
            'companyId': (None, auth_json.get_company_id('target'))
        }
        del target_headers['Content-Type']
        response = requests.post(auth_json.get_base_url('target') +
                                 'v1/app/rest/users/',
                                 cookies=auth_json.get_cookies('target'),
                                 headers=target_headers,
                                 files=payload)

        if response.status_code != 200:
            return Response(
                {
                    'success': False,
                    'data': {
                        'request': 'assign city and branch to user',
                        'server': auth_json.get_base_url('target'),
                        'body': json.loads(response.content),
                        'status': response.status_code
                    }
                },
                status=response.status_code)

        return Response(
            {
                'success': True,
                'message': 'city assigned to admin successfully'
            },
            status=status.HTTP_200_OK)