=== removed directory 'demo/demo_app/static/demo_app'
=== renamed file 'demo/demo_app/static/demo_app/example.txt' => 'demo/demo_app/static/example.txt'
=== modified file 'lava_server/__init__.py'
@@ -17,4 +17,4 @@
# along with LAVA Server. If not, see <http://www.gnu.org/licenses/>.
-__version__ = (0, 3, 0, "beta", 2)
+__version__ = (0, 3, 0, "beta", 3)
=== modified file 'lava_server/extension.py'
@@ -114,7 +114,7 @@
def contribute_to_settings(self, settings_module):
settings_module['INSTALLED_APPS'].append(self.app_name)
- settings_module['PREPEND_LABEL_APPS'].append(self.app_name)
+ settings_module['STATICFILES_PREPEND_LABEL_APPS'].append(self.app_name)
def contribute_to_settings_ex(self, settings_module, settings_object):
pass
=== removed directory 'lava_server/media'
=== modified file 'lava_server/settings/common.py'
@@ -68,7 +68,7 @@
"static",
)
-PREPEND_LABEL_APPS = [
+STATICFILES_PREPEND_LABEL_APPS = [
"django.contrib.admin",
]
=== modified file 'lava_server/settings/debian.py'
@@ -41,10 +41,8 @@
# List of absolute pathnames used to resolve templates.
TEMPLATE_DIRS = debian_settings.TEMPLATE_DIRS
-# TODO: Debianize this
-STATICFILES_DIRS = [
- ('lava', "/usr/share/lava-server/htdocs"),
-]
+# Like TEMPLATE_DIRS but for static files
+STATICFILES_DIRS = debian_settings.STATICFILES_DIRS
# A tuple that lists people who get code error notifications. When DEBUG=False
# and a view raises an exception, Django will e-mail these people with the
=== modified file 'lava_server/settings/development.py'
@@ -18,11 +18,37 @@
import os
+from django.core.exceptions import ImproperlyConfigured
+
from lava_server.extension import loader
from lava_server.settings.common import *
-
-ROOT_DIR = os.path.normpath(
+# Top-level directory for volatile, re-buildable files originated from
+# installing components of a lava-dev-tool project. Here we assume the project
+# uses virtualenv and look for a variable virtualenv injects into the
+# environment.
+LOCALENV_DIR = os.getenv("VIRTUAL_ENV")
+if LOCALENV_DIR is None:
+ raise ImproperlyConfigured("Development mode REQUIRES VIRTUAL_ENV to be set")
+
+# Top-level directory for nonvolatile files, as used by lava-dev-tool. It is a
+# sibling directory to localenv so it's easier to define its location as
+# relative to LOCALENV_DIR.
+PRECIOUS_DIR = os.path.join(LOCALENV_DIR, "../precious")
+
+# Top-level directory of the precious project state.
+#
+# In short: this is where your non-source content ends up at, this place should
+# keep the database file(s), user uploaded media files as well as the cache of
+# static files, if built.
+PROJECT_STATE_DIR = os.path.join(PRECIOUS_DIR, "var/lib/lava-server/")
+
+# Top-level directory of the project.
+#
+# This directory MUST contain two sub-directories:
+# * templates/ - project-wide template files
+# * htdocs/ - project-wide static files (_not_ the root of the static file cache)
+PROJECT_SRC_DIR = os.path.normpath(
os.path.join(
os.path.dirname(
os.path.abspath(__file__)),
@@ -45,10 +71,10 @@
#
# The prefix _MUST_ end with a slash when not empty.
-# Code is served directly, WSGI mapping make it appear in "django-hello" but
+# Code is served directly, WSGI mapping make it appear in "lava-server" but
# this is done externally to django URL resolver.
APP_URL_PREFIX = r""
-# Data is served by external web server in "django-hello/"
+# Data is served by external web server in "lava-server/"
DATA_URL_PREFIX = r""
@@ -69,7 +95,7 @@
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(ROOT_DIR, 'development.db'),
+ 'NAME': os.path.join(PROJECT_STATE_DIR, 'development.db'),
'USER': '',
'PASSWORD': '',
'HOST': '',
@@ -84,12 +110,12 @@
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = os.path.join(ROOT_DIR, "media", devel_db)
+MEDIA_ROOT = os.path.join(PROJECT_STATE_DIR, "media")
# Absolute filesystem path to the directory that will hold static, read only
# files collected from all applications.
# Example: "/home/media/static.lawrence.com/"
-STATIC_ROOT = os.path.join(ROOT_DIR, "static")
+STATIC_ROOT = os.path.join(PROJECT_STATE_DIR, "static")
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
@@ -114,11 +140,11 @@
TEMPLATE_DIRS = (
- os.path.join(ROOT_DIR, "templates"),
+ os.path.join(PROJECT_SRC_DIR, "templates"),
)
STATICFILES_DIRS = [
- ('lava', os.path.join(ROOT_DIR, 'htdocs'))
+ ('lava-server', os.path.join(PROJECT_SRC_DIR, 'htdocs'))
]
=== modified file 'lava_server/settings/production.py'
@@ -35,11 +35,11 @@
#
# Both values _MUST_ end with a slash when not empty.
-# Code is served directly, WSGI mapping make it appear in "django-hello" but
+# Code is served directly, WSGI mapping make it appear in "lava-server" but
# this is done externally to django URL resolver.
APP_URL_PREFIX = r""
-# Data is served by external web server in "django-hello/"
-DATA_URL_PREFIX = r""
+# Data is served by external web server in "lava-server/"
+DATA_URL_PREFIX = r"lava-server/"
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
@@ -56,8 +56,13 @@
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = "/" + DATA_URL_PREFIX + "static/admin/"
-# The true outer url is /lava/
+# The true outer url is /lava-server/
LOGIN_REDIRECT_URL = "/" + DATA_URL_PREFIX
+# URL of the login screen, has to be hard-coded like that for Django.
+# I cheat a little, using DATA_URL_PREFIX here is technically incorrect
+# but it seems better than hard-coding 'lava-server' yet again.
+LOGIN_URL = '/' + DATA_URL_PREFIX + 'accounts/login/'
+
if DEBUG:
raise Exception("You should not run this application with debugging in a production environment")
=== removed directory 'lava_server/static'
=== modified file 'lava_server/templates/layouts/base.html'
@@ -5,17 +5,17 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>{% block title %}LAVA{% endblock %}</title>
{% block scripts_and_styles %}
- <script type="text/javascript" src="{{ STATIC_URL }}lava/js/jquery-1.5.1.min.js"></script>
- <script type="text/javascript" src="{{ STATIC_URL }}lava/js/jquery-ui-1.8.12.custom.min.js"></script>
- <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava/css/Aristo/jquery-ui-1.8.7.custom.css"/>
- <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava/css/default.css"/>
+ <script type="text/javascript" src="{{ STATIC_URL }}lava-server/js/jquery-1.5.1.min.js"></script>
+ <script type="text/javascript" src="{{ STATIC_URL }}lava-server/js/jquery-ui-1.8.12.custom.min.js"></script>
+ <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava-server/css/Aristo/jquery-ui-1.8.7.custom.css"/>
+ <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava-server/css/default.css"/>
{% endblock %}
{% block extrahead %}{% endblock %}
</head>
<body>
{% block ajax_notification %}
<div id="ajax_notification">
- <img src="{{ STATIC_URL }}lava/images/ajax-progress.gif"/>
+ <img src="{{ STATIC_URL }}lava-server/images/ajax-progress.gif"/>
{% trans "AJAX request is in progress..." %}
</div>
<script type="text/javascript">
=== modified file 'lava_server/templates/layouts/content.html'
@@ -36,7 +36,7 @@
{% for extension in lava.extensions %}
<li><a href="{{ extension.get_main_url }}">{{ extension.name }}</a></li>
{% endfor %}
- <li><a href="{% url linaro_django_xmlrpc.views.default_handler %}">{% trans "XML-RPC" %}</a></li>
+ <li><a href="{% url lava.api_help %}">{% trans "API" %}</a></li>
</ul>
</div>
{% endblock navigation %}
=== modified file 'lava_server/templates/layouts/dialog.html'
@@ -2,8 +2,8 @@
{% block scripts_and_styles %}
-<script type="text/javascript" src="{{ STATIC_URL }}lava/js/jquery-1.5.1.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}lava/js/jquery-ui-1.8.12.custom.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}lava-server/js/jquery-1.5.1.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}lava-server/js/jquery-ui-1.8.12.custom.min.js"></script>
{% endblock %}
=== modified file 'lava_server/templates/linaro_django_xmlrpc/_base.html'
@@ -10,7 +10,7 @@
{% block extension_navigation %}
<div id="lava-server-extension-navigation" class="lava-server-sub-toolbar">
<ul>
- <li><a href="{% url linaro_django_xmlrpc.views.default_handler %}">{% trans "XML-RPC Handler" %}</a></li>
+ <li><a href="{% url linaro_django_xmlrpc.views.help %}">{% trans "API Help" %}</a></li>
<li><a href="{% url linaro_django_xmlrpc.views.tokens %}">{% trans "Authentication Tokens" %}</a></li>
</ul>
</div>
@@ -19,5 +19,5 @@
{% block breadcrumbs %}
{{ block.super }}
-<li><a href="{% url linaro_django_xmlrpc.views.handler %}">{% trans "XML-RPC Handler" %}</a></li>
+<li><a href="{% url linaro_django_xmlrpc.views.handler %}">{% trans "API Help" %}</a></li>
{% endblock %}
=== modified file 'lava_server/templates/linaro_django_xmlrpc/api.html'
@@ -13,15 +13,13 @@
{% block content %}
<h2>About XML-RPC API</h2>
-<p>This URL is an XML-RPC server. You can interact with it using any XML-RPC
+<p>LAVA Server offers API services as an XML-RPC server. You can interact with it using any XML-RPC
client. For example, in python you can do this:</p>
<pre>
import xmlrpclib
server = xmlrpclib.ServerProxy("{{ site_url }}{% url linaro_django_xmlrpc.views.handler %}")
print server.version()
</pre>
-<p>The rest of this page is an automatically generated documentation of the
-available functions.</p>
<h2>Available functions</h2>
<div id="accordion">
=== modified file 'lava_server/templates/linaro_django_xmlrpc/tokens.html'
@@ -3,8 +3,8 @@
{% block extrahead %}
-<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava/css/demo_table_jui.css"/>
-<script type="text/javascript" src="{{ STATIC_URL }}lava/js/jquery.dataTables.min.js"></script>
+<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava-server/css/demo_table_jui.css"/>
+<script type="text/javascript" src="{{ STATIC_URL }}lava-server/js/jquery.dataTables.min.js"></script>
{% endblock %}
=== modified file 'lava_server/templates/registration/base.html'
@@ -7,9 +7,9 @@
{% block scripts_and_styles %}
{{ block.super }}
-<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava/css/login.css"/>
-<script src="{{ STATIC_URL }}lava/js/jquery.watermark.min.js" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}lava/js/jquery.pseudofocus.js" type="text/javascript"></script>
+<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}lava-server/css/login.css"/>
+<script src="{{ STATIC_URL }}lava-server/js/jquery.watermark.min.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}lava-server/js/jquery.pseudofocus.js" type="text/javascript"></script>
{% endblock %}
=== modified file 'lava_server/urls.py'
@@ -21,6 +21,7 @@
from django.contrib import admin
from django.views.generic.simple import direct_to_template
from staticfiles.urls import staticfiles_urlpatterns
+from linaro_django_xmlrpc import urls as api_urls
from lava_server.extension import loader
@@ -39,8 +40,18 @@
url(r'^' + settings.APP_URL_PREFIX + r'accounts/', include('django.contrib.auth.urls')),
url(r'^' + settings.APP_URL_PREFIX + r'admin/', include(admin.site.urls)),
url(r'^' + settings.APP_URL_PREFIX + r'openid/', include('django_openid_auth.urls')),
- url(r'^' + settings.APP_URL_PREFIX + r'RPC2/', 'linaro_django_xmlrpc.views.handler', {'mapper':loader.xmlrpc_mapper}),
- url(r'^' + settings.APP_URL_PREFIX, include('linaro_django_xmlrpc.urls')),
+ url(r'^' + settings.APP_URL_PREFIX + r'RPC2/', 'linaro_django_xmlrpc.views.handler',
+ name='lava.api_handler',
+ kwargs={
+ 'mapper': loader.xmlrpc_mapper,
+ 'help_view': 'lava.api_help'}),
+ url(r'^' + settings.APP_URL_PREFIX + r'api/help/$', 'linaro_django_xmlrpc.views.help',
+ name='lava.api_help',
+ kwargs={
+ 'mapper': loader.xmlrpc_mapper}),
+ url(r'^' + settings.APP_URL_PREFIX + r'api/', include(api_urls.token_urlpatterns)),
+ # XXX: This is not needed but without it linaro-django-xmlrpc tests fail
+ url(r'^' + settings.APP_URL_PREFIX + r'api/', include(api_urls.default_mapper_urlpatterns)),
)
=== modified file 'setup.py'
@@ -54,7 +54,7 @@
"django-staticfiles == 0.3.4",
'django < 1.3',
'django-openid-auth >= 0.2',
- 'linaro-django-xmlrpc >= 0.3.2',
+ 'linaro-django-xmlrpc >= 0.4',
'python-openid >= 2.2.4', # this should be a part of django-openid-auth deps
'south >= 0.7.3',
'versiontools >= 1.3.1',