Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a47d77b
make create views acessible only to logged in users
nam20485 Sep 29, 2019
2a49448
Bump version: 1.77.3 → 1.78.0
nam20485 Sep 29, 2019
c21f80e
fix typo in CommunityGardensV20190122ViewSet definition
nam20485 Sep 30, 2019
d25f72e
Bump version: 1.78.0 → 1.78.1
nam20485 Sep 30, 2019
4a13756
remove expose flag for api service
nam20485 Sep 30, 2019
77f1b62
change api-auth view to use url instead of path
nam20485 Sep 30, 2019
3c10aa3
Bump version: 1.78.1 → 1.78.2
nam20485 Sep 30, 2019
29a27cc
minor refatoring and cleanup
nam20485 Sep 30, 2019
d8f9862
Bump version: 1.78.2 → 1.78.3
nam20485 Sep 30, 2019
418455c
turn DEBUG=true on to debug container in production
nam20485 Sep 30, 2019
40fb4a6
Bump version: 1.78.3 → 1.78.4
nam20485 Sep 30, 2019
85a40fc
turn DEBUG=false
nam20485 Sep 30, 2019
28febbf
Bump version: 1.78.4 → 1.78.5
nam20485 Sep 30, 2019
64de202
add all Visualization model sub-models and make creatable
nam20485 Oct 1, 2019
4ad4dff
remove REST_FRAMEWORK settings from backend settings
nam20485 Oct 1, 2019
3f401d1
Bump version: 1.78.5 → 1.79.0
nam20485 Oct 2, 2019
b80eec0
Bump version: 1.79.0 → 1.79.1
nam20485 Oct 2, 2019
3ad23cd
set Debug=True
nam20485 Oct 2, 2019
707a635
minor formatting changes
nam20485 Oct 2, 2019
8c1032a
Bump version: 1.79.1 → 1.79.2
nam20485 Oct 2, 2019
e5cb50f
roll-back attempt to set DEBUG=True
nam20485 Oct 2, 2019
7ae49a5
Bump version: 1.79.2 → 1.79.3
nam20485 Oct 2, 2019
da5d2ef
Bump version: 1.79.3 → 1.79.4
nam20485 Oct 2, 2019
b223276
restore REST_FRAMEWORK settings to fix schema and docs view
nam20485 Oct 4, 2019
f87b843
Bump version: 1.79.4 → 1.79.5
nam20485 Oct 4, 2019
4613ec5
add index template
nam20485 Oct 23, 2019
ea2f265
add settings to workspace
nam20485 Oct 23, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,8 @@
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.jediEnabled": true,
"editor.rulers": [80,120],
"workbench.colorCustomizations": {
"editorRuler.foreground": "#ff4081"
}
}
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ services:
dockerfile: DOCKERFILE
image: api
command: ./scripts/build-run/docker-entrypoint.sh
expose:
- 8000
#expose:
# - 8000
volumes:
- .:/code/src_files/
# - ./hackoregon_sandbox/api:/code/src_files/hackoregon_sandbox/api
Expand Down
2 changes: 1 addition & 1 deletion hackoregon_sandbox/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '1.77.3'
__version__ = '1.79.5'
6 changes: 4 additions & 2 deletions hackoregon_sandbox/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,9 @@ class Dates(models.Model):
min = models.CharField(max_length=50)
max = models.CharField(max_length=50)

def __str__(self):
return '%s (%s) < %s, > %s' % (self.field_name, self.default_filter, self.min, self.max)

class Visualization(models.Model):
map = models.ForeignKey(Map, on_delete=models.CASCADE)
dashboard = models.ForeignKey(VisualizationEntity, on_delete=models.CASCADE, related_name='dashboard')
Expand All @@ -208,8 +211,7 @@ class Tag(models.Model):
name = models.CharField(max_length=50)
value = models.CharField(max_length=50)

def __str__(self):
#return '%d: %s' % (self.order, self.title)
def __str__(self):
return '%s=(%s)' % (self.name, self.value)

"""
Expand Down
42 changes: 41 additions & 1 deletion hackoregon_sandbox/api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
from rest_framework import serializers
from rest_framework_gis.serializers import GeoFeatureModelSerializer

from api.models import Layer, Tag, Package, Dates
from api.models import (Layer,
Tag,
Package,
Dates,
Visualization,
IconMapping,
ColorArea,
Map,
VisualizationEntity,
VisualizationEntityObject)
from api.preexisting_models import (PdxMsa2010CensusBlockGroups,
PdxMsa2010CensusTracts,
PdxMsaNcdb,
Expand All @@ -11,6 +20,37 @@
Dataset045Dc)


class IconMappingSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = IconMapping
fields = '__all__'

class ColorAreaSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ColorArea
fields = '__all__'

class MapSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Map
fields = '__all__'

class VisualizationEntitySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = VisualizationEntity
fields = '__all__'

class VisualizationEntityObjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = VisualizationEntityObject
fields = '__all__'

class VisualizationSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Visualization
fields = '__all__'


class TagSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Tag
Expand Down
16 changes: 16 additions & 0 deletions hackoregon_sandbox/api/templates/api/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<html>
<head>
<title>Sandbox API</title>
<h1>Sandbox</h1>
<p>Choose a link below<p>
</head>
<body>
<ul>
{% for link in links %}
<li>
<a href="{{ link.url }}">{{ link.text }}</a>
</li>
{% endfor %}
</ul>
</body>
</html>
17 changes: 11 additions & 6 deletions hackoregon_sandbox/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,33 @@
from django.conf.urls import url, include
from django.urls import path
from rest_framework.routers import DefaultRouter

from api import views


router = DefaultRouter()
router.register(r'Tags', views.TagViewSet)
router.register(r'Layers', views.LayerViewSet)
router.register(r'Packages', views.PackageViewSet)
router.register(r'PdxMsa2010CensusBlockGroups', views.PdxMsa2010CensusBlockGroupsViewSet)
router.register(r'PdxMsa2010CensusTracts', views.PdxMsa2010CensusTractsViewSet)
router.register(r'PdxMsaNcdbs', views.PdxMsaNcdbViewSet)
router.register(r'ParksV20190129', views.ParksV20190129ViewSet)
router.register(r'CommunityGardensV20190122', views.CommunityGardensV20190122ViewSet)
router.register(r'Dataset045Pdxs', views.Dataset045PdxViewSet)
router.register(r'Dataset045Dcs', views.Dataset045DcViewSet)
router.register(r'Dates', views.DatesViewSet)

router.register(r'Tags', views.TagViewSet)
router.register(r'Layers', views.LayerViewSet)
router.register(r'Packages', views.PackageViewSet)
router.register(r'Visualizations', views.VisualizationViewSet)
router.register(r'Dates', views.DatesViewSet)
router.register(r'IconMappings', views.IconMappingViewSet)
router.register(r'ColorAreas', views.ColorAreaViewSet)
router.register(r'Maps', views.MapViewSet)
router.register(r'VisualizationEntityObjects', views.VisualizationEntityObjectViewSet)
router.register(r'VisualizationEntitys', views.VisualizationEntityViewSet)

urlpatterns = [
url(r'^create_layer/', views.create_layer, name='create_layer'),
url(r'^create_package/', views.create_package, name='create_package'),
url(r'^package_info/', views.package_info_view, name='package_info_view'),
#path('api-auth/', include('rest_framework.urls')),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^', include(router.urls)),
]
120 changes: 107 additions & 13 deletions hackoregon_sandbox/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,52 @@
from django.http import HttpResponse
from django.db import IntegrityError
from django.http import JsonResponse
from django.shortcuts import render

from api import models
from api import preexisting_models
from api.serializers import LayerSerializer, TagSerializer, PackageSerializer, DatesSerializer
from api.serializers import PdxMsa2010CensusBlockGroupsSerializer, PdxMsa2010CensusTractsSerializer, PdxMsaNcdbSerializer
from api.serializers import ParksV20190129Serializer, CommunityGardensV20190122Serializer
from api.serializers import Dataset045PdxSerializer, Dataset045DcSerializer
from api import model_parsing
from api import packages
from api import (models,
preexisting_models,
model_parsing,
packages)

from api.serializers import (LayerSerializer,
TagSerializer,
PackageSerializer,
DatesSerializer,
VisualizationSerializer,
IconMappingSerializer,
ColorAreaSerializer,
MapSerializer,
VisualizationEntitySerializer,
VisualizationEntityObjectSerializer)

from api.serializers import (PdxMsa2010CensusBlockGroupsSerializer,
PdxMsa2010CensusTractsSerializer,
PdxMsaNcdbSerializer,
ParksV20190129Serializer,
CommunityGardensV20190122Serializer,
Dataset045PdxSerializer,
Dataset045DcSerializer)


PACKAGES_JSON_FILE = "/code/src_files/packages.json"


class Link(object):
text = ''
url = ''

def __init__(self, text, url):
self.text = text
self.url = url

def index(request):
link1 = Link(text='API', url='/sandbox/api')
# return render_to_response('hour.html', {"list": list})
links = [ link1 ]
context = { "links" : links }
return render(request, 'api/index.html', context)


"""
"""
def create_layer(request):
Expand Down Expand Up @@ -74,7 +106,57 @@ class LayerViewSet(viewsets.ModelViewSet):
"""
queryset = models.Layer.objects.all()
serializer_class = LayerSerializer
#permission_classes = [permissions.IsAuthenticatedOrReadOnly]
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
class IconMappingViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Layer to be viewed or listed.
"""
queryset = models.IconMapping.objects.all()
serializer_class = IconMappingSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
class ColorAreaViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Layer to be viewed or listed.
"""
queryset = models.ColorArea.objects.all()
serializer_class = ColorAreaSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
class MapViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Layer to be viewed or listed.
"""
queryset = models.Map.objects.all()
serializer_class = MapSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
class VisualizationEntityViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Layer to be viewed or listed.
"""
queryset = models.VisualizationEntity.objects.all()
serializer_class = VisualizationEntitySerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
class VisualizationEntityObjectViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Layer to be viewed or listed.
"""
queryset = models.VisualizationEntityObject.objects.all()
serializer_class = VisualizationEntityObjectSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
Tags
Expand All @@ -85,7 +167,7 @@ class TagViewSet(viewsets.ModelViewSet):
"""
queryset = models.Tag.objects.all()
serializer_class = TagSerializer
#permission_classes = [permissions.IsAuthenticatedOrReadOnly]
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
Expand All @@ -95,18 +177,30 @@ class PackageViewSet(viewsets.ModelViewSet):
"""
queryset = models.Package.objects.all()
serializer_class = PackageSerializer
#permission_classes = [permissions.IsAuthenticatedOrReadOnly]
permission_classes = [permissions.IsAuthenticatedOrReadOnly]


"""

"""
class DatesViewSet(viewsets.ReadOnlyModelViewSet):
class DatesViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Package to be viewed or listed.
"""
queryset = models.Dates.objects.all()
serializer_class = DatesSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
Visualizations
"""
class VisualizationViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows Tag to be viewed or listed.
"""
queryset = models.Visualization.objects.all()
serializer_class = VisualizationSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]

"""
"""
Expand Down Expand Up @@ -148,7 +242,7 @@ class ParksV20190129ViewSet(viewsets.ReadOnlyModelViewSet):
"""
class CommunityGardensV20190122ViewSet(viewsets.ReadOnlyModelViewSet):
"""
API endpoint that allows CommunityGardensV2019012 to be viewed or listed.
API endpoint that allows CommunityGardensV201901esttag to be viewed or listed.
"""
queryset = preexisting_models.CommunityGardensV20190122.objects.all()
serializer_class = CommunityGardensV20190122Serializer
Expand Down
2 changes: 1 addition & 1 deletion hackoregon_sandbox/setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.77.3
current_version = 1.79.5
commit = True
tag = True

Expand Down
12 changes: 8 additions & 4 deletions local_settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,12 @@
"DEFAULT_VERSIONING_CLASS": "rest_framework.versioning.NamespaceVersioning",
"DEFAULT_FILTER_BACKENDS": ("django_filters.rest_framework.DjangoFilterBackend",),
"DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.AutoSchema",
# 'DEFAULT_AUTHENTICATION_CLASSES': [
# 'rest_framework.authentication.BasicAuthentication',
# 'rest_framework.authentication.SessionAuthentication',
# ],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
}

settings_dir = os.path.dirname(__file__) # directory where this file is located
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir)) # project's root directory
JSONFILES_FOLDER = os.path.join(PROJECT_ROOT, 'json_files/') # json_files diretory under PROJECT_ROOT
10 changes: 6 additions & 4 deletions local_settings/urls.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
from django.conf.urls import url, include
from django.urls import path
from rest_framework.routers import DefaultRouter
from rest_framework_swagger.views import get_swagger_view
from rest_framework.documentation import include_docs_urls

from hackoregon_sandbox.api import views

router = DefaultRouter()

api_title = 'Hack Oregon Sandbox 2019 API'

schema_view = get_swagger_view(title=api_title)


urlpatterns = [
urlpatterns = [
url(r'^sandbox/schema/', schema_view),
url(r'^sandbox/api/', include('hackoregon_sandbox.api.urls')),
url(r'^sandbox/docs/', include_docs_urls(title=api_title)),
url(r'^sandbox/health/', include('health_check.urls'))
url(r'^sandbox/health/', include('health_check.urls')),
url(r'^', views.index, name='index'),
]

url(r'^$', schema_view)