Skip to main content

This djangocms plugin allows you to add a weather indicator on your pages, using the Dark Sky API (https://darksky.net/dev/docs).

Project description

djangocms-darksky-api

The weather plugin that links djangocms and Dark Sky.

Installation

  1. Install module using pipenv:
pipenv install djangocms-darksky-api
  • Or pip:
pip install djangocms-darksky-api
  1. Add it to your installed apps:
    "djangocms_darksky_api",
  1. Apply migrations
py manage.py migrate djangocms_darksky_api
  1. Include your api key in your settings (get one on darksky website)
DJANGOCMS_DARKSKY_API_SETTINGS = {"api_key": "your key here"}
  • Or load it using an environment var:
import os
DJANGOCMS_DARKSKY_API_SETTINGS = {"api_key": os.getenv("DARKSKY_API_KEY", None)}
  1. Include weather plugin on your pages using djangocms Add dark sky api plugin
  2. That's all folks!

Examples

Raw results

Light template (view & src)

light template raw

Full template (view & src)

full template raw

Error msg (if api.darksky.net is down)

As the darksky api will sometimes suffer downtimes, the plugin can display an error message ("Data is currently unavailable."), embedded in a dataset.

error message code

Examples of rendered views

Light template

light template rendered

Full template:

full template rendered

Miscellaneous

Css

Css classes for the icons (e.g. <div class="darksky-icon darksky-rain"></div>) are of the form darksky-icon darksky-[name].

[name] can be any of the following values (see darksky doc):

  • clear-day
  • clear-night
  • rain
  • snow
  • sleet
  • wind
  • fog
  • cloudy
  • partly-cloudy-day
  • partly-cloudy-night

Units

All values are returned using the International System (°C, km/h, ...) and are hard-coded in templates files.


Language

The language is searched using django.utils.translation.get_language() & django.conf.LANGUAGE_CODE.

Languages supported by the Dark Sky api can be found on their documentation.


Cache

Plugin

The plugin is cached (with the same duration as the json content).

Json

The values are cached for one hour (which avoids hundreds of thousands of queries per day on the darksky api site).

If you want to change the cache duration, add a cache entry in your DJANGOCMS_DARKSKY_API_SETTINGS dict, in your settings.py:

DJANGOCMS_DARKSKY_API_SETTINGS = {
    "api_key": "mysuperapikey",
    "cache": 60 * 60, # one hour
}

Or load it using an environment var:

import os
DJANGOCMS_DARKSKY_API_SETTINGS = {
    "api_key": os.getenv("DARKSKY_API_KEY", None),
    "cache": os.getenv("DARKSKY_CACHE_DURATION", 60 * 60), # return content of DARKSKY_CACHE_DURATION if it exists, or one hour if it doesn't
}

As stated in Django docs; "[The timeout is] the number of seconds the value should be stored in the cache. Passing in None for timeout will cache the value forever. A timeout of 0 won’t cache the value."

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for djangocms-darksky-api, version 0.0.6
Filename, size File type Python version Upload date Hashes
Filename, size djangocms_darksky_api-0.0.6-py3-none-any.whl (25.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size djangocms-darksky-api-0.0.6.tar.gz (8.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page