Merge branch 'master' of gitorious.org:mediagoblin/mediagoblin
This commit is contained in:
commit
d87ed21ac4
@ -153,3 +153,21 @@ def convert_video_media_data(database):
|
||||
assert len(document['media_data']) == 1
|
||||
document['media_data'] = document['media_data']['video']
|
||||
collection.save(document)
|
||||
|
||||
@RegisterMigration(11)
|
||||
def convert_gps_media_data(database):
|
||||
"""
|
||||
Move media_data["gps"]["*"] to media_data["gps_*"].
|
||||
In preparation for media_data.gps_*
|
||||
"""
|
||||
collection = database['media_entries']
|
||||
target = collection.find(
|
||||
{'media_data.gps': {'$exists': True}})
|
||||
|
||||
for document in target:
|
||||
print document['_id'], "old:", document['media_data']
|
||||
for key, value in document['media_data']['gps'].iteritems():
|
||||
document['media_data']['gps_' + key] = value
|
||||
del document['media_data']['gps']
|
||||
print document['_id'], "new:", document['media_data']
|
||||
collection.save(document)
|
||||
|
@ -14,12 +14,14 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from copy import copy
|
||||
|
||||
from mediagoblin.init import setup_global_and_app_config, setup_database
|
||||
from mediagoblin.db.mongo.util import ObjectId
|
||||
|
||||
from mediagoblin.db.sql.models import (Base, User, MediaEntry, MediaComment,
|
||||
Tag, MediaTag, MediaFile, MediaAttachmentFile)
|
||||
from mediagoblin.media_types.image.models import ImageData
|
||||
from mediagoblin.media_types.video.models import VideoData
|
||||
from mediagoblin.db.sql.open import setup_connection_and_db_from_config as \
|
||||
sql_connect
|
||||
@ -106,6 +108,25 @@ def convert_media_entries(mk_db):
|
||||
session.close()
|
||||
|
||||
|
||||
def convert_image(mk_db):
|
||||
session = Session()
|
||||
|
||||
for media in mk_db.MediaEntry.find(
|
||||
{'media_type': 'mediagoblin.media_types.image'}).sort('created'):
|
||||
media_data = copy(media.media_data)
|
||||
|
||||
# TODO: Fix after exif is migrated
|
||||
media_data.pop('exif', None)
|
||||
|
||||
if len(media_data):
|
||||
media_data_row = ImageData(**media_data)
|
||||
media_data_row.media_entry = obj_id_table[media._id]
|
||||
session.add(media_data_row)
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def convert_video(mk_db):
|
||||
session = Session()
|
||||
|
||||
@ -180,6 +201,8 @@ def run_conversion(config_name):
|
||||
Session.remove()
|
||||
convert_media_entries(mk_db)
|
||||
Session.remove()
|
||||
convert_image(mk_db)
|
||||
Session.remove()
|
||||
convert_video(mk_db)
|
||||
Session.remove()
|
||||
convert_media_tags(mk_db)
|
||||
|
@ -14,6 +14,8 @@ class ImageData(Base):
|
||||
height = Column(Integer)
|
||||
gps_longitude = Column(Float)
|
||||
gps_latitude = Column(Float)
|
||||
gps_altitude = Column(Float)
|
||||
gps_direction = Column(Float)
|
||||
|
||||
|
||||
DATA_MODEL = ImageData
|
||||
|
@ -119,7 +119,11 @@ def process_image(entry):
|
||||
'clean': clean_exif(exif_tags)}
|
||||
media_data['exif']['useful'] = get_useful(
|
||||
media_data['exif']['clean'])
|
||||
media_data['gps'] = gps_data
|
||||
|
||||
if len(gps_data):
|
||||
for key in list(gps_data.keys()):
|
||||
gps_data['gps_' + key] = gps_data.pop(key)
|
||||
entry.media_data_init(**gps_data)
|
||||
|
||||
# clean up workbench
|
||||
workbench.destroy_self()
|
||||
|
@ -17,24 +17,27 @@
|
||||
#}
|
||||
|
||||
{% block geolocation_map %}
|
||||
{% if media.media_data.has_key('gps')
|
||||
and app_config['geolocation_map_visible']
|
||||
and media.media_data.gps %}
|
||||
<h3 class="sidedata">Location</h3>
|
||||
{% if app_config['geolocation_map_visible']
|
||||
and media.media_data.gps_latitude is defined
|
||||
and media.media_data.gps_latitude
|
||||
and media.media_data.gps_longitude is defined
|
||||
and media.media_data.gps_longitude %}
|
||||
<h3 class="sidedata">{% trans %}Location{% endtrans %}</h3>
|
||||
<div>
|
||||
{% set gps = media.media_data.gps %}
|
||||
{%- set lon = media.media_data.gps_longitude %}
|
||||
{%- set lat = media.media_data.gps_latitude %}
|
||||
{%- set osm_url = "http://openstreetmap.org/?mlat={lat}&mlon={lon}".format(lat=lat, lon=lon) %}
|
||||
<div id="tile-map" style="width: 100%; height: 196px;">
|
||||
<input type="hidden" id="gps-longitude"
|
||||
value="{{ gps.longitude }}" />
|
||||
value="{{ lon }}" />
|
||||
<input type="hidden" id="gps-latitude"
|
||||
value="{{ gps.latitude }}" />
|
||||
value="{{ lat }}" />
|
||||
</div>
|
||||
<p>
|
||||
<small>
|
||||
View on
|
||||
<a href="http://openstreetmap.org/?mlat={{ gps.latitude }}&mlon={{ gps.longitude }}">
|
||||
OpenStreetMap
|
||||
</a>
|
||||
{% trans -%}
|
||||
View on <a href="{{ osm_url }}">OpenStreetMap</a>
|
||||
{%- endtrans %}
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user