def point_from_message(rfcmessage): msg = getAttachements(rfcmessage) sender = msg.sender[0][1] #!!! point = Storage( _recepients=msg.recepients, author=sender, author_name=msg.sender[0][0], id=msg.message_id, uuid="mail " + msg.message_id, ) attachments = [] lmxpoints = [] for ct, name, payload in msg.container: if "nokia.landmark" in ct or "text/xml" in ct: try: lmxfile = StringIO.StringIO(payload) lmxpoints = lmx_parser.parse_lmx(lmxfile) except: continue else: attachment = Storage( content=payload, content_type=ct, filename=name, author=sender, ) attachments.append(attachment) try: point.update(lmxpoints[0]) except: point.lat = point.lon = 0.0 # !!! not a point? point.attachments = attachments point.added = util.now() #!!!? if msg.subject.strip(): point.title = msg.subject # else title comes from landmark's name return point
def point_from_message(rfcmessage): msg = getAttachements(rfcmessage) sender = msg.sender[0][1] #!!! point = Storage(_recepients=msg.recepients, author=sender, author_name=msg.sender[0][0], id=msg.message_id, uuid="mail " + msg.message_id, ) attachments = [] lmxpoints = [] for ct, name, payload in msg.container: if "nokia.landmark" in ct or "text/xml" in ct: try: lmxfile = StringIO.StringIO(payload) lmxpoints = lmx_parser.parse_lmx(lmxfile) except: continue else: attachment = Storage( content=payload, content_type=ct, filename=name, author=sender, ) attachments.append(attachment) try: point.update(lmxpoints[0]) except: point.lat = point.lon = 0.0 # !!! not a point? point.attachments = attachments point.added = util.now() #!!!? if msg.subject.strip(): point.title = msg.subject # else title comes from landmark's name return point
def GET(self, webinput=None): i = webinput or web.input( lat=None, lon=None, zoom=None, gps=None, address=None, ) if i.get("gps", ""): i.zoom = float(i.zoom or (config.mobile_gps_zoom + config.getmap_zoomshift)) else: i.zoom = float(i.zoom or (config.mobile_zoom + config.getmap_zoomshift)) user = get_user() if user is None: user1, msg = autologin(i) if user1 is not None: user = user1 location = None user_lat, user_lon = user_location() if user_lat: location_hint = \ Storage(lat=float(user_lat), lon=float(user_lon), id=1, ) else: location_hint = \ Storage(lat=float(config.center_lat), lon=float(config.center_lon), id=1, ) address_lookup = "" if i.get("address", ""): location = Storage(id=0, zoom=float(config.mobile_zoom) + config.getmap_zoomshift) metadata = { 'hint_lat': location_hint.lat, 'hint_lon': location_hint.lon, } location.update( model.geocoding_helper(i.address, onfail=('', ''), metadata=metadata)) if not location.lat: location = None address_lookup = "failed" else: i.zoom = location.get( "zoom", float(config.mobile_zoom) + config.getmap_zoomshift) address_lookup = "success" if not location and i.lat and i.lon: location = \ Storage(lat=float(i.lat.replace(",", ".")), lon=float(i.lon.replace(",", ".")), id=0, ) if "forget" in i: session.remove_info(dict(lat=None, lon=None, zoom=None)) web.seeother(links.map) return elif "submit" in i and location: # set location session.update_info( dict(lat=float(location.lat or 0), lon=float(location.lon or 0), zoom=int(i.zoom) - config.getmap_zoomshift)) web.seeother(links.point_list) return if not location: location = location_hint model.encode_coordinates(location) if config.getmap_custom_wms == "wms": map_context = mobile_map.MapContextHybrid( lat=location.lat, lon=location.lon, zoom=int(float(i.zoom)), links=links, map_width=config.mobile_map_width, map_height=config.mobile_map_height, ) else: map_context = mobile_map.MapContextHybridOSM( lat=location.lat, lon=location.lon, zoom=int(float(i.zoom)), links=links, map_width=config.mobile_map_width, map_height=config.mobile_map_height, ) map_context.tile_id = "%(lat)s,%(lon)s,%(zoom)s,%(map_width)s,%(map_height)s" % map_context context = Storage( title=_("User location"), address=i.get("address", ""), address_lookup=address_lookup, status=Storage( add="add", loc=location_indicator(), # !!! define better later hom="home", sea="search", inf="info", ), map_context=map_context, ) if "gps" in i: context.gps = i.gps page_nav_data = Storage(nav_data=nav_data( add=links.add_point, loc=None, hom=links.home, sea=links.search, inf=links.info, ), ) context.page_nav_data = page_nav_data get_page('map', context, location)
# "search,tagcloud,hr,new point button,widgets,hr,triggers,about", topic_point_comments_elements="comments,pagination,addcomment,feed", topic_point_page_contents= "title,description,author,added,url,tags,addtag,comments", point_contributors="visitors", # anyone,visitors,administrators,nobody # specifies minimum right holder (thus, all after also get it) topic_owner_rights="topic_only", # or "topic_and_points" getmap_layers="", getmap_layers1="", getmap_layers2="", getmap_zoom1="", getmap_zoomshift="", getmap_zoom2="", getmap_params="", getmap_custom_init="", ) DEFAULT_TOPIC_PROFILE = Storage() DEFAULT_TOPIC_PROFILE.update(DEFAULT_TOPIC_BASIC_PROFILE) DEFAULT_TOPIC_PROFILE.update(DEFAULT_TOPIC_ADVANCED_PROFILE) DEFAULT_POINT_PROFILE = Storage( #??? ) DEFAULT_COMMENT_PROFILE = Storage( #??? ) DEFAULT_USER_PROFILE = Storage(email="", )
def GET(self, webinput=None): i = webinput or web.input(lat=None, lon=None, zoom=None, gps=None, address=None, ) if i.get("gps", ""): i.zoom = float(i.zoom or (config.mobile_gps_zoom + config.getmap_zoomshift)) else: i.zoom = float(i.zoom or (config.mobile_zoom + config.getmap_zoomshift)) user = get_user() if user is None: user1, msg = autologin(i) if user1 is not None: user = user1 location = None user_lat, user_lon = user_location() if user_lat: location_hint = \ Storage(lat=float(user_lat), lon=float(user_lon), id=1, ) else: location_hint = \ Storage(lat=float(config.center_lat), lon=float(config.center_lon), id=1, ) address_lookup = "" if i.get("address", ""): location = Storage(id=0, zoom=float(config.mobile_zoom)+config.getmap_zoomshift) metadata = {'hint_lat': location_hint.lat, 'hint_lon': location_hint.lon,} location.update( model.geocoding_helper(i.address, onfail=('', ''), metadata=metadata) ) if not location.lat: location = None address_lookup = "failed" else: i.zoom = location.get("zoom", float(config.mobile_zoom)+config.getmap_zoomshift) address_lookup = "success" if not location and i.lat and i.lon: location = \ Storage(lat=float(i.lat.replace(",", ".")), lon=float(i.lon.replace(",", ".")), id=0, ) if "forget" in i: session.remove_info(dict(lat=None, lon=None, zoom=None)) web.seeother(links.map) return elif "submit" in i and location: # set location session.update_info(dict(lat=float(location.lat or 0), lon=float(location.lon or 0), zoom=int(i.zoom) - config.getmap_zoomshift)) web.seeother(links.point_list) return if not location: location = location_hint model.encode_coordinates(location) if config.getmap_custom_wms == "wms": map_context = mobile_map.MapContextHybrid( lat=location.lat, lon=location.lon, zoom=int(float(i.zoom)), links=links, map_width=config.mobile_map_width, map_height=config.mobile_map_height, ) else: map_context = mobile_map.MapContextHybridOSM( lat=location.lat, lon=location.lon, zoom=int(float(i.zoom)), links=links, map_width=config.mobile_map_width, map_height=config.mobile_map_height, ) map_context.tile_id = "%(lat)s,%(lon)s,%(zoom)s,%(map_width)s,%(map_height)s" % map_context context = Storage( title=_("User location"), address=i.get("address", ""), address_lookup=address_lookup, status=Storage( add="add", loc=location_indicator(), # !!! define better later hom="home", sea="search", inf="info", ), map_context=map_context, ) if "gps" in i: context.gps = i.gps page_nav_data = Storage( nav_data = nav_data( add=links.add_point, loc=None, hom=links.home, sea=links.search, inf=links.info, ), ) context.page_nav_data = page_nav_data get_page('map', context, location)