Merge branch 'master' of gitorious.org:mediagoblin/mediagoblin

This commit is contained in:
Christopher Allan Webber 2012-03-14 16:00:53 -05:00
commit d87ed21ac4
5 changed files with 62 additions and 12 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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>