Simplifying Mozilla Product Details with Django

Emily Techscribe Avatar

·

Mozilla Product Details is a library consisting of crucial information about the latest versions, localizations, and other relevant data about Mozilla products such as Firefox, Firefox for mobile, and Thunderbird. Originally written in PHP for PHP projects, the library was later enhanced to include a JSON feed, facilitating the consumption of data by non-PHP projects.

However, keeping the data up to date and syncing it with non-PHP projects can be a challenge. That’s where Django comes into play. With the Django Product Details app, managing and updating the Mozilla Product Details library becomes a breeze.

Getting Started

To begin using the Django Product Details app, install it using pip:

pip install django-mozilla-product-details

Alternatively, you can download the product_details directory and add it to your Django project.

Configuration

No additional configuration is required, as the app comes with sensible defaults. However, if you wish to customize the app’s behavior, you can modify the following settings in your settings.py file:

  • PROD_DETAILS_URL: This setting defines the URL of the JSON directory on the Mozilla SVN server. It defaults to the primary JSON directory, but you can specify a secondary mirror or a different location if needed.
  • PROD_DETAILS_DIR: This setting determines the target directory for storing the JSON files. It should be writable by the user executing the management commands and readable by the user running the Django project. The default value is set to .../install_dir_of_this_app/product_details/json/, but you can change it if desired.

Additionally, you can choose the storage backend for the JSON data by configuring the PROD_DETAILS_STORAGE setting. The app provides two storage classes: PDFileStorage (the default) for file system storage and PDDatabaseStorage for database storage.

Updating the Feed

To keep the data in sync with Mozilla, you can use the update_product_details management command. Simply execute the following command in your Django project:

./manage.py update_product_details

It is recommended to run this command manually after installing the app and periodically as a cron job to fetch new data.

Using the Data

To access the data from Mozilla Product Details, simply import the library:

from product_details import product_details

The imported data will automatically be converted into Python objects, allowing you to explore and utilize the information in your Django project.

Version Comparison

Included in the Product Details library is a version comparison code specifically designed for Mozilla-style product versions. To use it, follow these steps:

  1. Import the Version class from product_details.version_compare:
from product_details.version_compare import Version
  1. Create instances of the Version class for the versions you want to compare:
v1 = Version('4.0b10')
v2 = Version('4.0b10pre')

`

  1. Perform comparison operations on the Version instances:
v1 < v2 # False

Furthermore, you can use the version comparison code to generate a list of unique versions sorted by their release date. For example:

from product_details.version_compare import version_list
version_list(product_details.firefox_history_development_releases)

Development and Releasing

The Django Product Details app is actively maintained and encourages community contributions. If you would like to make any improvements or fixes, feel free to submit a patch.

To run tests for the app, use the tox command. This will test the code against various Python and Django versions. Alternatively, you can manually run the tests using nose, mock, requests, responses, and Django. Refer to the tox.ini file for more information on dependencies.

Please note that the app no longer supports Python 2 and has dropped support for Django versions earlier than 1.8.

For releasing updates to the app, follow these steps:

  1. Update the version number in product_details/__init__.py.
  2. Add an entry to the change log in the README file.
  3. Tag the commit with the version number and push it to the GitHub repository.
  4. Create a new GitHub release and select the tag you just pushed to publish the release.
  5. GitHub will build and release the package to PyPI automatically.

Conclusion

By leveraging the Django Product Details app, you can easily access and manage the latest information about Mozilla products without the hassle of manual updates. Whether you’re comparing versions or utilizing product data, Django simplifies the process and allows you to focus on your project’s core functionality. Give it a try and experience the power of easy data management in Django!

(Source: Mozilla/Django Product Details Repository)

Leave a Reply

Your email address will not be published. Required fields are marked *