コード例 #1
0
ファイル: db_utils.py プロジェクト: ioak-dev/qrgen-service
def upsert(space_id, collection_name, data, user_id=None):
    now = datetime.now()
    data['lastModifiedBy'] = user_id
    data['lastModifiedAt'] = now
    if data.get('id') is None and data.get('_id') is None:
        data['createdBy'] = user_id
        data['createdAt'] = now
        response = get_collection(get_dbname(space_id),
                                  collection_name).insert_one(data)
        record = get_collection(get_dbname(space_id),
                                collection_name).find_one(
                                    {'_id': response.inserted_id})
        return clean_object(record)
    else:
        if data.get('id') is None:
            data['_id'] = ObjectId(data.get('_id'))
        else:
            data['_id'] = ObjectId(data.get('id'))
            del data['id']
        updated_record = get_collection(get_dbname(space_id),
                                        collection_name).find_one_and_update(
                                            {'_id': data.get('_id')},
                                            {'$set': data},
                                            new=True)
        updated_record = clean_object(updated_record)
        return updated_record
コード例 #2
0
ファイル: service.py プロジェクト: ioak-dev/qrgen-service
def do_update_tenant(tenant, data):
    tenantData = get_collection('qrgen', 'tenant').find_one({'name': tenant})
    get_collection('qrgen',
                   'tenant').update_one({'_id': (tenantData['_id'])},
                                        {'$set': {
                                            'stage': data['data']
                                        }},
                                        upsert=True)
    return (200, None)
コード例 #3
0
ファイル: db_utils.py プロジェクト: ioak-dev/qrgen-service
def find(space_id, collection_name, search_criteria, sort=None, user_id=None):
    if sort is None:
        data = get_collection(get_dbname(space_id), collection_name).find(
            declean_object(search_criteria))
    else:
        data = get_collection(get_dbname(space_id), collection_name).find(
            declean_object(search_criteria)).sort(sort)
    data = list(data)
    data = clean_array(data)
    return data
コード例 #4
0
ファイル: db_utils.py プロジェクト: ioak-dev/qrgen-service
def insert(space_id, collection_name, data, user_id=None):
    now = datetime.now()
    data['lastModifiedBy'] = user_id
    data['lastModifiedAt'] = now
    data['createdBy'] = user_id
    data['createdAt'] = now
    response = get_collection(get_dbname(space_id),
                              collection_name).insert_one(data)
    record = get_collection(get_dbname(space_id), collection_name).find_one(
        {'_id': response.inserted_id})
    return clean_object(record)
コード例 #5
0
ファイル: service.py プロジェクト: ioak-dev/qrgen-service
def do_get_banner(tenant):
    tenantData = get_collection('qrgen', 'tenant').find_one({'name': tenant})
    tenantData['_id'] = str(tenantData['_id'])
    if 'banner' in tenantData:
        return (200, base64.b64encode(tenantData['banner']))
    else:
        return (404, None)
コード例 #6
0
def do_signin_via_jwt(tenant, data):
    tenantData=get_collection('qrgen', 'tenant').find_one({'name': tenant})
    #tenantData = db_utils.find(tenant, domain, {'name': tenant})
    jwtPassword = tenantData.get('jwtPassword')
    jwtToken = data.get('jwtToken')
    tokenData = jwt.decode(jwtToken, jwtPassword, algorithm='HS256')
    user = get_collection(tenant, 'user').find_one({'email': tokenData.get('email')})
    #user = db_utils.find(tenant, domain,{'email': tokenData.get('email')})
    if user is None:
        """ get_collection(tenant, 'user').insert_one({
            'name': tokenData.get('name'),
            'email': tokenData.get('email'),
            'type': 'JWT_USER'
        }) """
        db_utils.upsert(tenant, domain,{
            'name': tokenData.get('name'),
            'email': tokenData.get('email'),
            'type': 'JWT_USER'
        })
    else:
        """ get_collection(tenant, 'user').update({'_id': user.get('_id')},
        {
            'name': tokenData.get('name'),
            'email': tokenData.get('email'),
            'type': 'JWT_USER'
        }, upsert=True) """
        db_utils.upsert(tenant, domain, {
            {'_id': user.get('_id')},
            {
                'name': tokenData.get('name'),
                'email': tokenData.get('email'),
                'type': 'JWT_USER'
            }
        })
    
    user = get_collection(tenant, 'user').find_one({'email': tokenData.get('email')})
    #user = db_utils.find(tenant, user, {'email': tokenData.get('email')})
    return (200, {
        'name': user.get('name'),
        'email': user.get('email'),
        'token': jwt.encode({
                'name': str(user.get('_id')),
                'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=8)
            }, jwtPassword, algorithm='HS256').decode('utf-8'),
        'tenant': tenant,
        'secret': 'none'
    })
コード例 #7
0
def do_jwttest(tenant):
    tenant=get_collection('qrgen', 'tenant').find_one({'name': tenant})
    #tenant = db_utils.find(tenant, domain,{'name': tenant})
    jwtPassword = tenant.get('jwtPassword')
    return (200, jwt.encode({
            'userId': '4587439657496t',
            'name': 'test user display name',
            'email': '*****@*****.**',
            'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=8)
        }, jwtPassword, algorithm='HS256').decode('utf-8'))
コード例 #8
0
def find(space,
         collection_name,
         search_criteria,
         sort=None,
         user_id=None,
         project=None):
    space = 'oa' + str(space)
    if sort is None and project is None:
        data = get_collection(space, collection_name).find(
            declean_object(search_criteria))
    elif project is None:
        data = get_collection(space, collection_name).find(
            declean_object(search_criteria)).sort(sort)
    elif sort is None:
        data = get_collection(space, collection_name).find(
            declean_object(search_criteria), projection=project)
    else:
        data = get_collection(space, collection_name).find(
            declean_object(search_criteria), projection=project).sort(sort)
    data = list(data)
    data = clean_array(data)
    return data
コード例 #9
0
ファイル: db_utils.py プロジェクト: ioak-dev/qrgen-service
def delete(space_id, collection_name, search_criteria, user_id=None):
    search_criteria = declean_object(search_criteria)
    result = get_collection(get_dbname(space_id),
                            collection_name).delete_many(search_criteria)
    return result
コード例 #10
0
ファイル: service.py プロジェクト: ioak-dev/oneauth-service
def find_by_appspace_id(appspace_id):
    appspaceData = get_collection(database_name,
                                  domain).find_one({'appspaceId': appspace_id})
    appspaceData['_id'] = str(appspaceData['_id'])
    return (200, appspaceData)
コード例 #11
0
def find_by_space_id(space_id):
    spaceData = get_collection(database_name,domain).find_one({'spaceId': space_id})
    spaceData['_id'] = str(spaceData['_id'])
    return (200, spaceData)
コード例 #12
0
ファイル: service.py プロジェクト: ioak-dev/qrgen-service
def do_get_tenant(tenant):
    tenantData = get_collection('qrgen', 'tenant').find_one({'name': tenant})
    tenantData['_id'] = str(tenantData['_id'])
    tenantData.pop('banner', None)
    return (200, tenantData)
コード例 #13
0
def delete(space, collection_name, search_criteria, user_id=None):
    space = 'oa' + str(space)
    search_criteria = declean_object(search_criteria)
    result = get_collection(space,
                            collection_name).delete_many(search_criteria)
    return result