def get_closest_spots(self, request): db = CSVDataProvider() system = check_auth(self, request, db) language = request.language.split('-')[0] request.limit = 1000 if hasattr( request, 'limit' ) == False or request.limit == None or request.limit > 1000 else request.limit request.radius = 10000 if hasattr( request, 'radius' ) == False or request.radius == None or request.radius > 10000 else request.radius #load spots in radius spots = db.get_spots_in_radius(request.location.lat, request.location.lon, request.radius, sort=True, limit=request.limit) #convert to messages items = [s.to_enduser_message(language, system) for s in spots] return EnduserSpotMapResponseMessage(items=items, limit=request.limit, radius=request.radius)
def get_content_list(self, request): db = CSVDataProvider() system = check_auth(self, request, db) request.language = request.language.split('-')[0] cursor = request.cursor if hasattr( request, 'cursor') and request.cursor != None else 0 if cursor == 'null': cursor = '0' cursor = int(cursor) page_size = int(request.page_size) if hasattr( request, 'page_size' ) and request.page_size != None and request.page_size <= 100 else 10 tags = request.tags if hasattr(request, 'tags') else None tags = None if tags == 'null' else tags contents, next_curs, more = db.query_content_by_tags( tags, cursor, page_size) content_items = [ content_item.to_enduser_message(request.language, system, full=False) for content_item in contents ] return EnduserContentListResponseMessage(items=content_items, cursor=str(next_curs), more=bool_to_string(more))
def get_content_by_location(self, request): db = CSVDataProvider() system = check_auth(self, request, db) language = request.language.split('-')[0] #load spots in radius spots = db.get_spots_in_radius(request.location.lat, request.location.lon, 40) ##prepare response response = GeofenceResponseMessage() response.items = [] #get style style = db.get_style() content_ids = [] for s in spots: #do not add dublicates if (s.content in content_ids) == False: #get Content content = db.get_content_by_id(s.content) content_message = content.to_enduser_message(language, system, full=True) #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #render content message item = GeofenceContentResponseMessage( language=content_message.language, title=content_message.title, description=content_message.description, content_id=content.content_id, lat=float(s.location[0]), lon=float(s.location[1]), system_name=system_name, system_url=system.base_url, style_fg_color=style.fg_color, style_bg_color=style.bg_color, style_hl_color=style.hl_color, style_icon=base64.b64decode(style.icon), system_id=1, #always 1, because this is single tenant content_name=content.name, #only for geofence analytics spot_id=int(s.spot_id), #only for geofence analytics spot_name=s.name, #only for geofence analytics image_public_url=content_message.image_public_url) response.items.append(item) content_ids.append(content.content_id) return response
def get_content_by_location(self, request): db = CSVDataProvider() system = check_auth(self,request,db) language = request.language.split('-')[0] #load spots in radius spots = db.get_spots_in_radius(request.location.lat,request.location.lon,40) ##prepare response response = GeofenceResponseMessage() response.items = [] #get style style = db.get_style() content_ids = [] for s in spots: #do not add dublicates if (s.content in content_ids) == False: #get Content content = db.get_content_by_id(s.content) content_message = content.to_enduser_message(language, system, full=True) #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #render content message item = GeofenceContentResponseMessage( language = content_message.language, title = content_message.title, description = content_message.description, content_id = content.content_id, lat = float(s.location[0]), lon =float(s.location[1]), system_name = system_name, system_url = system.base_url, style_fg_color = style.fg_color, style_bg_color = style.bg_color, style_hl_color = style.hl_color, style_icon = base64.b64decode(style.icon), system_id = 1, #always 1, because this is single tenant content_name = content.name, #only for geofence analytics spot_id = int(s.spot_id), #only for geofence analytics spot_name = s.name, #only for geofence analytics image_public_url = content_message.image_public_url ) response.items.append(item) content_ids.append(content.content_id) return response
def get_spot_map(self, request): db = CSVDataProvider() system = check_auth(self,request,db) language = request.language.split('-')[0] spots = db.get_spot_map(request.map_tag) items = [s.to_integration_message(language) for s in spots] return IntegrationSpotMapResponseMessage(items=items)
def query_content(self, request): db = CSVDataProvider() system = check_auth(self,request,db) cursor = int(request.cursor) if hasattr(request, 'cursor') and request.cursor != None else 0 page_size = int(request.page_size) if hasattr(request, 'page_size') and request.page_size != None and request.page_size <= 100 else 10 sort_direction = request.sort_direction if hasattr(request, 'sort_direction') and request.sort_direction != None else 'ASC' contents, next_curs, more = db.query_content(request.ft_query,cursor,page_size,sort_direction) content_items = [content_item.to_integration_message(system) for content_item in contents] return IntegrationContentListResponseMessage(items=content_items, cursor=str(next_curs), has_more=bool_to_string(more))
def get_content_by_content_id(self, request): db = CSVDataProvider() system = check_auth(self,request,db) request.language = request.language.split('-')[0] content_id = request.content_id #get Content content = db.get_content_by_id(content_id) response = content.to_full_integration_message(request.language,system) return response
def get_content_by_content_id_full(self, request): db = CSVDataProvider() system = check_auth(self, request, db) request.language = request.language.split('-')[0] content_id = request.content_id response = EndUserSignleContentResponseMessage() #get Content content = db.get_content_by_id(content_id) #deliver full content? full = True if hasattr( request, "full") == True and request.full != None and string_to_bool( request.full) == True else False content_message = content.to_enduser_message(request.language, system, full=full) response.content = content_message #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #get settings settings = db.get_settings() response.app_id_google_play = settings[1] response.app_id_itunes = settings[0] #render message response.system_name = system_name response.system_url = system.base_url #not needed in apps or wordpress response.system_id = 1 #always 1, because this is single tenant if string_to_bool(request.include_style): response.style = content.style.to_enduser_message() if string_to_bool(request.include_menu): response.menu = db.get_menu().to_enduser_message( content_message.language, system, db) return response
def get_closest_spots(self, request): db = CSVDataProvider() system = check_auth(self,request,db) language = request.language.split('-')[0] request.limit = 1000 if hasattr(request,'limit') == False or request.limit == None or request.limit > 1000 else request.limit request.radius = 10000 if hasattr(request,'radius') == False or request.radius == None or request.radius > 10000 else request.radius #load spots in radius spots = db.get_spots_in_radius(request.location.lat,request.location.lon,request.radius,sort=True,limit=request.limit) #convert to messages items = [s.to_enduser_message(language, system) for s in spots] return EnduserSpotMapResponseMessage(items=items,limit=request.limit,radius=request.radius)
def get_spot_map(self, request): db = CSVDataProvider() system = check_auth(self,request,db) language = request.language.split('-')[0] spots = db.get_spot_map(request.map_tag) #check if spots should also deliver content include_content = False if hasattr(request,'include_content') == True and request.include_content != None: include_content = string_to_bool(request.include_content) items = [s.to_enduser_message(language,system,include_content=include_content) for s in spots] return EnduserSpotMapResponseMessage(items=items,style=db.get_style().to_enduser_message())
def get_content_by_content_id_full(self, request): db = CSVDataProvider() system = check_auth(self,request,db) request.language = request.language.split('-')[0] content_id = request.content_id response = EndUserSignleContentResponseMessage() #get Content content = db.get_content_by_id(content_id) #deliver full content? full = True if hasattr(request,"full") == True and request.full != None and string_to_bool(request.full) == True else False content_message = content.to_enduser_message(request.language, system, full=full) response.content = content_message #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #get settings settings = db.get_settings() response.app_id_google_play = settings[1] response.app_id_itunes = settings[0] #render message response.system_name = system_name response.system_url = system.base_url #not needed in apps or wordpress response.system_id = 1 #always 1, because this is single tenant if string_to_bool(request.include_style): response.style = content.style.to_enduser_message() if string_to_bool(request.include_menu): response.menu = db.get_menu().to_enduser_message(content_message.language, system, db) return response
def get_content_by_location_identifier(self, request): db = CSVDataProvider() system = check_auth(self, request, db) language = request.language.split('-')[0] #initialize response response = EndUserScanResponseMessage() #get marker marker = db.get_marker(request.location_identifier) #get spot connected to marker spot = db.get_spot(marker.spot_id) #get content content = db.get_content_by_id(spot.content) content_message = content.to_enduser_message(language, system, full=True) #set status flags #on the CSV backend both always have to be true response.has_spot = bool_to_string(True) response.has_content = bool_to_string(True) #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #get settings settings = db.get_settings() response.app_id_google_play = settings[1] response.app_id_itunes = settings[0] #render message response.system_name = system_name response.system_url = system.base_url #not needed in apps or wordpress response.system_id = 1 #always 1, because this is single tenant response.content = content_message #render message if string_to_bool(request.include_style): response.style = content.style.to_enduser_message() if string_to_bool(request.include_menu): response.menu = db.get_menu().to_enduser_message( content_message.language, system, db) return response
def get_content_list(self, request): db = CSVDataProvider() system = check_auth(self,request,db) request.language = request.language.split('-')[0] cursor = request.cursor if hasattr(request, 'cursor') and request.cursor != None else 0 if cursor == 'null': cursor = '0' cursor = int(cursor) page_size = int(request.page_size) if hasattr(request, 'page_size') and request.page_size != None and request.page_size <= 100 else 10 tags = request.tags if hasattr(request, 'tags') else None tags = None if tags == 'null' else tags contents, next_curs, more = db.query_content_by_tags(tags,cursor,page_size) content_items = [content_item.to_enduser_message(request.language, system, full=False) for content_item in contents] return EnduserContentListResponseMessage(items=content_items, cursor=str(next_curs), more=bool_to_string(more))
def get_spot_map(self, request): db = CSVDataProvider() system = check_auth(self, request, db) language = request.language.split('-')[0] spots = db.get_spot_map(request.map_tag) #check if spots should also deliver content include_content = False if hasattr( request, 'include_content') == True and request.include_content != None: include_content = string_to_bool(request.include_content) items = [ s.to_enduser_message(language, system, include_content=include_content) for s in spots ] return EnduserSpotMapResponseMessage( items=items, style=db.get_style().to_enduser_message())
def get_content_by_location_identifier(self, request): db = CSVDataProvider() system = check_auth(self,request,db) language = request.language.split('-')[0] #initialize response response = EndUserScanResponseMessage() #get marker marker = db.get_marker(request.location_identifier) #get spot connected to marker spot = db.get_spot(marker.spot_id) #get content content = db.get_content_by_id(spot.content) content_message = content.to_enduser_message(language, system, full=True) #set status flags #on the CSV backend both always have to be true response.has_spot = bool_to_string(True) response.has_content = bool_to_string(True) #get system name system_name = system.name l_infos = system.localized_information for info in l_infos: #try to find selected language if info.language == content_message.language: system_name = info.display_name #get settings settings = db.get_settings() response.app_id_google_play = settings[1] response.app_id_itunes = settings[0] #render message response.system_name = system_name response.system_url = system.base_url #not needed in apps or wordpress response.system_id = 1 #always 1, because this is single tenant response.content = content_message #render message if string_to_bool(request.include_style): response.style = content.style.to_enduser_message() if string_to_bool(request.include_menu): response.menu = db.get_menu().to_enduser_message(content_message.language, system, db) return response