123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import sys, os
- sys.path.append('/var/lib/django/pbp_com')
- sys.path.append('/var/lib/django/pbp_com/apps')
- import re
- from django.core.management import setup_environ
- import re
- import urllib
- import urllib2
- import time
- from datetime import datetime, timedelta
- import dateutil
- from almanac.models import Day, AstroChart, TideChart, TideDay, Tide
- from directory.models import Place
- from BeautifulSoup import BeautifulStoneSoup
- from pbp_com import settings
- setup_environ(settings)
- ### SET YOUR TIDE FILE NAME HERE ###
- tides=BeautifulStoneSoup(open('bar-harbor-2014.xml'))
- ### SET THE YEAR YOUR ARE UPLOADING HERE ###
- year='2014'
- place=Place.objects.get(slug='bar-harbor-public-wharf')
- def fix_time(str, today, chart):
- '''if chart.dst_start < today.date < chart.dst_end:
- delta=timedelta(hours=1)
- else:
- delta=timedelta(hours=0)'''
- return time.strftime("%H:%M", datetime(*time.strptime(str, "%I:%M %p")[0:5]).timetuple())
- ''' End of fix_time() '''
- tide_table=[]
- try:
- chart=TideChart.objects.get(year__exact=year, place__exact=place)
- except TideChart.DoesNotExist:
- raise Exception('Currently you have to manually add a tide chart to hold this info before in can be imported.')
- try:
- astro_chart=AstroChart.objects.get(year__exact=year)
- except AstroChart.DoesNotExist:
- raise Exception('You must create an astronomical chart for the year you wish to input tide data for.')
- days = Day.objects.filter(date__year=chart.year)
- for day in days:
- print 'Processing %s' % day.date
- days_tides = tides.findAll(text=re.sub('-', '/', str(day.date)))
- print days_tides
- try:
- tide_1=days_tides[0].parent.parent
- except:
- pass
- tide_2=days_tides[1].parent.parent
- tide_3=days_tides[2].parent.parent
- try:
- tide_4=days_tides[3].parent.parent
- except:
- pass
- tideday=TideDay.objects.create(day=day, tide_chart=chart)
- if tide_1:
- tideday.tide_1 = Tide.objects.create(time=fix_time(tide_1.time.contents[0],datetime.today(), astro_chart), level=tide_1.predictions_in_ft.contents[0], state=tide_1.highlow.contents[0])
- tideday.tide_2 = Tide.objects.create(time=fix_time(tide_2.time.contents[0], datetime.today(),astro_chart), level=tide_2.predictions_in_ft.contents[0], state=tide_2.highlow.contents[0])
- tideday.tide_3 = Tide.objects.create(time=fix_time(tide_3.time.contents[0], datetime.today(), astro_chart), level=tide_3.predictions_in_ft.contents[0], state=tide_3.highlow.contents[0])
- if tide_4:
- tideday.tide_4 = Tide.objects.create(time=fix_time(tide_4.time.contents[0],datetime.today(), astro_chart), level=tide_4.predictions_in_ft.contents[0], state=tide_4.highlow.contents[0])
- tideday.save()
|