A simple link shortener for django
Clone or download
Latest commit 954191a Aug 20, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist v0.3 build Aug 20, 2018
django_link_shortener.egg-info v0.3 build Aug 20, 2018
shortener created tests for various settings, code refactoring Aug 20, 2018
tests created tests for various settings, code refactoring Aug 20, 2018
.gitignore coveralls integration Aug 20, 2018
.travis.yml coveralls integration Aug 20, 2018
LICENSE Initial Commit Jun 1, 2018
MANIFEST.in Initial Commit Jun 1, 2018
README.rst v0.3 build Aug 20, 2018
manage.py improved test layout Aug 20, 2018
requirements.txt improved test layout Aug 20, 2018
setup.py v0.3 build Aug 20, 2018

README.rst

django-link-shortener

https://travis-ci.org/ronaldgrn/django-link-shortener.svg?branch=master PyPI - License PyPI https://coveralls.io/repos/github/ronaldgrn/django-link-shortener/badge.svg?branch=master

django-link-shortener is a simple time and usage sensitive url shortening app.

Uses A-Za-z0-9 with the exception of I, i and 1.

Requires user to be logged in for link creation.

Usage

  1. pip install django-link-shortener

  2. Add "shortener" to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'shortener',
    ]
    
  3. Include the polls URLconf in your project urls.py like this:

    path('s/', include('shortener.urls')),
    
  4. Run python manage.py migrate to create the shortener models.

Testing

  1. Add the following to settings

` SHORTENER_ENABLE_TEST_PATH = True `

  1. Start the development server and visit http://127.0.0.1:8000/s/test/<My-URL-HERE> to create a test shortcode.

    or

    Use shortener.create(user, link) to generate a link via code. Use shortener.expand(link) to revert

  1. Visit http://127.0.0.1:8000/s/<shortcode>/ to be redirected

Configuration Options

Place in settings.py. Each setting be overridden on a per-user basis using the admin UrlProfile section

SHORTENER_ENABLED

Default: True

Controls whether users without a shortener profile can create shortlinks.

SHORTENER_MAX_URLS

Default: -1

Controls the default maximum limit of generated urls per account. -1 sets infinite.

SHORTENER_MAX_CONCURRENT

Default: -1

Controls the default maximum limit of concurrent (active) generated urls per account. -1 sets infinite

SHORTENER_LIFESPAN

Default: -1

Sets the default lifespan of links in seconds -1 sets infinite

SHORTENER_MAX_USES

Default: -1

Sets the default amount of times a link can be followed -1 sets infinite

SHORTENER_LENGTH

Default: 5

Note: Omitted from UrlProfile

Sets how many digits should be used for links. Tries up to three times to generate a unique shortcode where Each failure will result in length temporaily being increased by 1.

SHORTENER_ENABLE_TEST_PATH

Default: False

If true, creates shortlinks for logged in users at s/test/<<url>>/

The response is the shortcode to use used at s/<<shortcode>>

Common Use Cases

goo.gl type usage (default). Unlimited concurrent links for an unlimited length of time

SHORTENER_ENABLED = True
SHORTENER_MAX_URLS = -1
SHORTENER_MAX_CONCURRENT = -1
SHORTENER_LIFESPAN = -1
SHORTENER_MAX_USES = -1

Internal temporary link usage (such as on nodeferret.com). 100 Temp links per minute. 1 usage per link.

SHORTENER_ENABLED = True
SHORTENER_MAX_URLS = -1
SHORTENER_MAX_CONCURRENT = 100 # To prevent spamming
SHORTENER_LIFESPAN = 600
SHORTENER_MAX_USES = 1