diff --git a/.gitignore b/.gitignore
index 0bc1fef..a785990 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,11 @@
__pycache__/
*.py[cod]
*.DS_Store
+
+# Private files
db.sqlite3
local.py
+saml_config.yml
conf/
extras/
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index bd2420d..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
-[submodule "htdocs/feedback"]
- path = htdocs/feedback
- url = https://github.com/mercycorps/feedback.git
-[submodule "htdocs/djangocosign"]
- path = htdocs/djangocosign
- url = https://github.com/mercycorps/djangocosign.git
diff --git a/htdocs/dataviz/__init__.py b/dataviz/__init__.py
similarity index 100%
rename from htdocs/dataviz/__init__.py
rename to dataviz/__init__.py
diff --git a/htdocs/dataviz/admin.py b/dataviz/admin.py
similarity index 100%
rename from htdocs/dataviz/admin.py
rename to dataviz/admin.py
diff --git a/htdocs/dataviz/api.py b/dataviz/api.py
similarity index 99%
rename from htdocs/dataviz/api.py
rename to dataviz/api.py
index a3c1e96..6cfa35c 100644
--- a/htdocs/dataviz/api.py
+++ b/dataviz/api.py
@@ -1,4 +1,5 @@
from operator import and_, or_
+from functools import reduce
from django.db.models import Q
from rest_framework import viewsets, pagination
diff --git a/htdocs/dataviz/forms.py b/dataviz/forms.py
similarity index 98%
rename from htdocs/dataviz/forms.py
rename to dataviz/forms.py
index 6638994..e65ae72 100644
--- a/htdocs/dataviz/forms.py
+++ b/dataviz/forms.py
@@ -1,4 +1,4 @@
-from django.core.urlresolvers import reverse_lazy
+from django.urls import reverse_lazy
from django import forms
diff --git a/htdocs/dataviz/management/__init__.py b/dataviz/management/__init__.py
similarity index 100%
rename from htdocs/dataviz/management/__init__.py
rename to dataviz/management/__init__.py
diff --git a/htdocs/dataviz/management/commands/__init__.py b/dataviz/management/commands/__init__.py
similarity index 100%
rename from htdocs/dataviz/management/commands/__init__.py
rename to dataviz/management/commands/__init__.py
diff --git a/htdocs/dataviz/management/commands/teststuff.py b/dataviz/management/commands/teststuff.py
similarity index 100%
rename from htdocs/dataviz/management/commands/teststuff.py
rename to dataviz/management/commands/teststuff.py
diff --git a/htdocs/dataviz/migrations/0001_initial.py b/dataviz/migrations/0001_initial.py
similarity index 100%
rename from htdocs/dataviz/migrations/0001_initial.py
rename to dataviz/migrations/0001_initial.py
diff --git a/htdocs/dataviz/migrations/0002_donorcategory.py b/dataviz/migrations/0002_donorcategory.py
similarity index 100%
rename from htdocs/dataviz/migrations/0002_donorcategory.py
rename to dataviz/migrations/0002_donorcategory.py
diff --git a/htdocs/dataviz/migrations/0003_methodology_sectorsubsector_theme.py b/dataviz/migrations/0003_methodology_sectorsubsector_theme.py
similarity index 100%
rename from htdocs/dataviz/migrations/0003_methodology_sectorsubsector_theme.py
rename to dataviz/migrations/0003_methodology_sectorsubsector_theme.py
diff --git a/htdocs/dataviz/migrations/0004_grantmethodology_granttheme.py b/dataviz/migrations/0004_grantmethodology_granttheme.py
similarity index 100%
rename from htdocs/dataviz/migrations/0004_grantmethodology_granttheme.py
rename to dataviz/migrations/0004_grantmethodology_granttheme.py
diff --git a/htdocs/dataviz/migrations/__init__.py b/dataviz/migrations/__init__.py
similarity index 100%
rename from htdocs/dataviz/migrations/__init__.py
rename to dataviz/migrations/__init__.py
diff --git a/htdocs/dataviz/mixins.py b/dataviz/mixins.py
similarity index 100%
rename from htdocs/dataviz/mixins.py
rename to dataviz/mixins.py
diff --git a/htdocs/dataviz/models.py b/dataviz/models.py
similarity index 69%
rename from htdocs/dataviz/models.py
rename to dataviz/models.py
index 595f060..3abe124 100644
--- a/htdocs/dataviz/models.py
+++ b/dataviz/models.py
@@ -1,105 +1,112 @@
-from django.core.validators import MinValueValidator
from django.core.exceptions import ValidationError
+from django.db import models
+from django.db.models import Q, Count
-from django.utils import timezone
-from django.utils.timezone import utc
-from django.db import models
-from django.db.models import Q, Sum, Max, Count
+class DBRouter:
+
+ def db_for_read(self, model, **hints):
+ if model._meta.app_label == 'dataviz':
+ return 'gait'
+ return None
-from django.contrib.auth.models import User
def validate_positive(value):
if value <= 0:
raise ValidationError('%s is not greater than zero' % value)
+
class DonorCategory(models.Model):
- donor_category_id = models.PositiveIntegerField(primary_key=True, db_column="DonorCategoryID", validators=[validate_positive,])
+ donor_category_id = models.PositiveIntegerField(
+ primary_key=True, db_column="DonorCategoryID", validators=[validate_positive])
name = models.CharField(db_column="DonorCategory", max_length=255)
class Meta:
managed = False
db_table = 'donorcategorytbl'
- def __unicode__(self):
+ def __str__(self):
return self.name
class Donor(models.Model):
- donor_id = models.PositiveIntegerField(primary_key=True, db_column="DonorID", validators=[validate_positive,])
+ donor_id = models.PositiveIntegerField(primary_key=True, db_column="DonorID", validators=[validate_positive])
name = models.CharField(db_column="Donor", max_length=3, null=True)
- category = models.ForeignKey(DonorCategory, db_column="DonorCategoryID", related_name="donors")
+ category = models.ForeignKey(
+ DonorCategory, db_column="DonorCategoryID", related_name="donors", on_delete=models.PROTECT)
class Meta:
managed = False
db_table = "donortbl"
- ordering = ['name',]
+ ordering = ['name']
@property
def num_of_grants(self):
return self.grants.aggregate(num_grants=Count('grant_id'))['num_grants']
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
class DonorDepartment(models.Model):
- department_id = models.PositiveIntegerField(primary_key=True, db_column="DepartmentID", validators=[validate_positive,])
- donor = models.ForeignKey(Donor, db_column="DonorID")
+ department_id = models.PositiveIntegerField(
+ primary_key=True, db_column="DepartmentID", validators=[validate_positive])
+ donor = models.ForeignKey(Donor, db_column="DonorID", on_delete=models.CASCADE)
name = models.CharField(db_column="Department", max_length=255)
class Meta:
managed = False
db_table = 'donordepttbl'
- ordering = ['name',]
+ ordering = ['name']
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
class Region(models.Model):
- region_id = models.PositiveIntegerField(primary_key=True, db_column="RegionID", validators=[validate_positive,])
+ region_id = models.PositiveIntegerField(primary_key=True, db_column="RegionID", validators=[validate_positive])
name = models.CharField(db_column="Region", max_length=100)
class Meta:
managed = False
db_table = "regiontbl"
- ordering = ['name',]
+ ordering = ['name']
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
class Country(models.Model):
- country_id = models.PositiveIntegerField(primary_key=True, db_column="CountryID", validators=[validate_positive,])
+ country_id = models.PositiveIntegerField(primary_key=True, db_column="CountryID", validators=[validate_positive])
name = models.CharField(db_column="Country", max_length=100)
- region = models.ForeignKey(Region, db_column="RegionID", related_name="countries")
+ region = models.ForeignKey(Region, db_column="RegionID", related_name="countries", on_delete=models.CASCADE)
iso2 = models.CharField(db_column="CountryCode", max_length=2)
class Meta:
managed = False
db_table = "countrytbl"
- ordering = ['name',]
+ ordering = ['name']
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
class Sector(models.Model):
- sector_id = models.PositiveIntegerField(primary_key=True, db_column="SectorID", validators=[validate_positive,])
+ sector_id = models.PositiveIntegerField(primary_key=True, db_column="SectorID", validators=[validate_positive])
name = models.CharField(db_column="Sector", max_length=100)
class Meta:
managed = False
db_table = "n_sectortbl"
- ordering = ['name',]
+ ordering = ['name']
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
class SubSector(models.Model):
- subsector_id = models.PositiveIntegerField(primary_key=True, db_column="SubSectorID", validators=[validate_positive,])
+ subsector_id = models.PositiveIntegerField(
+ primary_key=True, db_column="SubSectorID", validators=[validate_positive])
name = models.CharField(db_column="SubSector", max_length=50)
sectors = models.ManyToManyField(Sector, through="SectorSubSector")
@@ -107,12 +114,13 @@ class Meta:
managed = False
db_table = 'n_subsectortbl'
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
+
class SectorSubSector(models.Model):
- sector = models.ForeignKey(Sector, db_column="SectorID")
- subsector = models.ForeignKey(SubSector, db_column="SubSectorID")
+ sector = models.ForeignKey(Sector, db_column="SectorID", on_delete=models.CASCADE)
+ subsector = models.ForeignKey(SubSector, db_column="SubSectorID", on_delete=models.CASCADE)
class Meta:
managed = False
@@ -120,14 +128,14 @@ class Meta:
class SectorType(models.Model):
- sector_id = models.PositiveIntegerField(primary_key=True, db_column="SectorTypeID", validators=[validate_positive,])
+ sector_id = models.PositiveIntegerField(primary_key=True, db_column="SectorTypeID", validators=[validate_positive])
sector_type = models.CharField(db_column="SectorType", max_length=50)
class Meta:
managed = False
db_table = "n_sectortypetbl"
- def __unicode__(self):
+ def __str__(self):
return self.sector_type or ''
@@ -139,7 +147,7 @@ class Meta:
managed = False
db_table = 'n_themetbl'
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
@@ -151,15 +159,17 @@ class Meta:
managed = False
db_table = 'n_methodologytbl'
- def __unicode__(self):
+ def __str__(self):
return self.name or ''
+
class GrantsWonManager(models.Manager):
def get_queryset(self):
return super(GrantsWonManager, self).get_queryset().filter(
- Q(status='Closed')|
- Q(status='Funded')|
- Q(status='Completed'))
+ Q(status='Closed') |
+ Q(status='Funded') |
+ Q(status='Completed')
+ )
class GrantsLostManager(models.Manager):
@@ -171,13 +181,15 @@ def get_queryset(self):
class BothWonLostGrants(models.Manager):
def get_queryset(self):
return super(BothWonLostGrants, self).get_queryset().filter(
- Q(status='Closed')|
- Q(status='Funded')|
- Q(status='Completed')|
- Q(status="Rejected"))
+ Q(status='Closed') |
+ Q(status='Funded') |
+ Q(status='Completed') |
+ Q(status="Rejected")
+ )
+
class Grant(models.Model):
- grant_id = models.PositiveIntegerField(primary_key=True, db_column="GrantID", validators=[validate_positive,])
+ grant_id = models.PositiveIntegerField(primary_key=True, db_column="GrantID", validators=[validate_positive])
title = models.CharField(db_column="GrantTitle", max_length=250, null=True)
currency = models.CharField(db_column="Currency", max_length=3, null=True)
amount = models.DecimalField(db_column="Amount", max_digits=20, decimal_places=4, null=True)
@@ -185,7 +197,7 @@ class Grant(models.Model):
amount_icr = models.DecimalField(db_column="ICRAmount", max_digits=20, decimal_places=4, null=True)
status = models.CharField(db_column="FundingStatus", max_length=50, null=True)
hq_admin = models.CharField(db_column="HQadmin", max_length=3, null=True)
- donor = models.ForeignKey(Donor, db_column="DonorID", related_name='grants', null=True)
+ donor = models.ForeignKey(Donor, db_column="DonorID", related_name='grants', null=True, on_delete=models.PROTECT)
submission_date = models.DateField(db_column="SubmissionDate", null=True)
start_date = models.DateField(db_column="StartDate", null=True)
end_date = models.DateField(db_column="EndDate", null=True)
@@ -193,7 +205,7 @@ class Grant(models.Model):
funding_probability = models.CharField(db_column="FundingProbability", max_length=255, null=True)
complex_program = models.BooleanField(db_column="ComplexProgram")
sensitive_data = models.BooleanField(db_column="SensitiveData")
- project_length = models.PositiveIntegerField(db_column="ProjectLength", validators=[validate_positive,], null=True)
+ project_length = models.PositiveIntegerField(db_column="ProjectLength", validators=[validate_positive], null=True)
created = models.DateField(db_column="CreationDate", null=True)
updated = models.DateField(db_column="LastModifiedDate", null=True)
sectors = models.ManyToManyField(Sector, through="GrantSector")
@@ -201,32 +213,34 @@ class Grant(models.Model):
themes = models.ManyToManyField(Theme, through='GrantTheme')
methodologies = models.ManyToManyField(Methodology, through='GrantMethodology')
countries = models.ManyToManyField(Country, through="GrantCountry", related_name='grants')
- objects = models.Manager() # The default manager.
+ objects = models.Manager()
won_grants = GrantsWonManager()
lost_grants = GrantsLostManager()
both_won_n_loss_grants = BothWonLostGrants()
- department = models.ForeignKey(DonorDepartment, db_column="DepartmentID", related_name='grants', null=True)
+ department = models.ForeignKey(
+ DonorDepartment, db_column="DepartmentID", related_name='grants', null=True, on_delete=models.PROTECT)
- def __unicode__(self):
+ def __str__(self):
return self.title or ''
class Meta:
managed = False
db_table = "granttbl"
- #ordering = ['title',]
+
class GrantTheme(models.Model):
- grant = models.ForeignKey(Grant, db_column="GrantID")
- theme = models.ForeignKey(Theme, db_column="ThemeID")
+ grant = models.ForeignKey(Grant, db_column="GrantID", on_delete=models.CASCADE)
+ theme = models.ForeignKey(Theme, db_column="ThemeID", on_delete=models.CASCADE)
class Meta:
managed = False
db_table = 'n_grantthemetbl'
unique_together = (('grant', 'theme'),)
+
class GrantMethodology(models.Model):
- grant = models.ForeignKey(Grant, db_column="GrantID")
- methodology = models.ForeignKey(Methodology, db_column="MethodologyID")
+ grant = models.ForeignKey(Grant, db_column="GrantID", on_delete=models.CASCADE)
+ methodology = models.ForeignKey(Methodology, db_column="MethodologyID", on_delete=models.CASCADE)
class Meta:
managed = False
@@ -234,10 +248,10 @@ class Meta:
class GrantSector(models.Model):
- grant = models.ForeignKey(Grant, db_column="GrantID")
- sector = models.ForeignKey(Sector, db_column="SectorID")
- subsector = models.ForeignKey(SubSector, db_column="SubSectorID", null=True)
- sector_type = models.ForeignKey(SectorType, db_column="SectorTypeID", null=True)
+ grant = models.ForeignKey(Grant, db_column="GrantID", on_delete=models.CASCADE)
+ sector = models.ForeignKey(Sector, db_column="SectorID", on_delete=models.CASCADE)
+ subsector = models.ForeignKey(SubSector, db_column="SubSectorID", null=True, on_delete=models.CASCADE)
+ sector_type = models.ForeignKey(SectorType, db_column="SectorTypeID", null=True, on_delete=models.CASCADE)
class Meta:
managed = False
@@ -246,12 +260,10 @@ class Meta:
class GrantCountry(models.Model):
- grant = models.ForeignKey(Grant, db_column="GrantID")
- country = models.ForeignKey(Country, db_column="CountryID")
+ grant = models.ForeignKey(Grant, db_column="GrantID", on_delete=models.CASCADE)
+ country = models.ForeignKey(Country, db_column="CountryID", on_delete=models.CASCADE)
class Meta:
managed = False
db_table = 'grantcountrytbl'
unique_together = (("grant", "country"),)
-
-
diff --git a/htdocs/dataviz/serializers.py b/dataviz/serializers.py
similarity index 99%
rename from htdocs/dataviz/serializers.py
rename to dataviz/serializers.py
index bd63669..1e3d10a 100644
--- a/htdocs/dataviz/serializers.py
+++ b/dataviz/serializers.py
@@ -3,7 +3,7 @@
from rest_framework import serializers
from .models import *
-locale.setlocale(locale.LC_ALL, 'en_US')
+locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
class GrantSerializerPlain(serializers.ModelSerializer):
gait_id = serializers.SerializerMethodField("get_grant_id")
diff --git a/htdocs/dataviz/templates/global_dashboard.html b/dataviz/templates/global_dashboard.html
similarity index 98%
rename from htdocs/dataviz/templates/global_dashboard.html
rename to dataviz/templates/global_dashboard.html
index 166dd54..fd1faa4 100644
--- a/htdocs/dataviz/templates/global_dashboard.html
+++ b/dataviz/templates/global_dashboard.html
@@ -1,8 +1,9 @@
-{% extends 'base.html' %}
+{% extends 'pdviz/base.html' %}
{% load staticfiles %}
{% load crispy_forms_tags %}
-
+
+
{% block content %}
{{ donor_categories|safe }}
{{ donors|safe }}
@@ -38,7 +39,7 @@
Decided Ratio Decided:
-
+
@@ -61,7 +62,7 @@
Capture Rate by Region and Country Overall Capture Rate ($mil):
-
+
@@ -110,7 +111,7 @@
container: 'body'
});
- var countPercentConfig = {
+ let countPercentConfig = {
title: "Win / Loss Rates Per Region and Country",
yAxisTitle: "Percentage",
stacking: "percent",
@@ -127,7 +128,7 @@
divID: "countChart"
};
- var countNominalConfig = {
+ let countNominalConfig = {
title: "Wins and Losses Per Region and Country",
yAxisTitle: "Grant Count",
stacking: "normal",
@@ -143,7 +144,7 @@
divID: "countChart"
};
- var capturePercentConfig = {
+ let capturePercentConfig = {
title: "Capture Rate Per Region and Country",
yAxisTitle: "Percentage",
stacking: "percent",
@@ -159,7 +160,7 @@
divID: "captureChart"
};
- var captureNominalConfig = {
+ let captureNominalConfig = {
title: "Value of Grants Won/Lost Per Region and Country",
yAxisTitle: "Cumulative Grant Values",
stacking: "normal",
@@ -175,13 +176,13 @@
divID: "captureChart"
};
- var activeCountConfig = countPercentConfig
- var activeCaptureConfig = capturePercentConfig
+ let activeCountConfig = countPercentConfig;
+ let activeCaptureConfig = capturePercentConfig;
// var drilldown_levels = [];
/// Base configuration for hicharts
- var baseConfig = {
+ let baseConfig = {
credits: {
text: 'mercycorps.org',
href: 'http://www.mercycorps.org',
@@ -215,7 +216,7 @@
}
},
- }
+ };
// On the search form reset event, clear all of the select2 dorpdowns.
$("body").on("reset", "#grants_donor_filter_form", function(e) {
@@ -241,7 +242,7 @@
e.preventDefault();
$('#showCountNominal').removeClass("active").removeAttr("aria-pressed", "true");
$('#showCountPercent').addClass("active").attr("aria-pressed", "true");
- activeCountConfig = countPercentConfig
+ activeCountConfig = countPercentConfig;
set_win_loss_labels(countPercentConfig);
draw_bar_chart(false, false, countPercentConfig);
});
@@ -250,7 +251,7 @@
e.preventDefault();
$('#showCountPercent').removeClass("active").removeAttr("aria-pressed", "true");
$('#showCountNominal').addClass("active").attr("aria-pressed", "true");
- activeCountConfig = countNominalConfig
+ activeCountConfig = countNominalConfig;
set_win_loss_labels(countNominalConfig);
draw_bar_chart(false, false, countNominalConfig);
});
@@ -259,7 +260,7 @@
e.preventDefault();
$('#showCaptureNominal').removeClass("active").removeAttr("aria-pressed", "true");
$('#showCapturePercent').addClass("active").attr("aria-pressed", "true");
- activeCountConfig = capturePercentConfig
+ activeCountConfig = capturePercentConfig;
set_win_loss_labels(capturePercentConfig);
draw_bar_chart(false, false, capturePercentConfig);
});
@@ -268,7 +269,7 @@
e.preventDefault();
$('#showCapturePercent').removeClass("active").removeAttr("aria-pressed", "true");
$('#showCaptureNominal').addClass("active").attr("aria-pressed", "true");
- activeCountConfig = captureNominalConfig
+ activeCountConfig = captureNominalConfig;
set_win_loss_labels(captureNominalConfig);
draw_bar_chart(false, false, captureNominalConfig);
});
diff --git a/htdocs/dataviz/tests/__init__.py b/dataviz/tests/__init__.py
similarity index 100%
rename from htdocs/dataviz/tests/__init__.py
rename to dataviz/tests/__init__.py
diff --git a/htdocs/dataviz/tests/tests.py b/dataviz/tests/tests.py
similarity index 100%
rename from htdocs/dataviz/tests/tests.py
rename to dataviz/tests/tests.py
diff --git a/htdocs/dataviz/views.py b/dataviz/views.py
similarity index 99%
rename from htdocs/dataviz/views.py
rename to dataviz/views.py
index d6754ee..6fe09fe 100644
--- a/htdocs/dataviz/views.py
+++ b/dataviz/views.py
@@ -2,6 +2,7 @@
from collections import OrderedDict
+from django.contrib.auth.mixins import LoginRequiredMixin
from django.db.models import DecimalField, FloatField, IntegerField, ExpressionWrapper, F, Case, When
from django.db.models.functions import Coalesce
from django.db.models.expressions import RawSQL
@@ -377,7 +378,7 @@ def get_grants_dataset(kwargs):
return series, grants, aggregates
-class GlobalDashboard(TemplateView):
+class GlobalDashboard(LoginRequiredMixin, TemplateView):
template_name='global_dashboard.html'
def get_context_data(self, **kwargs):
@@ -418,10 +419,9 @@ def get_context_data(self, **kwargs):
return context
-class GlobalDashboardData(View):
+class GlobalDashboardData(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
-
donor_categories = get_donor_categories_dataset(self.request.GET)
donors_list = get_donors_dataset(self.request.GET)
series, grants, aggregates = get_grants_dataset(self.request.GET)
diff --git a/htdocs/djangocosign b/htdocs/djangocosign
deleted file mode 160000
index b741971..0000000
--- a/htdocs/djangocosign
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b741971070cdfaa43c8437b04e3eee3a7d491dd4
diff --git a/htdocs/feedback b/htdocs/feedback
deleted file mode 160000
index 61c070e..0000000
--- a/htdocs/feedback
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 61c070e02121e570be5620327e82843a1c9549f0
diff --git a/htdocs/pdviz/requirements/base.txt b/htdocs/pdviz/requirements/base.txt
deleted file mode 100644
index 38445a0..0000000
--- a/htdocs/pdviz/requirements/base.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Django==1.11.14
-Jinja2==2.10
-Markdown==2.6.11
-MarkupSafe==1.0
-MySQL-python==1.2.5
-PyYAML==3.12
-certifi==2018.4.16
-chardet==3.0.4
-coreapi==2.3.3
-coreschema==0.0.4
-django-braces==1.13.0
-django-crispy-forms==1.7.2
-django-filter==1.1.0
-django-rest-swagger==2.2.0
-djangorestframework==3.8.2
-gdata==2.0.18
-google-api-python-client==1.7.3
-httplib2==0.11.3
-idna==2.7
-itypes==1.1.0
-oauth2client==4.1.2
-openapi-codec==1.3.2
-pyasn1==0.4.3
-pyasn1-modules==0.2.2
-python-ldap==3.1.0
-python-memcached==1.59
-pytz==2018.5
-requests==2.19.1
-rsa==3.4.2
-selenium==3.13.0
-simplejson==3.16.0
-six==1.11.0
-uritemplate==3.0.0
-urllib3==1.23
diff --git a/htdocs/pdviz/urls.py b/htdocs/pdviz/urls.py
deleted file mode 100644
index 34561b7..0000000
--- a/htdocs/pdviz/urls.py
+++ /dev/null
@@ -1,60 +0,0 @@
-"""pdviz URL Configuration
-
-The `urlpatterns` list routes URLs to views. For more information please see:
- https://docs.djangoproject.com/en/1.8/topics/http/urls/
-Examples:
-Function views
- 1. Add an import: from my_app import views
- 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
-Class-based views
- 1. Add an import: from other_app.views import Home
- 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
-Including another URLconf
- 1. Add an import: from blog import urls as blog_urls
- 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls))
-"""
-from django.conf import settings
-from django.conf.urls import include, url
-from django.conf.urls.static import static
-from django.views.decorators.cache import never_cache, cache_page
-from django.contrib import admin
-from django.contrib.auth.views import login
-
-from rest_framework import routers, serializers, viewsets
-from rest_framework_swagger.views import get_swagger_view
-
-
-from .views import *
-from dataviz.views import *
-from dataviz.api import *
-
-swagger_schema_view = get_swagger_view(title='PDViz')
-
-router = routers.DefaultRouter()
-router.register('grants', GrantViewSet, base_name='grants')
-router.register('grants_by_country', GrantsByCountryViewSet, base_name='grants_by_country')
-router.register('donors', DonorViewSet, base_name='donors')
-router.register('countries', CountryViewSet, base_name='countries')
-router.register('donorcategories', DonorCategoryViewSet, base_name='donorcategories')
-router.register('donordepartments', DonorDepartmentViewSet, base_name='donordepartments')
-router.register('sector', SectorViewSet, base_name='sectors')
-router.register('subsector', SubSectorViewSet, base_name='subsectors')
-router.register('methodologies', MethodologyViewSet, base_name='methodologies')
-router.register('themes', ThemeViewSet, base_name='themes')
-
-
-urlpatterns = [
- url(r'^admin/', include(admin.site.urls)),
- url(r'^api/v1/', include(router.urls)),
- url(r'^api/docs/', swagger_schema_view),
- url(r'^login/$', login, name='login'),
- url('^', include('django.contrib.auth.urls')),
- url(r'^$', HomeView.as_view(), name='home'),
- url(r'^global_dashboard/$', cache_page(60*60*12)(GlobalDashboard.as_view()), name='global_dashboard'),
- url(r'^global_dashboard_data/$', cache_page(60*60*12)(GlobalDashboardData.as_view()), name='global_dashboard_data'),
- #url(r'^dataviz/countries_by_region/(?P[-\w]+)/$', CountriesByRegion.as_view(), name='cbg'),
- url(r'^feedback/', include('feedback.urls')),
-]
-
-urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
-urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/htdocs/pdviz/views.py b/htdocs/pdviz/views.py
deleted file mode 100644
index 9cdff56..0000000
--- a/htdocs/pdviz/views.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.http import HttpResponse
-from django.views.generic import TemplateView
-
-from django.contrib import messages
-
-class HomeView(TemplateView):
- template_name='index.html'
-
- def get(self, request, *args, **kwargs):
- #messages.success(self.request, "Hey, I'm Okay.")
- return super(HomeView, self).get(request, *args, **kwargs)
\ No newline at end of file
diff --git a/htdocs/manage.py b/manage.py
similarity index 100%
rename from htdocs/manage.py
rename to manage.py
diff --git a/htdocs/pdviz/__init__.py b/pdviz/__init__.py
similarity index 100%
rename from htdocs/pdviz/__init__.py
rename to pdviz/__init__.py
diff --git a/htdocs/pdviz/context_processors.py b/pdviz/context_processors.py
similarity index 100%
rename from htdocs/pdviz/context_processors.py
rename to pdviz/context_processors.py
diff --git a/htdocs/pdviz/middleware.py b/pdviz/middleware.py
similarity index 91%
rename from htdocs/pdviz/middleware.py
rename to pdviz/middleware.py
index e34a146..3b104e0 100644
--- a/htdocs/pdviz/middleware.py
+++ b/pdviz/middleware.py
@@ -1,7 +1,8 @@
import json
import time
from django.contrib import messages
-
+# TODO: These need to be deleted or revised. They are not valid for Django 2.2.
+# TODO: Update to this? https://gist.github.com/DmytroLitvinov/39d9a1a93a46eb9da1e17d8e73f35e11
class AjaxMessaging(object):
"""
To make django error messages set by django.contrib.messages framework
@@ -49,6 +50,7 @@ def process_response(self, request, response):
response.content = json.dumps(content)
return response
+# TODO: Delete? Copied from https://github.com/timsavage/django-extras
class TimingMiddleware(object):
"""
Appends the X-PROCESSING_TIME_MS header to all responses.
diff --git a/htdocs/pdviz/settings/__init__.py b/pdviz/settings/__init__.py
similarity index 100%
rename from htdocs/pdviz/settings/__init__.py
rename to pdviz/settings/__init__.py
diff --git a/htdocs/pdviz/settings/base.py b/pdviz/settings/base.py
similarity index 68%
rename from htdocs/pdviz/settings/base.py
rename to pdviz/settings/base.py
index 451f7c3..6ffd030 100644
--- a/htdocs/pdviz/settings/base.py
+++ b/pdviz/settings/base.py
@@ -1,32 +1,20 @@
"""
Django settings for pdviz project.
-
-Generated by 'django-admin startproject' using Django 1.8.2.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.8/topics/settings/
-
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/1.8/ref/settings/
"""
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-import os
-import django.conf.global_settings as DEFAULT_SETTINGS
+from os.path import join, dirname, abspath
from django.contrib.messages import constants as message
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-# Quick-start development settings - unsuitable for production
-# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
+BASE_DIR = dirname(dirname(abspath(__file__)))
+PROJECT_DIR = dirname(BASE_DIR)
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'REPLACED_IN_LOCAL_SETTINGS_FILE'
# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = True
+DEBUG = False
-ALLOWED_HOSTS = ["localhost", ".mercycorps.org"]
+ALLOWED_HOSTS = [".mercycorps.org"]
# Application definition
@@ -42,29 +30,26 @@
'rest_framework',
'rest_framework_swagger',
'crispy_forms',
- 'djangocosign',
'dataviz',
- 'feedback',
+ 'social_django',
+ # 'feedback',
)
# to clear cache:
# py manage.py shell
# >>> from django.core.cache import cache
# >>> cache._cache.flush_all()
-MIDDLEWARE_CLASSES = (
+MIDDLEWARE = (
+ 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
- #'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
- #'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.auth.middleware.RemoteUserMiddleware',
- 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
- 'django.middleware.security.SecurityMiddleware',
- 'pdviz.middleware.AjaxMessaging',
- 'pdviz.middleware.TimingMiddleware',
+ # TODO: update or remove custom middleware
+ # 'pdviz.middleware.AjaxMessaging',
+ # 'pdviz.middleware.TimingMiddleware',
)
ROOT_URLCONF = 'pdviz.urls'
@@ -72,7 +57,7 @@
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [BASE_DIR + "/templates/",],
+ 'DIRS': [PROJECT_DIR + "/templates/", BASE_DIR + "/templates/"],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
@@ -85,7 +70,7 @@
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'pdviz.context_processors.google_analytics',
- 'feedback.context_processors.base_context_processor',
+ # 'feedback.context_processors.base_context_processor',
],
},
},
@@ -122,14 +107,13 @@
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
STATICFILES_DIRS = (
- os.path.join(BASE_DIR, "static"),
+ join(BASE_DIR, "static"),
)
STATIC_URL = '/static/'
-# https://docs.djangoproject.com/en/1.9/ref/settings/#std:setting-STATIC_ROOT
# STATIC_ROOT = BASE_DIR + "/static/"
-MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
+MEDIA_ROOT = join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
CRISPY_TEMPLATE_PACK='bootstrap3'
@@ -141,13 +125,12 @@
message.WARNING: 'warning',
message.ERROR: 'danger',}
-# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-LOGIN_REDIRECT_URL
LOGIN_REDIRECT_URL = '/'
AUTHENTICATION_BACKENDS = (
- 'djangocosign.cosign.CosignBackend',
- 'django.contrib.auth.backends.ModelBackend',
- )
+ 'social_core.backends.saml.SAMLAuth',
+ 'django.contrib.auth.backends.ModelBackend',
+)
# Turn on pagination, and make API accessible only to admin users.
diff --git a/htdocs/pdviz/settings/local_example.py b/pdviz/settings/local_example.py
similarity index 100%
rename from htdocs/pdviz/settings/local_example.py
rename to pdviz/settings/local_example.py
diff --git a/htdocs/pdviz/static/502.html b/pdviz/static/502.html
similarity index 100%
rename from htdocs/pdviz/static/502.html
rename to pdviz/static/502.html
diff --git a/htdocs/pdviz/static/admin/css/base.css b/pdviz/static/admin/css/base.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/base.css
rename to pdviz/static/admin/css/base.css
diff --git a/htdocs/pdviz/static/admin/css/changelists.css b/pdviz/static/admin/css/changelists.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/changelists.css
rename to pdviz/static/admin/css/changelists.css
diff --git a/htdocs/pdviz/static/admin/css/dashboard.css b/pdviz/static/admin/css/dashboard.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/dashboard.css
rename to pdviz/static/admin/css/dashboard.css
diff --git a/htdocs/pdviz/static/admin/css/fonts.css b/pdviz/static/admin/css/fonts.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/fonts.css
rename to pdviz/static/admin/css/fonts.css
diff --git a/htdocs/pdviz/static/admin/css/forms.css b/pdviz/static/admin/css/forms.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/forms.css
rename to pdviz/static/admin/css/forms.css
diff --git a/htdocs/pdviz/static/admin/css/login.css b/pdviz/static/admin/css/login.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/login.css
rename to pdviz/static/admin/css/login.css
diff --git a/htdocs/pdviz/static/admin/css/rtl.css b/pdviz/static/admin/css/rtl.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/rtl.css
rename to pdviz/static/admin/css/rtl.css
diff --git a/htdocs/pdviz/static/admin/css/widgets.css b/pdviz/static/admin/css/widgets.css
similarity index 100%
rename from htdocs/pdviz/static/admin/css/widgets.css
rename to pdviz/static/admin/css/widgets.css
diff --git a/htdocs/pdviz/static/admin/fonts/LICENSE.txt b/pdviz/static/admin/fonts/LICENSE.txt
similarity index 100%
rename from htdocs/pdviz/static/admin/fonts/LICENSE.txt
rename to pdviz/static/admin/fonts/LICENSE.txt
diff --git a/htdocs/pdviz/static/admin/fonts/README.txt b/pdviz/static/admin/fonts/README.txt
similarity index 100%
rename from htdocs/pdviz/static/admin/fonts/README.txt
rename to pdviz/static/admin/fonts/README.txt
diff --git a/htdocs/pdviz/static/admin/fonts/Roboto-Bold-webfont.woff b/pdviz/static/admin/fonts/Roboto-Bold-webfont.woff
similarity index 100%
rename from htdocs/pdviz/static/admin/fonts/Roboto-Bold-webfont.woff
rename to pdviz/static/admin/fonts/Roboto-Bold-webfont.woff
diff --git a/htdocs/pdviz/static/admin/fonts/Roboto-Light-webfont.woff b/pdviz/static/admin/fonts/Roboto-Light-webfont.woff
similarity index 100%
rename from htdocs/pdviz/static/admin/fonts/Roboto-Light-webfont.woff
rename to pdviz/static/admin/fonts/Roboto-Light-webfont.woff
diff --git a/htdocs/pdviz/static/admin/fonts/Roboto-Regular-webfont.woff b/pdviz/static/admin/fonts/Roboto-Regular-webfont.woff
similarity index 100%
rename from htdocs/pdviz/static/admin/fonts/Roboto-Regular-webfont.woff
rename to pdviz/static/admin/fonts/Roboto-Regular-webfont.woff
diff --git a/htdocs/pdviz/static/admin/img/LICENSE b/pdviz/static/admin/img/LICENSE
similarity index 100%
rename from htdocs/pdviz/static/admin/img/LICENSE
rename to pdviz/static/admin/img/LICENSE
diff --git a/htdocs/pdviz/static/admin/img/README.txt b/pdviz/static/admin/img/README.txt
similarity index 100%
rename from htdocs/pdviz/static/admin/img/README.txt
rename to pdviz/static/admin/img/README.txt
diff --git a/htdocs/pdviz/static/admin/img/calendar-icons.svg b/pdviz/static/admin/img/calendar-icons.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/calendar-icons.svg
rename to pdviz/static/admin/img/calendar-icons.svg
diff --git a/htdocs/pdviz/static/admin/img/gis/move_vertex_off.svg b/pdviz/static/admin/img/gis/move_vertex_off.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/gis/move_vertex_off.svg
rename to pdviz/static/admin/img/gis/move_vertex_off.svg
diff --git a/htdocs/pdviz/static/admin/img/gis/move_vertex_on.svg b/pdviz/static/admin/img/gis/move_vertex_on.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/gis/move_vertex_on.svg
rename to pdviz/static/admin/img/gis/move_vertex_on.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-addlink.svg b/pdviz/static/admin/img/icon-addlink.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-addlink.svg
rename to pdviz/static/admin/img/icon-addlink.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-alert.svg b/pdviz/static/admin/img/icon-alert.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-alert.svg
rename to pdviz/static/admin/img/icon-alert.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-calendar.svg b/pdviz/static/admin/img/icon-calendar.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-calendar.svg
rename to pdviz/static/admin/img/icon-calendar.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-changelink.svg b/pdviz/static/admin/img/icon-changelink.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-changelink.svg
rename to pdviz/static/admin/img/icon-changelink.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-clock.svg b/pdviz/static/admin/img/icon-clock.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-clock.svg
rename to pdviz/static/admin/img/icon-clock.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-deletelink.svg b/pdviz/static/admin/img/icon-deletelink.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-deletelink.svg
rename to pdviz/static/admin/img/icon-deletelink.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-no.svg b/pdviz/static/admin/img/icon-no.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-no.svg
rename to pdviz/static/admin/img/icon-no.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-unknown-alt.svg b/pdviz/static/admin/img/icon-unknown-alt.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-unknown-alt.svg
rename to pdviz/static/admin/img/icon-unknown-alt.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-unknown.svg b/pdviz/static/admin/img/icon-unknown.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-unknown.svg
rename to pdviz/static/admin/img/icon-unknown.svg
diff --git a/htdocs/pdviz/static/admin/img/icon-yes.svg b/pdviz/static/admin/img/icon-yes.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/icon-yes.svg
rename to pdviz/static/admin/img/icon-yes.svg
diff --git a/htdocs/pdviz/static/admin/img/inline-delete.svg b/pdviz/static/admin/img/inline-delete.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/inline-delete.svg
rename to pdviz/static/admin/img/inline-delete.svg
diff --git a/htdocs/pdviz/static/admin/img/search.svg b/pdviz/static/admin/img/search.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/search.svg
rename to pdviz/static/admin/img/search.svg
diff --git a/htdocs/pdviz/static/admin/img/selector-icons.svg b/pdviz/static/admin/img/selector-icons.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/selector-icons.svg
rename to pdviz/static/admin/img/selector-icons.svg
diff --git a/htdocs/pdviz/static/admin/img/sorting-icons.svg b/pdviz/static/admin/img/sorting-icons.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/sorting-icons.svg
rename to pdviz/static/admin/img/sorting-icons.svg
diff --git a/htdocs/pdviz/static/admin/img/tooltag-add.svg b/pdviz/static/admin/img/tooltag-add.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/tooltag-add.svg
rename to pdviz/static/admin/img/tooltag-add.svg
diff --git a/htdocs/pdviz/static/admin/img/tooltag-arrowright.svg b/pdviz/static/admin/img/tooltag-arrowright.svg
similarity index 100%
rename from htdocs/pdviz/static/admin/img/tooltag-arrowright.svg
rename to pdviz/static/admin/img/tooltag-arrowright.svg
diff --git a/htdocs/pdviz/static/admin/js/SelectBox.js b/pdviz/static/admin/js/SelectBox.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/SelectBox.js
rename to pdviz/static/admin/js/SelectBox.js
diff --git a/htdocs/pdviz/static/admin/js/SelectFilter2.js b/pdviz/static/admin/js/SelectFilter2.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/SelectFilter2.js
rename to pdviz/static/admin/js/SelectFilter2.js
diff --git a/htdocs/pdviz/static/admin/js/actions.js b/pdviz/static/admin/js/actions.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/actions.js
rename to pdviz/static/admin/js/actions.js
diff --git a/htdocs/pdviz/static/admin/js/actions.min.js b/pdviz/static/admin/js/actions.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/actions.min.js
rename to pdviz/static/admin/js/actions.min.js
diff --git a/htdocs/pdviz/static/admin/js/admin/DateTimeShortcuts.js b/pdviz/static/admin/js/admin/DateTimeShortcuts.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/admin/DateTimeShortcuts.js
rename to pdviz/static/admin/js/admin/DateTimeShortcuts.js
diff --git a/htdocs/pdviz/static/admin/js/admin/RelatedObjectLookups.js b/pdviz/static/admin/js/admin/RelatedObjectLookups.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/admin/RelatedObjectLookups.js
rename to pdviz/static/admin/js/admin/RelatedObjectLookups.js
diff --git a/htdocs/pdviz/static/admin/js/calendar.js b/pdviz/static/admin/js/calendar.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/calendar.js
rename to pdviz/static/admin/js/calendar.js
diff --git a/htdocs/pdviz/static/admin/js/cancel.js b/pdviz/static/admin/js/cancel.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/cancel.js
rename to pdviz/static/admin/js/cancel.js
diff --git a/htdocs/pdviz/static/admin/js/change_form.js b/pdviz/static/admin/js/change_form.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/change_form.js
rename to pdviz/static/admin/js/change_form.js
diff --git a/htdocs/pdviz/static/admin/js/collapse.js b/pdviz/static/admin/js/collapse.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/collapse.js
rename to pdviz/static/admin/js/collapse.js
diff --git a/htdocs/pdviz/static/admin/js/collapse.min.js b/pdviz/static/admin/js/collapse.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/collapse.min.js
rename to pdviz/static/admin/js/collapse.min.js
diff --git a/htdocs/pdviz/static/admin/js/core.js b/pdviz/static/admin/js/core.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/core.js
rename to pdviz/static/admin/js/core.js
diff --git a/htdocs/pdviz/static/admin/js/inlines.js b/pdviz/static/admin/js/inlines.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/inlines.js
rename to pdviz/static/admin/js/inlines.js
diff --git a/htdocs/pdviz/static/admin/js/inlines.min.js b/pdviz/static/admin/js/inlines.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/inlines.min.js
rename to pdviz/static/admin/js/inlines.min.js
diff --git a/htdocs/pdviz/static/admin/js/jquery.init.js b/pdviz/static/admin/js/jquery.init.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/jquery.init.js
rename to pdviz/static/admin/js/jquery.init.js
diff --git a/htdocs/pdviz/static/admin/js/popup_response.js b/pdviz/static/admin/js/popup_response.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/popup_response.js
rename to pdviz/static/admin/js/popup_response.js
diff --git a/htdocs/pdviz/static/admin/js/prepopulate.js b/pdviz/static/admin/js/prepopulate.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/prepopulate.js
rename to pdviz/static/admin/js/prepopulate.js
diff --git a/htdocs/pdviz/static/admin/js/prepopulate.min.js b/pdviz/static/admin/js/prepopulate.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/prepopulate.min.js
rename to pdviz/static/admin/js/prepopulate.min.js
diff --git a/htdocs/pdviz/static/admin/js/prepopulate_init.js b/pdviz/static/admin/js/prepopulate_init.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/prepopulate_init.js
rename to pdviz/static/admin/js/prepopulate_init.js
diff --git a/htdocs/pdviz/static/admin/js/timeparse.js b/pdviz/static/admin/js/timeparse.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/timeparse.js
rename to pdviz/static/admin/js/timeparse.js
diff --git a/htdocs/pdviz/static/admin/js/urlify.js b/pdviz/static/admin/js/urlify.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/urlify.js
rename to pdviz/static/admin/js/urlify.js
diff --git a/htdocs/pdviz/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt b/pdviz/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
rename to pdviz/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
diff --git a/htdocs/pdviz/static/admin/js/vendor/jquery/jquery.js b/pdviz/static/admin/js/vendor/jquery/jquery.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/jquery/jquery.js
rename to pdviz/static/admin/js/vendor/jquery/jquery.js
diff --git a/htdocs/pdviz/static/admin/js/vendor/jquery/jquery.min.js b/pdviz/static/admin/js/vendor/jquery/jquery.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/jquery/jquery.min.js
rename to pdviz/static/admin/js/vendor/jquery/jquery.min.js
diff --git a/htdocs/pdviz/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt b/pdviz/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
rename to pdviz/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
diff --git a/htdocs/pdviz/static/admin/js/vendor/xregexp/xregexp.js b/pdviz/static/admin/js/vendor/xregexp/xregexp.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/xregexp/xregexp.js
rename to pdviz/static/admin/js/vendor/xregexp/xregexp.js
diff --git a/htdocs/pdviz/static/admin/js/vendor/xregexp/xregexp.min.js b/pdviz/static/admin/js/vendor/xregexp/xregexp.min.js
similarity index 100%
rename from htdocs/pdviz/static/admin/js/vendor/xregexp/xregexp.min.js
rename to pdviz/static/admin/js/vendor/xregexp/xregexp.min.js
diff --git a/htdocs/pdviz/static/css/app.css b/pdviz/static/css/app.css
similarity index 100%
rename from htdocs/pdviz/static/css/app.css
rename to pdviz/static/css/app.css
diff --git a/htdocs/pdviz/static/css/bootstrap.min.css b/pdviz/static/css/bootstrap.min.css
similarity index 100%
rename from htdocs/pdviz/static/css/bootstrap.min.css
rename to pdviz/static/css/bootstrap.min.css
diff --git a/htdocs/pdviz/static/css/datatables.min.css b/pdviz/static/css/datatables.min.css
similarity index 100%
rename from htdocs/pdviz/static/css/datatables.min.css
rename to pdviz/static/css/datatables.min.css
diff --git a/htdocs/pdviz/static/css/highcharts.css_bak b/pdviz/static/css/highcharts.css_bak
similarity index 100%
rename from htdocs/pdviz/static/css/highcharts.css_bak
rename to pdviz/static/css/highcharts.css_bak
diff --git a/htdocs/pdviz/static/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/pdviz/static/css/images/ui-bg_flat_0_aaaaaa_40x100.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_flat_0_aaaaaa_40x100.png
rename to pdviz/static/css/images/ui-bg_flat_0_aaaaaa_40x100.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_flat_55_fbec88_40x100.png b/pdviz/static/css/images/ui-bg_flat_55_fbec88_40x100.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_flat_55_fbec88_40x100.png
rename to pdviz/static/css/images/ui-bg_flat_55_fbec88_40x100.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_glass_75_d0e5f5_1x400.png b/pdviz/static/css/images/ui-bg_glass_75_d0e5f5_1x400.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_glass_75_d0e5f5_1x400.png
rename to pdviz/static/css/images/ui-bg_glass_75_d0e5f5_1x400.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_glass_85_dfeffc_1x400.png b/pdviz/static/css/images/ui-bg_glass_85_dfeffc_1x400.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_glass_85_dfeffc_1x400.png
rename to pdviz/static/css/images/ui-bg_glass_85_dfeffc_1x400.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_glass_95_fef1ec_1x400.png b/pdviz/static/css/images/ui-bg_glass_95_fef1ec_1x400.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_glass_95_fef1ec_1x400.png
rename to pdviz/static/css/images/ui-bg_glass_95_fef1ec_1x400.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/pdviz/static/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
rename to pdviz/static/css/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png b/pdviz/static/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
rename to pdviz/static/css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
diff --git a/htdocs/pdviz/static/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/pdviz/static/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
rename to pdviz/static/css/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_217bc0_256x240.png b/pdviz/static/css/images/ui-icons_217bc0_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_217bc0_256x240.png
rename to pdviz/static/css/images/ui-icons_217bc0_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_2e83ff_256x240.png b/pdviz/static/css/images/ui-icons_2e83ff_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_2e83ff_256x240.png
rename to pdviz/static/css/images/ui-icons_2e83ff_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_469bdd_256x240.png b/pdviz/static/css/images/ui-icons_469bdd_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_469bdd_256x240.png
rename to pdviz/static/css/images/ui-icons_469bdd_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_6da8d5_256x240.png b/pdviz/static/css/images/ui-icons_6da8d5_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_6da8d5_256x240.png
rename to pdviz/static/css/images/ui-icons_6da8d5_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_cd0a0a_256x240.png b/pdviz/static/css/images/ui-icons_cd0a0a_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_cd0a0a_256x240.png
rename to pdviz/static/css/images/ui-icons_cd0a0a_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_d8e7f3_256x240.png b/pdviz/static/css/images/ui-icons_d8e7f3_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_d8e7f3_256x240.png
rename to pdviz/static/css/images/ui-icons_d8e7f3_256x240.png
diff --git a/htdocs/pdviz/static/css/images/ui-icons_f9bd01_256x240.png b/pdviz/static/css/images/ui-icons_f9bd01_256x240.png
similarity index 100%
rename from htdocs/pdviz/static/css/images/ui-icons_f9bd01_256x240.png
rename to pdviz/static/css/images/ui-icons_f9bd01_256x240.png
diff --git a/htdocs/pdviz/static/css/jquery-ui.min.css b/pdviz/static/css/jquery-ui.min.css
similarity index 100%
rename from htdocs/pdviz/static/css/jquery-ui.min.css
rename to pdviz/static/css/jquery-ui.min.css
diff --git a/htdocs/pdviz/static/css/select2-spinner.gif b/pdviz/static/css/select2-spinner.gif
similarity index 100%
rename from htdocs/pdviz/static/css/select2-spinner.gif
rename to pdviz/static/css/select2-spinner.gif
diff --git a/htdocs/pdviz/static/css/select2.css b/pdviz/static/css/select2.css
similarity index 100%
rename from htdocs/pdviz/static/css/select2.css
rename to pdviz/static/css/select2.css
diff --git a/htdocs/pdviz/static/css/select2.png b/pdviz/static/css/select2.png
similarity index 100%
rename from htdocs/pdviz/static/css/select2.png
rename to pdviz/static/css/select2.png
diff --git a/htdocs/pdviz/static/css/select2x2.png b/pdviz/static/css/select2x2.png
similarity index 100%
rename from htdocs/pdviz/static/css/select2x2.png
rename to pdviz/static/css/select2x2.png
diff --git a/htdocs/pdviz/static/feedback/css/app_feedback.css b/pdviz/static/feedback/css/app_feedback.css
similarity index 100%
rename from htdocs/pdviz/static/feedback/css/app_feedback.css
rename to pdviz/static/feedback/css/app_feedback.css
diff --git a/htdocs/pdviz/static/fonts/glyphicons-halflings-regular.eot b/pdviz/static/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from htdocs/pdviz/static/fonts/glyphicons-halflings-regular.eot
rename to pdviz/static/fonts/glyphicons-halflings-regular.eot
diff --git a/htdocs/pdviz/static/fonts/glyphicons-halflings-regular.svg b/pdviz/static/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from htdocs/pdviz/static/fonts/glyphicons-halflings-regular.svg
rename to pdviz/static/fonts/glyphicons-halflings-regular.svg
diff --git a/htdocs/pdviz/static/fonts/glyphicons-halflings-regular.ttf b/pdviz/static/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from htdocs/pdviz/static/fonts/glyphicons-halflings-regular.ttf
rename to pdviz/static/fonts/glyphicons-halflings-regular.ttf
diff --git a/htdocs/pdviz/static/fonts/glyphicons-halflings-regular.woff b/pdviz/static/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from htdocs/pdviz/static/fonts/glyphicons-halflings-regular.woff
rename to pdviz/static/fonts/glyphicons-halflings-regular.woff
diff --git a/htdocs/pdviz/static/fonts/glyphicons-halflings-regular.woff2 b/pdviz/static/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from htdocs/pdviz/static/fonts/glyphicons-halflings-regular.woff2
rename to pdviz/static/fonts/glyphicons-halflings-regular.woff2
diff --git a/htdocs/pdviz/static/images/ajax-loader.gif b/pdviz/static/images/ajax-loader.gif
similarity index 100%
rename from htdocs/pdviz/static/images/ajax-loader.gif
rename to pdviz/static/images/ajax-loader.gif
diff --git a/htdocs/pdviz/static/images/favicon.png b/pdviz/static/images/favicon.png
similarity index 100%
rename from htdocs/pdviz/static/images/favicon.png
rename to pdviz/static/images/favicon.png
diff --git a/htdocs/pdviz/static/images/mclogo.png b/pdviz/static/images/mclogo.png
similarity index 100%
rename from htdocs/pdviz/static/images/mclogo.png
rename to pdviz/static/images/mclogo.png
diff --git a/htdocs/pdviz/static/js/app.js b/pdviz/static/js/app.js
similarity index 100%
rename from htdocs/pdviz/static/js/app.js
rename to pdviz/static/js/app.js
diff --git a/htdocs/pdviz/static/js/bootstrap.min.js b/pdviz/static/js/bootstrap.min.js
similarity index 100%
rename from htdocs/pdviz/static/js/bootstrap.min.js
rename to pdviz/static/js/bootstrap.min.js
diff --git a/htdocs/pdviz/static/js/datatables.min.js b/pdviz/static/js/datatables.min.js
similarity index 100%
rename from htdocs/pdviz/static/js/datatables.min.js
rename to pdviz/static/js/datatables.min.js
diff --git a/htdocs/pdviz/static/js/drilldown.js b/pdviz/static/js/drilldown.js
similarity index 100%
rename from htdocs/pdviz/static/js/drilldown.js
rename to pdviz/static/js/drilldown.js
diff --git a/htdocs/pdviz/static/js/exporting.js b/pdviz/static/js/exporting.js
similarity index 100%
rename from htdocs/pdviz/static/js/exporting.js
rename to pdviz/static/js/exporting.js
diff --git a/htdocs/pdviz/static/js/grouped-categories.js b/pdviz/static/js/grouped-categories.js
similarity index 100%
rename from htdocs/pdviz/static/js/grouped-categories.js
rename to pdviz/static/js/grouped-categories.js
diff --git a/htdocs/pdviz/static/js/highcharts.js b/pdviz/static/js/highcharts.js
similarity index 100%
rename from htdocs/pdviz/static/js/highcharts.js
rename to pdviz/static/js/highcharts.js
diff --git a/htdocs/pdviz/static/js/jquery-3.2.1.min.js b/pdviz/static/js/jquery-3.2.1.min.js
similarity index 100%
rename from htdocs/pdviz/static/js/jquery-3.2.1.min.js
rename to pdviz/static/js/jquery-3.2.1.min.js
diff --git a/htdocs/pdviz/static/js/jquery-ui.min.js b/pdviz/static/js/jquery-ui.min.js
similarity index 100%
rename from htdocs/pdviz/static/js/jquery-ui.min.js
rename to pdviz/static/js/jquery-ui.min.js
diff --git a/htdocs/pdviz/static/js/select2.min.js b/pdviz/static/js/select2.min.js
similarity index 100%
rename from htdocs/pdviz/static/js/select2.min.js
rename to pdviz/static/js/select2.min.js
diff --git a/htdocs/pdviz/static/js/underscore-min.js b/pdviz/static/js/underscore-min.js
similarity index 100%
rename from htdocs/pdviz/static/js/underscore-min.js
rename to pdviz/static/js/underscore-min.js
diff --git a/htdocs/pdviz/static/rest_framework/css/bootstrap-tweaks.css b/pdviz/static/rest_framework/css/bootstrap-tweaks.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/css/bootstrap-tweaks.css
rename to pdviz/static/rest_framework/css/bootstrap-tweaks.css
diff --git a/htdocs/pdviz/static/rest_framework/css/bootstrap.min.css b/pdviz/static/rest_framework/css/bootstrap.min.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/css/bootstrap.min.css
rename to pdviz/static/rest_framework/css/bootstrap.min.css
diff --git a/htdocs/pdviz/static/rest_framework/css/default.css b/pdviz/static/rest_framework/css/default.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/css/default.css
rename to pdviz/static/rest_framework/css/default.css
diff --git a/htdocs/pdviz/static/rest_framework/css/prettify.css b/pdviz/static/rest_framework/css/prettify.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/css/prettify.css
rename to pdviz/static/rest_framework/css/prettify.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/base.css b/pdviz/static/rest_framework/docs/css/base.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/base.css
rename to pdviz/static/rest_framework/docs/css/base.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/bootstrap-theme.min.css b/pdviz/static/rest_framework/docs/css/bootstrap-theme.min.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/bootstrap-theme.min.css
rename to pdviz/static/rest_framework/docs/css/bootstrap-theme.min.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/bootstrap.min.css b/pdviz/static/rest_framework/docs/css/bootstrap.min.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/bootstrap.min.css
rename to pdviz/static/rest_framework/docs/css/bootstrap.min.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/font-awesome-4.0.3.css b/pdviz/static/rest_framework/docs/css/font-awesome-4.0.3.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/font-awesome-4.0.3.css
rename to pdviz/static/rest_framework/docs/css/font-awesome-4.0.3.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/highlight.css b/pdviz/static/rest_framework/docs/css/highlight.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/highlight.css
rename to pdviz/static/rest_framework/docs/css/highlight.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/css/jquery.json-view.min.css b/pdviz/static/rest_framework/docs/css/jquery.json-view.min.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/css/jquery.json-view.min.css
rename to pdviz/static/rest_framework/docs/css/jquery.json-view.min.css
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.eot b/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.eot
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.eot
rename to pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.eot
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.svg b/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.svg
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.svg
rename to pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.svg
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.ttf b/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.ttf
rename to pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.ttf
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.woff b/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.woff
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.woff
rename to pdviz/static/rest_framework/docs/fonts/fontawesome-webfont.woff
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot b/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot
rename to pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.eot
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.svg b/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.svg
rename to pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.svg
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf b/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf
rename to pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.ttf
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff b/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff
rename to pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff
diff --git a/htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2 b/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2
rename to pdviz/static/rest_framework/docs/fonts/glyphicons-halflings-regular.woff2
diff --git a/htdocs/pdviz/static/rest_framework/docs/img/favicon.ico b/pdviz/static/rest_framework/docs/img/favicon.ico
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/img/favicon.ico
rename to pdviz/static/rest_framework/docs/img/favicon.ico
diff --git a/htdocs/pdviz/static/rest_framework/docs/img/grid.png b/pdviz/static/rest_framework/docs/img/grid.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/img/grid.png
rename to pdviz/static/rest_framework/docs/img/grid.png
diff --git a/htdocs/pdviz/static/rest_framework/docs/js/api.js b/pdviz/static/rest_framework/docs/js/api.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/js/api.js
rename to pdviz/static/rest_framework/docs/js/api.js
diff --git a/htdocs/pdviz/static/rest_framework/docs/js/bootstrap.min.js b/pdviz/static/rest_framework/docs/js/bootstrap.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/js/bootstrap.min.js
rename to pdviz/static/rest_framework/docs/js/bootstrap.min.js
diff --git a/htdocs/pdviz/static/rest_framework/docs/js/highlight.pack.js b/pdviz/static/rest_framework/docs/js/highlight.pack.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/js/highlight.pack.js
rename to pdviz/static/rest_framework/docs/js/highlight.pack.js
diff --git a/htdocs/pdviz/static/rest_framework/docs/js/jquery-1.10.2.min.js b/pdviz/static/rest_framework/docs/js/jquery-1.10.2.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/js/jquery-1.10.2.min.js
rename to pdviz/static/rest_framework/docs/js/jquery-1.10.2.min.js
diff --git a/htdocs/pdviz/static/rest_framework/docs/js/jquery.json-view.min.js b/pdviz/static/rest_framework/docs/js/jquery.json-view.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/docs/js/jquery.json-view.min.js
rename to pdviz/static/rest_framework/docs/js/jquery.json-view.min.js
diff --git a/htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.eot b/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.eot
rename to pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.eot
diff --git a/htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.svg b/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.svg
rename to pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.svg
diff --git a/htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.ttf b/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
rename to pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
diff --git a/htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff b/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff
rename to pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff
diff --git a/htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 b/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
rename to pdviz/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
diff --git a/htdocs/pdviz/static/rest_framework/img/glyphicons-halflings-white.png b/pdviz/static/rest_framework/img/glyphicons-halflings-white.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/img/glyphicons-halflings-white.png
rename to pdviz/static/rest_framework/img/glyphicons-halflings-white.png
diff --git a/htdocs/pdviz/static/rest_framework/img/glyphicons-halflings.png b/pdviz/static/rest_framework/img/glyphicons-halflings.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/img/glyphicons-halflings.png
rename to pdviz/static/rest_framework/img/glyphicons-halflings.png
diff --git a/htdocs/pdviz/static/rest_framework/img/grid.png b/pdviz/static/rest_framework/img/grid.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/img/grid.png
rename to pdviz/static/rest_framework/img/grid.png
diff --git a/htdocs/pdviz/static/rest_framework/js/ajax-form.js b/pdviz/static/rest_framework/js/ajax-form.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/ajax-form.js
rename to pdviz/static/rest_framework/js/ajax-form.js
diff --git a/htdocs/pdviz/static/rest_framework/js/bootstrap.min.js b/pdviz/static/rest_framework/js/bootstrap.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/bootstrap.min.js
rename to pdviz/static/rest_framework/js/bootstrap.min.js
diff --git a/htdocs/pdviz/static/rest_framework/js/coreapi-0.1.1.js b/pdviz/static/rest_framework/js/coreapi-0.1.1.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/coreapi-0.1.1.js
rename to pdviz/static/rest_framework/js/coreapi-0.1.1.js
diff --git a/htdocs/pdviz/static/rest_framework/js/csrf.js b/pdviz/static/rest_framework/js/csrf.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/csrf.js
rename to pdviz/static/rest_framework/js/csrf.js
diff --git a/htdocs/pdviz/static/rest_framework/js/default.js b/pdviz/static/rest_framework/js/default.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/default.js
rename to pdviz/static/rest_framework/js/default.js
diff --git a/htdocs/pdviz/static/rest_framework/js/jquery-1.12.4.min.js b/pdviz/static/rest_framework/js/jquery-1.12.4.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/jquery-1.12.4.min.js
rename to pdviz/static/rest_framework/js/jquery-1.12.4.min.js
diff --git a/htdocs/pdviz/static/rest_framework/js/prettify-min.js b/pdviz/static/rest_framework/js/prettify-min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework/js/prettify-min.js
rename to pdviz/static/rest_framework/js/prettify-min.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/css/print.css b/pdviz/static/rest_framework_swagger/css/print.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/css/print.css
rename to pdviz/static/rest_framework_swagger/css/print.css
diff --git a/htdocs/pdviz/static/rest_framework_swagger/css/reset.css b/pdviz/static/rest_framework_swagger/css/reset.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/css/reset.css
rename to pdviz/static/rest_framework_swagger/css/reset.css
diff --git a/htdocs/pdviz/static/rest_framework_swagger/css/screen.css b/pdviz/static/rest_framework_swagger/css/screen.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/css/screen.css
rename to pdviz/static/rest_framework_swagger/css/screen.css
diff --git a/htdocs/pdviz/static/rest_framework_swagger/css/typography.css b/pdviz/static/rest_framework_swagger/css/typography.css
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/css/typography.css
rename to pdviz/static/rest_framework_swagger/css/typography.css
diff --git a/htdocs/pdviz/static/rest_framework_swagger/fonts/DroidSans-Bold.ttf b/pdviz/static/rest_framework_swagger/fonts/DroidSans-Bold.ttf
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/fonts/DroidSans-Bold.ttf
rename to pdviz/static/rest_framework_swagger/fonts/DroidSans-Bold.ttf
diff --git a/htdocs/pdviz/static/rest_framework_swagger/fonts/DroidSans.ttf b/pdviz/static/rest_framework_swagger/fonts/DroidSans.ttf
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/fonts/DroidSans.ttf
rename to pdviz/static/rest_framework_swagger/fonts/DroidSans.ttf
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/collapse.gif b/pdviz/static/rest_framework_swagger/images/collapse.gif
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/collapse.gif
rename to pdviz/static/rest_framework_swagger/images/collapse.gif
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/expand.gif b/pdviz/static/rest_framework_swagger/images/expand.gif
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/expand.gif
rename to pdviz/static/rest_framework_swagger/images/expand.gif
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/explorer_icons.png b/pdviz/static/rest_framework_swagger/images/explorer_icons.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/explorer_icons.png
rename to pdviz/static/rest_framework_swagger/images/explorer_icons.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/favicon-16x16.png b/pdviz/static/rest_framework_swagger/images/favicon-16x16.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/favicon-16x16.png
rename to pdviz/static/rest_framework_swagger/images/favicon-16x16.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/favicon-32x32.png b/pdviz/static/rest_framework_swagger/images/favicon-32x32.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/favicon-32x32.png
rename to pdviz/static/rest_framework_swagger/images/favicon-32x32.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/favicon.ico b/pdviz/static/rest_framework_swagger/images/favicon.ico
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/favicon.ico
rename to pdviz/static/rest_framework_swagger/images/favicon.ico
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/logo_small.png b/pdviz/static/rest_framework_swagger/images/logo_small.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/logo_small.png
rename to pdviz/static/rest_framework_swagger/images/logo_small.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/pet_store_api.png b/pdviz/static/rest_framework_swagger/images/pet_store_api.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/pet_store_api.png
rename to pdviz/static/rest_framework_swagger/images/pet_store_api.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/throbber.gif b/pdviz/static/rest_framework_swagger/images/throbber.gif
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/throbber.gif
rename to pdviz/static/rest_framework_swagger/images/throbber.gif
diff --git a/htdocs/pdviz/static/rest_framework_swagger/images/wordnik_api.png b/pdviz/static/rest_framework_swagger/images/wordnik_api.png
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/images/wordnik_api.png
rename to pdviz/static/rest_framework_swagger/images/wordnik_api.png
diff --git a/htdocs/pdviz/static/rest_framework_swagger/init.js b/pdviz/static/rest_framework_swagger/init.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/init.js
rename to pdviz/static/rest_framework_swagger/init.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/en.js b/pdviz/static/rest_framework_swagger/lang/en.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/en.js
rename to pdviz/static/rest_framework_swagger/lang/en.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/es.js b/pdviz/static/rest_framework_swagger/lang/es.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/es.js
rename to pdviz/static/rest_framework_swagger/lang/es.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/fr.js b/pdviz/static/rest_framework_swagger/lang/fr.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/fr.js
rename to pdviz/static/rest_framework_swagger/lang/fr.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/geo.js b/pdviz/static/rest_framework_swagger/lang/geo.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/geo.js
rename to pdviz/static/rest_framework_swagger/lang/geo.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/it.js b/pdviz/static/rest_framework_swagger/lang/it.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/it.js
rename to pdviz/static/rest_framework_swagger/lang/it.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/ja.js b/pdviz/static/rest_framework_swagger/lang/ja.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/ja.js
rename to pdviz/static/rest_framework_swagger/lang/ja.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/ko-kr.js b/pdviz/static/rest_framework_swagger/lang/ko-kr.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/ko-kr.js
rename to pdviz/static/rest_framework_swagger/lang/ko-kr.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/pl.js b/pdviz/static/rest_framework_swagger/lang/pl.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/pl.js
rename to pdviz/static/rest_framework_swagger/lang/pl.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/pt.js b/pdviz/static/rest_framework_swagger/lang/pt.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/pt.js
rename to pdviz/static/rest_framework_swagger/lang/pt.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/ru.js b/pdviz/static/rest_framework_swagger/lang/ru.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/ru.js
rename to pdviz/static/rest_framework_swagger/lang/ru.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/tr.js b/pdviz/static/rest_framework_swagger/lang/tr.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/tr.js
rename to pdviz/static/rest_framework_swagger/lang/tr.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/translator.js b/pdviz/static/rest_framework_swagger/lang/translator.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/translator.js
rename to pdviz/static/rest_framework_swagger/lang/translator.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/lang/zh-cn.js b/pdviz/static/rest_framework_swagger/lang/zh-cn.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/lang/zh-cn.js
rename to pdviz/static/rest_framework_swagger/lang/zh-cn.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/o2c.html b/pdviz/static/rest_framework_swagger/o2c.html
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/o2c.html
rename to pdviz/static/rest_framework_swagger/o2c.html
diff --git a/htdocs/pdviz/static/rest_framework_swagger/swagger-ui.js b/pdviz/static/rest_framework_swagger/swagger-ui.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/swagger-ui.js
rename to pdviz/static/rest_framework_swagger/swagger-ui.js
diff --git a/htdocs/pdviz/static/rest_framework_swagger/swagger-ui.min.js b/pdviz/static/rest_framework_swagger/swagger-ui.min.js
similarity index 100%
rename from htdocs/pdviz/static/rest_framework_swagger/swagger-ui.min.js
rename to pdviz/static/rest_framework_swagger/swagger-ui.min.js
diff --git a/htdocs/pdviz/static/robots.txt b/pdviz/static/robots.txt
similarity index 100%
rename from htdocs/pdviz/static/robots.txt
rename to pdviz/static/robots.txt
diff --git a/pdviz/static/styles.css b/pdviz/static/styles.css
new file mode 100644
index 0000000..efa0723
--- /dev/null
+++ b/pdviz/static/styles.css
@@ -0,0 +1,49 @@
+.page-title {
+ margin-top: 3em;
+}
+
+.login {
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 576px;
+
+}
+.login .page-title {
+ margin-bottom: 3em;
+ }
+
+.login__option {
+ margin-bottom: 2em;
+ padding: 1em;
+}
+
+.login__option.btn {
+ white-space: inherit;
+
+}
+.login__help {
+ margin-top: 3em;
+}
+
+.btn-lg {
+ font-size: 1.25rem;
+ line-height: 1.5;
+ border-radius: 4px;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+}
+
+.btn-info {
+ color: #fff;
+ background-color: #00a49f;
+ border-color: #00a49f;
+}
+
+.login .btn-neutral {
+ color: #212429;
+ background-color: #ebedf0;
+ border-color: #ebedf0;
+}
\ No newline at end of file
diff --git a/htdocs/pdviz/templates/base.html b/pdviz/templates/pdviz/base.html
similarity index 96%
rename from htdocs/pdviz/templates/base.html
rename to pdviz/templates/pdviz/base.html
index 06d0746..b5987e3 100644
--- a/htdocs/pdviz/templates/base.html
+++ b/pdviz/templates/pdviz/base.html
@@ -140,14 +140,14 @@
Mercy Corps {% now "Y" %}
-
- Feedback
-
+{# #}
+{# Feedback#}
+{# #}
{% if GOOGLE_ANALYTICS_PROPERTY_ID %}
- {% include "google_analytics.html" %}
+ {% include "pdviz/google_analytics.html" %}
{% endif %}
diff --git a/htdocs/pdviz/templates/google_analytics.html b/pdviz/templates/pdviz/google_analytics.html
similarity index 100%
rename from htdocs/pdviz/templates/google_analytics.html
rename to pdviz/templates/pdviz/google_analytics.html
diff --git a/htdocs/pdviz/templates/index.html b/pdviz/templates/pdviz/index.html
similarity index 67%
rename from htdocs/pdviz/templates/index.html
rename to pdviz/templates/pdviz/index.html
index 4fce775..40357b4 100644
--- a/htdocs/pdviz/templates/index.html
+++ b/pdviz/templates/pdviz/index.html
@@ -1,4 +1,4 @@
-{% extends 'base.html' %}
+{% extends 'pdviz/base.html' %}
{% load staticfiles %}
{% block content %}
@@ -10,8 +10,9 @@
About PDVIZ
The purpose of this tool is to enable RPDs and other proposal development decision-makers to plan better and more strategically around which proposal development opportunities to pursue.
-
- PDViz is an internally developed tool and further development of it will mostly depend on users feedback. To provide feedback, please click on the "Feedback" link at the bottom right corner of the page.
-
+{# TODO: add info on how to get help#}
+{#
#}
+{# PDViz is an internally developed tool and further development of it will mostly depend on users feedback. To provide feedback, please click on the "Feedback" link at the bottom right corner of the page.#}
+{#
#}
{% endblock content %}
diff --git a/pdviz/urls.py b/pdviz/urls.py
new file mode 100644
index 0000000..c2436f3
--- /dev/null
+++ b/pdviz/urls.py
@@ -0,0 +1,44 @@
+from rest_framework import routers
+from django.conf import settings
+from django.urls import include, path, re_path
+from django.conf.urls.static import static
+from django.views.decorators.cache import never_cache, cache_page
+from django.contrib import admin
+from django.contrib.auth.views import LogoutView
+
+from .views import PDVIZLoginView, HomeView
+from dataviz.api import *
+from dataviz.views import GlobalDashboard, GlobalDashboardData
+
+
+router = routers.DefaultRouter()
+router.register('grants', GrantViewSet, base_name='grants')
+router.register('grants_by_country', GrantsByCountryViewSet, base_name='grants_by_country')
+router.register('donors', DonorViewSet, base_name='donors')
+router.register('countries', CountryViewSet, base_name='countries')
+router.register('donorcategories', DonorCategoryViewSet, base_name='donorcategories')
+router.register('donordepartments', DonorDepartmentViewSet, base_name='donordepartments')
+router.register('sector', SectorViewSet, base_name='sectors')
+router.register('subsector', SubSectorViewSet, base_name='subsectors')
+router.register('methodologies', MethodologyViewSet, base_name='methodologies')
+router.register('themes', ThemeViewSet, base_name='themes')
+
+
+urlpatterns = [
+ path('admin/', admin.site.urls),
+ path('api/v1/', include(router.urls)),
+ path('accounts/login/', PDVIZLoginView.as_view(), name='login'),
+ path('accounts/logout/', LogoutView.as_view(), name='logout'),
+ path('', include('social_django.urls', namespace='social')),
+ # path('', include('django.contrib.auth.urls')),
+ re_path('^$', HomeView.as_view(), name='home'),
+ path('global_dashboard/', cache_page(60*60*12)(GlobalDashboard.as_view()), name='global_dashboard'),
+ path(r'global_dashboard_data/', cache_page(60*60*12)(GlobalDashboardData.as_view()), name='global_dashboard_data'),
+ #url(r'^dataviz/countries_by_region/(?P[-\w]+)/$', CountriesByRegion.as_view(), name='cbg'),
+ # TODO: add back feedback module?
+ # path(r'^feedback/', include(feedback.urls)),
+
+]
+
+urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
+urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/htdocs/pdviz/utils.py b/pdviz/utils.py
similarity index 100%
rename from htdocs/pdviz/utils.py
rename to pdviz/utils.py
diff --git a/pdviz/views.py b/pdviz/views.py
new file mode 100644
index 0000000..b908f62
--- /dev/null
+++ b/pdviz/views.py
@@ -0,0 +1,34 @@
+from urllib.parse import urlencode
+
+from django.http import HttpResponse
+from django.views.generic.base import TemplateView
+from django.contrib.auth.views import LoginView
+from django.contrib.auth.mixins import LoginRequiredMixin
+from django.urls import reverse
+
+
+class HomeView(LoginRequiredMixin, TemplateView):
+ template_name = 'pdviz/index.html'
+
+
+class PDVIZLoginView(LoginView):
+ def get(self, request, *args, **kwargs):
+ if request.is_ajax():
+ # Some places of our code loads HTML directly into a modal via $.load()
+ # loading the login page (which uses base.html) blows up a lot of things
+ # so avoid this by sending back a simple string instead
+ response = HttpResponse('You are not logged in.')
+ # Header that jQuery AJAX can look for to see if a request was 302 redirected
+ # responseURL could also be used but is not supported in older browsers
+ response['Login-Screen'] = 'Login-Screen'
+ return response
+
+ return super(PDVIZLoginView, self).get(request, *args, **kwargs)
+
+ def get_context_data(self, *args, **kwargs):
+ context = super(PDVIZLoginView, self).get_context_data(*args, **kwargs)
+ context['okta_url'] = "{base}?{params}".format(
+ base=reverse('social:begin', kwargs={'backend': 'saml'}),
+ params=urlencode({'idp': 'okta'})
+ )
+ return context
diff --git a/htdocs/pdviz/wsgi.py b/pdviz/wsgi.py
similarity index 62%
rename from htdocs/pdviz/wsgi.py
rename to pdviz/wsgi.py
index 4e8921f..0dc6641 100644
--- a/htdocs/pdviz/wsgi.py
+++ b/pdviz/wsgi.py
@@ -1,22 +1,14 @@
"""
WSGI config for pdviz project.
-
-It exposes the WSGI callable as a module-level variable named ``application``.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
"""
import os
from os.path import abspath, dirname
from sys import path
+from django.core.wsgi import get_wsgi_application
SITE_ROOT = dirname(dirname(abspath(__file__)))
-#print(SITE_ROOT)
path.append(SITE_ROOT)
-
-from django.core.wsgi import get_wsgi_application
-
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pdviz.settings.local")
application = get_wsgi_application()
diff --git a/requirements.in b/requirements.in
new file mode 100644
index 0000000..010fe9a
--- /dev/null
+++ b/requirements.in
@@ -0,0 +1,45 @@
+Django
+pip-tools
+mysqlclient
+django-crispy-forms
+
+django-rest-swagger
+djangorestframework
+python-memcached
+python3-saml
+social-auth-app-django
+social-auth-core[saml]
+PyYAML
+
+# django-filter
+# Jinja2
+# Markdown
+# MarkupSafe
+# MySQL-python
+
+# PyYAML
+# certifi
+# chardet
+# coreapi
+# coreschema
+# django-braces
+
+# gdata
+# google-api-python-client
+# httplib2
+# idna
+# itypes
+# oauth2client
+# openapi-codec
+# pyasn1
+# pyasn1-modules
+# python-ldap
+
+# pytz
+# requests
+# rsa
+# selenium
+# simplejson
+# six
+# uritemplate
+# urllib3
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..1987993
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,43 @@
+#
+# This file is autogenerated by pip-compile
+# To update, run:
+#
+# pip-compile
+#
+certifi==2019.9.11 # via requests
+chardet==3.0.4 # via requests
+click==7.0 # via pip-tools
+coreapi==2.3.3 # via django-rest-swagger, openapi-codec
+coreschema==0.0.4 # via coreapi
+defusedxml==0.6.0 # via python3-openid, python3-saml, social-auth-core
+django-crispy-forms==1.7.2
+django-rest-swagger==2.2.0
+django==2.2.5
+djangorestframework==3.10.3
+idna==2.8 # via requests
+isodate==0.6.0 # via python3-saml
+itypes==1.1.0 # via coreapi
+jinja2==2.10.1 # via coreschema
+lxml==4.4.2 # via xmlsec
+markupsafe==1.1.1 # via jinja2
+mysqlclient==1.4.4
+oauthlib==3.1.0 # via requests-oauthlib, social-auth-core
+openapi-codec==1.3.2 # via django-rest-swagger
+pip-tools==4.3.0
+pkgconfig==1.5.1 # via xmlsec
+pyjwt==1.7.1 # via social-auth-core
+python-memcached==1.59
+python3-openid==3.1.0 # via social-auth-core
+python3-saml==1.9.0
+pytz==2019.2 # via django
+pyyaml==5.2
+requests-oauthlib==1.3.0 # via social-auth-core
+requests==2.22.0 # via coreapi, requests-oauthlib, social-auth-core
+simplejson==3.16.0 # via django-rest-swagger
+six==1.12.0 # via isodate, pip-tools, python-memcached, social-auth-app-django, social-auth-core
+social-auth-app-django==3.1.0
+social-auth-core[saml]==3.2.0
+sqlparse==0.3.0 # via django
+uritemplate==3.0.0 # via coreapi
+urllib3==1.25.6 # via requests
+xmlsec==1.3.3 # via python3-saml
diff --git a/htdocs/pdviz/templates/404.html b/templates/404.html
similarity index 100%
rename from htdocs/pdviz/templates/404.html
rename to templates/404.html
diff --git a/htdocs/pdviz/templates/500.html b/templates/500.html
similarity index 100%
rename from htdocs/pdviz/templates/500.html
rename to templates/500.html
diff --git a/templates/registration/login.html b/templates/registration/login.html
new file mode 100644
index 0000000..fe15535
--- /dev/null
+++ b/templates/registration/login.html
@@ -0,0 +1,76 @@
+
+{% load i18n %}
+{% load static %}
+
+
+
+
+
+
+
+
+
+