Jump to >

Djblets 0.8 Alpha 1 Release Notes

Release date: November 9, 2013


  • Djblets now requires Django 1.5. At this time, it is not tested with Django 1.6, but will soon require that as the minimum.
  • Made some progress toward Python 3 support. It is not yet complete.

Static files

  • All static media bundled with Djblets has been moved into a static/ directory.

  • Static files are now compatible out-of-the-box with django-pipeline. djblets.settings exposes PIPELINE_CSS and PIPELINE_JS variables that can be pulled into a project and used directly or merged with their own pipeline settings.

    There are four JavaScript bundles:

    • djblets-datagrid - Datagrid support
    • djblets-extensions-admin - Admin UI for extensions
    • djblets-extensions - General JavaScript extension support
    • djblets-gravy - jquery.gravy’s set of widgets and utilities

    There are also two CSS bundles:

    • djblets-admin - Admin UI styles for siteconfig and extensions.
    • djblets-datagrid - Styles for datagrids
  • CSS files are now LesSCSS files. This requires the less.js runtime, or compilation.

  • jQuery and jQuery-UI are no longer shipped with Djblets. The jquery.html and jquery-ui.html templates now use the versions on the Google CDN by default.


  • jquery.gravy has been split into multiple files. These can be used individually, but will be combined together if using the provided PIPELINE_JS.
  • Removed legacy workarounds for older versions of Internet Explorer, Mobile Safari, and Opera.
  • Removed $.browser additions.


  • Added support for custom textarea-type widgets in an inlineEditor.

    Callers can now pass new options to inlineEditor that define methods for operating on a textarea, or equivalent. These allow other widgets, such as CodeMirror, to be placed in an inlineEditor.

    The new optional methods are: createMultilineField, setFieldValue, getFieldValue, and isFieldDirty.

  • On required fields, the asterisk now has a tooltip.

  • Fixed auto-sizing inlineEditor when forcing an auto-size. It didn’t always size itself correctly.

  • Fixed dirty detection when using hasRawValue.

  • Fixed setting the width of an editor when the content wraps.


  • Datagrids now use spritesheets for the icons, reducing the number of downloads.
  • Added Retina icons for the datagrids.


  • Added support for looking up static media for extensions.

    Extensions can now provide a static/ directory containing all their static media. They can then look them up in a template by doing:

    {% ext_static extension "path/to/file.png" %}

    This requires that the project list djblets.extensions.staticfiles.ExtensionFinder in settings.STATICFILES_FINDERS.

  • Added support for defining static media bundles.

    Extensions can list all the CSS and JavaScript bundles they use by defining Extension.css_bundles and Extension.js_bundles variables. These are Pipeline bundle definitions, and follow the same format, with the exception that output_filename is optional.

    If the bundle name is “default”, it will be included on any page that uses the {% load_extensions_js %} and {% load_extensions_css %} template tags.

  • Added support for packaging static media bundles.

    Bundles will be automatically packaged along with an extension, if the project providing extension support provides the proper support, and the extension makes use of it. See djblets.extensions.packaging.

  • Added support for JavaScript extensions.

    These function as a counterpart to the Python extensions. They are subclasses of Djblets.Extension(), and are very similar to the Python extensions.

    Python Extension subclasses can specify the name of their JavaScript counterpart by setting the Extension.js_model_class variable. These will be instantiated on all pages that use the {% init_js_extensions %} template tag.

    JavaScript hooks can also be written by subclassing Djblets.ExtensionHook(). See the documentation included in static/djblets/js/extensions/models/extensionHookModel.js for more information.

    This requires Backbone.js.


  • Removed the old Selenium support.


  • The {% condense %} template tag can now be passed the max number of sequential blank lines to allow.


  • The json_dumps() filter now uses DjangoJSONEncoder, which properly handles timestamps and some other types.


  • Drastically improved performance of queries made through the API.
  • WebAPIResource.get_object() now takes an optional id_field parameter, which specifies which field to look up as the ID. If not specified, the default for the resource is used.
  • Removed backwards-compatibility support for the old allowed_item_mimetypes and allowed_list_mimetypes fields.
  • Specifying a negative index for the start query parameter on list resources no longer triggers an HTTP 500. It’s now interpreted as 0.


  • Christian Hammond
  • David Trowbridge