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
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)
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
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)
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)
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' })
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'))
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
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
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)
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)
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)
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