Skip to content
Permalink
Browse files

Move the Place activity to the location field (instead of a tag)

  • Loading branch information...
tsileo committed Nov 6, 2019
1 parent 9c12a67 commit 3c4b9e7379ea8560047caf9b3fa3397bf8a107f8
Showing with 51 additions and 41 deletions.
  1. +17 −21 blueprints/api.py
  2. +15 −0 core/migrations.py
  3. +19 −20 utils/template_filters.py
@@ -453,7 +453,7 @@ def api_new_note() -> _Response:

source = None
summary = None
place_tags = []
location = None

# Basic Micropub (https://www.w3.org/TR/micropub/) "create" support
is_micropub = False
@@ -472,15 +472,11 @@ def api_new_note() -> _Response:
location = _user_api_arg("location", default="")
if location.startswith("geo:"):
slat, slng, *_ = location[4:].split(",")
place_tags.append(
{
"type": ap.ActivityType.PLACE.value,
"url": "",
"name": "",
"latitude": float(slat),
"longitude": float(slng),
}
)
location = {
"type": ap.ActivityType.PLACE.value,
"latitude": float(slat),
"longitude": float(slng),
}

# Handle JSON microformats2 data
if _user_api_arg("type", default=None):
@@ -513,20 +509,17 @@ def api_new_note() -> _Response:
if summary is None:
summary = _user_api_arg("summary", default="")

if not place_tags:
if not location:
if _user_api_arg("location_lat", default=None):
lat = float(_user_api_arg("location_lat"))
lng = float(_user_api_arg("location_lng"))
loc_name = _user_api_arg("location_name", default="")
place_tags.append(
{
"type": ap.ActivityType.PLACE.value,
"url": "",
"name": loc_name,
"latitude": lat,
"longitude": lng,
}
)
location = {
"type": ap.ActivityType.PLACE.value,
"name": loc_name,
"latitude": lat,
"longitude": lng,
}

# All the following fields are specific to the API (i.e. not Micropub related)
_reply, reply = None, None
@@ -542,7 +535,7 @@ def api_new_note() -> _Response:
content, tags = parse_markdown(source)

# Check for custom emojis
tags = tags + emojis.tags(content) + place_tags
tags = tags + emojis.tags(content)

to: List[str] = []
cc: List[str] = []
@@ -582,6 +575,9 @@ def api_new_note() -> _Response:
context=context,
)

if location:
raw_note["location"] = location

if request.files:
for f in request.files.keys():
if not request.files[f].filename:
@@ -361,3 +361,18 @@ def migrate(self) -> None:
},
{"$set": {"meta.follow_status": "accepted"}},
)


class _20191106_PlaceTagToLocation(Migration):
def migrate(self) -> None:
for data in find_activities({"activity.object.tag.type": "Place"}):
for tag in data["activity"]["object"]["tag"]:
if tag["type"] == "Place":
break
DB.activities.update_one(
{"_id": data["_id"]},
{
"$pull": {"activity.object.tag": {"type": "Place"}},
"$set": {"activity.object.location": tag},
},
)
@@ -254,31 +254,30 @@ def get_actor(url):

@filters.app_template_filter()
def has_place(note):
for tag in note.get("tag", []):
if tag.get("type") == "Place":
return True
if note.get("location") and note["location"].get("type") == "Place":
return True
return False


@filters.app_template_filter()
def get_place(note):
for tag in note.get("tag", []):
if tag.get("type") == "Place":
lat = tag["latitude"]
lng = tag["longitude"]
out = ""
if tag.get("name"):
out += f"{tag['name']} "

out += (
'<span class="h-geo">'
f'<data class="p-latitude" value="{lat}"></data>'
f'<data class="p-longitude" value="{lng}"></data>'
f'<a href="https://www.openstreetmap.org/?mlat={lat}&mlon={lng}#map=16/{lat}/{lng}">{lat},{lng}</a>'
"</span>"
)

return out
if note.get("location") and note["location"].get("type") == "Place":
tag = note["location"]
lat = tag["latitude"]
lng = tag["longitude"]
out = ""
if tag.get("name"):
out += f"{tag['name']} "

out += (
'<span class="h-geo">'
f'<data class="p-latitude" value="{lat}"></data>'
f'<data class="p-longitude" value="{lng}"></data>'
f'<a href="https://www.openstreetmap.org/?mlat={lat}&mlon={lng}#map=16/{lat}/{lng}">{lat},{lng}</a>'
"</span>"
)

return out

return ""

0 comments on commit 3c4b9e7

Please sign in to comment.
You can’t perform that action at this time.