aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.env.sample3
-rw-r--r--src/laas_dashboard/settings.py15
-rw-r--r--src/templates/README25
-rw-r--r--src/templates/base/account/booking_list.html (renamed from src/templates/account/booking_list.html)0
-rw-r--r--src/templates/base/account/configuration_list.html (renamed from src/templates/account/configuration_list.html)0
-rw-r--r--src/templates/base/account/details.html (renamed from src/templates/account/details.html)0
-rw-r--r--src/templates/base/account/image_list.html (renamed from src/templates/account/image_list.html)0
-rw-r--r--src/templates/base/account/resource_list.html (renamed from src/templates/account/resource_list.html)0
-rw-r--r--src/templates/base/account/user_list.html (renamed from src/templates/account/user_list.html)0
-rw-r--r--src/templates/base/account/userprofile_update_form.html (renamed from src/templates/account/userprofile_update_form.html)0
-rw-r--r--src/templates/base/base.html (renamed from src/templates/base.html)0
-rw-r--r--src/templates/base/booking/booking_calendar.html (renamed from src/templates/booking/booking_calendar.html)0
-rw-r--r--src/templates/base/booking/booking_delete.html (renamed from src/templates/booking/booking_delete.html)0
-rw-r--r--src/templates/base/booking/booking_detail.html (renamed from src/templates/booking/booking_detail.html)0
-rw-r--r--src/templates/base/booking/booking_grid_item.html (renamed from src/templates/booking/booking_grid_item.html)0
-rw-r--r--src/templates/base/booking/booking_list.html (renamed from src/templates/booking/booking_list.html)0
-rw-r--r--src/templates/base/booking/booking_table.html (renamed from src/templates/booking/booking_table.html)0
-rw-r--r--src/templates/base/booking/quick_deploy.html (renamed from src/templates/booking/quick_deploy.html)0
-rw-r--r--src/templates/base/booking/stats.html (renamed from src/templates/booking/stats.html)0
-rw-r--r--src/templates/base/booking/steps/booking_meta.html (renamed from src/templates/booking/steps/booking_meta.html)0
-rw-r--r--src/templates/base/config_bundle/steps/assign_host_roles.html (renamed from src/templates/config_bundle/steps/assign_host_roles.html)0
-rw-r--r--src/templates/base/config_bundle/steps/assign_network_roles.html (renamed from src/templates/config_bundle/steps/assign_network_roles.html)0
-rw-r--r--src/templates/base/config_bundle/steps/config_software.html (renamed from src/templates/config_bundle/steps/config_software.html)0
-rw-r--r--src/templates/base/config_bundle/steps/define_software.html (renamed from src/templates/config_bundle/steps/define_software.html)0
-rw-r--r--src/templates/base/config_bundle/steps/pick_installer.html (renamed from src/templates/config_bundle/steps/pick_installer.html)0
-rw-r--r--src/templates/base/config_bundle/steps/table_formset.html (renamed from src/templates/config_bundle/steps/table_formset.html)0
-rw-r--r--src/templates/base/dashboard/genericselect.html (renamed from src/templates/dashboard/genericselect.html)0
-rw-r--r--src/templates/base/dashboard/host_profile_detail.html (renamed from src/templates/dashboard/host_profile_detail.html)0
-rw-r--r--src/templates/base/dashboard/idf.yaml (renamed from src/templates/dashboard/idf.yaml)0
-rw-r--r--src/templates/base/dashboard/lab_detail.html (renamed from src/templates/dashboard/lab_detail.html)0
-rw-r--r--src/templates/base/dashboard/lab_list.html (renamed from src/templates/dashboard/lab_list.html)0
-rw-r--r--src/templates/base/dashboard/landing.html (renamed from src/templates/dashboard/landing.html)11
-rw-r--r--src/templates/base/dashboard/login.html (renamed from src/templates/dashboard/login.html)0
-rw-r--r--src/templates/base/dashboard/multiple_select_filter_widget.html (renamed from src/templates/dashboard/multiple_select_filter_widget.html)0
-rw-r--r--src/templates/base/dashboard/pdf.yaml (renamed from src/templates/dashboard/pdf.yaml)0
-rw-r--r--src/templates/base/dashboard/resource.html (renamed from src/templates/dashboard/resource.html)0
-rw-r--r--src/templates/base/dashboard/resource_all.html (renamed from src/templates/dashboard/resource_all.html)0
-rw-r--r--src/templates/base/dashboard/resource_detail.html (renamed from src/templates/dashboard/resource_detail.html)0
-rw-r--r--src/templates/base/dashboard/searchable_select_multiple.html (renamed from src/templates/dashboard/searchable_select_multiple.html)0
-rw-r--r--src/templates/base/dashboard/server_table.html (renamed from src/templates/dashboard/server_table.html)0
-rw-r--r--src/templates/base/dashboard/table.html (renamed from src/templates/dashboard/table.html)0
-rw-r--r--src/templates/base/layout.html (renamed from src/templates/layout.html)0
-rw-r--r--src/templates/base/notifier/email_ended.txt (renamed from src/templates/notifier/email_ended.txt)0
-rw-r--r--src/templates/base/notifier/email_expiring.txt (renamed from src/templates/notifier/email_expiring.txt)0
-rw-r--r--src/templates/base/notifier/email_fulfilled.txt (renamed from src/templates/notifier/email_fulfilled.txt)0
-rw-r--r--src/templates/base/notifier/end_booking.html (renamed from src/templates/notifier/end_booking.html)0
-rw-r--r--src/templates/base/notifier/expiring_booking.html (renamed from src/templates/notifier/expiring_booking.html)0
-rw-r--r--src/templates/base/notifier/inbox.html (renamed from src/templates/notifier/inbox.html)0
-rw-r--r--src/templates/base/notifier/new_booking.html (renamed from src/templates/notifier/new_booking.html)0
-rw-r--r--src/templates/base/notifier/notification.html (renamed from src/templates/notifier/notification.html)0
-rw-r--r--src/templates/base/resource/hostprofile_detail.html (renamed from src/templates/resource/hostprofile_detail.html)0
-rw-r--r--src/templates/base/resource/hosts.html (renamed from src/templates/resource/hosts.html)0
-rw-r--r--src/templates/base/resource/mxClient.min.js (renamed from src/templates/resource/mxClient.min.js)0
-rw-r--r--src/templates/base/resource/steps/define_hardware.html (renamed from src/templates/resource/steps/define_hardware.html)0
-rw-r--r--src/templates/base/resource/steps/host_info.html (renamed from src/templates/resource/steps/host_info.html)0
-rw-r--r--src/templates/base/resource/steps/meta_info.html (renamed from src/templates/resource/steps/meta_info.html)0
-rw-r--r--src/templates/base/resource/steps/pod_definition.html (renamed from src/templates/resource/steps/pod_definition.html)0
-rw-r--r--src/templates/base/resource/uncommon.css (renamed from src/templates/resource/uncommon.css)0
-rw-r--r--src/templates/base/rest_framework/api.html (renamed from src/templates/rest_framework/api.html)0
-rw-r--r--src/templates/base/snapshot_workflow/steps/meta.html (renamed from src/templates/snapshot_workflow/steps/meta.html)0
-rw-r--r--src/templates/base/snapshot_workflow/steps/select_host.html (renamed from src/templates/snapshot_workflow/steps/select_host.html)0
-rw-r--r--src/templates/base/workflow/confirm.html (renamed from src/templates/workflow/confirm.html)0
-rw-r--r--src/templates/base/workflow/no_workflow.html (renamed from src/templates/workflow/no_workflow.html)0
-rw-r--r--src/templates/base/workflow/viewport-base.html (renamed from src/templates/workflow/viewport-base.html)0
-rw-r--r--src/templates/base/workflow/viewport-element.html (renamed from src/templates/workflow/viewport-element.html)0
-rw-r--r--src/templates/laas/dashboard/landing.html12
66 files changed, 57 insertions, 9 deletions
diff --git a/config.env.sample b/config.env.sample
index 7677c2f..01194b9 100644
--- a/config.env.sample
+++ b/config.env.sample
@@ -36,3 +36,6 @@ EMAIL_PORT=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
DEFAULT_FROM_EMAIL=webmaster@localhost
+
+
+TEMPLATE_OVERRIDE_DIR=laas
diff --git a/src/laas_dashboard/settings.py b/src/laas_dashboard/settings.py
index 951ce1a..d41ad0c 100644
--- a/src/laas_dashboard/settings.py
+++ b/src/laas_dashboard/settings.py
@@ -53,10 +53,23 @@ MIDDLEWARE = [
ROOT_URLCONF = 'laas_dashboard.urls'
+TEMPLATE_OVERRIDE = os.environ.get("TEMPLATE_OVERRIDE_DIR", "") # the user's custom template dir
+TEMPLATE_DIRS = ["base"] # where all the base templates are
+
+# If the user has a custom template directory,
+# We should search that first. Then we search the
+# root template directory so that we can extend the base
+# templates within the custom template dir.
+if TEMPLATE_OVERRIDE:
+ TEMPLATE_DIRS = [TEMPLATE_OVERRIDE, ""] + TEMPLATE_DIRS
+
+# all template dirs are relative to /project_root/templates/
+dirs = [os.path.join(BASE_DIR, "templates", d) for d in TEMPLATE_DIRS]
+
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [os.path.join(BASE_DIR, 'templates')],
+ 'DIRS': dirs,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
diff --git a/src/templates/README b/src/templates/README
new file mode 100644
index 0000000..d058036
--- /dev/null
+++ b/src/templates/README
@@ -0,0 +1,25 @@
+We use a special directory structure here that allows you to define
+your own set of templates than inherit from a common base.
+
+To create your own templates:
+
+Create your new directory as a sibling of base/
+ `mkdir my_templates`
+
+Now you can override any template file in base/ by creating a file of the same name in my_templates.
+
+For example, to replace base/booking/booking_table.html,
+you would create my_templates/booking/booking_table.html. Your template will be loaded instead of the original.
+
+
+You can also inherit from the base templates. For example, if you
+wanted to add to base/dashboard/landing.html, you can create
+a template at my_templates/dashboard/landing.html and add this line to
+the top of the file:
+ {% extends base/dashboard/landing.html %}
+
+This way you can add in new {% block %} tags to the parents and define only
+the new content you need without affecting the default behavior.
+
+
+When your template directory is ready, you must add it to your config.env
diff --git a/src/templates/account/booking_list.html b/src/templates/base/account/booking_list.html
index f9234bc..f9234bc 100644
--- a/src/templates/account/booking_list.html
+++ b/src/templates/base/account/booking_list.html
diff --git a/src/templates/account/configuration_list.html b/src/templates/base/account/configuration_list.html
index 206c203..206c203 100644
--- a/src/templates/account/configuration_list.html
+++ b/src/templates/base/account/configuration_list.html
diff --git a/src/templates/account/details.html b/src/templates/base/account/details.html
index 3092ad0..3092ad0 100644
--- a/src/templates/account/details.html
+++ b/src/templates/base/account/details.html
diff --git a/src/templates/account/image_list.html b/src/templates/base/account/image_list.html
index 6263016..6263016 100644
--- a/src/templates/account/image_list.html
+++ b/src/templates/base/account/image_list.html
diff --git a/src/templates/account/resource_list.html b/src/templates/base/account/resource_list.html
index 65b46f1..65b46f1 100644
--- a/src/templates/account/resource_list.html
+++ b/src/templates/base/account/resource_list.html
diff --git a/src/templates/account/user_list.html b/src/templates/base/account/user_list.html
index e564524..e564524 100644
--- a/src/templates/account/user_list.html
+++ b/src/templates/base/account/user_list.html
diff --git a/src/templates/account/userprofile_update_form.html b/src/templates/base/account/userprofile_update_form.html
index 16a8270..16a8270 100644
--- a/src/templates/account/userprofile_update_form.html
+++ b/src/templates/base/account/userprofile_update_form.html
diff --git a/src/templates/base.html b/src/templates/base/base.html
index 4011739..4011739 100644
--- a/src/templates/base.html
+++ b/src/templates/base/base.html
diff --git a/src/templates/booking/booking_calendar.html b/src/templates/base/booking/booking_calendar.html
index 450c97f..450c97f 100644
--- a/src/templates/booking/booking_calendar.html
+++ b/src/templates/base/booking/booking_calendar.html
diff --git a/src/templates/booking/booking_delete.html b/src/templates/base/booking/booking_delete.html
index b89eb15..b89eb15 100644
--- a/src/templates/booking/booking_delete.html
+++ b/src/templates/base/booking/booking_delete.html
diff --git a/src/templates/booking/booking_detail.html b/src/templates/base/booking/booking_detail.html
index fea2bb6..fea2bb6 100644
--- a/src/templates/booking/booking_detail.html
+++ b/src/templates/base/booking/booking_detail.html
diff --git a/src/templates/booking/booking_grid_item.html b/src/templates/base/booking/booking_grid_item.html
index 3c72fd2..3c72fd2 100644
--- a/src/templates/booking/booking_grid_item.html
+++ b/src/templates/base/booking/booking_grid_item.html
diff --git a/src/templates/booking/booking_list.html b/src/templates/base/booking/booking_list.html
index 591ecc9..591ecc9 100644
--- a/src/templates/booking/booking_list.html
+++ b/src/templates/base/booking/booking_list.html
diff --git a/src/templates/booking/booking_table.html b/src/templates/base/booking/booking_table.html
index 32a0146..32a0146 100644
--- a/src/templates/booking/booking_table.html
+++ b/src/templates/base/booking/booking_table.html
diff --git a/src/templates/booking/quick_deploy.html b/src/templates/base/booking/quick_deploy.html
index 8570f25..8570f25 100644
--- a/src/templates/booking/quick_deploy.html
+++ b/src/templates/base/booking/quick_deploy.html
diff --git a/src/templates/booking/stats.html b/src/templates/base/booking/stats.html
index 94239f9..94239f9 100644
--- a/src/templates/booking/stats.html
+++ b/src/templates/base/booking/stats.html
diff --git a/src/templates/booking/steps/booking_meta.html b/src/templates/base/booking/steps/booking_meta.html
index f12496e..f12496e 100644
--- a/src/templates/booking/steps/booking_meta.html
+++ b/src/templates/base/booking/steps/booking_meta.html
diff --git a/src/templates/config_bundle/steps/assign_host_roles.html b/src/templates/base/config_bundle/steps/assign_host_roles.html
index b87a17f..b87a17f 100644
--- a/src/templates/config_bundle/steps/assign_host_roles.html
+++ b/src/templates/base/config_bundle/steps/assign_host_roles.html
diff --git a/src/templates/config_bundle/steps/assign_network_roles.html b/src/templates/base/config_bundle/steps/assign_network_roles.html
index aa1df44..aa1df44 100644
--- a/src/templates/config_bundle/steps/assign_network_roles.html
+++ b/src/templates/base/config_bundle/steps/assign_network_roles.html
diff --git a/src/templates/config_bundle/steps/config_software.html b/src/templates/base/config_bundle/steps/config_software.html
index 7e8b25d..7e8b25d 100644
--- a/src/templates/config_bundle/steps/config_software.html
+++ b/src/templates/base/config_bundle/steps/config_software.html
diff --git a/src/templates/config_bundle/steps/define_software.html b/src/templates/base/config_bundle/steps/define_software.html
index 43f3f5d..43f3f5d 100644
--- a/src/templates/config_bundle/steps/define_software.html
+++ b/src/templates/base/config_bundle/steps/define_software.html
diff --git a/src/templates/config_bundle/steps/pick_installer.html b/src/templates/base/config_bundle/steps/pick_installer.html
index c3b505d..c3b505d 100644
--- a/src/templates/config_bundle/steps/pick_installer.html
+++ b/src/templates/base/config_bundle/steps/pick_installer.html
diff --git a/src/templates/config_bundle/steps/table_formset.html b/src/templates/base/config_bundle/steps/table_formset.html
index d25621e..d25621e 100644
--- a/src/templates/config_bundle/steps/table_formset.html
+++ b/src/templates/base/config_bundle/steps/table_formset.html
diff --git a/src/templates/dashboard/genericselect.html b/src/templates/base/dashboard/genericselect.html
index 863d33f..863d33f 100644
--- a/src/templates/dashboard/genericselect.html
+++ b/src/templates/base/dashboard/genericselect.html
diff --git a/src/templates/dashboard/host_profile_detail.html b/src/templates/base/dashboard/host_profile_detail.html
index f65d4fe..f65d4fe 100644
--- a/src/templates/dashboard/host_profile_detail.html
+++ b/src/templates/base/dashboard/host_profile_detail.html
diff --git a/src/templates/dashboard/idf.yaml b/src/templates/base/dashboard/idf.yaml
index 9e0cc26..9e0cc26 100644
--- a/src/templates/dashboard/idf.yaml
+++ b/src/templates/base/dashboard/idf.yaml
diff --git a/src/templates/dashboard/lab_detail.html b/src/templates/base/dashboard/lab_detail.html
index a12c5da..a12c5da 100644
--- a/src/templates/dashboard/lab_detail.html
+++ b/src/templates/base/dashboard/lab_detail.html
diff --git a/src/templates/dashboard/lab_list.html b/src/templates/base/dashboard/lab_list.html
index ba627bc..ba627bc 100644
--- a/src/templates/dashboard/lab_list.html
+++ b/src/templates/base/dashboard/lab_list.html
diff --git a/src/templates/dashboard/landing.html b/src/templates/base/dashboard/landing.html
index f0fa954..9e45b09 100644
--- a/src/templates/dashboard/landing.html
+++ b/src/templates/base/dashboard/landing.html
@@ -19,14 +19,9 @@
<!-- About us -->
<div class="col-12 col-lg-6 mb-4">
<h2 class="border-bottom">About Us</h2>
- <p>The Lab as a Service (LaaS) project aims to help in the development and testing of LFN projects such as
- OPNFV
- by hosting hardware and providing access to the community. Currently, the only participating lab is the
- University of New Hampshire Interoperability Lab (UNH-IOL).</p>
- <p>To get started, you can request access to a server at the right. PTL's have the ability to design and
- book a
- whole block of servers with customized layer2 networks (e.g. a Pharos Pod). Read more here: <a
- href="https://wiki.opnfv.org/display/INF/Lab+as+a+Service+2.0">LaaS Wiki</a></p>
+ {% block about_us %}
+ <p>Here is some information about us!</p>
+ {% endblock about_us %}
</div>
<!-- Get started -->
diff --git a/src/templates/dashboard/login.html b/src/templates/base/dashboard/login.html
index d3aa4ad..d3aa4ad 100644
--- a/src/templates/dashboard/login.html
+++ b/src/templates/base/dashboard/login.html
diff --git a/src/templates/dashboard/multiple_select_filter_widget.html b/src/templates/base/dashboard/multiple_select_filter_widget.html
index 92aa1ba..92aa1ba 100644
--- a/src/templates/dashboard/multiple_select_filter_widget.html
+++ b/src/templates/base/dashboard/multiple_select_filter_widget.html
diff --git a/src/templates/dashboard/pdf.yaml b/src/templates/base/dashboard/pdf.yaml
index c893919..c893919 100644
--- a/src/templates/dashboard/pdf.yaml
+++ b/src/templates/base/dashboard/pdf.yaml
diff --git a/src/templates/dashboard/resource.html b/src/templates/base/dashboard/resource.html
index f36ee7b..f36ee7b 100644
--- a/src/templates/dashboard/resource.html
+++ b/src/templates/base/dashboard/resource.html
diff --git a/src/templates/dashboard/resource_all.html b/src/templates/base/dashboard/resource_all.html
index fb8cc7e..fb8cc7e 100644
--- a/src/templates/dashboard/resource_all.html
+++ b/src/templates/base/dashboard/resource_all.html
diff --git a/src/templates/dashboard/resource_detail.html b/src/templates/base/dashboard/resource_detail.html
index 0a443d9..0a443d9 100644
--- a/src/templates/dashboard/resource_detail.html
+++ b/src/templates/base/dashboard/resource_detail.html
diff --git a/src/templates/dashboard/searchable_select_multiple.html b/src/templates/base/dashboard/searchable_select_multiple.html
index f7fd189..f7fd189 100644
--- a/src/templates/dashboard/searchable_select_multiple.html
+++ b/src/templates/base/dashboard/searchable_select_multiple.html
diff --git a/src/templates/dashboard/server_table.html b/src/templates/base/dashboard/server_table.html
index f01bd60..f01bd60 100644
--- a/src/templates/dashboard/server_table.html
+++ b/src/templates/base/dashboard/server_table.html
diff --git a/src/templates/dashboard/table.html b/src/templates/base/dashboard/table.html
index 2b4628e..2b4628e 100644
--- a/src/templates/dashboard/table.html
+++ b/src/templates/base/dashboard/table.html
diff --git a/src/templates/layout.html b/src/templates/base/layout.html
index eac0ac3..eac0ac3 100644
--- a/src/templates/layout.html
+++ b/src/templates/base/layout.html
diff --git a/src/templates/notifier/email_ended.txt b/src/templates/base/notifier/email_ended.txt
index 1788e00..1788e00 100644
--- a/src/templates/notifier/email_ended.txt
+++ b/src/templates/base/notifier/email_ended.txt
diff --git a/src/templates/notifier/email_expiring.txt b/src/templates/base/notifier/email_expiring.txt
index 72c9a83..72c9a83 100644
--- a/src/templates/notifier/email_expiring.txt
+++ b/src/templates/base/notifier/email_expiring.txt
diff --git a/src/templates/notifier/email_fulfilled.txt b/src/templates/base/notifier/email_fulfilled.txt
index 90d294a..90d294a 100644
--- a/src/templates/notifier/email_fulfilled.txt
+++ b/src/templates/base/notifier/email_fulfilled.txt
diff --git a/src/templates/notifier/end_booking.html b/src/templates/base/notifier/end_booking.html
index a2981c1..a2981c1 100644
--- a/src/templates/notifier/end_booking.html
+++ b/src/templates/base/notifier/end_booking.html
diff --git a/src/templates/notifier/expiring_booking.html b/src/templates/base/notifier/expiring_booking.html
index 8bfa689..8bfa689 100644
--- a/src/templates/notifier/expiring_booking.html
+++ b/src/templates/base/notifier/expiring_booking.html
diff --git a/src/templates/notifier/inbox.html b/src/templates/base/notifier/inbox.html
index 26b6d32..26b6d32 100644
--- a/src/templates/notifier/inbox.html
+++ b/src/templates/base/notifier/inbox.html
diff --git a/src/templates/notifier/new_booking.html b/src/templates/base/notifier/new_booking.html
index 64244e0..64244e0 100644
--- a/src/templates/notifier/new_booking.html
+++ b/src/templates/base/notifier/new_booking.html
diff --git a/src/templates/notifier/notification.html b/src/templates/base/notifier/notification.html
index 603edea..603edea 100644
--- a/src/templates/notifier/notification.html
+++ b/src/templates/base/notifier/notification.html
diff --git a/src/templates/resource/hostprofile_detail.html b/src/templates/base/resource/hostprofile_detail.html
index 0b3262c..0b3262c 100644
--- a/src/templates/resource/hostprofile_detail.html
+++ b/src/templates/base/resource/hostprofile_detail.html
diff --git a/src/templates/resource/hosts.html b/src/templates/base/resource/hosts.html
index 9fc50ce..9fc50ce 100644
--- a/src/templates/resource/hosts.html
+++ b/src/templates/base/resource/hosts.html
diff --git a/src/templates/resource/mxClient.min.js b/src/templates/base/resource/mxClient.min.js
index 150a0ac..150a0ac 100644
--- a/src/templates/resource/mxClient.min.js
+++ b/src/templates/base/resource/mxClient.min.js
diff --git a/src/templates/resource/steps/define_hardware.html b/src/templates/base/resource/steps/define_hardware.html
index 573b996..573b996 100644
--- a/src/templates/resource/steps/define_hardware.html
+++ b/src/templates/base/resource/steps/define_hardware.html
diff --git a/src/templates/resource/steps/host_info.html b/src/templates/base/resource/steps/host_info.html
index 3230d8f..3230d8f 100644
--- a/src/templates/resource/steps/host_info.html
+++ b/src/templates/base/resource/steps/host_info.html
diff --git a/src/templates/resource/steps/meta_info.html b/src/templates/base/resource/steps/meta_info.html
index 6fef065..6fef065 100644
--- a/src/templates/resource/steps/meta_info.html
+++ b/src/templates/base/resource/steps/meta_info.html
diff --git a/src/templates/resource/steps/pod_definition.html b/src/templates/base/resource/steps/pod_definition.html
index a6810de..a6810de 100644
--- a/src/templates/resource/steps/pod_definition.html
+++ b/src/templates/base/resource/steps/pod_definition.html
diff --git a/src/templates/resource/uncommon.css b/src/templates/base/resource/uncommon.css
index 1ea9f35..1ea9f35 100644
--- a/src/templates/resource/uncommon.css
+++ b/src/templates/base/resource/uncommon.css
diff --git a/src/templates/rest_framework/api.html b/src/templates/base/rest_framework/api.html
index a62c8f5..a62c8f5 100644
--- a/src/templates/rest_framework/api.html
+++ b/src/templates/base/rest_framework/api.html
diff --git a/src/templates/snapshot_workflow/steps/meta.html b/src/templates/base/snapshot_workflow/steps/meta.html
index 88136d2..88136d2 100644
--- a/src/templates/snapshot_workflow/steps/meta.html
+++ b/src/templates/base/snapshot_workflow/steps/meta.html
diff --git a/src/templates/snapshot_workflow/steps/select_host.html b/src/templates/base/snapshot_workflow/steps/select_host.html
index 4243145..4243145 100644
--- a/src/templates/snapshot_workflow/steps/select_host.html
+++ b/src/templates/base/snapshot_workflow/steps/select_host.html
diff --git a/src/templates/workflow/confirm.html b/src/templates/base/workflow/confirm.html
index 2f99a41..2f99a41 100644
--- a/src/templates/workflow/confirm.html
+++ b/src/templates/base/workflow/confirm.html
diff --git a/src/templates/workflow/no_workflow.html b/src/templates/base/workflow/no_workflow.html
index 0ac6549..0ac6549 100644
--- a/src/templates/workflow/no_workflow.html
+++ b/src/templates/base/workflow/no_workflow.html
diff --git a/src/templates/workflow/viewport-base.html b/src/templates/base/workflow/viewport-base.html
index bb13ab7..bb13ab7 100644
--- a/src/templates/workflow/viewport-base.html
+++ b/src/templates/base/workflow/viewport-base.html
diff --git a/src/templates/workflow/viewport-element.html b/src/templates/base/workflow/viewport-element.html
index db4da54..db4da54 100644
--- a/src/templates/workflow/viewport-element.html
+++ b/src/templates/base/workflow/viewport-element.html
diff --git a/src/templates/laas/dashboard/landing.html b/src/templates/laas/dashboard/landing.html
new file mode 100644
index 0000000..b1ac7c5
--- /dev/null
+++ b/src/templates/laas/dashboard/landing.html
@@ -0,0 +1,12 @@
+{% extends "base/dashboard/landing.html" %}
+
+{% block about_us %}
+<p>The Lab as a Service (LaaS) project aims to help in the development and testing of LFN projects such as
+ OPNFV
+ by hosting hardware and providing access to the community. Currently, the only participating lab is the
+ University of New Hampshire Interoperability Lab (UNH-IOL).</p>
+<p>To get started, you can request access to a server at the right. PTL's have the ability to design and
+ book a
+ whole block of servers with customized layer2 networks (e.g. a Pharos Pod). Read more here: <a
+ href="https://wiki.opnfv.org/display/INF/Lab+as+a+Service+2.0">LaaS Wiki</a></p>
+{% endblock about_us %}