160 lines
5.1 KiB
Python
160 lines
5.1 KiB
Python
import datetime
|
|
from urllib.parse import unquote
|
|
|
|
import httplib2
|
|
from django.db.models import Count
|
|
from django.http import JsonResponse, HttpResponse, HttpResponseNotAllowed
|
|
from django.shortcuts import render
|
|
|
|
# Create your views here.
|
|
from dashboard.models import Spi, Hydro, Revenue, Landuse, Population, GDP
|
|
|
|
PROXY_FORMAT = 'http://%s:%d%s' % ('210.77.68.250', 8080, '%s')
|
|
|
|
|
|
def index(request):
|
|
return render(request, 'graphic/index.html')
|
|
|
|
|
|
def timeline(request):
|
|
return render(request, 'graphic/timeline.html')
|
|
|
|
|
|
def timeline1(request):
|
|
return render(request, 'graphic/timeline1.html')
|
|
|
|
|
|
def timeline2(request):
|
|
return render(request, 'graphic/timeline2.html')
|
|
|
|
|
|
def timeline3(request):
|
|
return render(request, 'graphic/timeline3.html')
|
|
|
|
|
|
|
|
|
|
|
|
def proxy(request):
|
|
conn = httplib2.Http()
|
|
|
|
if request.method == 'GET':
|
|
url = request.GET.urlencode()
|
|
url = url.replace('url=', '')
|
|
url = unquote(url)
|
|
response, content = conn.request(url, request.method)
|
|
return HttpResponse(content, status=int(response['status']), content_type=response['content-type'])
|
|
else:
|
|
return HttpResponseNotAllowed('post')
|
|
|
|
|
|
def spi(request):
|
|
spi = dict()
|
|
spi['type'] = 'FeatureCollection'
|
|
spi['crs'] = {
|
|
'type': 'link',
|
|
'properties': {
|
|
'href': 'http://spatialreference.org/ref/epsg/4326/',
|
|
'type': 'proj4'
|
|
}
|
|
}
|
|
|
|
spis = Spi.objects.all()
|
|
fs = []
|
|
for s in spis:
|
|
epoch = datetime.datetime.utcfromtimestamp(0)
|
|
t = datetime.datetime(s.year, s.month, 1, 1, 1, 1)
|
|
start = t.timestamp() * 1000.0
|
|
o = {
|
|
'id': s.id,
|
|
'type': 'Feature',
|
|
'properties': {
|
|
'code': s.code,
|
|
'time': int(start),
|
|
'mean_precipitation': float(s.mean_precipitation)
|
|
},
|
|
'geometry': {
|
|
'type': 'Point',
|
|
'coordinates': [s.longitude, s.latitude]
|
|
}
|
|
}
|
|
fs.append(o)
|
|
spi['features'] = fs
|
|
return JsonResponse(spi)
|
|
|
|
|
|
|
|
|
|
def spi_chart_code(request):
|
|
code = request.GET.get('code', 'V7001')
|
|
year_from = request.GET.get('year_from', '1979')
|
|
year_to = request.GET.get('year_to', '1989')
|
|
codes = Spi.objects.only('code').values('code').annotate(total=Count('code')).order_by('code')
|
|
years = range(1979, 2018)
|
|
months = range(1, 13)
|
|
spis = Spi.objects.filter(code=code, year__range=(year_from, year_to))
|
|
return render(request, 'graphic/spi_chart_code.html',
|
|
{'codes': codes, 'years': years, 'months': months, 'spis': spis, 'code': code, 'year_from': year_from,
|
|
'year_to': year_to, })
|
|
|
|
|
|
def spi_chart_time(request):
|
|
year = request.GET.get('year', '1979')
|
|
month = request.GET.get('month', '1')
|
|
years = range(1979, 2018)
|
|
months = range(1, 13)
|
|
spis = Spi.objects.filter(year=year, month=month)
|
|
return render(request, 'graphic/spi_chart_time.html',
|
|
{'years': years, 'months': months, 'spis': spis, 'year': year,
|
|
'month': month})
|
|
|
|
def spi_chart_time_list(request):
|
|
code = request.GET.get('code', 'V7001')
|
|
year_from = request.GET.get('year_from', '1979')
|
|
year_to = request.GET.get('year_to', '1989')
|
|
codes = Spi.objects.only('code').values('code').annotate(total=Count('code')).order_by('code')
|
|
years = range(1979, 2018)
|
|
months = range(1, 13)
|
|
spis = Spi.objects.filter(code=code, year__range=(year_from, year_to))
|
|
return render(request, 'dashboard/spi_list.html',
|
|
{'codes': codes, 'years': years, 'months': months, 'spis': spis, 'code': code, 'year_from': year_from,
|
|
'year_to': year_to, })
|
|
|
|
|
|
def hydro_chart_time_list(request):
|
|
year = request.GET.get('date', '1979')
|
|
years = range(1979, 2018)
|
|
hydro = Hydro.objects.filter(date=year)
|
|
print(str(hydro)+"+++++++++++++++++")
|
|
return render(request, 'dashboard/hydro_list.html',
|
|
{'years': years, 'hydro': hydro, 'year': year,
|
|
})
|
|
|
|
|
|
def revenue_chart_time_list(request):
|
|
year = request.GET.get('date', '1979')
|
|
years = range(1979, 2018)
|
|
revenue = Revenue.objects.filter(data=year)
|
|
print(str(revenue)+"社会经济")
|
|
return render(request, 'dashboard/revenue_list.html',
|
|
{'years': years, 'revenue': revenue, 'year': year,
|
|
})
|
|
|
|
def landuse_chart_time_list(request):
|
|
year = request.GET.get('date','2016')
|
|
years = range(1979,2018)
|
|
landuse = Landuse.objects.filter(date = year)
|
|
return render(request,'dashboard/landuse_list.html',{'years':years,'year':year,'landuse':landuse})
|
|
|
|
def population_chart_time_list(request):
|
|
year = request.GET.get('date','2016')
|
|
years = range(1979,2018)
|
|
population = Population.objects.filter(date = year)
|
|
return render(request,'dashboard/population_list.html',{'years':years,'year':year,'population':population})
|
|
|
|
def gdp_chart_time_list(request):
|
|
year = request.GET.get('date','2016')
|
|
years = range(2016,2018)
|
|
gdp = GDP.objects.filter(date = year)
|
|
return render(request,'dashboard/gdp_list.html',{'years':years,'year':year,'gdp':gdp})
|