예제 #1
0
def load_events():
	"""Load the events"""

	file = open('static/data/events.txt')

	for line in file:
		day_id, user_id, title, start_raw, end_raw, location = line.rstrip().split("|")

		tz_id = geocoder.timezone(location).timeZoneId
		tz = pytz.timezone(tz_id)

		location = geocoder.google(location)
		address = location.address
		city = location.city
		latitude = location.lat
		longitude = location.lng

		start = datetime.strptime(start_raw, "datetime(%Y, %m, %d, %H, %M)")

		end = datetime.strptime(end_raw, "datetime(%Y, %m, %d, %H, %M)")
		
		event = Event(day_id=day_id,
					  user_id=user_id,
					  title=title,
					  start=start,
					  end=end,
					  address=address,
					  city=city,
					  latitude=latitude,
					  longitude=longitude
					  )

		db.session.add(event)
예제 #2
0
def new_trip():
	"""Adds a trip to the database"""

	# Get trip details from form
	title = request.form.get("title")
	destination = request.form.get("destination")

	tz_name = geocoder.timezone(destination).timeZoneId

	start_raw = request.form.get("start")
	start_dt = datetime.strptime(start_raw, "%Y-%m-%d") # naive UTC
	start_local = declare_tz(start_dt, tz_name)
	start_utc = convert_to_tz(start_local, 'utc')

	end_raw = request.form.get("end")
	end_dt = datetime.strptime(end_raw, "%Y-%m-%d")
	end_dt = find_next_day(end_dt)
	end_local = declare_tz(end_dt, tz_name)
	end_utc = convert_to_tz(end_local, 'utc')

	# Get more details from geocoder
	destination = geocoder.google(destination)
	address = destination.address
	lat = destination.lat
	lng = destination.lng
	city = destination.city
	country_code = destination.country

	# Add trip to DB
	trip = Trip(admin_id=session["user_id"],
				title=title,
				start=start_utc,
				end=end_utc,
				latitude=lat,
				longitude=lng,
				address=address,
				city=city,
				country_code=country_code,
				tz_name=tz_name
				)
	db.session.add(trip)
	db.session.commit() # Commit here so that you can retrieve the trip_id!

	# Add admin permission to DB
	perm = Permission(trip_id=trip.trip_id,
					  user_id=session["user_id"],
					  can_edit=True
					  )
	db.session.add(perm)

	# Add days to DB
	trip.create_days()

	db.session.commit()
	
	flash("Your trip has been created!")

	url = "/trip%d" % (trip.trip_id)
	return redirect(url)
예제 #3
0
def new_trip():
    """Adds a trip to the database"""

    # Get trip details from form
    title = request.form.get("title")
    destination = request.form.get("destination")

    tz_name = geocoder.timezone(destination).timeZoneId

    start_raw = request.form.get("start")
    start_dt = datetime.strptime(start_raw, "%Y-%m-%d")  # naive UTC
    start_local = declare_tz(start_dt, tz_name)
    start_utc = convert_to_tz(start_local, 'utc')

    end_raw = request.form.get("end")
    end_dt = datetime.strptime(end_raw, "%Y-%m-%d")
    end_dt = find_next_day(end_dt)
    end_local = declare_tz(end_dt, tz_name)
    end_utc = convert_to_tz(end_local, 'utc')

    # Get more details from geocoder
    destination = geocoder.google(destination)
    address = destination.address
    lat = destination.lat
    lng = destination.lng
    city = destination.city
    country_code = destination.country

    # Add trip to DB
    trip = Trip(admin_id=session["user_id"],
                title=title,
                start=start_utc,
                end=end_utc,
                latitude=lat,
                longitude=lng,
                address=address,
                city=city,
                country_code=country_code,
                tz_name=tz_name)
    db.session.add(trip)
    db.session.commit()  # Commit here so that you can retrieve the trip_id!

    # Add admin permission to DB
    perm = Permission(trip_id=trip.trip_id,
                      user_id=session["user_id"],
                      can_edit=True)
    db.session.add(perm)

    # Add days to DB
    trip.create_days()

    db.session.commit()

    flash("Your trip has been created!")

    url = "/trip%d" % (trip.trip_id)
    return redirect(url)
예제 #4
0
def load_trips():
	"""Load carolyn's vacation into database"""

	file = open('static/data/trips.txt')

	for line in file:
		admin_id, title, start_raw, end_raw, destination = line.rstrip().split("|")

		admin_id = int(admin_id)
		tz_name = geocoder.timezone(destination).timeZoneId
		
		start_dt = datetime.strptime(start_raw, "%Y, %m, %d")
		start_local = declare_tz(start_dt, tz_name) # give it tzinfo=tz_name
		start_utc = convert_to_tz(start_local, 'utc') # convert that time to UTC

		end_dt = datetime.strptime(end_raw, "%Y, %m, %d")
		end_local = declare_tz(end_dt, tz_name)
		end_utc = convert_to_tz(end_local, 'utc')

		destination = geocoder.google(destination)
		address = destination.address
		lat = destination.lat
		lng = destination.lng
		city = destination.city
		country_code = destination.country

		trip = Trip(admin_id=admin_id,
					title=title,
					start=start_utc,
					end=end_utc,
					latitude=lat,
					longitude=lng,
					address=address,
					city=city,
					country_code=country_code,
					tz_name=tz_name
					)
		db.session.add(trip)
		db.session.commit()

		# Create admin permission
		perm = Permission(trip_id=trip.trip_id,
				  user_id=admin_id,
				  can_edit=True
				  )
		db.session.add(perm)
		trip.create_days()
예제 #5
0
def page_not_found(error):
    with requests.Session() as session:
        requester_ip = request.access_route[0]

        if requester_ip == '127.0.0.1':
            place, latlng, elev = 'nc', [35.6921, -80.4357], 218.2
            address: str = u'On Library Park: 35\N{DEGREE SIGN} 41\' 31.9\"N 80\N{DEGREE SIGN} 26\' 8.67\"W'

        else:
            place, latlng = 'geocode', geocoder.ip(requester_ip, key=GOOGLE_API_KEY).latlng

        requester_geocode = geocoder.google(latlng, key=GOOGLE_API_KEY, method='reverse', session=session)

        # Use the defined address, implies we are using a static location, if undefined make it the geocoded one.
        try:
            address
        except NameError:
            address = str(requester_geocode.address)

        # Use the defined elevation, implies we are using a static location, if undefined make it the geocoded one.
        try:
            requester_geocode.elevation = lambda: None
            requester_geocode.elevation.meters = lambda: None
            setattr(requester_geocode.elevation, 'meters', elev)
        except NameError:
            requester_geocode.elevation = geocoder.elevation(latlng, key=GOOGLE_API_KEY, session=session)

        # Get the timezone
        requester_geocode.timeZoneId = geocoder.timezone(latlng, key=GOOGLE_API_KEY, session=session).timeZoneId

    return render_template('404.html',
                           place=place,
                           address=address,
                           latlng=latlng,
                           elevation=requester_geocode.elevation.meters,
                           ip=requester_ip), 404
예제 #6
0
def print_ephemeris():
    # set the location to report for
    with requests.Session() as session:
        requester_ip = request.access_route[0]

        if str(request.path) == '/nc' or str(request.path) == '/erikshus':
            place, latlng, elev = 'nc', [35.6921, -80.4357], 218.2
            address: str = u'On Library Park: 35\N{DEGREE SIGN} 41\' 32\"N 80\N{DEGREE SIGN} 26\' 9\"W'
        elif str(request.path) == '/gammelhus':
            place, latlng, elev = 'gammelhus', [42.1064, -76.2624], 248.7168
            address: str = u'Under the streetlamp: 42\N{DEGREE SIGN} 06\' 23\"N 76\N{DEGREE SIGN} 15\' 45\"W'
        elif str(request.path) == '/kopernik':
            place, latlng, elev = 'kopernik', [42.0020, -76.0334], 528
            address: str = u'Kopernik Observatory: 42\N{DEGREE SIGN} 0\' 7\"N 76\N{DEGREE SIGN} 2\' 0\"W'
        elif str(request.path) == '/deetop':
            place, latlng, elev = 'deetop', [41.9700, -75.6700], 284
            address: str = u'Dee-Top Observatory: 41\N{DEGREE SIGN} 58\' 12\"N 75\N{DEGREE SIGN} 40\' 12\"W'
        elif str(request.path) == '/stjohns':
            place, latlng, elev = 'stjohns', [47.5675, -52.7072], 83
            address: str = u'St. John\'s: 47\N{DEGREE SIGN} 34\' 3\"N 52\N{DEGREE SIGN} 42\' 26\"W'
        elif str(request.path) == '/greenwich':
            place, latlng, elev = 'greenwich', [51.4768, -0.0005], 47.1526
            address: str = u'Greenwich Observatory: 51\N{DEGREE SIGN} 28\' 38\"N 0\N{DEGREE SIGN} 0\' 0\"'
        else:
            if requester_ip == '127.0.0.1':
                place, latlng, elev = 'nc', [35.6921, -80.4357], 218.2
                address: str = u'On Library Park: 35\N{DEGREE SIGN} 41\' 32\"N 80\N{DEGREE SIGN} 26\' 9\"W'
            else:
                place, latlng = 'geocode', geocoder.ip(requester_ip, key=GOOGLE_API_KEY, session=session).latlng

        # Start with a discovered geocode.
        requester_geocode = geocoder.google(latlng, method='reverse', key=GOOGLE_API_KEY, session=session)

        # Use the defined address, implies we are using a static location, if undefined make it the geocoded one.
        try:
            address
        except NameError:
            address = str(requester_geocode.address)

        # Use the defined elevation, implies we are using a static location, if undefined make it the geocoded one.
        try:
            requester_geocode.elevation = lambda: None
            requester_geocode.elevation.meters = lambda: None
            setattr(requester_geocode.elevation, 'meters', elev)
        except NameError:
            requester_geocode.elevation = geocoder.elevation(latlng, key=GOOGLE_API_KEY, session=session)

        # Get the timezone
        requester_geocode.timeZoneId = geocoder.timezone(latlng, key=GOOGLE_API_KEY, session=session).timeZoneId

    # noinspection PyPep8
    return render_template('print_times.html',
                           place=place,
                           sunset_string=twilight('sunset', requester_geocode),
                           sunrise_string=twilight('sunrise', requester_geocode),
                           civil_end_string=twilight('civil_end', requester_geocode),
                           civil_begin_string=twilight('civil_begin', requester_geocode),
                           nautical_end_string=twilight('nautical_end', requester_geocode),
                           nautical_begin_string=twilight('nautical_begin', requester_geocode),
                           amateur_end_string=twilight('amateur_end', requester_geocode),
                           amateur_begin_string=twilight('amateur_begin', requester_geocode),
                           astro_end_string=twilight('astronomical_end', requester_geocode),
                           astro_begin_string=twilight('astronomical_begin', requester_geocode),
                           moonrise_string=twilight('moonrise', requester_geocode),
                           moonset_string=twilight('moonset', requester_geocode),
                           moon_phase_string=twilight('moon_phase', requester_geocode),
                           moonset_ante_astro_noon_p=twilight('moonset_ante_astro_noon_p', requester_geocode),
                           address=address,
                           latlng=latlng,
                           elevation=requester_geocode.elevation.meters,
                           ip=requester_ip)
예제 #7
0
def test_timezone():
    g = geocoder.timezone(location)
    assert g.ok
예제 #8
0
def test_timezone():
    g = geocoder.timezone(location)
    assert g.ok