Skip to content

Cesar-Vazquez/dealer

 
 

Repository files navigation

logo Dealer

Dealer — SCM revision helper in your projects. Just add SCM revision to your static paths and get automatic control at client browser caches:

Somewhere in templates: :

<script src='/main.js?{{ request.revision }}'

On clientside: :

<script src='/main.js?34jhfd45hd8'

Supported Git, Mercurial and simple revision parse by file.

Note

You should install Mercurial for hg support.

Build Status

Coverals

Version

Downloads

Donate

Requirements

  • python (2.6, 2.7, 3.3)

Installation

Dealer should be installed using pip: :

pip install dealer

Usage

Basic usage

from dealer.git import git

print git.revision

print git.tag
# Auto parse repository type
from dealer.auto import auto
print auto.revision

print auto.tag

Manually create backend ----------------------

path — path to SCM repository (current dir by default) :

from dealer.mercurial import Backend

hg = Backend('/path/to/hg/repo')

Django support

Settings

DEALER_TYPE — Type of SCM repository ('auto', 'git', 'mercurial', 'simple', 'env', 'null'). By default 'auto';

DEALER_PATH — Path to SCM. By default current dir;

DEALER_SILENT — Disable log warnings;

DEALER_BACKENDS — Backends for auto search by default ('git', 'mercurial', 'simple', 'env', 'null');

Context-processor

Append to your settings: :

TEMPLATE_CONTEXT_PROCESSORS += 'dealer.contrib.django.context_processor',

And use the REVISION and TAG variables in your templates: :

<link href="/test.css?{{ REVISION }}" rel="stylesheet" type="text/css" media="screen" />
<script src="/test.js?{{ REVISION }}"></script>

Middleware

Append to your settings: :

MIDDLEWARE_CLASSES += 'dealer.contrib.django.Middleware',

And use in your views: :

def view(request):
    return request.revision

Or in your templates by request.revision var.

Flask support

Settings

DEALER_TYPE — Type of SCM repository ('auto', 'git', 'mercurial', 'simple', 'env', 'null'). By default 'auto' DEALER_PARAMS — Params for backend

Usage

In views:

from flask import Flask, g
from dealer.contrib.flask import Dealer

app = Flask('test')
Dealer(app)
assert app.revision

@app.route('/')
def usage_in_view():
    return g.revision

In templates: :

<link href="/test.css?{{ REVISION }}" rel="stylesheet" type="text/css" media="screen" />

Pyramid support

config.include('dealer.contrib.pyramid')
def myview(request):
    revision = request.registry.dealer.revision
    tag = request.registry.dealer.tag

In templates

Revision: {{DEALER_REVISION}}
Tag: {{DEALER_TAG}}

Heroku support -------------

Settings

DEALER_TYPE = 'env' DEALER_PARAMS: revision_env_keyname - Variable name for revision (default: DEALER_REVISION) tag_env_keyname - Variable name for tag (default: DEALER_TAG)

Usage

Setup your revision and tag value in envirement variables. For example in Heroku.com: :: heroku config:set DEALER_REVISION='3ffb6b6' heroku config:set DEALER_TAG=v1_1

After that use dealer as described above.

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/Dealer/issues

Contributing

Development of dealer happens at github: https://github.com/klen/dealer

Contributors

  • klen (Kirill Klenov)

License

Licensed under a BSD license.

About

Make some staff

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.4%
  • Makefile 8.6%