|
8 | 8 | from django.shortcuts import render, redirect, reverse |
9 | 9 | from django.urls import path |
10 | 10 |
|
| 11 | +from vbos.datasets.utils import CSVRow, GeoJSONProperties |
| 12 | + |
11 | 13 | from .models import ( |
| 14 | + AreaCouncil, |
12 | 15 | Cluster, |
| 16 | + Province, |
13 | 17 | RasterDataset, |
14 | 18 | RasterFile, |
15 | 19 | TabularDataset, |
@@ -44,8 +48,8 @@ class VectorDatasetAdmin(admin.ModelAdmin): |
44 | 48 |
|
45 | 49 | @admin.register(VectorItem) |
46 | 50 | class VectorItemAdmin(admin.GISModelAdmin): |
47 | | - list_display = ["id", "dataset", "metadata"] |
48 | | - list_filter = ["dataset"] |
| 51 | + list_display = ["id", "dataset", "name", "attribute", "province", "area_council"] |
| 52 | + list_filter = ["dataset", "province", "area_council"] |
49 | 53 |
|
50 | 54 | def get_urls(self): |
51 | 55 | urls = super().get_urls() |
@@ -82,10 +86,20 @@ def import_file(self, request): |
82 | 86 | error_count = 0 |
83 | 87 |
|
84 | 88 | for item in geojson_content["features"]: |
| 89 | + metadata = GeoJSONProperties(item["properties"]) |
85 | 90 | try: |
86 | 91 | VectorItem.objects.create( |
87 | 92 | dataset=form.cleaned_data["dataset"], |
88 | | - metadata=item["properties"], |
| 93 | + metadata=metadata.properties, |
| 94 | + name=metadata.name, |
| 95 | + ref=metadata.ref, |
| 96 | + attribute=metadata.attribute, |
| 97 | + province=Province.objects.filter( |
| 98 | + name__iexact=metadata.province |
| 99 | + ).first(), |
| 100 | + area_council=AreaCouncil.objects.filter( |
| 101 | + name__iexact=metadata.area_council |
| 102 | + ).first(), |
89 | 103 | geometry=GEOSGeometry(json.dumps(item["geometry"])), |
90 | 104 | ) |
91 | 105 | created_count += 1 |
@@ -126,8 +140,8 @@ class TabularDatasetAdmin(admin.ModelAdmin): |
126 | 140 |
|
127 | 141 | @admin.register(TabularItem) |
128 | 142 | class TabularItemAdmin(admin.GISModelAdmin): |
129 | | - list_display = ["id", "dataset", "data"] |
130 | | - list_filter = ["dataset"] |
| 143 | + list_display = ["id", "dataset", "province", "area_council", "attribute", "value"] |
| 144 | + list_filter = ["dataset", "province", "area_council"] |
131 | 145 |
|
132 | 146 | def get_urls(self): |
133 | 147 | urls = super().get_urls() |
@@ -166,8 +180,19 @@ def import_file(self, request): |
166 | 180 |
|
167 | 181 | for row in reader: # start=2 to account for header row |
168 | 182 | try: |
| 183 | + csv_row = CSVRow(row) |
169 | 184 | TabularItem.objects.create( |
170 | | - dataset=form.cleaned_data["dataset"], data=row |
| 185 | + dataset=form.cleaned_data["dataset"], |
| 186 | + metadata=csv_row.metadata, |
| 187 | + attribute=csv_row.attribute, |
| 188 | + value=csv_row.value, |
| 189 | + date=csv_row.date, |
| 190 | + province=Province.objects.filter( |
| 191 | + name__iexact=csv_row.province |
| 192 | + ).first(), |
| 193 | + area_council=AreaCouncil.objects.filter( |
| 194 | + name__iexact=csv_row.area_council |
| 195 | + ).first(), |
171 | 196 | ) |
172 | 197 | created_count += 1 |
173 | 198 | except Exception as e: |
|
0 commit comments