[PATCH v5 6/8] Integrate 'django.contrib.staticfiles'

Stephen Finucane stephenfinucane at hotmail.com
Wed Apr 8 07:20:53 AEST 2015


Rather than providing a custom solution for serving static files, use
the solution provided in the upstream Django source.

This allows us to remove the top-level 'urls.py' file.

Signed-off-by: Stephen Finucane <stephenfinucane at hotmail.com>
---
 apps/patchwork/urls.py              |  8 +++++--
 apps/settings.py                    | 17 +++++++++++---
 apps/urls.py                        | 44 -------------------------------------
 htdocs/css/style.css                |  2 +-
 templates/base.html                 |  9 ++++----
 templates/patchwork/bundle.html     | 13 ++++-------
 templates/patchwork/bundles.html    |  6 +++--
 templates/patchwork/filters.html    |  5 +++--
 templates/patchwork/list.html       |  1 +
 templates/patchwork/patch-list.html | 31 +++++++++++++++++++++-----
 10 files changed, 64 insertions(+), 72 deletions(-)
 delete mode 100644 apps/urls.py

diff --git a/apps/patchwork/urls.py b/apps/patchwork/urls.py
index 9b681f9..b28eb90 100644
--- a/apps/patchwork/urls.py
+++ b/apps/patchwork/urls.py
@@ -17,12 +17,16 @@
 # along with Patchwork; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from django.conf.urls import patterns, url
+from django.conf.urls import patterns, url, include
 from django.conf import settings
+from django.contrib import admin
 from django.contrib.auth import views as auth_views
 
+admin.autodiscover()
+
 urlpatterns = patterns('',
-    # Example:
+    url(r'^admin/', include(admin.site.urls)),
+
     (r'^$', 'patchwork.views.projects'),
     (r'^project/(?P<project_id>[^/]+)/list/$', 'patchwork.views.patch.list'),
     (r'^project/(?P<project_id>[^/]+)/$', 'patchwork.views.project.project'),
diff --git a/apps/settings.py b/apps/settings.py
index dbe0544..01add3e 100644
--- a/apps/settings.py
+++ b/apps/settings.py
@@ -19,6 +19,7 @@ INSTALLED_APPS = (
     'django.contrib.sessions',
     'django.contrib.sites',
     'django.contrib.admin',
+    'django.contrib.staticfiles',
     'patchwork',
 )
 
@@ -78,7 +79,7 @@ USE_I18N = True
 
 # URLs
 
-ROOT_URLCONF = 'urls'
+ROOT_URLCONF = 'patchwork.urls'
 
 # Security
 
@@ -99,8 +100,6 @@ TEMPLATE_DIRS = (
 # https://docs.djangoproject.com/en/1.6/ref/settings/#auth
 #
 
-ADMIN_MEDIA_PREFIX = '/media/'
-
 LOGIN_URL = '/user/login/'
 LOGIN_REDIRECT_URL = '/user/'
 
@@ -114,6 +113,18 @@ SITE_ID = 1
 
 
 #
+# Static files settings
+# https://docs.djangoproject.com/en/1.6/ref/settings/#static-files
+#
+
+STATIC_URL = '/static/'
+
+STATICFILES_DIRS = [
+    os.path.join(ROOT_DIR, 'htdocs'),
+]
+
+
+#
 # Patchwork settings
 #
 
diff --git a/apps/urls.py b/apps/urls.py
deleted file mode 100644
index a8bd68c..0000000
--- a/apps/urls.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Patchwork - automated patch tracking system
-# Copyright (C) 2008 Jeremy Kerr <jk at ozlabs.org>
-#
-# This file is part of the Patchwork package.
-#
-# Patchwork is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# Patchwork is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Patchwork; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-import os
-
-from django.conf.urls import patterns, include
-from django.conf import settings
-from django.contrib import admin
-
-admin.autodiscover()
-
-htdocs = os.path.join(settings.ROOT_DIR, 'htdocs')
-
-urlpatterns = patterns('',
-    # Example:
-    (r'^', include('patchwork.urls')),
-
-    # Uncomment this for admin:
-     (r'^admin/', include(admin.site.urls)),
-
-     (r'^css/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': os.path.join(htdocs, 'css')}),
-     (r'^js/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': os.path.join(htdocs, 'js')}),
-     (r'^images/(?P<path>.*)$', 'django.views.static.serve',
-        {'document_root': os.path.join(htdocs, 'images')}),
-)
-
diff --git a/htdocs/css/style.css b/htdocs/css/style.css
index 87e0cd5..e5bbc75 100644
--- a/htdocs/css/style.css
+++ b/htdocs/css/style.css
@@ -14,7 +14,7 @@ body {
 
 
 #title {
-	background: url('/images/title-background.png') top left repeat-x;
+	background: url('/static/images/title-background.png') top left repeat-x;
 	background-color: #786fb4;
 	margin: 0px;
 	padding-top: 0.1em;
diff --git a/templates/base.html b/templates/base.html
index f04d6e1..3d289fb 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,12 +1,13 @@
-{% load pwurl %}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+{% load staticfiles %}
+{% load pwurl %}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
   <title>{% block title %}Patchwork{% endblock %} - Patchwork</title>
-  <link rel="stylesheet" type="text/css" href="/css/style.css"/>
-  <script language="JavaScript" type="text/javascript" src="/js/common.js">
-  </script>
+  <link rel="stylesheet" type="text/css" href="{% static "css/style.css" %}"/>
+  <script type="text/javascript" src="{% static "js/common.js" %}"></script>
 {% block headers %}{% endblock %}
  </head>
  <body>
diff --git a/templates/patchwork/bundle.html b/templates/patchwork/bundle.html
index d47cf13..4a96b6b 100644
--- a/templates/patchwork/bundle.html
+++ b/templates/patchwork/bundle.html
@@ -1,17 +1,12 @@
 {% extends "base.html" %}
 
 {% load person %}
+{% load static %}
 
 {% block headers %}
-  <script language="JavaScript" type="text/javascript"
-   src="/js/jquery-1.10.1.min.js">
-  </script>
-  <script language="JavaScript" type="text/javascript"
-   src="/js/jquery.tablednd.js">
-  </script>
-  <script language="JavaScript" type="text/javascript"
-   src="/js/bundle.js">
-  </script>
+  <script type="text/javascript" src="{% static "js/jquery-1.10.1.min.js" %}"></script>
+  <script type="text/javascript" src="{% static "js/jquery.tablednd.js" %}"></script>
+  <script type="text/javascript" src="{% static "js/bundle.js" %}"></script>
 {% endblock %}
 {% block title %}{{project.name}}{% endblock %}
 {% block heading %}bundle: {{bundle.owner.username}} /
diff --git a/templates/patchwork/bundles.html b/templates/patchwork/bundles.html
index a725d95..11fb89d 100644
--- a/templates/patchwork/bundles.html
+++ b/templates/patchwork/bundles.html
@@ -1,5 +1,7 @@
 {% extends "base.html" %}
 
+{% load static %}
+
 {% block title %}Bundles{% endblock %}
 {% block heading %}Bundles{% endblock %}
 
@@ -27,7 +29,7 @@
   <td style="text-align: right">{{ bundle.n_patches }}</td>
   <td style="text-align: center;"><a
    href="{% url 'patchwork.views.bundle.mbox' username=bundle.owner.username bundlename=bundle.name %}"
-   ><img src="/images/16-em-down.png" width="16" height="16" alt="download"
+   ><img src="{% static "images/16-em-down.png" %}" width="16" height="16" alt="download"
    title="download"/></a></td>
   <td style="text-align: center;">
    <form method="post"
@@ -35,7 +37,7 @@
     {% csrf_token %}
     {{ bundle.delete_form.as_p }}
     <input type="image"
-     src="/images/16-em-cross.png" width="16" height="16" alt="delete"
+     src="{% static "images/patchwork/16-em-cross.png" %}" width="16" height="16" alt="delete"
      title="delete" border="0" style="border: none;"/>
    </form>
   </td>
diff --git a/templates/patchwork/filters.html b/templates/patchwork/filters.html
index e2b7585..10ca587 100644
--- a/templates/patchwork/filters.html
+++ b/templates/patchwork/filters.html
@@ -1,3 +1,4 @@
+{% load static %}
 
 <script type="text/javascript" language="JavaScript">
 var filterform_displayed = false;
@@ -150,7 +151,7 @@ function submitter_field_change(field)
     {% if not filter.forced %}
      <a href="{{ filter.url_without_me }}"><img
       width="16" height="16" alt="remove filter" title="remove filter"
-      src="/images/16-circle-blue-remove.png"></a>
+      src="{% static "images/16-circle-blue-remove.png" %}"></a>
     {% endif %}
    {% if not forloop.last %}   |   {% endif %}
   {% endfor %}
@@ -158,7 +159,7 @@ function submitter_field_change(field)
   none
   <a href="javascript:filter_click()"><img
   width="16" height="16" alt="add filter" title="add filter"
-  src="/images/16-circle-blue-add.png"></a>
+  src="{% static "images/16-circle-blue-add.png" %}"></a>
  {% endif %}
  </div>
  <div id="filterform" style="padding-top: 1em; display: none">
diff --git a/templates/patchwork/list.html b/templates/patchwork/list.html
index 8054063..654fe8c 100644
--- a/templates/patchwork/list.html
+++ b/templates/patchwork/list.html
@@ -1,6 +1,7 @@
 {% extends "base.html" %}
 
 {% load person %}
+{% load static %}
 
 {% block title %}{{project.name}}{% endblock %}
 {% block heading %}{{project.name}}{% endblock %}
diff --git a/templates/patchwork/patch-list.html b/templates/patchwork/patch-list.html
index 59adbe3..8f089ca 100644
--- a/templates/patchwork/patch-list.html
+++ b/templates/patchwork/patch-list.html
@@ -1,5 +1,6 @@
 {% load person %}
 {% load listurl %}
+{% load static %}
 
 {% include "patchwork/pagination.html" %}
 
@@ -50,7 +51,11 @@
     {% ifequal order.name "name" %}
      <a class="colactive"
       href="{% listurl order=order.reversed_name %}"><img
-      src="/images/16-arrow-{% if order.reversed %}up{% else %}down{%endif%}.png"
+      {% if order.reversed %}
+      src="{% static "images/16-arrow-up.png" %}"
+      {% else %}
+      src="{% static "images/16-arrow-down.png" %}"
+      {%endif%}
       width="16" height="16"
      ></a> <a class="colactive"
       href="{% listurl order=order.reversed_name %}">Patch</a>
@@ -67,7 +72,11 @@
     {% ifequal order.name "date" %}
      <a class="colactive"
       href="{% listurl order=order.reversed_name %}"><img
-      src="/images/16-arrow-{% if order.reversed %}up{% else %}down{%endif%}.png"
+      {% if order.reversed %}
+      src="{% static "images/16-arrow-up.png" %}"
+      {% else %}
+      src="{% static "images/16-arrow-down.png" %}"
+      {%endif%}
       width="16" height="16"
      ></a> <a class="colactive"
       href="{% listurl order=order.reversed_name %}">Date</a>
@@ -84,7 +93,11 @@
     {% ifequal order.name "submitter" %}
      <a class="colactive"
       href="{% listurl order=order.reversed_name %}"><img
-      src="/images/16-arrow-{% if order.reversed %}up{% else %}down{%endif%}.png"
+      {% if order.reversed %}
+      src="{% static "images/16-arrow-up.png" %}"
+      {% else %}
+      src="{% static "images/16-arrow-down.png" %}"
+      {%endif%}
       width="16" height="16"
      ></a> <a class="colactive"
       href="{% listurl order=order.reversed_name %}">Submitter</a>
@@ -101,7 +114,11 @@
     {% ifequal order.name "delegate" %}
      <a class="colactive"
       href="{% listurl order=order.reversed_name %}"><img
-      src="/images/16-arrow-{% if order.reversed %}up{% else %}down{%endif%}.png"
+      {% if order.reversed %}
+      src="{% static "images/16-arrow-up.png" %}"
+      {% else %}
+      src="{% static "images/16-arrow-down.png" %}"
+      {%endif%}
       width="16" height="16"
      ></a> <a class="colactive"
       href="{% listurl order=order.reversed_name %}">Delegate</a>
@@ -118,7 +135,11 @@
     {% ifequal order.name "state" %}
      <a class="colactive"
       href="{% listurl order=order.reversed_name %}"><img
-      src="/images/16-arrow-{% if order.reversed %}up{% else %}down{%endif%}.png"
+      {% if order.reversed %}
+      src="{% static "images/16-arrow-up.png" %}"
+      {% else %}
+      src="{% static "images/16-arrow-down.png" %}"
+      {%endif%}
       width="16" height="16"
      ></a> <a class="colactive"
       href="{% listurl order=order.reversed_name %}">State</a>
-- 
2.1.0



More information about the Patchwork mailing list