コード例 #1
0
    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)
コード例 #2
0
    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))
コード例 #3
0
    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
コード例 #4
0
    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
コード例 #5
0
    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)
コード例 #6
0
    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))
コード例 #7
0
    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
コード例 #8
0
    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
コード例 #9
0
 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)
コード例 #10
0
    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())
コード例 #11
0
    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
        
コード例 #12
0
    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
コード例 #13
0
    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))
コード例 #14
0
    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())
コード例 #15
0
    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