Esempio n. 1
0
def _refresh_client_info(request,
                         response,
                         android_id,
                         device_phone,
                         client_id=None,
                         city_id=None):
    def refresh(client):
        client.user_agent = request.headers["User-Agent"]
        if 'iOS' in client.user_agent:
            client.device_type = IOS_DEVICE
        elif 'Android' in client.user_agent:
            client.device_type = ANDROID_DEVICE
        if android_id:
            client.android_id = android_id
        if device_phone and not client.tel:
            client.tel = device_phone
        if client.city and client.city.id() == city_id:
            response['show_cities'] = False
        else:
            response['show_cities'] = True
        if city_id:
            save_city(client, city_id)
        client.put()
        client.save_session()

    current_namespace = namespace_manager.get_namespace()
    client = None
    if client_id:
        if request.init_namespace:
            namespace_manager.set_namespace(request.init_namespace)
        client = Client.get(client_id)
    if not client:
        client = Client.create()
        client_id = client.key.id()
    refresh(client)
    if request.init_namespace and not Client.is_id_global(client_id):
        namespace_manager.set_namespace(request.init_namespace)
        for company in AutomationCompany.query(
                AutomationCompany.status == STATUS_AVAILABLE).fetch():
            namespace_manager.set_namespace(company.namespace)
            other_client = Client.get(client_id)
            if not other_client:
                other_client = Client.create(client_id)
            refresh(other_client)
    namespace_manager.set_namespace(current_namespace)
    return client
Esempio n. 2
0
    def post_client():
        req = Req().request
        req.add_argument('client')
        reqargs = req.parse_args()

        resp = Resp().response
        if not reqargs['client']:
            resp['meta']['code'] = 403
            resp['meta']['description'] = 'incorrect request'
            return jsonify(resp), 403

        client = Client()
        if not client.create(json.loads(reqargs['client'].replace("'", '"'))):
            resp['meta']['code'] = 404
            resp['meta']['description'] = 'column not found/failed/login already exists'
            return jsonify(resp), 404


        client.id_registered_by = g.employee.id_employee
        try:
            g.db_session.add(client)
            g.db_session.commit()
        except sqlalchemy.exc.IntegrityError as ex:
            log.warning('resources.Clients.post_client(): '+str(ex))
            if 'UNIQUE constraint failed: clients.login' in str(ex):
                resp['meta']['code'] = 403
                resp['meta']['description'] = 'login already exist'
                return jsonify(resp), 403
            elif 'NOT NULL constraint failed: clients.login' in str(ex):
                resp['meta']['code'] = 403
                resp['meta']['description'] = 'login is empty'
                return jsonify(resp), 403
            else:
                resp['meta']['code'] = 403
                resp['meta']['description'] = str(ex)
                return jsonify(resp), 403



        resp['meta']['description'] = 'success'
        resp['content']['id_client'] = client.id_client

        return jsonify(resp), 200