diff --git a/.gitignore b/.gitignore
index aac58b196789f81f9c5690ef8e26745ae6239ffd..d1130a07c8e4f7a227f3634abe5c59dc453b7343 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,12 @@
 *.swp
 *~
 *.pyc
+apps/static/admin/
+apps/static/rest_framework/
+apps/static/debug_toolbar/
+apps/static/django_extensions/
+apps/static/guardian/
 config/settings/secret.py
 config/settings/local.py
 docs/user_docs/build/*
 docs/admin_docs/build/*
-static-collected
-static/admin/
-static/rest_framework/
-static/debug_toolbar/
-static/django_extensions/
-static/guardian/
diff --git a/core/__init__.py b/apps/__init__.py
similarity index 100%
rename from core/__init__.py
rename to apps/__init__.py
diff --git a/gracedb/__init__.py b/apps/core/__init__.py
similarity index 100%
rename from gracedb/__init__.py
rename to apps/core/__init__.py
diff --git a/middleware/debug.py b/apps/core/context_processors.py
similarity index 100%
rename from middleware/debug.py
rename to apps/core/context_processors.py
diff --git a/gracedb/management/__init__.py b/apps/core/middleware/__init__.py
similarity index 100%
rename from gracedb/management/__init__.py
rename to apps/core/middleware/__init__.py
diff --git a/middleware/accept.py b/apps/core/middleware/accept.py
similarity index 91%
rename from middleware/accept.py
rename to apps/core/middleware/accept.py
index 0ff4b686feabd2f61f5bc10998a7b24d52c8c8fd..6c40d13902cf86d6b94473d9b25333c7e40c80a3 100644
--- a/middleware/accept.py
+++ b/apps/core/middleware/accept.py
@@ -10,6 +10,6 @@ class AcceptMiddleware(MiddlewareMixin):
             acc = [a.split(';')[0] for a in request.META['HTTP_ACCEPT'].split(',')]
         except:
             acc = ['text/html']
-        setattr(request, 'accepted_types', acc )
+        setattr(request, 'accepted_types', acc)
         request.accepts = lambda type: type in acc
         return None
diff --git a/middleware/cli.py b/apps/core/middleware/cli.py
similarity index 100%
rename from middleware/cli.py
rename to apps/core/middleware/cli.py
diff --git a/middleware/profiling.py b/apps/core/middleware/profiling.py
similarity index 100%
rename from middleware/profiling.py
rename to apps/core/middleware/profiling.py
diff --git a/core/time_utils.py b/apps/core/time_utils.py
similarity index 100%
rename from core/time_utils.py
rename to apps/core/time_utils.py
diff --git a/core/vfile.py b/apps/core/vfile.py
similarity index 100%
rename from core/vfile.py
rename to apps/core/vfile.py
diff --git a/gracedb/management/commands/__init__.py b/apps/gracedb/__init__.py
similarity index 100%
rename from gracedb/management/commands/__init__.py
rename to apps/gracedb/__init__.py
diff --git a/gracedb/admin.py b/apps/gracedb/admin.py
similarity index 100%
rename from gracedb/admin.py
rename to apps/gracedb/admin.py
diff --git a/gracedb/alert.py b/apps/gracedb/alert.py
similarity index 100%
rename from gracedb/alert.py
rename to apps/gracedb/alert.py
diff --git a/gracedb/api.py b/apps/gracedb/api.py
similarity index 100%
rename from gracedb/api.py
rename to apps/gracedb/api.py
diff --git a/gracedb/buildVOEvent.py b/apps/gracedb/buildVOEvent.py
similarity index 100%
rename from gracedb/buildVOEvent.py
rename to apps/gracedb/buildVOEvent.py
diff --git a/apps/gracedb/context_processors.py b/apps/gracedb/context_processors.py
new file mode 100644
index 0000000000000000000000000000000000000000..c86d24777ec9099e7e9b3b53d118b39f5e1cd62b
--- /dev/null
+++ b/apps/gracedb/context_processors.py
@@ -0,0 +1,14 @@
+from django.contrib.auth.models import Group
+
+def LigoAuthContext(request):
+    #return { 'ligouser' : request.ligouser, 'user' : request.user }
+
+    internal_groups = Group.objects.filter(name__in=['Communities:LSCVirgoLIGOGroupMembers', 'executives'])
+
+    user_is_internal = False
+    if request.user:
+        if set(list(internal_groups)) & set(list(request.user.groups.all())):
+            user_is_internal = True
+
+    return { 'user' : request.user, 'user_is_internal' : user_is_internal }
+    return { 'ligouser' : request.user, 'user' : request.user }
diff --git a/gracedb/feeds.py b/apps/gracedb/feeds.py
similarity index 100%
rename from gracedb/feeds.py
rename to apps/gracedb/feeds.py
diff --git a/gracedb/fixtures/initial_emgroups.json b/apps/gracedb/fixtures/initial_emgroups.json
similarity index 100%
rename from gracedb/fixtures/initial_emgroups.json
rename to apps/gracedb/fixtures/initial_emgroups.json
diff --git a/gracedb/fixtures/initial_pipelines.json b/apps/gracedb/fixtures/initial_pipelines.json
similarity index 100%
rename from gracedb/fixtures/initial_pipelines.json
rename to apps/gracedb/fixtures/initial_pipelines.json
diff --git a/gracedb/fixtures/initial_searches.json b/apps/gracedb/fixtures/initial_searches.json
similarity index 100%
rename from gracedb/fixtures/initial_searches.json
rename to apps/gracedb/fixtures/initial_searches.json
diff --git a/gracedb/fixtures/initial_tags.json b/apps/gracedb/fixtures/initial_tags.json
similarity index 100%
rename from gracedb/fixtures/initial_tags.json
rename to apps/gracedb/fixtures/initial_tags.json
diff --git a/gracedb/fixtures/test_perms/auth_group.json b/apps/gracedb/fixtures/test_perms/auth_group.json
similarity index 100%
rename from gracedb/fixtures/test_perms/auth_group.json
rename to apps/gracedb/fixtures/test_perms/auth_group.json
diff --git a/gracedb/fixtures/test_perms/auth_user.json b/apps/gracedb/fixtures/test_perms/auth_user.json
similarity index 100%
rename from gracedb/fixtures/test_perms/auth_user.json
rename to apps/gracedb/fixtures/test_perms/auth_user.json
diff --git a/gracedb/fixtures/test_perms/cbc-lm.xml b/apps/gracedb/fixtures/test_perms/cbc-lm.xml
similarity index 100%
rename from gracedb/fixtures/test_perms/cbc-lm.xml
rename to apps/gracedb/fixtures/test_perms/cbc-lm.xml
diff --git a/gracedb/fixtures/test_perms/gracedb_coincinspiralevent.json b/apps/gracedb/fixtures/test_perms/gracedb_coincinspiralevent.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_coincinspiralevent.json
rename to apps/gracedb/fixtures/test_perms/gracedb_coincinspiralevent.json
diff --git a/gracedb/fixtures/test_perms/gracedb_emgroup.json b/apps/gracedb/fixtures/test_perms/gracedb_emgroup.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_emgroup.json
rename to apps/gracedb/fixtures/test_perms/gracedb_emgroup.json
diff --git a/gracedb/fixtures/test_perms/gracedb_event.json b/apps/gracedb/fixtures/test_perms/gracedb_event.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_event.json
rename to apps/gracedb/fixtures/test_perms/gracedb_event.json
diff --git a/gracedb/fixtures/test_perms/gracedb_eventlog.json b/apps/gracedb/fixtures/test_perms/gracedb_eventlog.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_eventlog.json
rename to apps/gracedb/fixtures/test_perms/gracedb_eventlog.json
diff --git a/gracedb/fixtures/test_perms/gracedb_grbevent.json b/apps/gracedb/fixtures/test_perms/gracedb_grbevent.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_grbevent.json
rename to apps/gracedb/fixtures/test_perms/gracedb_grbevent.json
diff --git a/gracedb/fixtures/test_perms/gracedb_group.json b/apps/gracedb/fixtures/test_perms/gracedb_group.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_group.json
rename to apps/gracedb/fixtures/test_perms/gracedb_group.json
diff --git a/gracedb/fixtures/test_perms/gracedb_label.json b/apps/gracedb/fixtures/test_perms/gracedb_label.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_label.json
rename to apps/gracedb/fixtures/test_perms/gracedb_label.json
diff --git a/gracedb/fixtures/test_perms/gracedb_labelling.json b/apps/gracedb/fixtures/test_perms/gracedb_labelling.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_labelling.json
rename to apps/gracedb/fixtures/test_perms/gracedb_labelling.json
diff --git a/gracedb/fixtures/test_perms/gracedb_multiburstevent.json b/apps/gracedb/fixtures/test_perms/gracedb_multiburstevent.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_multiburstevent.json
rename to apps/gracedb/fixtures/test_perms/gracedb_multiburstevent.json
diff --git a/gracedb/fixtures/test_perms/gracedb_pipeline.json b/apps/gracedb/fixtures/test_perms/gracedb_pipeline.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_pipeline.json
rename to apps/gracedb/fixtures/test_perms/gracedb_pipeline.json
diff --git a/gracedb/fixtures/test_perms/gracedb_search.json b/apps/gracedb/fixtures/test_perms/gracedb_search.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_search.json
rename to apps/gracedb/fixtures/test_perms/gracedb_search.json
diff --git a/gracedb/fixtures/test_perms/gracedb_singleinspiral.json b/apps/gracedb/fixtures/test_perms/gracedb_singleinspiral.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_singleinspiral.json
rename to apps/gracedb/fixtures/test_perms/gracedb_singleinspiral.json
diff --git a/gracedb/fixtures/test_perms/gracedb_tag.json b/apps/gracedb/fixtures/test_perms/gracedb_tag.json
similarity index 100%
rename from gracedb/fixtures/test_perms/gracedb_tag.json
rename to apps/gracedb/fixtures/test_perms/gracedb_tag.json
diff --git a/gracedb/forms.py b/apps/gracedb/forms.py
similarity index 100%
rename from gracedb/forms.py
rename to apps/gracedb/forms.py
diff --git a/gracedb/middleware/__init__.py b/apps/gracedb/management/__init__.py
similarity index 100%
rename from gracedb/middleware/__init__.py
rename to apps/gracedb/management/__init__.py
diff --git a/gracedb/migrations/__init__.py b/apps/gracedb/management/commands/__init__.py
similarity index 100%
rename from gracedb/migrations/__init__.py
rename to apps/gracedb/management/commands/__init__.py
diff --git a/gracedb/management/commands/create_test_perms_fixtures.py b/apps/gracedb/management/commands/create_test_perms_fixtures.py
similarity index 100%
rename from gracedb/management/commands/create_test_perms_fixtures.py
rename to apps/gracedb/management/commands/create_test_perms_fixtures.py
diff --git a/gracedb/management/commands/ingest_email.py b/apps/gracedb/management/commands/ingest_email.py
similarity index 100%
rename from gracedb/management/commands/ingest_email.py
rename to apps/gracedb/management/commands/ingest_email.py
diff --git a/middleware/performance.py b/apps/gracedb/middleware.py
similarity index 100%
rename from middleware/performance.py
rename to apps/gracedb/middleware.py
diff --git a/gracedb/migrations/0001_initial.py b/apps/gracedb/migrations/0001_initial.py
similarity index 100%
rename from gracedb/migrations/0001_initial.py
rename to apps/gracedb/migrations/0001_initial.py
diff --git a/gracedb/migrations/0002_initial_group_data.py b/apps/gracedb/migrations/0002_initial_group_data.py
similarity index 100%
rename from gracedb/migrations/0002_initial_group_data.py
rename to apps/gracedb/migrations/0002_initial_group_data.py
diff --git a/gracedb/migrations/0003_initial_pipeline_data.py b/apps/gracedb/migrations/0003_initial_pipeline_data.py
similarity index 100%
rename from gracedb/migrations/0003_initial_pipeline_data.py
rename to apps/gracedb/migrations/0003_initial_pipeline_data.py
diff --git a/gracedb/migrations/0004_initial_search_data.py b/apps/gracedb/migrations/0004_initial_search_data.py
similarity index 100%
rename from gracedb/migrations/0004_initial_search_data.py
rename to apps/gracedb/migrations/0004_initial_search_data.py
diff --git a/gracedb/migrations/0005_initial_label_data.py b/apps/gracedb/migrations/0005_initial_label_data.py
similarity index 100%
rename from gracedb/migrations/0005_initial_label_data.py
rename to apps/gracedb/migrations/0005_initial_label_data.py
diff --git a/gracedb/migrations/0006_initial_tag_data.py b/apps/gracedb/migrations/0006_initial_tag_data.py
similarity index 100%
rename from gracedb/migrations/0006_initial_tag_data.py
rename to apps/gracedb/migrations/0006_initial_tag_data.py
diff --git a/gracedb/migrations/0007_initial_emgroup_data.py b/apps/gracedb/migrations/0007_initial_emgroup_data.py
similarity index 100%
rename from gracedb/migrations/0007_initial_emgroup_data.py
rename to apps/gracedb/migrations/0007_initial_emgroup_data.py
diff --git a/gracedb/migrations/0008_add_AllSkyLong_search.py b/apps/gracedb/migrations/0008_add_AllSkyLong_search.py
similarity index 100%
rename from gracedb/migrations/0008_add_AllSkyLong_search.py
rename to apps/gracedb/migrations/0008_add_AllSkyLong_search.py
diff --git a/gracedb/migrations/0009_add_em_sent_label.py b/apps/gracedb/migrations/0009_add_em_sent_label.py
similarity index 100%
rename from gracedb/migrations/0009_add_em_sent_label.py
rename to apps/gracedb/migrations/0009_add_em_sent_label.py
diff --git a/gracedb/migrations/0010_add_virgo_labels.py b/apps/gracedb/migrations/0010_add_virgo_labels.py
similarity index 100%
rename from gracedb/migrations/0010_add_virgo_labels.py
rename to apps/gracedb/migrations/0010_add_virgo_labels.py
diff --git a/gracedb/migrations/0011_add_O2VirgoTest_search.py b/apps/gracedb/migrations/0011_add_O2VirgoTest_search.py
similarity index 100%
rename from gracedb/migrations/0011_add_O2VirgoTest_search.py
rename to apps/gracedb/migrations/0011_add_O2VirgoTest_search.py
diff --git a/gracedb/migrations/0012_add_DESGW_to_EMGroups.py b/apps/gracedb/migrations/0012_add_DESGW_to_EMGroups.py
similarity index 100%
rename from gracedb/migrations/0012_add_DESGW_to_EMGroups.py
rename to apps/gracedb/migrations/0012_add_DESGW_to_EMGroups.py
diff --git a/gracedb/south_migrations/__init__.py b/apps/gracedb/migrations/__init__.py
similarity index 100%
rename from gracedb/south_migrations/__init__.py
rename to apps/gracedb/migrations/__init__.py
diff --git a/gracedb/models.py b/apps/gracedb/models.py
similarity index 100%
rename from gracedb/models.py
rename to apps/gracedb/models.py
diff --git a/gracedb/nltime.py b/apps/gracedb/nltime.py
similarity index 100%
rename from gracedb/nltime.py
rename to apps/gracedb/nltime.py
diff --git a/gracedb/permission_utils.py b/apps/gracedb/permission_utils.py
similarity index 100%
rename from gracedb/permission_utils.py
rename to apps/gracedb/permission_utils.py
diff --git a/gracedb/query.py b/apps/gracedb/query.py
similarity index 100%
rename from gracedb/query.py
rename to apps/gracedb/query.py
diff --git a/gracedb/reports.py b/apps/gracedb/reports.py
similarity index 100%
rename from gracedb/reports.py
rename to apps/gracedb/reports.py
diff --git a/gracedb/serialize.py b/apps/gracedb/serialize.py
similarity index 100%
rename from gracedb/serialize.py
rename to apps/gracedb/serialize.py
diff --git a/gracedb/south_migrations/0001_initial.py b/apps/gracedb/south_migrations/0001_initial.py
similarity index 100%
rename from gracedb/south_migrations/0001_initial.py
rename to apps/gracedb/south_migrations/0001_initial.py
diff --git a/gracedb/south_migrations/0002_auto__add_tag.py b/apps/gracedb/south_migrations/0002_auto__add_tag.py
similarity index 100%
rename from gracedb/south_migrations/0002_auto__add_tag.py
rename to apps/gracedb/south_migrations/0002_auto__add_tag.py
diff --git a/gracedb/south_migrations/0003_auto__del_slot__del_unique_slot_event_name.py b/apps/gracedb/south_migrations/0003_auto__del_slot__del_unique_slot_event_name.py
similarity index 100%
rename from gracedb/south_migrations/0003_auto__del_slot__del_unique_slot_event_name.py
rename to apps/gracedb/south_migrations/0003_auto__del_slot__del_unique_slot_event_name.py
diff --git a/gracedb/south_migrations/0004_populate_tags.py b/apps/gracedb/south_migrations/0004_populate_tags.py
similarity index 100%
rename from gracedb/south_migrations/0004_populate_tags.py
rename to apps/gracedb/south_migrations/0004_populate_tags.py
diff --git a/gracedb/south_migrations/0005_stage1_rm_ligouser__add_new_foreign_keys.py b/apps/gracedb/south_migrations/0005_stage1_rm_ligouser__add_new_foreign_keys.py
similarity index 100%
rename from gracedb/south_migrations/0005_stage1_rm_ligouser__add_new_foreign_keys.py
rename to apps/gracedb/south_migrations/0005_stage1_rm_ligouser__add_new_foreign_keys.py
diff --git a/gracedb/south_migrations/0006_stage2_rm_ligouser__populate_new_foreign_keys.py b/apps/gracedb/south_migrations/0006_stage2_rm_ligouser__populate_new_foreign_keys.py
similarity index 100%
rename from gracedb/south_migrations/0006_stage2_rm_ligouser__populate_new_foreign_keys.py
rename to apps/gracedb/south_migrations/0006_stage2_rm_ligouser__populate_new_foreign_keys.py
diff --git a/gracedb/south_migrations/0007_stage3_rm_ligouser__remove_old_foreign_keys.py b/apps/gracedb/south_migrations/0007_stage3_rm_ligouser__remove_old_foreign_keys.py
similarity index 100%
rename from gracedb/south_migrations/0007_stage3_rm_ligouser__remove_old_foreign_keys.py
rename to apps/gracedb/south_migrations/0007_stage3_rm_ligouser__remove_old_foreign_keys.py
diff --git a/gracedb/south_migrations/0008_auto__del_user.py b/apps/gracedb/south_migrations/0008_auto__del_user.py
similarity index 100%
rename from gracedb/south_migrations/0008_auto__del_user.py
rename to apps/gracedb/south_migrations/0008_auto__del_user.py
diff --git a/gracedb/south_migrations/0009_add_single_inspiral.py b/apps/gracedb/south_migrations/0009_add_single_inspiral.py
similarity index 100%
rename from gracedb/south_migrations/0009_add_single_inspiral.py
rename to apps/gracedb/south_migrations/0009_add_single_inspiral.py
diff --git a/gracedb/south_migrations/0010_auto__add_field_eventlog_N.py b/apps/gracedb/south_migrations/0010_auto__add_field_eventlog_N.py
similarity index 100%
rename from gracedb/south_migrations/0010_auto__add_field_eventlog_N.py
rename to apps/gracedb/south_migrations/0010_auto__add_field_eventlog_N.py
diff --git a/gracedb/south_migrations/0011_calc_logN.py b/apps/gracedb/south_migrations/0011_calc_logN.py
similarity index 100%
rename from gracedb/south_migrations/0011_calc_logN.py
rename to apps/gracedb/south_migrations/0011_calc_logN.py
diff --git a/gracedb/south_migrations/0012_auto__add_unique_eventlog_event_N.py b/apps/gracedb/south_migrations/0012_auto__add_unique_eventlog_event_N.py
similarity index 100%
rename from gracedb/south_migrations/0012_auto__add_unique_eventlog_event_N.py
rename to apps/gracedb/south_migrations/0012_auto__add_unique_eventlog_event_N.py
diff --git a/gracedb/south_migrations/0013_empty_sync_migration.py b/apps/gracedb/south_migrations/0013_empty_sync_migration.py
similarity index 100%
rename from gracedb/south_migrations/0013_empty_sync_migration.py
rename to apps/gracedb/south_migrations/0013_empty_sync_migration.py
diff --git a/gracedb/south_migrations/0014_add_grb_event_table.py b/apps/gracedb/south_migrations/0014_add_grb_event_table.py
similarity index 100%
rename from gracedb/south_migrations/0014_add_grb_event_table.py
rename to apps/gracedb/south_migrations/0014_add_grb_event_table.py
diff --git a/gracedb/south_migrations/0015_add_tag_ana_comm.py b/apps/gracedb/south_migrations/0015_add_tag_ana_comm.py
similarity index 100%
rename from gracedb/south_migrations/0015_add_tag_ana_comm.py
rename to apps/gracedb/south_migrations/0015_add_tag_ana_comm.py
diff --git a/gracedb/south_migrations/0016_change_analyst_comments_tag.py b/apps/gracedb/south_migrations/0016_change_analyst_comments_tag.py
similarity index 100%
rename from gracedb/south_migrations/0016_change_analyst_comments_tag.py
rename to apps/gracedb/south_migrations/0016_change_analyst_comments_tag.py
diff --git a/gracedb/south_migrations/0017_auto__add_field_eventlog_file_version.py b/apps/gracedb/south_migrations/0017_auto__add_field_eventlog_file_version.py
similarity index 100%
rename from gracedb/south_migrations/0017_auto__add_field_eventlog_file_version.py
rename to apps/gracedb/south_migrations/0017_auto__add_field_eventlog_file_version.py
diff --git a/gracedb/south_migrations/0018_add_tag_background.py b/apps/gracedb/south_migrations/0018_add_tag_background.py
similarity index 100%
rename from gracedb/south_migrations/0018_add_tag_background.py
rename to apps/gracedb/south_migrations/0018_add_tag_background.py
diff --git a/gracedb/south_migrations/0019_auto__add_field_event_perms.py b/apps/gracedb/south_migrations/0019_auto__add_field_event_perms.py
similarity index 100%
rename from gracedb/south_migrations/0019_auto__add_field_event_perms.py
rename to apps/gracedb/south_migrations/0019_auto__add_field_event_perms.py
diff --git a/gracedb/south_migrations/0020_add_perms_on_existing_events.py b/apps/gracedb/south_migrations/0020_add_perms_on_existing_events.py
similarity index 100%
rename from gracedb/south_migrations/0020_add_perms_on_existing_events.py
rename to apps/gracedb/south_migrations/0020_add_perms_on_existing_events.py
diff --git a/gracedb/south_migrations/0021_auto__add_search__add_pipeline.py b/apps/gracedb/south_migrations/0021_auto__add_search__add_pipeline.py
similarity index 100%
rename from gracedb/south_migrations/0021_auto__add_search__add_pipeline.py
rename to apps/gracedb/south_migrations/0021_auto__add_search__add_pipeline.py
diff --git a/gracedb/south_migrations/0022_load_initial_pipelines.py b/apps/gracedb/south_migrations/0022_load_initial_pipelines.py
similarity index 100%
rename from gracedb/south_migrations/0022_load_initial_pipelines.py
rename to apps/gracedb/south_migrations/0022_load_initial_pipelines.py
diff --git a/gracedb/south_migrations/0023_load_initial_searches.py b/apps/gracedb/south_migrations/0023_load_initial_searches.py
similarity index 100%
rename from gracedb/south_migrations/0023_load_initial_searches.py
rename to apps/gracedb/south_migrations/0023_load_initial_searches.py
diff --git a/gracedb/south_migrations/0024_auto__add_field_event_pipeline__add_field_event_search.py b/apps/gracedb/south_migrations/0024_auto__add_field_event_pipeline__add_field_event_search.py
similarity index 100%
rename from gracedb/south_migrations/0024_auto__add_field_event_pipeline__add_field_event_search.py
rename to apps/gracedb/south_migrations/0024_auto__add_field_event_pipeline__add_field_event_search.py
diff --git a/gracedb/south_migrations/0025_populate_event_pipeline_and_search.py b/apps/gracedb/south_migrations/0025_populate_event_pipeline_and_search.py
similarity index 100%
rename from gracedb/south_migrations/0025_populate_event_pipeline_and_search.py
rename to apps/gracedb/south_migrations/0025_populate_event_pipeline_and_search.py
diff --git a/gracedb/south_migrations/0026_auto__del_field_event_analysisType.py b/apps/gracedb/south_migrations/0026_auto__del_field_event_analysisType.py
similarity index 100%
rename from gracedb/south_migrations/0026_auto__del_field_event_analysisType.py
rename to apps/gracedb/south_migrations/0026_auto__del_field_event_analysisType.py
diff --git a/gracedb/south_migrations/0027_auto__del_field_event_uid.py b/apps/gracedb/south_migrations/0027_auto__del_field_event_uid.py
similarity index 100%
rename from gracedb/south_migrations/0027_auto__del_field_event_uid.py
rename to apps/gracedb/south_migrations/0027_auto__del_field_event_uid.py
diff --git a/gracedb/south_migrations/0028_auto__add_emgroup__add_embbeventlog__add_unique_embbeventlog_event_N.py b/apps/gracedb/south_migrations/0028_auto__add_emgroup__add_embbeventlog__add_unique_embbeventlog_event_N.py
similarity index 100%
rename from gracedb/south_migrations/0028_auto__add_emgroup__add_embbeventlog__add_unique_embbeventlog_event_N.py
rename to apps/gracedb/south_migrations/0028_auto__add_emgroup__add_embbeventlog__add_unique_embbeventlog_event_N.py
diff --git a/gracedb/south_migrations/0029_populate_emgroups.py b/apps/gracedb/south_migrations/0029_populate_emgroups.py
similarity index 100%
rename from gracedb/south_migrations/0029_populate_emgroups.py
rename to apps/gracedb/south_migrations/0029_populate_emgroups.py
diff --git a/gracedb/south_migrations/0030_auto__add_field_embbeventlog_raList__add_field_embbeventlog_decList__a.py b/apps/gracedb/south_migrations/0030_auto__add_field_embbeventlog_raList__add_field_embbeventlog_decList__a.py
similarity index 100%
rename from gracedb/south_migrations/0030_auto__add_field_embbeventlog_raList__add_field_embbeventlog_decList__a.py
rename to apps/gracedb/south_migrations/0030_auto__add_field_embbeventlog_raList__add_field_embbeventlog_decList__a.py
diff --git a/gracedb/south_migrations/0031__auto__add_field_embbeventlog_raWidthList__add_field_embbeventlog_decWi.py b/apps/gracedb/south_migrations/0031__auto__add_field_embbeventlog_raWidthList__add_field_embbeventlog_decWi.py
similarity index 100%
rename from gracedb/south_migrations/0031__auto__add_field_embbeventlog_raWidthList__add_field_embbeventlog_decWi.py
rename to apps/gracedb/south_migrations/0031__auto__add_field_embbeventlog_raWidthList__add_field_embbeventlog_decWi.py
diff --git a/gracedb/south_migrations/0032_auto__chg_field_embbeventlog_decWidthList__chg_field_embbeventlog_raWi.py b/apps/gracedb/south_migrations/0032_auto__chg_field_embbeventlog_decWidthList__chg_field_embbeventlog_raWi.py
similarity index 100%
rename from gracedb/south_migrations/0032_auto__chg_field_embbeventlog_decWidthList__chg_field_embbeventlog_raWi.py
rename to apps/gracedb/south_migrations/0032_auto__chg_field_embbeventlog_decWidthList__chg_field_embbeventlog_raWi.py
diff --git a/gracedb/south_migrations/0033_auto__chg_field_embbeventlog_durationList.py b/apps/gracedb/south_migrations/0033_auto__chg_field_embbeventlog_durationList.py
similarity index 100%
rename from gracedb/south_migrations/0033_auto__chg_field_embbeventlog_durationList.py
rename to apps/gracedb/south_migrations/0033_auto__chg_field_embbeventlog_durationList.py
diff --git a/gracedb/south_migrations/0034_migrate_existing_eels_to_lists.py b/apps/gracedb/south_migrations/0034_migrate_existing_eels_to_lists.py
similarity index 100%
rename from gracedb/south_migrations/0034_migrate_existing_eels_to_lists.py
rename to apps/gracedb/south_migrations/0034_migrate_existing_eels_to_lists.py
diff --git a/gracedb/south_migrations/0035_add_mdc_search.py b/apps/gracedb/south_migrations/0035_add_mdc_search.py
similarity index 100%
rename from gracedb/south_migrations/0035_add_mdc_search.py
rename to apps/gracedb/south_migrations/0035_add_mdc_search.py
diff --git a/gracedb/south_migrations/0036_auto__add_field_singleinspiral_spin1x__add_field_singleinspiral_spin1y.py b/apps/gracedb/south_migrations/0036_auto__add_field_singleinspiral_spin1x__add_field_singleinspiral_spin1y.py
similarity index 100%
rename from gracedb/south_migrations/0036_auto__add_field_singleinspiral_spin1x__add_field_singleinspiral_spin1y.py
rename to apps/gracedb/south_migrations/0036_auto__add_field_singleinspiral_spin1x__add_field_singleinspiral_spin1y.py
diff --git a/gracedb/south_migrations/0037_auto__chg_field_event_gpstime.py b/apps/gracedb/south_migrations/0037_auto__chg_field_event_gpstime.py
similarity index 100%
rename from gracedb/south_migrations/0037_auto__chg_field_event_gpstime.py
rename to apps/gracedb/south_migrations/0037_auto__chg_field_event_gpstime.py
diff --git a/gracedb/south_migrations/0038_auto__add_voevent__add_unique_voevent_event_N.py b/apps/gracedb/south_migrations/0038_auto__add_voevent__add_unique_voevent_event_N.py
similarity index 100%
rename from gracedb/south_migrations/0038_auto__add_voevent__add_unique_voevent_event_N.py
rename to apps/gracedb/south_migrations/0038_auto__add_voevent__add_unique_voevent_event_N.py
diff --git a/gracedb/south_migrations/0039_auto__add_emobservation__add_unique_emobservation_event_N__add_emfootp.py b/apps/gracedb/south_migrations/0039_auto__add_emobservation__add_unique_emobservation_event_N__add_emfootp.py
similarity index 100%
rename from gracedb/south_migrations/0039_auto__add_emobservation__add_unique_emobservation_event_N__add_emfootp.py
rename to apps/gracedb/south_migrations/0039_auto__add_emobservation__add_unique_emobservation_event_N__add_emfootp.py
diff --git a/gracedb/south_migrations/0040_migrate_eels_to_observations.py b/apps/gracedb/south_migrations/0040_migrate_eels_to_observations.py
similarity index 100%
rename from gracedb/south_migrations/0040_migrate_eels_to_observations.py
rename to apps/gracedb/south_migrations/0040_migrate_eels_to_observations.py
diff --git a/gracedb/south_migrations/0041_auto__add_field_emobservation_comment.py b/apps/gracedb/south_migrations/0041_auto__add_field_emobservation_comment.py
similarity index 100%
rename from gracedb/south_migrations/0041_auto__add_field_emobservation_comment.py
rename to apps/gracedb/south_migrations/0041_auto__add_field_emobservation_comment.py
diff --git a/gracedb/south_migrations/0042_auto__add_field_grbevent_t90.py b/apps/gracedb/south_migrations/0042_auto__add_field_grbevent_t90.py
similarity index 100%
rename from gracedb/south_migrations/0042_auto__add_field_grbevent_t90.py
rename to apps/gracedb/south_migrations/0042_auto__add_field_grbevent_t90.py
diff --git a/gracedb/south_migrations/0043_auto__add_field_grbevent_trigger_duration.py b/apps/gracedb/south_migrations/0043_auto__add_field_grbevent_trigger_duration.py
similarity index 100%
rename from gracedb/south_migrations/0043_auto__add_field_grbevent_trigger_duration.py
rename to apps/gracedb/south_migrations/0043_auto__add_field_grbevent_trigger_duration.py
diff --git a/gracedb/south_migrations/0044_auto__add_siminspiralevent.py b/apps/gracedb/south_migrations/0044_auto__add_siminspiralevent.py
similarity index 100%
rename from gracedb/south_migrations/0044_auto__add_siminspiralevent.py
rename to apps/gracedb/south_migrations/0044_auto__add_siminspiralevent.py
diff --git a/gracedb/templatetags/__init__.py b/apps/gracedb/south_migrations/__init__.py
similarity index 100%
rename from gracedb/templatetags/__init__.py
rename to apps/gracedb/south_migrations/__init__.py
diff --git a/gracedb/test/__init__.py b/apps/gracedb/templatetags/__init__.py
similarity index 100%
rename from gracedb/test/__init__.py
rename to apps/gracedb/templatetags/__init__.py
diff --git a/gracedb/templatetags/logtags.py b/apps/gracedb/templatetags/logtags.py
similarity index 100%
rename from gracedb/templatetags/logtags.py
rename to apps/gracedb/templatetags/logtags.py
diff --git a/gracedb/templatetags/sanitize_html.py b/apps/gracedb/templatetags/sanitize_html.py
similarity index 100%
rename from gracedb/templatetags/sanitize_html.py
rename to apps/gracedb/templatetags/sanitize_html.py
diff --git a/gracedb/templatetags/scientific.py b/apps/gracedb/templatetags/scientific.py
similarity index 100%
rename from gracedb/templatetags/scientific.py
rename to apps/gracedb/templatetags/scientific.py
diff --git a/gracedb/templatetags/timeutil.py b/apps/gracedb/templatetags/timeutil.py
similarity index 100%
rename from gracedb/templatetags/timeutil.py
rename to apps/gracedb/templatetags/timeutil.py
diff --git a/ligoauth/__init__.py b/apps/gracedb/test/__init__.py
similarity index 100%
rename from ligoauth/__init__.py
rename to apps/gracedb/test/__init__.py
diff --git a/gracedb/test/test_label_search.py b/apps/gracedb/test/test_label_search.py
similarity index 96%
rename from gracedb/test/test_label_search.py
rename to apps/gracedb/test/test_label_search.py
index 5d0bfde3e36fc1fa81fa92ed496c6a5ce33a3f44..bc69ec6c178803291bcd55d1c98fe155a0205f11 100644
--- a/gracedb/test/test_label_search.py
+++ b/apps/gracedb/test/test_label_search.py
@@ -1,9 +1,9 @@
 from django.test import TestCase
 from django.db.models import Q
-from ..models import Event, Label, Labelling
-from ..models import Group, Pipeline
 from django.contrib.auth.models import User
-from ..query import parseQuery, filter_for_labels
+from gracedb.models import Event, Label, Labelling
+from gracedb.models import Group, Pipeline
+from gracedb.query import parseQuery, filter_for_labels
 
 QUERY_CASES = {
     'all_ors'             : { 'query': 'A_LABEL | B_LABEL | C_LABEL',    'pk_list': [2,3,4,5,6,7,8] },
diff --git a/gracedb/test/test_perms.py b/apps/gracedb/test/test_perms.py
similarity index 98%
rename from gracedb/test/test_perms.py
rename to apps/gracedb/test/test_perms.py
index 8201f067e3579fd59998109c5e2cdb7922b792e5..985f65172eb250cf9f596cae4e03d0f6ff0cefc9 100644
--- a/gracedb/test/test_perms.py
+++ b/apps/gracedb/test/test_perms.py
@@ -4,8 +4,8 @@ from django.test.utils import override_settings
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.auth.models import Permission, Group, User
 from guardian.models import GroupObjectPermission, UserObjectPermission
-from ..models import Event, GrbEvent, CoincInspiralEvent
-from ..models import MultiBurstEvent, Pipeline
+from gracedb.models import Event, GrbEvent, CoincInspiralEvent
+from gracedb.models import MultiBurstEvent, Pipeline
 
 from django.conf import settings
 
@@ -78,10 +78,9 @@ def extra_args(user):
         return {}
     return {'REMOTE_USER': user.username, 'isMemberOf': get_isMemberOf(user) }
 
-# Given a Django test client, attempt to create a CBC, gstlal, 
-# LowMass event. 
-EVENT_FILE = os.path.join(settings.GRACEDB_PATHS["code"],
-    'gracedb/fixtures/test_perms/cbc-lm.xml')
+# Given a Django test client, attempt to create a CBC, gstlal, LowMass event. 
+EVENT_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__),
+    "../fixtures/test_perms/cbc-lm.xml"))
 
 def request_event_creation(client, user, test=False):
     event_file = open(EVENT_FILE,'r')
diff --git a/gracedb/throttles.py b/apps/gracedb/throttles.py
similarity index 100%
rename from gracedb/throttles.py
rename to apps/gracedb/throttles.py
diff --git a/gracedb/translator.py b/apps/gracedb/translator.py
similarity index 100%
rename from gracedb/translator.py
rename to apps/gracedb/translator.py
diff --git a/gracedb/urls.py b/apps/gracedb/urls.py
similarity index 100%
rename from gracedb/urls.py
rename to apps/gracedb/urls.py
diff --git a/gracedb/urls_rest.py b/apps/gracedb/urls_rest.py
similarity index 100%
rename from gracedb/urls_rest.py
rename to apps/gracedb/urls_rest.py
diff --git a/gracedb/view_logic.py b/apps/gracedb/view_logic.py
similarity index 100%
rename from gracedb/view_logic.py
rename to apps/gracedb/view_logic.py
diff --git a/gracedb/view_utils.py b/apps/gracedb/view_utils.py
similarity index 100%
rename from gracedb/view_utils.py
rename to apps/gracedb/view_utils.py
diff --git a/gracedb/views.py b/apps/gracedb/views.py
similarity index 100%
rename from gracedb/views.py
rename to apps/gracedb/views.py
diff --git a/ligoauth/middleware/__init__.py b/apps/ligoauth/__init__.py
similarity index 100%
rename from ligoauth/middleware/__init__.py
rename to apps/ligoauth/__init__.py
diff --git a/ligoauth/admin.py b/apps/ligoauth/admin.py
similarity index 100%
rename from ligoauth/admin.py
rename to apps/ligoauth/admin.py
diff --git a/ligoauth/context_processors.py b/apps/ligoauth/context_processors.py
similarity index 100%
rename from ligoauth/context_processors.py
rename to apps/ligoauth/context_processors.py
diff --git a/ligoauth/fixtures/initial.json b/apps/ligoauth/fixtures/initial.json
similarity index 100%
rename from ligoauth/fixtures/initial.json
rename to apps/ligoauth/fixtures/initial.json
diff --git a/ligoauth/migrations/__init__.py b/apps/ligoauth/middleware/__init__.py
similarity index 100%
rename from ligoauth/migrations/__init__.py
rename to apps/ligoauth/middleware/__init__.py
diff --git a/ligoauth/middleware/auth.py b/apps/ligoauth/middleware/auth.py
similarity index 100%
rename from ligoauth/middleware/auth.py
rename to apps/ligoauth/middleware/auth.py
diff --git a/ligoauth/migrations/0001_initial.py b/apps/ligoauth/migrations/0001_initial.py
similarity index 100%
rename from ligoauth/migrations/0001_initial.py
rename to apps/ligoauth/migrations/0001_initial.py
diff --git a/ligoauth/migrations/0002_set_ligoauth_ligoldapuser_charset.py b/apps/ligoauth/migrations/0002_set_ligoauth_ligoldapuser_charset.py
similarity index 100%
rename from ligoauth/migrations/0002_set_ligoauth_ligoldapuser_charset.py
rename to apps/ligoauth/migrations/0002_set_ligoauth_ligoldapuser_charset.py
diff --git a/ligoauth/migrations/0003_initial_localuser_and_x509cert_data.py b/apps/ligoauth/migrations/0003_initial_localuser_and_x509cert_data.py
similarity index 100%
rename from ligoauth/migrations/0003_initial_localuser_and_x509cert_data.py
rename to apps/ligoauth/migrations/0003_initial_localuser_and_x509cert_data.py
diff --git a/ligoauth/south_migrations/__init__.py b/apps/ligoauth/migrations/__init__.py
similarity index 100%
rename from ligoauth/south_migrations/__init__.py
rename to apps/ligoauth/migrations/__init__.py
diff --git a/ligoauth/models.py b/apps/ligoauth/models.py
similarity index 100%
rename from ligoauth/models.py
rename to apps/ligoauth/models.py
diff --git a/ligoauth/south_migrations/0001_initial.py b/apps/ligoauth/south_migrations/0001_initial.py
similarity index 100%
rename from ligoauth/south_migrations/0001_initial.py
rename to apps/ligoauth/south_migrations/0001_initial.py
diff --git a/ligoauth/south_migrations/0002_remove_old_auth_users.py b/apps/ligoauth/south_migrations/0002_remove_old_auth_users.py
similarity index 100%
rename from ligoauth/south_migrations/0002_remove_old_auth_users.py
rename to apps/ligoauth/south_migrations/0002_remove_old_auth_users.py
diff --git a/ligoauth/south_migrations/0003_utf8ify_user_tables.py b/apps/ligoauth/south_migrations/0003_utf8ify_user_tables.py
similarity index 100%
rename from ligoauth/south_migrations/0003_utf8ify_user_tables.py
rename to apps/ligoauth/south_migrations/0003_utf8ify_user_tables.py
diff --git a/ligoauth/south_migrations/0004_add_localusers.py b/apps/ligoauth/south_migrations/0004_add_localusers.py
similarity index 100%
rename from ligoauth/south_migrations/0004_add_localusers.py
rename to apps/ligoauth/south_migrations/0004_add_localusers.py
diff --git a/ligoauth/south_migrations/0005_add_ldapusers.py b/apps/ligoauth/south_migrations/0005_add_ldapusers.py
similarity index 100%
rename from ligoauth/south_migrations/0005_add_ldapusers.py
rename to apps/ligoauth/south_migrations/0005_add_ldapusers.py
diff --git a/ligoauth/south_migrations/0006_add_gcn_sender_user_and_dn.py b/apps/ligoauth/south_migrations/0006_add_gcn_sender_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0006_add_gcn_sender_user_and_dn.py
rename to apps/ligoauth/south_migrations/0006_add_gcn_sender_user_and_dn.py
diff --git a/ligoauth/south_migrations/0007_add_gdb_pe_user_and_dn.py b/apps/ligoauth/south_migrations/0007_add_gdb_pe_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0007_add_gdb_pe_user_and_dn.py
rename to apps/ligoauth/south_migrations/0007_add_gdb_pe_user_and_dn.py
diff --git a/ligoauth/south_migrations/0008_add_grbexttrig_user_and_dn.py b/apps/ligoauth/south_migrations/0008_add_grbexttrig_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0008_add_grbexttrig_user_and_dn.py
rename to apps/ligoauth/south_migrations/0008_add_grbexttrig_user_and_dn.py
diff --git a/ligoauth/south_migrations/0009_add_gstlal_spiir_gpu_user_and_dn.py b/apps/ligoauth/south_migrations/0009_add_gstlal_spiir_gpu_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0009_add_gstlal_spiir_gpu_user_and_dn.py
rename to apps/ligoauth/south_migrations/0009_add_gstlal_spiir_gpu_user_and_dn.py
diff --git a/ligoauth/south_migrations/0010_add_bayestar_mic_user_and_dn.py b/apps/ligoauth/south_migrations/0010_add_bayestar_mic_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0010_add_bayestar_mic_user_and_dn.py
rename to apps/ligoauth/south_migrations/0010_add_bayestar_mic_user_and_dn.py
diff --git a/ligoauth/south_migrations/0011_add_idq_users_and_dns.py b/apps/ligoauth/south_migrations/0011_add_idq_users_and_dns.py
similarity index 100%
rename from ligoauth/south_migrations/0011_add_idq_users_and_dns.py
rename to apps/ligoauth/south_migrations/0011_add_idq_users_and_dns.py
diff --git a/ligoauth/south_migrations/0012_auto__add_alternateemail.py b/apps/ligoauth/south_migrations/0012_auto__add_alternateemail.py
similarity index 100%
rename from ligoauth/south_migrations/0012_auto__add_alternateemail.py
rename to apps/ligoauth/south_migrations/0012_auto__add_alternateemail.py
diff --git a/ligoauth/south_migrations/0013_add_lib_user_and_dn.py b/apps/ligoauth/south_migrations/0013_add_lib_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0013_add_lib_user_and_dn.py
rename to apps/ligoauth/south_migrations/0013_add_lib_user_and_dn.py
diff --git a/ligoauth/south_migrations/0014_add_bayeswave_user_and_dn.py b/apps/ligoauth/south_migrations/0014_add_bayeswave_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0014_add_bayeswave_user_and_dn.py
rename to apps/ligoauth/south_migrations/0014_add_bayeswave_user_and_dn.py
diff --git a/ligoauth/south_migrations/0015_add_gstlalbbh_user_and_dn.py b/apps/ligoauth/south_migrations/0015_add_gstlalbbh_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0015_add_gstlalbbh_user_and_dn.py
rename to apps/ligoauth/south_migrations/0015_add_gstlalbbh_user_and_dn.py
diff --git a/ligoauth/south_migrations/0016_add_bwb_online_user_and_dn.py b/apps/ligoauth/south_migrations/0016_add_bwb_online_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0016_add_bwb_online_user_and_dn.py
rename to apps/ligoauth/south_migrations/0016_add_bwb_online_user_and_dn.py
diff --git a/ligoauth/south_migrations/0017_add_gstinjector_user_and_dns.py b/apps/ligoauth/south_migrations/0017_add_gstinjector_user_and_dns.py
similarity index 100%
rename from ligoauth/south_migrations/0017_add_gstinjector_user_and_dns.py
rename to apps/ligoauth/south_migrations/0017_add_gstinjector_user_and_dns.py
diff --git a/ligoauth/south_migrations/0018_add_cds_lho_user_and_dn.py b/apps/ligoauth/south_migrations/0018_add_cds_lho_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0018_add_cds_lho_user_and_dn.py
rename to apps/ligoauth/south_migrations/0018_add_cds_lho_user_and_dn.py
diff --git a/ligoauth/south_migrations/0019_add_cds_llo_user_and_dn.py b/apps/ligoauth/south_migrations/0019_add_cds_llo_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0019_add_cds_llo_user_and_dn.py
rename to apps/ligoauth/south_migrations/0019_add_cds_llo_user_and_dn.py
diff --git a/ligoauth/south_migrations/0020_add_gstlalcbcbbh_user_and_dn.py b/apps/ligoauth/south_migrations/0020_add_gstlalcbcbbh_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0020_add_gstlalcbcbbh_user_and_dn.py
rename to apps/ligoauth/south_migrations/0020_add_gstlalcbcbbh_user_and_dn.py
diff --git a/ligoauth/south_migrations/0021_add_gcncirculars_user_and_dn.py b/apps/ligoauth/south_migrations/0021_add_gcncirculars_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0021_add_gcncirculars_user_and_dn.py
rename to apps/ligoauth/south_migrations/0021_add_gcncirculars_user_and_dn.py
diff --git a/ligoauth/south_migrations/0022_add_skymapviewer_user_and_dn.py b/apps/ligoauth/south_migrations/0022_add_skymapviewer_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0022_add_skymapviewer_user_and_dn.py
rename to apps/ligoauth/south_migrations/0022_add_skymapviewer_user_and_dn.py
diff --git a/ligoauth/south_migrations/0023_add_rapidpe_user_and_dn.py b/apps/ligoauth/south_migrations/0023_add_rapidpe_user_and_dn.py
similarity index 100%
rename from ligoauth/south_migrations/0023_add_rapidpe_user_and_dn.py
rename to apps/ligoauth/south_migrations/0023_add_rapidpe_user_and_dn.py
diff --git a/middleware/__init__.py b/apps/ligoauth/south_migrations/__init__.py
similarity index 100%
rename from middleware/__init__.py
rename to apps/ligoauth/south_migrations/__init__.py
diff --git a/ligoauth/tests.py b/apps/ligoauth/tests.py
similarity index 100%
rename from ligoauth/tests.py
rename to apps/ligoauth/tests.py
diff --git a/migrations/__init__.py b/apps/migrations/__init__.py
similarity index 100%
rename from migrations/__init__.py
rename to apps/migrations/__init__.py
diff --git a/migrations/auth/0001_initial.py b/apps/migrations/auth/0001_initial.py
similarity index 100%
rename from migrations/auth/0001_initial.py
rename to apps/migrations/auth/0001_initial.py
diff --git a/migrations/auth/0002_alter_permission_name_max_length.py b/apps/migrations/auth/0002_alter_permission_name_max_length.py
similarity index 100%
rename from migrations/auth/0002_alter_permission_name_max_length.py
rename to apps/migrations/auth/0002_alter_permission_name_max_length.py
diff --git a/migrations/auth/0003_alter_user_email_max_length.py b/apps/migrations/auth/0003_alter_user_email_max_length.py
similarity index 100%
rename from migrations/auth/0003_alter_user_email_max_length.py
rename to apps/migrations/auth/0003_alter_user_email_max_length.py
diff --git a/migrations/auth/0004_alter_user_username_opts.py b/apps/migrations/auth/0004_alter_user_username_opts.py
similarity index 100%
rename from migrations/auth/0004_alter_user_username_opts.py
rename to apps/migrations/auth/0004_alter_user_username_opts.py
diff --git a/migrations/auth/0005_alter_user_last_login_null.py b/apps/migrations/auth/0005_alter_user_last_login_null.py
similarity index 100%
rename from migrations/auth/0005_alter_user_last_login_null.py
rename to apps/migrations/auth/0005_alter_user_last_login_null.py
diff --git a/migrations/auth/0006_require_contenttypes_0002.py b/apps/migrations/auth/0006_require_contenttypes_0002.py
similarity index 100%
rename from migrations/auth/0006_require_contenttypes_0002.py
rename to apps/migrations/auth/0006_require_contenttypes_0002.py
diff --git a/migrations/auth/0007_auto_20150708_1134.py b/apps/migrations/auth/0007_auto_20150708_1134.py
similarity index 100%
rename from migrations/auth/0007_auto_20150708_1134.py
rename to apps/migrations/auth/0007_auto_20150708_1134.py
diff --git a/migrations/auth/0008_auto_20171020_1045.py b/apps/migrations/auth/0008_auto_20171020_1045.py
similarity index 100%
rename from migrations/auth/0008_auto_20171020_1045.py
rename to apps/migrations/auth/0008_auto_20171020_1045.py
diff --git a/migrations/auth/0009_set_auth_user_charset.py b/apps/migrations/auth/0009_set_auth_user_charset.py
similarity index 100%
rename from migrations/auth/0009_set_auth_user_charset.py
rename to apps/migrations/auth/0009_set_auth_user_charset.py
diff --git a/migrations/auth/0010_initial_group_data.py b/apps/migrations/auth/0010_initial_group_data.py
similarity index 100%
rename from migrations/auth/0010_initial_group_data.py
rename to apps/migrations/auth/0010_initial_group_data.py
diff --git a/migrations/auth/0011_add_executives_group_permissions.py b/apps/migrations/auth/0011_add_executives_group_permissions.py
similarity index 100%
rename from migrations/auth/0011_add_executives_group_permissions.py
rename to apps/migrations/auth/0011_add_executives_group_permissions.py
diff --git a/migrations/auth/0012_create_custom_permissions.py b/apps/migrations/auth/0012_create_custom_permissions.py
similarity index 100%
rename from migrations/auth/0012_create_custom_permissions.py
rename to apps/migrations/auth/0012_create_custom_permissions.py
diff --git a/migrations/auth/0013_add_user_t90_grbevent_permissions.py b/apps/migrations/auth/0013_add_user_t90_grbevent_permissions.py
similarity index 100%
rename from migrations/auth/0013_add_user_t90_grbevent_permissions.py
rename to apps/migrations/auth/0013_add_user_t90_grbevent_permissions.py
diff --git a/migrations/auth/0014_add_user_permissions_on_groupobjectpermissions.py b/apps/migrations/auth/0014_add_user_permissions_on_groupobjectpermissions.py
similarity index 100%
rename from migrations/auth/0014_add_user_permissions_on_groupobjectpermissions.py
rename to apps/migrations/auth/0014_add_user_permissions_on_groupobjectpermissions.py
diff --git a/migrations/auth/__init__.py b/apps/migrations/auth/__init__.py
similarity index 100%
rename from migrations/auth/__init__.py
rename to apps/migrations/auth/__init__.py
diff --git a/migrations/guardian/0001_initial.py b/apps/migrations/guardian/0001_initial.py
similarity index 100%
rename from migrations/guardian/0001_initial.py
rename to apps/migrations/guardian/0001_initial.py
diff --git a/migrations/guardian/0002_authorize_users_to_populate_pipelines.py b/apps/migrations/guardian/0002_authorize_users_to_populate_pipelines.py
similarity index 100%
rename from migrations/guardian/0002_authorize_users_to_populate_pipelines.py
rename to apps/migrations/guardian/0002_authorize_users_to_populate_pipelines.py
diff --git a/migrations/guardian/__init__.py b/apps/migrations/guardian/__init__.py
similarity index 100%
rename from migrations/guardian/__init__.py
rename to apps/migrations/guardian/__init__.py
diff --git a/south_migrations/__init__.py b/apps/south_migrations/__init__.py
similarity index 100%
rename from south_migrations/__init__.py
rename to apps/south_migrations/__init__.py
diff --git a/south_migrations/auth/0001_create_groups_for_tiered_auth.py b/apps/south_migrations/auth/0001_create_groups_for_tiered_auth.py
similarity index 100%
rename from south_migrations/auth/0001_create_groups_for_tiered_auth.py
rename to apps/south_migrations/auth/0001_create_groups_for_tiered_auth.py
diff --git a/south_migrations/auth/0002_populate_executives_group.py b/apps/south_migrations/auth/0002_populate_executives_group.py
similarity index 100%
rename from south_migrations/auth/0002_populate_executives_group.py
rename to apps/south_migrations/auth/0002_populate_executives_group.py
diff --git a/south_migrations/auth/0003_add_robots_to_internal_group.py b/apps/south_migrations/auth/0003_add_robots_to_internal_group.py
similarity index 100%
rename from south_migrations/auth/0003_add_robots_to_internal_group.py
rename to apps/south_migrations/auth/0003_add_robots_to_internal_group.py
diff --git a/south_migrations/auth/0004_add_event_view_permission.py b/apps/south_migrations/auth/0004_add_event_view_permission.py
similarity index 100%
rename from south_migrations/auth/0004_add_event_view_permission.py
rename to apps/south_migrations/auth/0004_add_event_view_permission.py
diff --git a/south_migrations/auth/0005_add_pipeline_populate_permission.py b/apps/south_migrations/auth/0005_add_pipeline_populate_permission.py
similarity index 100%
rename from south_migrations/auth/0005_add_pipeline_populate_permission.py
rename to apps/south_migrations/auth/0005_add_pipeline_populate_permission.py
diff --git a/south_migrations/auth/0006_add_exec_perms_on_groupobjectperms.py b/apps/south_migrations/auth/0006_add_exec_perms_on_groupobjectperms.py
similarity index 100%
rename from south_migrations/auth/0006_add_exec_perms_on_groupobjectperms.py
rename to apps/south_migrations/auth/0006_add_exec_perms_on_groupobjectperms.py
diff --git a/south_migrations/auth/0007_add_grbevent_t90_permission.py b/apps/south_migrations/auth/0007_add_grbevent_t90_permission.py
similarity index 100%
rename from south_migrations/auth/0007_add_grbevent_t90_permission.py
rename to apps/south_migrations/auth/0007_add_grbevent_t90_permission.py
diff --git a/south_migrations/auth/0008_add_siminspiral_event_view_permission.py b/apps/south_migrations/auth/0008_add_siminspiral_event_view_permission.py
similarity index 100%
rename from south_migrations/auth/0008_add_siminspiral_event_view_permission.py
rename to apps/south_migrations/auth/0008_add_siminspiral_event_view_permission.py
diff --git a/south_migrations/auth/__init__.py b/apps/south_migrations/auth/__init__.py
similarity index 100%
rename from south_migrations/auth/__init__.py
rename to apps/south_migrations/auth/__init__.py
diff --git a/south_migrations/guardian/0001_create_perms_for_existing_events.py b/apps/south_migrations/guardian/0001_create_perms_for_existing_events.py
similarity index 100%
rename from south_migrations/guardian/0001_create_perms_for_existing_events.py
rename to apps/south_migrations/guardian/0001_create_perms_for_existing_events.py
diff --git a/south_migrations/guardian/0002_create_perms_for_pipelines.py b/apps/south_migrations/guardian/0002_create_perms_for_pipelines.py
similarity index 100%
rename from south_migrations/guardian/0002_create_perms_for_pipelines.py
rename to apps/south_migrations/guardian/0002_create_perms_for_pipelines.py
diff --git a/south_migrations/guardian/0003_add_lib_pipeline_perms.py b/apps/south_migrations/guardian/0003_add_lib_pipeline_perms.py
similarity index 100%
rename from south_migrations/guardian/0003_add_lib_pipeline_perms.py
rename to apps/south_migrations/guardian/0003_add_lib_pipeline_perms.py
diff --git a/south_migrations/guardian/0004_add_snews_pipeline_perms.py b/apps/south_migrations/guardian/0004_add_snews_pipeline_perms.py
similarity index 100%
rename from south_migrations/guardian/0004_add_snews_pipeline_perms.py
rename to apps/south_migrations/guardian/0004_add_snews_pipeline_perms.py
diff --git a/south_migrations/guardian/0005_authorize_gstinjector_hwinj.py b/apps/south_migrations/guardian/0005_authorize_gstinjector_hwinj.py
similarity index 100%
rename from south_migrations/guardian/0005_authorize_gstinjector_hwinj.py
rename to apps/south_migrations/guardian/0005_authorize_gstinjector_hwinj.py
diff --git a/south_migrations/guardian/0006_create_perms_for_existing_mdc_events.py b/apps/south_migrations/guardian/0006_create_perms_for_existing_mdc_events.py
similarity index 100%
rename from south_migrations/guardian/0006_create_perms_for_existing_mdc_events.py
rename to apps/south_migrations/guardian/0006_create_perms_for_existing_mdc_events.py
diff --git a/south_migrations/guardian/__init__.py b/apps/south_migrations/guardian/__init__.py
similarity index 100%
rename from south_migrations/guardian/__init__.py
rename to apps/south_migrations/guardian/__init__.py
diff --git a/static/css/admin-nav.css b/apps/static/css/admin-nav.css
similarity index 100%
rename from static/css/admin-nav.css
rename to apps/static/css/admin-nav.css
diff --git a/static/css/flexigrid/flexigrid.css b/apps/static/css/flexigrid/flexigrid.css
similarity index 100%
rename from static/css/flexigrid/flexigrid.css
rename to apps/static/css/flexigrid/flexigrid.css
diff --git a/static/css/flexigrid/images/bg.gif b/apps/static/css/flexigrid/images/bg.gif
similarity index 100%
rename from static/css/flexigrid/images/bg.gif
rename to apps/static/css/flexigrid/images/bg.gif
diff --git a/static/css/flexigrid/images/btn-sprite.gif b/apps/static/css/flexigrid/images/btn-sprite.gif
similarity index 100%
rename from static/css/flexigrid/images/btn-sprite.gif
rename to apps/static/css/flexigrid/images/btn-sprite.gif
diff --git a/static/css/flexigrid/images/ddn.png b/apps/static/css/flexigrid/images/ddn.png
similarity index 100%
rename from static/css/flexigrid/images/ddn.png
rename to apps/static/css/flexigrid/images/ddn.png
diff --git a/static/css/flexigrid/images/dn.png b/apps/static/css/flexigrid/images/dn.png
similarity index 100%
rename from static/css/flexigrid/images/dn.png
rename to apps/static/css/flexigrid/images/dn.png
diff --git a/static/css/flexigrid/images/fhbg.gif b/apps/static/css/flexigrid/images/fhbg.gif
similarity index 100%
rename from static/css/flexigrid/images/fhbg.gif
rename to apps/static/css/flexigrid/images/fhbg.gif
diff --git a/static/css/flexigrid/images/first.gif b/apps/static/css/flexigrid/images/first.gif
similarity index 100%
rename from static/css/flexigrid/images/first.gif
rename to apps/static/css/flexigrid/images/first.gif
diff --git a/static/css/flexigrid/images/hl.png b/apps/static/css/flexigrid/images/hl.png
similarity index 100%
rename from static/css/flexigrid/images/hl.png
rename to apps/static/css/flexigrid/images/hl.png
diff --git a/static/css/flexigrid/images/last.gif b/apps/static/css/flexigrid/images/last.gif
similarity index 100%
rename from static/css/flexigrid/images/last.gif
rename to apps/static/css/flexigrid/images/last.gif
diff --git a/static/css/flexigrid/images/line.gif b/apps/static/css/flexigrid/images/line.gif
similarity index 100%
rename from static/css/flexigrid/images/line.gif
rename to apps/static/css/flexigrid/images/line.gif
diff --git a/static/css/flexigrid/images/load.gif b/apps/static/css/flexigrid/images/load.gif
similarity index 100%
rename from static/css/flexigrid/images/load.gif
rename to apps/static/css/flexigrid/images/load.gif
diff --git a/static/css/flexigrid/images/load.png b/apps/static/css/flexigrid/images/load.png
similarity index 100%
rename from static/css/flexigrid/images/load.png
rename to apps/static/css/flexigrid/images/load.png
diff --git a/static/css/flexigrid/images/magnifier.png b/apps/static/css/flexigrid/images/magnifier.png
similarity index 100%
rename from static/css/flexigrid/images/magnifier.png
rename to apps/static/css/flexigrid/images/magnifier.png
diff --git a/static/css/flexigrid/images/next.gif b/apps/static/css/flexigrid/images/next.gif
similarity index 100%
rename from static/css/flexigrid/images/next.gif
rename to apps/static/css/flexigrid/images/next.gif
diff --git a/static/css/flexigrid/images/prev.gif b/apps/static/css/flexigrid/images/prev.gif
similarity index 100%
rename from static/css/flexigrid/images/prev.gif
rename to apps/static/css/flexigrid/images/prev.gif
diff --git a/static/css/flexigrid/images/up.png b/apps/static/css/flexigrid/images/up.png
similarity index 100%
rename from static/css/flexigrid/images/up.png
rename to apps/static/css/flexigrid/images/up.png
diff --git a/static/css/flexigrid/images/uup.png b/apps/static/css/flexigrid/images/uup.png
similarity index 100%
rename from static/css/flexigrid/images/uup.png
rename to apps/static/css/flexigrid/images/uup.png
diff --git a/static/css/flexigrid/images/wbg.gif b/apps/static/css/flexigrid/images/wbg.gif
similarity index 100%
rename from static/css/flexigrid/images/wbg.gif
rename to apps/static/css/flexigrid/images/wbg.gif
diff --git a/static/css/jqgrid/ellipsis-xbl.xml b/apps/static/css/jqgrid/ellipsis-xbl.xml
similarity index 100%
rename from static/css/jqgrid/ellipsis-xbl.xml
rename to apps/static/css/jqgrid/ellipsis-xbl.xml
diff --git a/static/css/jqgrid/theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/apps/static/css/jqgrid/theme/images/ui-bg_flat_0_aaaaaa_40x100.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_flat_0_aaaaaa_40x100.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_flat_0_aaaaaa_40x100.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_flat_75_ffffff_40x100.png b/apps/static/css/jqgrid/theme/images/ui-bg_flat_75_ffffff_40x100.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_flat_75_ffffff_40x100.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_flat_75_ffffff_40x100.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/apps/static/css/jqgrid/theme/images/ui-bg_glass_55_fbf9ee_1x400.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_glass_55_fbf9ee_1x400.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_glass_55_fbf9ee_1x400.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_glass_65_ffffff_1x400.png b/apps/static/css/jqgrid/theme/images/ui-bg_glass_65_ffffff_1x400.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_glass_65_ffffff_1x400.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_glass_65_ffffff_1x400.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_glass_75_dadada_1x400.png b/apps/static/css/jqgrid/theme/images/ui-bg_glass_75_dadada_1x400.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_glass_75_dadada_1x400.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_glass_75_dadada_1x400.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/apps/static/css/jqgrid/theme/images/ui-bg_glass_75_e6e6e6_1x400.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_glass_75_e6e6e6_1x400.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_glass_75_e6e6e6_1x400.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_glass_95_fef1ec_1x400.png b/apps/static/css/jqgrid/theme/images/ui-bg_glass_95_fef1ec_1x400.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_glass_95_fef1ec_1x400.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_glass_95_fef1ec_1x400.png
diff --git a/static/css/jqgrid/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/apps/static/css/jqgrid/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
rename to apps/static/css/jqgrid/theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
diff --git a/static/css/jqgrid/theme/images/ui-icons_222222_256x240.png b/apps/static/css/jqgrid/theme/images/ui-icons_222222_256x240.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-icons_222222_256x240.png
rename to apps/static/css/jqgrid/theme/images/ui-icons_222222_256x240.png
diff --git a/static/css/jqgrid/theme/images/ui-icons_2e83ff_256x240.png b/apps/static/css/jqgrid/theme/images/ui-icons_2e83ff_256x240.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-icons_2e83ff_256x240.png
rename to apps/static/css/jqgrid/theme/images/ui-icons_2e83ff_256x240.png
diff --git a/static/css/jqgrid/theme/images/ui-icons_454545_256x240.png b/apps/static/css/jqgrid/theme/images/ui-icons_454545_256x240.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-icons_454545_256x240.png
rename to apps/static/css/jqgrid/theme/images/ui-icons_454545_256x240.png
diff --git a/static/css/jqgrid/theme/images/ui-icons_888888_256x240.png b/apps/static/css/jqgrid/theme/images/ui-icons_888888_256x240.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-icons_888888_256x240.png
rename to apps/static/css/jqgrid/theme/images/ui-icons_888888_256x240.png
diff --git a/static/css/jqgrid/theme/images/ui-icons_cd0a0a_256x240.png b/apps/static/css/jqgrid/theme/images/ui-icons_cd0a0a_256x240.png
similarity index 100%
rename from static/css/jqgrid/theme/images/ui-icons_cd0a0a_256x240.png
rename to apps/static/css/jqgrid/theme/images/ui-icons_cd0a0a_256x240.png
diff --git a/static/css/jqgrid/theme/jquery-ui.css b/apps/static/css/jqgrid/theme/jquery-ui.css
similarity index 100%
rename from static/css/jqgrid/theme/jquery-ui.css
rename to apps/static/css/jqgrid/theme/jquery-ui.css
diff --git a/static/css/jqgrid/theme/ui.accordion.css b/apps/static/css/jqgrid/theme/ui.accordion.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.accordion.css
rename to apps/static/css/jqgrid/theme/ui.accordion.css
diff --git a/static/css/jqgrid/theme/ui.all.css b/apps/static/css/jqgrid/theme/ui.all.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.all.css
rename to apps/static/css/jqgrid/theme/ui.all.css
diff --git a/static/css/jqgrid/theme/ui.base.css b/apps/static/css/jqgrid/theme/ui.base.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.base.css
rename to apps/static/css/jqgrid/theme/ui.base.css
diff --git a/static/css/jqgrid/theme/ui.core.css b/apps/static/css/jqgrid/theme/ui.core.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.core.css
rename to apps/static/css/jqgrid/theme/ui.core.css
diff --git a/static/css/jqgrid/theme/ui.datepicker.css b/apps/static/css/jqgrid/theme/ui.datepicker.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.datepicker.css
rename to apps/static/css/jqgrid/theme/ui.datepicker.css
diff --git a/static/css/jqgrid/theme/ui.dialog.css b/apps/static/css/jqgrid/theme/ui.dialog.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.dialog.css
rename to apps/static/css/jqgrid/theme/ui.dialog.css
diff --git a/static/css/jqgrid/theme/ui.progressbar.css b/apps/static/css/jqgrid/theme/ui.progressbar.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.progressbar.css
rename to apps/static/css/jqgrid/theme/ui.progressbar.css
diff --git a/static/css/jqgrid/theme/ui.resizable.css b/apps/static/css/jqgrid/theme/ui.resizable.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.resizable.css
rename to apps/static/css/jqgrid/theme/ui.resizable.css
diff --git a/static/css/jqgrid/theme/ui.slider.css b/apps/static/css/jqgrid/theme/ui.slider.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.slider.css
rename to apps/static/css/jqgrid/theme/ui.slider.css
diff --git a/static/css/jqgrid/theme/ui.tabs.css b/apps/static/css/jqgrid/theme/ui.tabs.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.tabs.css
rename to apps/static/css/jqgrid/theme/ui.tabs.css
diff --git a/static/css/jqgrid/theme/ui.theme.css b/apps/static/css/jqgrid/theme/ui.theme.css
similarity index 100%
rename from static/css/jqgrid/theme/ui.theme.css
rename to apps/static/css/jqgrid/theme/ui.theme.css
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/apps/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-icons_222222_256x240.png b/apps/static/css/jqgrid/ui-lightness/images/ui-icons_222222_256x240.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-icons_222222_256x240.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-icons_222222_256x240.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-icons_228ef1_256x240.png b/apps/static/css/jqgrid/ui-lightness/images/ui-icons_228ef1_256x240.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-icons_228ef1_256x240.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-icons_228ef1_256x240.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-icons_ef8c08_256x240.png b/apps/static/css/jqgrid/ui-lightness/images/ui-icons_ef8c08_256x240.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-icons_ef8c08_256x240.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-icons_ef8c08_256x240.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-icons_ffd27a_256x240.png b/apps/static/css/jqgrid/ui-lightness/images/ui-icons_ffd27a_256x240.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-icons_ffd27a_256x240.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-icons_ffd27a_256x240.png
diff --git a/static/css/jqgrid/ui-lightness/images/ui-icons_ffffff_256x240.png b/apps/static/css/jqgrid/ui-lightness/images/ui-icons_ffffff_256x240.png
similarity index 100%
rename from static/css/jqgrid/ui-lightness/images/ui-icons_ffffff_256x240.png
rename to apps/static/css/jqgrid/ui-lightness/images/ui-icons_ffffff_256x240.png
diff --git a/static/css/jqgrid/ui-lightness/jquery-ui-1.7.2.custom.css b/apps/static/css/jqgrid/ui-lightness/jquery-ui-1.7.2.custom.css
similarity index 100%
rename from static/css/jqgrid/ui-lightness/jquery-ui-1.7.2.custom.css
rename to apps/static/css/jqgrid/ui-lightness/jquery-ui-1.7.2.custom.css
diff --git a/static/css/jqgrid/ui.jqgrid.css b/apps/static/css/jqgrid/ui.jqgrid.css
similarity index 100%
rename from static/css/jqgrid/ui.jqgrid.css
rename to apps/static/css/jqgrid/ui.jqgrid.css
diff --git a/static/css/labeltips.css b/apps/static/css/labeltips.css
similarity index 100%
rename from static/css/labeltips.css
rename to apps/static/css/labeltips.css
diff --git a/static/css/override.css b/apps/static/css/override.css
similarity index 100%
rename from static/css/override.css
rename to apps/static/css/override.css
diff --git a/static/css/style.css b/apps/static/css/style.css
similarity index 100%
rename from static/css/style.css
rename to apps/static/css/style.css
diff --git a/static/images/CITA_logo-anim.gif b/apps/static/images/CITA_logo-anim.gif
similarity index 100%
rename from static/images/CITA_logo-anim.gif
rename to apps/static/images/CITA_logo-anim.gif
diff --git a/static/images/LIGO_logo.png b/apps/static/images/LIGO_logo.png
similarity index 100%
rename from static/images/LIGO_logo.png
rename to apps/static/images/LIGO_logo.png
diff --git a/static/images/LIGO_logo50.png b/apps/static/images/LIGO_logo50.png
similarity index 100%
rename from static/images/LIGO_logo50.png
rename to apps/static/images/LIGO_logo50.png
diff --git a/static/images/LSC_logo.png b/apps/static/images/LSC_logo.png
similarity index 100%
rename from static/images/LSC_logo.png
rename to apps/static/images/LSC_logo.png
diff --git a/static/images/LSC_logo50.png b/apps/static/images/LSC_logo50.png
similarity index 100%
rename from static/images/LSC_logo50.png
rename to apps/static/images/LSC_logo50.png
diff --git a/static/images/PI_Logo-anim.gif b/apps/static/images/PI_Logo-anim.gif
similarity index 100%
rename from static/images/PI_Logo-anim.gif
rename to apps/static/images/PI_Logo-anim.gif
diff --git a/static/images/PI_Logo.gif b/apps/static/images/PI_Logo.gif
similarity index 100%
rename from static/images/PI_Logo.gif
rename to apps/static/images/PI_Logo.gif
diff --git a/static/images/Virgo_logo.png b/apps/static/images/Virgo_logo.png
similarity index 100%
rename from static/images/Virgo_logo.png
rename to apps/static/images/Virgo_logo.png
diff --git a/static/images/Virgo_logo50.png b/apps/static/images/Virgo_logo50.png
similarity index 100%
rename from static/images/Virgo_logo50.png
rename to apps/static/images/Virgo_logo50.png
diff --git a/static/images/anim2.gif b/apps/static/images/anim2.gif
similarity index 100%
rename from static/images/anim2.gif
rename to apps/static/images/anim2.gif
diff --git a/static/images/arrow-down.gif b/apps/static/images/arrow-down.gif
similarity index 100%
rename from static/images/arrow-down.gif
rename to apps/static/images/arrow-down.gif
diff --git a/static/images/arrow-up.gif b/apps/static/images/arrow-up.gif
similarity index 100%
rename from static/images/arrow-up.gif
rename to apps/static/images/arrow-up.gif
diff --git a/static/images/ligo-blue.gif b/apps/static/images/ligo-blue.gif
similarity index 100%
rename from static/images/ligo-blue.gif
rename to apps/static/images/ligo-blue.gif
diff --git a/static/images/minusButton.gif b/apps/static/images/minusButton.gif
similarity index 100%
rename from static/images/minusButton.gif
rename to apps/static/images/minusButton.gif
diff --git a/static/images/plusButton.gif b/apps/static/images/plusButton.gif
similarity index 100%
rename from static/images/plusButton.gif
rename to apps/static/images/plusButton.gif
diff --git a/static/js/flexigrid.js b/apps/static/js/flexigrid.js
similarity index 100%
rename from static/js/flexigrid.js
rename to apps/static/js/flexigrid.js
diff --git a/static/js/grid.locale-en.js b/apps/static/js/grid.locale-en.js
similarity index 100%
rename from static/js/grid.locale-en.js
rename to apps/static/js/grid.locale-en.js
diff --git a/static/js/jquery-1.3.2.min.js b/apps/static/js/jquery-1.3.2.min.js
similarity index 100%
rename from static/js/jquery-1.3.2.min.js
rename to apps/static/js/jquery-1.3.2.min.js
diff --git a/static/js/jquery-ui-1.7.2.custom.min.js b/apps/static/js/jquery-ui-1.7.2.custom.min.js
similarity index 100%
rename from static/js/jquery-ui-1.7.2.custom.min.js
rename to apps/static/js/jquery-ui-1.7.2.custom.min.js
diff --git a/static/js/jquery.jqGrid.min.js b/apps/static/js/jquery.jqGrid.min.js
similarity index 100%
rename from static/js/jquery.jqGrid.min.js
rename to apps/static/js/jquery.jqGrid.min.js
diff --git a/static/js/timeline.js b/apps/static/js/timeline.js
similarity index 100%
rename from static/js/timeline.js
rename to apps/static/js/timeline.js
diff --git a/static/robots.txt b/apps/static/robots.txt
similarity index 100%
rename from static/robots.txt
rename to apps/static/robots.txt
diff --git a/templates/403.html b/apps/templates/403.html
similarity index 100%
rename from templates/403.html
rename to apps/templates/403.html
diff --git a/templates/404.html b/apps/templates/404.html
similarity index 100%
rename from templates/404.html
rename to apps/templates/404.html
diff --git a/templates/500.html b/apps/templates/500.html
similarity index 100%
rename from templates/500.html
rename to apps/templates/500.html
diff --git a/templates/503.html b/apps/templates/503.html
similarity index 100%
rename from templates/503.html
rename to apps/templates/503.html
diff --git a/templates/admin/base_site.html b/apps/templates/admin/base_site.html
similarity index 100%
rename from templates/admin/base_site.html
rename to apps/templates/admin/base_site.html
diff --git a/templates/base.html b/apps/templates/base.html
similarity index 100%
rename from templates/base.html
rename to apps/templates/base.html
diff --git a/templates/discovery.html b/apps/templates/discovery.html
similarity index 100%
rename from templates/discovery.html
rename to apps/templates/discovery.html
diff --git a/templates/doc/index.html b/apps/templates/doc/index.html
similarity index 100%
rename from templates/doc/index.html
rename to apps/templates/doc/index.html
diff --git a/templates/feeds/index.html b/apps/templates/feeds/index.html
similarity index 100%
rename from templates/feeds/index.html
rename to apps/templates/feeds/index.html
diff --git a/templates/feeds/latest_description.html b/apps/templates/feeds/latest_description.html
similarity index 100%
rename from templates/feeds/latest_description.html
rename to apps/templates/feeds/latest_description.html
diff --git a/templates/feeds/latest_title.html b/apps/templates/feeds/latest_title.html
similarity index 100%
rename from templates/feeds/latest_title.html
rename to apps/templates/feeds/latest_title.html
diff --git a/templates/forbidden.html b/apps/templates/forbidden.html
similarity index 100%
rename from templates/forbidden.html
rename to apps/templates/forbidden.html
diff --git a/templates/gracedb/cbc_report.html b/apps/templates/gracedb/cbc_report.html
similarity index 100%
rename from templates/gracedb/cbc_report.html
rename to apps/templates/gracedb/cbc_report.html
diff --git a/templates/gracedb/create.html b/apps/templates/gracedb/create.html
similarity index 100%
rename from templates/gracedb/create.html
rename to apps/templates/gracedb/create.html
diff --git a/templates/gracedb/eel_detail.html b/apps/templates/gracedb/eel_detail.html
similarity index 100%
rename from templates/gracedb/eel_detail.html
rename to apps/templates/gracedb/eel_detail.html
diff --git a/templates/gracedb/eel_form_frag.html b/apps/templates/gracedb/eel_form_frag.html
similarity index 100%
rename from templates/gracedb/eel_form_frag.html
rename to apps/templates/gracedb/eel_form_frag.html
diff --git a/templates/gracedb/embb.json b/apps/templates/gracedb/embb.json
similarity index 100%
rename from templates/gracedb/embb.json
rename to apps/templates/gracedb/embb.json
diff --git a/templates/gracedb/emo_form_frag.html b/apps/templates/gracedb/emo_form_frag.html
similarity index 100%
rename from templates/gracedb/emo_form_frag.html
rename to apps/templates/gracedb/emo_form_frag.html
diff --git a/templates/gracedb/event_detail.html b/apps/templates/gracedb/event_detail.html
similarity index 100%
rename from templates/gracedb/event_detail.html
rename to apps/templates/gracedb/event_detail.html
diff --git a/templates/gracedb/event_detail_CWB.html b/apps/templates/gracedb/event_detail_CWB.html
similarity index 100%
rename from templates/gracedb/event_detail_CWB.html
rename to apps/templates/gracedb/event_detail_CWB.html
diff --git a/templates/gracedb/event_detail_GRB.html b/apps/templates/gracedb/event_detail_GRB.html
similarity index 100%
rename from templates/gracedb/event_detail_GRB.html
rename to apps/templates/gracedb/event_detail_GRB.html
diff --git a/templates/gracedb/event_detail_LIB.html b/apps/templates/gracedb/event_detail_LIB.html
similarity index 100%
rename from templates/gracedb/event_detail_LIB.html
rename to apps/templates/gracedb/event_detail_LIB.html
diff --git a/templates/gracedb/event_detail_coinc.html b/apps/templates/gracedb/event_detail_coinc.html
similarity index 100%
rename from templates/gracedb/event_detail_coinc.html
rename to apps/templates/gracedb/event_detail_coinc.html
diff --git a/templates/gracedb/event_detail_coinc_ext.html b/apps/templates/gracedb/event_detail_coinc_ext.html
similarity index 100%
rename from templates/gracedb/event_detail_coinc_ext.html
rename to apps/templates/gracedb/event_detail_coinc_ext.html
diff --git a/templates/gracedb/event_detail_injection.html b/apps/templates/gracedb/event_detail_injection.html
similarity index 100%
rename from templates/gracedb/event_detail_injection.html
rename to apps/templates/gracedb/event_detail_injection.html
diff --git a/templates/gracedb/event_detail_script.js b/apps/templates/gracedb/event_detail_script.js
similarity index 100%
rename from templates/gracedb/event_detail_script.js
rename to apps/templates/gracedb/event_detail_script.js
diff --git a/templates/gracedb/event_filelist.html b/apps/templates/gracedb/event_filelist.html
similarity index 100%
rename from templates/gracedb/event_filelist.html
rename to apps/templates/gracedb/event_filelist.html
diff --git a/templates/gracedb/event_list.html b/apps/templates/gracedb/event_list.html
similarity index 100%
rename from templates/gracedb/event_list.html
rename to apps/templates/gracedb/event_list.html
diff --git a/templates/gracedb/histogram.html b/apps/templates/gracedb/histogram.html
similarity index 100%
rename from templates/gracedb/histogram.html
rename to apps/templates/gracedb/histogram.html
diff --git a/templates/gracedb/index.html b/apps/templates/gracedb/index.html
similarity index 100%
rename from templates/gracedb/index.html
rename to apps/templates/gracedb/index.html
diff --git a/templates/gracedb/latest.html b/apps/templates/gracedb/latest.html
similarity index 100%
rename from templates/gracedb/latest.html
rename to apps/templates/gracedb/latest.html
diff --git a/templates/gracedb/latest_public.html b/apps/templates/gracedb/latest_public.html
similarity index 100%
rename from templates/gracedb/latest_public.html
rename to apps/templates/gracedb/latest_public.html
diff --git a/templates/gracedb/neighbors_frag.html b/apps/templates/gracedb/neighbors_frag.html
similarity index 100%
rename from templates/gracedb/neighbors_frag.html
rename to apps/templates/gracedb/neighbors_frag.html
diff --git a/templates/gracedb/performance.html b/apps/templates/gracedb/performance.html
similarity index 100%
rename from templates/gracedb/performance.html
rename to apps/templates/gracedb/performance.html
diff --git a/templates/gracedb/query.html b/apps/templates/gracedb/query.html
similarity index 100%
rename from templates/gracedb/query.html
rename to apps/templates/gracedb/query.html
diff --git a/templates/gracedb/query_help_frag.html b/apps/templates/gracedb/query_help_frag.html
similarity index 100%
rename from templates/gracedb/query_help_frag.html
rename to apps/templates/gracedb/query_help_frag.html
diff --git a/templates/gracedb/spinfo.html b/apps/templates/gracedb/spinfo.html
similarity index 100%
rename from templates/gracedb/spinfo.html
rename to apps/templates/gracedb/spinfo.html
diff --git a/templates/gracedb/spprivacy.html b/apps/templates/gracedb/spprivacy.html
similarity index 100%
rename from templates/gracedb/spprivacy.html
rename to apps/templates/gracedb/spprivacy.html
diff --git a/templates/navbar_frag.html b/apps/templates/navbar_frag.html
similarity index 100%
rename from templates/navbar_frag.html
rename to apps/templates/navbar_frag.html
diff --git a/templates/navbar_only.html b/apps/templates/navbar_only.html
similarity index 100%
rename from templates/navbar_only.html
rename to apps/templates/navbar_only.html
diff --git a/templates/profile/createContact.html b/apps/templates/profile/createContact.html
similarity index 100%
rename from templates/profile/createContact.html
rename to apps/templates/profile/createContact.html
diff --git a/templates/profile/createNotification.html b/apps/templates/profile/createNotification.html
similarity index 100%
rename from templates/profile/createNotification.html
rename to apps/templates/profile/createNotification.html
diff --git a/templates/profile/manage_password.html b/apps/templates/profile/manage_password.html
similarity index 100%
rename from templates/profile/manage_password.html
rename to apps/templates/profile/manage_password.html
diff --git a/templates/profile/notifications.html b/apps/templates/profile/notifications.html
similarity index 100%
rename from templates/profile/notifications.html
rename to apps/templates/profile/notifications.html
diff --git a/templates/rest_framework/api.html b/apps/templates/rest_framework/api.html
similarity index 100%
rename from templates/rest_framework/api.html
rename to apps/templates/rest_framework/api.html
diff --git a/userprofile/__init__.py b/apps/userprofile/__init__.py
similarity index 100%
rename from userprofile/__init__.py
rename to apps/userprofile/__init__.py
diff --git a/userprofile/admin.py b/apps/userprofile/admin.py
similarity index 100%
rename from userprofile/admin.py
rename to apps/userprofile/admin.py
diff --git a/userprofile/forms.py b/apps/userprofile/forms.py
similarity index 100%
rename from userprofile/forms.py
rename to apps/userprofile/forms.py
diff --git a/userprofile/migrations/0001_initial.py b/apps/userprofile/migrations/0001_initial.py
similarity index 100%
rename from userprofile/migrations/0001_initial.py
rename to apps/userprofile/migrations/0001_initial.py
diff --git a/userprofile/migrations/0002_alter_email_field_length.py b/apps/userprofile/migrations/0002_alter_email_field_length.py
similarity index 100%
rename from userprofile/migrations/0002_alter_email_field_length.py
rename to apps/userprofile/migrations/0002_alter_email_field_length.py
diff --git a/userprofile/migrations/0003_trigger_label_query.py b/apps/userprofile/migrations/0003_trigger_label_query.py
similarity index 100%
rename from userprofile/migrations/0003_trigger_label_query.py
rename to apps/userprofile/migrations/0003_trigger_label_query.py
diff --git a/userprofile/migrations/0004_add_contact_phone_number.py b/apps/userprofile/migrations/0004_add_contact_phone_number.py
similarity index 100%
rename from userprofile/migrations/0004_add_contact_phone_number.py
rename to apps/userprofile/migrations/0004_add_contact_phone_number.py
diff --git a/userprofile/migrations/0005_separate_call_and_text_alerts.py b/apps/userprofile/migrations/0005_separate_call_and_text_alerts.py
similarity index 100%
rename from userprofile/migrations/0005_separate_call_and_text_alerts.py
rename to apps/userprofile/migrations/0005_separate_call_and_text_alerts.py
diff --git a/userprofile/migrations/0006_alter_trigger_contacts_field.py b/apps/userprofile/migrations/0006_alter_trigger_contacts_field.py
similarity index 100%
rename from userprofile/migrations/0006_alter_trigger_contacts_field.py
rename to apps/userprofile/migrations/0006_alter_trigger_contacts_field.py
diff --git a/userprofile/migrations/__init__.py b/apps/userprofile/migrations/__init__.py
similarity index 100%
rename from userprofile/migrations/__init__.py
rename to apps/userprofile/migrations/__init__.py
diff --git a/userprofile/models.py b/apps/userprofile/models.py
similarity index 100%
rename from userprofile/models.py
rename to apps/userprofile/models.py
diff --git a/userprofile/south_migrations/0001_initial.py b/apps/userprofile/south_migrations/0001_initial.py
similarity index 100%
rename from userprofile/south_migrations/0001_initial.py
rename to apps/userprofile/south_migrations/0001_initial.py
diff --git a/userprofile/south_migrations/0002_stage1_rm_ligouser__add_new_foreign_key.py b/apps/userprofile/south_migrations/0002_stage1_rm_ligouser__add_new_foreign_key.py
similarity index 100%
rename from userprofile/south_migrations/0002_stage1_rm_ligouser__add_new_foreign_key.py
rename to apps/userprofile/south_migrations/0002_stage1_rm_ligouser__add_new_foreign_key.py
diff --git a/userprofile/south_migrations/0003_stage2_rm_ligouser__populate_new_foreign_key.py b/apps/userprofile/south_migrations/0003_stage2_rm_ligouser__populate_new_foreign_key.py
similarity index 100%
rename from userprofile/south_migrations/0003_stage2_rm_ligouser__populate_new_foreign_key.py
rename to apps/userprofile/south_migrations/0003_stage2_rm_ligouser__populate_new_foreign_key.py
diff --git a/userprofile/south_migrations/0004_stage3_rm_ligouser__remove_old_foreign_keys.py b/apps/userprofile/south_migrations/0004_stage3_rm_ligouser__remove_old_foreign_keys.py
similarity index 100%
rename from userprofile/south_migrations/0004_stage3_rm_ligouser__remove_old_foreign_keys.py
rename to apps/userprofile/south_migrations/0004_stage3_rm_ligouser__remove_old_foreign_keys.py
diff --git a/userprofile/south_migrations/0005_auto__chg_field_trigger_user__chg_field_contact_user.py b/apps/userprofile/south_migrations/0005_auto__chg_field_trigger_user__chg_field_contact_user.py
similarity index 100%
rename from userprofile/south_migrations/0005_auto__chg_field_trigger_user__chg_field_contact_user.py
rename to apps/userprofile/south_migrations/0005_auto__chg_field_trigger_user__chg_field_contact_user.py
diff --git a/userprofile/south_migrations/0006_auto__add_m2m_pipelines.py b/apps/userprofile/south_migrations/0006_auto__add_m2m_pipelines.py
similarity index 100%
rename from userprofile/south_migrations/0006_auto__add_m2m_pipelines.py
rename to apps/userprofile/south_migrations/0006_auto__add_m2m_pipelines.py
diff --git a/userprofile/south_migrations/0007_populate_pipelines_on_triggers.py b/apps/userprofile/south_migrations/0007_populate_pipelines_on_triggers.py
similarity index 100%
rename from userprofile/south_migrations/0007_populate_pipelines_on_triggers.py
rename to apps/userprofile/south_migrations/0007_populate_pipelines_on_triggers.py
diff --git a/userprofile/south_migrations/0008_auto__del_analysistype.py b/apps/userprofile/south_migrations/0008_auto__del_analysistype.py
similarity index 100%
rename from userprofile/south_migrations/0008_auto__del_analysistype.py
rename to apps/userprofile/south_migrations/0008_auto__del_analysistype.py
diff --git a/userprofile/south_migrations/__init__.py b/apps/userprofile/south_migrations/__init__.py
similarity index 100%
rename from userprofile/south_migrations/__init__.py
rename to apps/userprofile/south_migrations/__init__.py
diff --git a/userprofile/tests.py b/apps/userprofile/tests.py
similarity index 100%
rename from userprofile/tests.py
rename to apps/userprofile/tests.py
diff --git a/userprofile/urls.py b/apps/userprofile/urls.py
similarity index 100%
rename from userprofile/urls.py
rename to apps/userprofile/urls.py
diff --git a/userprofile/views.py b/apps/userprofile/views.py
similarity index 100%
rename from userprofile/views.py
rename to apps/userprofile/views.py
diff --git a/config/settings/base.py b/config/settings/base.py
index 95209c7f811e81cb26865e1c78e8b30f7cb82c6b..3d981e571ad7c94b29a4fae610ad43e1349ff5bc 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -1,4 +1,5 @@
 import os, time, socket, logging
+from os.path import abspath, dirname, join
 from datetime import datetime, timedelta
 from cloghandler import ConcurrentRotatingFileHandler
 from core.time_utils import posixToGpsTime
@@ -11,6 +12,11 @@ from .local import *
 # TWILIO_AUTH_TOKEN, TWIML_BIN
 from .secret import *
 
+# Set up path to root of project
+BASE_DIR = abspath(join(dirname(__file__), "..", ".."))
+CONFIG_ROOT = join(BASE_DIR, "config")
+PROJECT_ROOT = join(BASE_DIR, "apps")
+
 # Miscellaneous settings ------------------------------------------------------
 # Debug mode is off by default
 DEBUG = False
@@ -55,8 +61,8 @@ LVALERT_OVERSEER_PORTS = {
 }
 # Path to lvalert_send executable, for failover in case
 # LVAlert Overseer is not running.
-LVALERT_SEND_EXECUTABLE = os.path.join(GRACEDB_PATHS["virtualenv"],
-    os.path.join("bin", "lvalert_send"))
+LVALERT_SEND_EXECUTABLE = join(GRACEDB_PATHS["virtualenv"], "bin",
+    "lvalert_send")
 
 # Email settings --------------------------------------------------------------
 EMAIL_HOST = 'localhost'
@@ -142,26 +148,26 @@ SKYALERT_SUBMITTERS = ['Patrick Brady', 'Brian Moe']
 # Latency histograms.  Where they go and max latency to bin.
 LATENCY_REPORT_DEST_DIR = GRACEDB_PATHS["latency"]
 LATENCY_MAXIMUM_CHARTED = 1800
-LATENCY_REPORT_WEB_PAGE_FILE_PATH = os.path.join(LATENCY_REPORT_DEST_DIR,
+LATENCY_REPORT_WEB_PAGE_FILE_PATH = join(LATENCY_REPORT_DEST_DIR,
     "latency.inc")
 
 # Uptime reporting
 UPTIME_REPORT_DIR = GRACEDB_PATHS["uptime"]
 
 # Rate file location
-RATE_INFO_FILE = os.path.join(GRACEDB_PATHS["data"], "rate_info.json")
+RATE_INFO_FILE = join(GRACEDB_PATHS["data"], "rate_info.json")
 
 # URL prefix for serving report information (usually plots and tables)
 # This is aliased to GRACEDB_PATHS["latency"] in the Apache virtualhost
 # configuration.  If you change this, you will need to change that.
-REPORT_INFO_URL_PREFIX = "{sep}report_info{sep}".format(sep=os.path.sep)
+REPORT_INFO_URL_PREFIX = "/report_info/"
 
 # Directory for CBC IFAR Reports
 REPORT_IFAR_IMAGE_DIR = GRACEDB_PATHS["latency"]
 
 # Stuff for the new rates plot
 BINNED_COUNT_PIPELINES = ['gstlal', 'MBTAOnline', 'CWB', 'LIB', 'gstlal-spiir']
-BINNED_COUNT_FILE = os.path.join(GRACEDB_PATHS["data"], "binned_counts.json")
+BINNED_COUNT_FILE = join(GRACEDB_PATHS["data"], "binned_counts.json")
 
 # Defaults for RSS feed
 FEED_MAX_RESULTS = 50
@@ -208,7 +214,7 @@ TEMPLATES = [
     {
         'BACKEND': 'django.template.backends.django.DjangoTemplates',
         'DIRS': [
-            os.path.join(GRACEDB_PATHS["code"], "templates"),
+            join(PROJECT_ROOT, "templates"),
         ],
         'APP_DIRS': True,
         'OPTIONS': {
@@ -221,8 +227,8 @@ TEMPLATES = [
                 'django.template.context_processors.static',
                 # Extra additions
                 'django.template.context_processors.request',
-                'gracedb.middleware.auth.LigoAuthContext',
-                'middleware.debug.LigoDebugContext',
+                'gracedb.context_processors.LigoAuthContext',
+                'core.context_processors.LigoDebugContext',
                 'ligoauth.context_processors.shib_login_url',
             ],
         },
@@ -245,9 +251,9 @@ AUTHENTICATION_BACKENDS = (
 
 # List of middleware classes to use.
 MIDDLEWARE = [
-    'middleware.performance.PerformanceMiddleware',
-    'middleware.accept.AcceptMiddleware',
-    'middleware.cli.CliExceptionMiddleware',
+    'gracedb.middleware.PerformanceMiddleware',
+    'core.middleware.accept.AcceptMiddleware',
+    'core.middleware.cli.CliExceptionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
@@ -256,7 +262,7 @@ MIDDLEWARE = [
 ]
 
 # Path to root URLconf
-ROOT_URLCONF = 'config.urls'
+ROOT_URLCONF = '{module}.urls'.format(module=os.path.basename(CONFIG_ROOT))
 
 # List of string designating all applications which are enabled.
 INSTALLED_APPS = [
@@ -285,8 +291,8 @@ REST_FRAMEWORK = {
 }
 
 # Location of static components, CSS, JS, etc.
-STATIC_ROOT = os.path.join(GRACEDB_PATHS["code"], "static") + os.path.sep
-STATIC_URL = "{sep}gracedb-static{sep}".format(sep=os.path.sep)
+STATIC_ROOT = join(CONFIG_ROOT, "static/")
+STATIC_URL = "/gracedb-static/"
 STATICFILES_FINDERS = [
     'django.contrib.staticfiles.finders.FileSystemFinder',
     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
@@ -295,14 +301,13 @@ STATICFILES_FINDERS = [
 STATICFILES_DIRS = []
 
 # Location of Bower packages.
-BOWER_URL = "{sep}bower-static{sep}".format(sep=os.path.sep)
-BOWER_ROOT = os.path.join(GRACEDB_PATHS["home"], "bower_components") + \
-    os.path.sep
+BOWER_URL = "bower-static"
+BOWER_ROOT = join(GRACEDB_PATHS["home"], "bower_components/")
 
-# Added in order to perform data migrations on the auth app
+# Added in order to perform data migrations on the auth and guardian apps
 MIGRATION_MODULES = {
-    'auth' : 'migrations.auth',
-    'guardian' : 'migrations.guardian',
+    'auth': 'migrations.auth',
+    'guardian': 'migrations.guardian',
 }
 
 # Forces test database to be created with syncdb rather than via
@@ -399,8 +404,7 @@ LOGGING = {
         'debug_file': {
             'class': 'logging.handlers.ConcurrentRotatingFileHandler',
             'formatter': LOG_FORMAT,
-            'filename': os.path.join(GRACEDB_PATHS["logs"],
-                        "gracedb_debug.log"),
+            'filename': join(GRACEDB_PATHS["logs"], "gracedb_debug.log"),
             'maxBytes': (20*1024*1024),
             'backupCount': LOG_FILE_BAK_CT,
             'level': 'DEBUG',
@@ -408,8 +412,7 @@ LOGGING = {
         'error_file': {
             'class': 'logging.handlers.ConcurrentRotatingFileHandler',
             'formatter': LOG_FORMAT,
-            'filename': os.path.join(GRACEDB_PATHS["logs"],
-                        "gracedb_error.log"),
+            'filename': join(GRACEDB_PATHS["logs"], "gracedb_error.log"),
             'maxBytes': LOG_FILE_SIZE,
             'backupCount': LOG_FILE_BAK_CT,
             'level': 'ERROR',
@@ -419,8 +422,7 @@ LOGGING = {
             'maxBytes': 1024*1024,
             'backupCount': 1,
             'formatter': 'simple',
-            'filename': os.path.join(GRACEDB_PATHS["logs"],
-                        "gracedb_performance.log"),
+            'filename': join(GRACEDB_PATHS["logs"], "gracedb_performance.log"),
         },
         'mail_admins': {
             'level': 'ERROR',
diff --git a/config/settings/test.py b/config/settings/test.py
index 7a86ace20a69b7c0dea9fbb927ef97ed8d3996bb..b43d8d450691ecdc6ea0ecf828cd93bd4ea756fa 100644
--- a/config/settings/test.py
+++ b/config/settings/test.py
@@ -14,7 +14,7 @@ EMBB_MAIL_ADDRESS = 'gracedb@{fqdn}'.format(fqdn=SERVER_FQDN)
 # Add middleware
 MIDDLEWARE += [
     'debug_toolbar.middleware.DebugToolbarMiddleware',
-    #'middleware.profiling.ProfileMiddleware',
+    #'core.middleware.profiling.ProfileMiddleware',
 ]
 
 # Add to installed apps
diff --git a/config/wsgi.py b/config/wsgi.py
index 17881e6a8e54773516b1aafeaf7616718fb41d2f..1209e3042dbb75576f29f39c26e77a23399b1c83 100644
--- a/config/wsgi.py
+++ b/config/wsgi.py
@@ -1,21 +1,23 @@
 import os
 import sys
+from os.path import abspath, dirname, join
 
 os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings'
 
-# Add the source code directory
-sys.path.append('/home/gracedb/gracedb')
+# Set up base dir of repository
+BASE_DIR = abspath(join(dirname(__file__), ".."))
+
+# Add the source code directory and project root
+sys.path.append(BASE_DIR)
+sys.path.append(join(BASE_DIR, "apps"))
 
 # Activate the virtual environment
 VIRTUALENV_ACTIVATOR = "/home/gracedb/djangoenv/bin/activate_this.py"
 execfile(VIRTUALENV_ACTIVATOR, dict(__file__=VIRTUALENV_ACTIVATOR))
 
+# Matplotlib config directory
 os.environ['MPLCONFIGDIR']='/tmp/'
 
-# Changed for compatibility with django 1.7.8
-#import django.core.handlers.wsgi
-#application = django.core.handlers.wsgi.WSGIHandler()
-
 from django.core.wsgi import get_wsgi_application
 application = get_wsgi_application()
 
diff --git a/gracedb/middleware/auth.py b/gracedb/middleware/auth.py
deleted file mode 100644
index 616ce13fd0ad0041215384337a8e609ac6b575a3..0000000000000000000000000000000000000000
--- a/gracedb/middleware/auth.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#
-#from django.contrib.auth import authenticate
-#
-#from ..models import User
-#from django.contrib.auth.models import User as DjangoUser
-#
-#import re
-#proxyPattern = re.compile(r'^(.*?)(/CN=\d+)*$')
-#
-#def nameFromPrincipal(principal):
-#    name = principal.split('@')[0]
-#    first, last = name.split('.')
-#    return first[0].upper() + first[1:] + " " + last[0].upper() + last[1:]
-#
-#class LigoAuthMiddleware:
-#
-#    def process_request(self, request):
-#
-#        ligouser = None
-#        user = None
-#        principal = None
-#
-#        queryResult = []
-#        if not request.user.is_anonymous():
-#            # Scott's middleware has set the user aready using shib.
-#            # Let's add some more attributes.
-#            principal = request.user.username
-#            request.user.name = nameFromPrincipal(principal)
-#            queryResult = User.objects.filter(principal=principal)
-#        else:
-#            # authenticate with certs
-#            certdn = request.META.get('SSL_CLIENT_S_DN')
-#            issuer = request.META.get('SSL_CLIENT_I_DN')
-#
-#            if not certdn:
-#                try:
-#                    # mod_python is a little off...
-#                    # SSL info is in request._req
-#                    # Need to try/except because _req is
-#                    # not defined in WSGI request.
-#                    certdn = request._req.ssl_var_lookup ('SSL_CLIENT_S_DN')
-#                    issuer = request._req.ssl_var_lookup ('SSL_CLIENT_I_DN')
-#                    pass
-#                except:
-#                    pass
-#
-#            if certdn and certdn.startswith(issuer):
-#                # proxy.
-#                # Proxies can be signed by proxies.
-#                # Each level of "proxification" causes the subject
-#                # to have a '/CN=[0-9]+ appended to the signers subject.
-#                # These must be removed to discover the original identity's
-#                # subject DN.
-#                issuer = proxyPattern.match(issuer).group(1)
-#                queryResult = User.objects.filter(dn=issuer)
-#            elif certdn:
-#                # cert in browser.
-#                queryResult = User.objects.filter(dn=certdn)
-#
-#        if queryResult:
-#            ligouser = queryResult[0]
-#            try:
-#                user = DjangoUser.objects.get(username=ligouser.unixid)
-#            except DjangoUser.DoesNotExist:
-#                user = DjangoUser(username=ligouser.unixid, password="")
-#                user.is_staff = False
-#                user.is_superuser = False
-#                user.save()
-#        elif principal:
-#            # There is no user ... what do we do?
-#            # If auth was via cert... nothing, DNs need to be registered.
-#            # If auth was via kerberos, we make sure it was a LIGO.ORG
-#            #   principal and make a new user and ligouser with no DN.
-#            #assert (principal.split('@')[1] == 'LIGO.ORG')
-#            ligouser = User(name = nameFromPrincipal(principal),
-#                            email = principal.lower(),
-#                            principal = principal,
-#                            dn = "NONE",
-#                            unixid = principal.split('@')[0])
-#            ligouser.save()
-#            try:
-#                user = DjangoUser.objects.get(username=ligouser.unixid)
-#            except DjangoUser.DoesNotExist:
-#                user = DjangoUser(username=ligouser.unixid, password="")
-#                user.is_staff = False
-#                user.is_superuser = False
-#                user.save()
-#
-#        request.user = authenticate(ssluser=user)
-#        request.ligouser = ligouser
-#
-#        # Http404 doesn't check for user == None, just hasattr(x,'user')
-#        # Why does this matter?  I forget, but it does.
-#        if not request.user: del request.user 
-#
-#        return None
-#
-##   def process_view(self, request, view_func, view_args, view_kwargs):
-##       return None
-#
-##   def process_response(self, request, response):
-##       return None
-#
-##   def process_exception(self, request, exception):
-##       return None
-#
-#class LigoAuthBackend:
-#
-#    supports_object_permissions = False
-#    supports_anonymous_user = False
-#    supports_inactive_user = False
-#
-#    def authenticate(self, ssluser):
-#        return ssluser
-#
-#    def get_user(self, user_id):
-#        try:
-#            return DjangoUser.get(id=user_id)
-#        except DjangoUser.UserDoesNotExist:
-#            return None
-#
-
-from django.contrib.auth.models import Group
-
-def LigoAuthContext(request):
-    #return { 'ligouser' : request.ligouser, 'user' : request.user }
-
-    internal_groups = Group.objects.filter(name__in=['Communities:LSCVirgoLIGOGroupMembers', 'executives'])
-
-    user_is_internal = False
-    if request.user:
-        if set(list(internal_groups)) & set(list(request.user.groups.all())):
-            user_is_internal = True
-
-    return { 'user' : request.user, 'user_is_internal' : user_is_internal }
-    return { 'ligouser' : request.user, 'user' : request.user }
diff --git a/manage.py b/manage.py
index 7038fe6b5668591f9b98113d66ac9b2edf202bf2..dd3038edd935a4d42eadf0058325c7a5a7effa71 100755
--- a/manage.py
+++ b/manage.py
@@ -5,6 +5,13 @@ import sys
 
 if __name__ == "__main__":
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
+
+    # Add the apps directory to Python's path. In production it will
+    # be necessary to add the apps directory to the path, too.
+    from os.path import abspath, dirname, join
+    BASE_DIR = abspath(dirname(__file__))
+    sys.path.append(join(BASE_DIR, "apps"))
+
     try:
         from django.core.management import execute_from_command_line
     except ImportError: