Skip to content

Commit

Permalink
Add lat/lon information to Event object
Browse files Browse the repository at this point in the history
This adds a lat/lon column to Event objects that gets filled in based
off of what's in the Meetup response. This will help us display a map on
the brigade website without having to pull in geocoding config.
  • Loading branch information
tdooner committed Jan 13, 2018
1 parent fdbc260 commit d123402
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 2 deletions.
25 changes: 25 additions & 0 deletions migrations/versions/a5abdf9487c_add_venue_to_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from alembic import op
import sqlalchemy as sa


"""Add Venue To Event
Revision ID: a5abdf9487c
Revises: 578ce9f8d1
Create Date: 2018-01-12 16:43:53.741499
"""

# revision identifiers, used by Alembic.
revision = 'a5abdf9487c'
down_revision = '578ce9f8d1'


def upgrade():
op.add_column('event', sa.Column('lat', sa.types.DECIMAL(20, 17)))
op.add_column('event', sa.Column('lon', sa.types.DECIMAL(20, 17)))


def downgrade():
op.drop_column('event', 'lat')
op.drop_column('event', 'lon')
7 changes: 6 additions & 1 deletion models.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,8 @@ class Event(db.Model):
description = db.Column(db.Unicode())
event_url = db.Column(db.Unicode())
location = db.Column(db.Unicode())
lat = db.Column(db.DECIMAL(20, 17))
lon = db.Column(db.DECIMAL(20, 17))
created_at = db.Column(db.Unicode())
start_time_notz = db.Column(db.DateTime(False))
end_time_notz = db.Column(db.DateTime(False))
Expand All @@ -515,10 +517,13 @@ class Event(db.Model):
organization_name = db.Column(db.Unicode(), db.ForeignKey('organization.name', ondelete='CASCADE'), nullable=False)

def __init__(self, name, event_url, start_time_notz, created_at, utc_offset,
organization_name, location=None, end_time_notz=None, description=None, rsvps=None):
organization_name, location=None, end_time_notz=None, description=None,
rsvps=None, lat=None, lon=None):
self.name = name
self.description = description
self.location = location
self.lat = lat
self.lon = lon
self.event_url = event_url
self.start_time_notz = start_time_notz
self.utc_offset = utc_offset
Expand Down
2 changes: 2 additions & 0 deletions run_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ def get_meetup_events(organization, group_urlname):
# Some events don't have locations.
if 'venue' in event:
eventdict['location'] = format_location(event['venue'])
eventdict['lat'] = event['venue']['lat']
eventdict['lon'] = event['venue']['lon']

events.append(eventdict)
return events
Expand Down
4 changes: 3 additions & 1 deletion test/updater/test_run_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -1082,8 +1082,10 @@ def check_database_against_input(self):
self.assertEqual(len(check_events[organization.name]), len(db_events[organization.name]))
for event_dict in check_events[organization.name]:
event = self.db.session.query(Event).filter(Event.event_url == event_dict['event_url'], Event.organization_name == event_dict['organization_name']).first()
self.assertIsNotNone(event.location)
self.assertIsNotNone(event)
self.assertIsNotNone(event.location)
self.assertIsNotNone(event.lat)
self.assertIsNotNone(event.lon)
self.assertTrue(event.keep)

# get the matching STORIES for this organization from the database
Expand Down

0 comments on commit d123402

Please sign in to comment.