From ff16cda0a33a5e32ccfdbb9b8b1bb4404010eb5a Mon Sep 17 00:00:00 2001 From: Petronald Green Date: Sun, 20 Feb 2022 11:02:48 +0000 Subject: [PATCH] bump version to v0.5 --- README.rst | 13 +- dist/django-link-shortener-0.5.tar.gz | Bin 0 -> 7521 bytes ...django_link_shortener-0.5-py3-none-any.whl | Bin 0 -> 10614 bytes django_link_shortener.egg-info/PKG-INFO | 339 +++++++++--------- django_link_shortener.egg-info/SOURCES.txt | 1 + setup.py | 14 +- 6 files changed, 201 insertions(+), 166 deletions(-) create mode 100644 dist/django-link-shortener-0.5.tar.gz create mode 100644 dist/django_link_shortener-0.5-py3-none-any.whl diff --git a/README.rst b/README.rst index 62e1551..65959c4 100644 --- a/README.rst +++ b/README.rst @@ -101,7 +101,7 @@ SHORTENER_LENGTH 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. + Each failure will result in length temporarily being increased by 1. SHORTENER_ENABLE_TEST_PATH Default: False @@ -138,6 +138,12 @@ Internal temporary link usage (such as on nodeferret.com). 100 Temp links per mi Changelog --------- +**v0.5** + +- Replaced NullBooleanField with BooleanField (Credit: sen-den) +- Replaced travis-ci with github actions + + **v0.4** - Allow null values in UrlProfile; null fields will use global values @@ -145,12 +151,13 @@ Changelog - add user to str representation of UrlMap - removed 256 char limit on full_url (Credit: Khaeshah) + Upgrade Instructions -------------------- -**0.3 -> 0.4** +**0.3 / 0.4 --> 0.5** :: - pip install django-link-shortener==0.4 + pip install django-link-shortener==0.5 python manage.py migrate diff --git a/dist/django-link-shortener-0.5.tar.gz b/dist/django-link-shortener-0.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb3b170c29100251c9249696918b51260318755d GIT binary patch literal 7521 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 SekBkwA%bBcAeN|p{rZ2%2ND1P literal 0 HcmV?d00001 diff --git a/django_link_shortener.egg-info/PKG-INFO b/django_link_shortener.egg-info/PKG-INFO index ac4e665..605c084 100644 --- a/django_link_shortener.egg-info/PKG-INFO +++ b/django_link_shortener.egg-info/PKG-INFO @@ -1,177 +1,196 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: django-link-shortener -Version: 0.4 +Version: 0.5 Summary: A simple Django Url Shortener. Home-page: https://github.com/ronaldgrn/django-link-shortener Author: Petronald Green Author-email: petronaldgreen@gmail.com License: MIT License -Description: ===================== - django-link-shortener - ===================== - - .. image:: https://travis-ci.org/ronaldgrn/django-link-shortener.svg?branch=master - :target: https://travis-ci.org/ronaldgrn/django-link-shortener - - .. image:: https://img.shields.io/pypi/l/django-link-shortener.svg - :alt: PyPI - License - :target: https://pypi.org/project/django-link-shortener/ - - .. image:: https://img.shields.io/pypi/v/django-link-shortener.svg - :alt: PyPI - :target: https://pypi.org/project/django-link-shortener/ - - .. image:: https://coveralls.io/repos/github/ronaldgrn/django-link-shortener/badge.svg?branch=master - :target: https://coveralls.io/github/ronaldgrn/django-link-shortener?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/ - to create a test shortcode. - - or - - Use shortener.create(user, link) to generate a link via code. Use shortener.expand(link) - to revert - - 6. Visit http://127.0.0.1:8000/s// 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/<>/ - - The response is the shortcode to use used at s/<> - - - 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 - - - Changelog - --------- - - **v0.4** - - - Allow null values in UrlProfile; null fields will use global values - - str representation of UrlProfile in admin - - add user to str representation of UrlMap - - removed 256 char limit on full_url (Credit: Khaeshah) - - Upgrade Instructions - -------------------- - - **0.3 -> 0.4** - - :: - - pip install django-link-shortener==0.4 - python manage.py migrate Keywords: url shortener,link shortener Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Framework :: Django -Classifier: Framework :: Django :: 2.0 +Classifier: Framework :: Django :: 2.2 +Classifier: Framework :: Django :: 3.0 +Classifier: Framework :: Django :: 3.1 +Classifier: Framework :: Django :: 3.2 +Classifier: Framework :: Django :: 4.0 Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +License-File: LICENSE + +===================== +django-link-shortener +===================== + +.. image:: https://github.com/ronaldgrn/django-link-shortener/actions/workflows/django-tests.yml/badge.svg + :target: https://github.com/ronaldgrn/django-link-shortener/actions/workflows/django-tests.yml + +.. image:: https://img.shields.io/pypi/l/django-link-shortener.svg + :alt: PyPI - License + :target: https://pypi.org/project/django-link-shortener/ + +.. image:: https://img.shields.io/pypi/v/django-link-shortener.svg + :alt: PyPI + :target: https://pypi.org/project/django-link-shortener/ + +.. image:: https://coveralls.io/repos/github/ronaldgrn/django-link-shortener/badge.svg?branch=master + :target: https://coveralls.io/github/ronaldgrn/django-link-shortener?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:: + + INSTALLED_APPS = [ + ... + 'shortener', + ] + +3. Include `shortener.urls` in your project urls.py:: + + 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/ + to create a test shortcode. + + or + + Use shortener.create(user, link) to generate a link via code. Use shortener.expand(link) + to revert + +6. Visit http://127.0.0.1:8000/s// 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 temporarily being increased by 1. + +SHORTENER_ENABLE_TEST_PATH + Default: False + + If true, creates shortlinks for logged in users at s/test/<>/ + + The response is the shortcode to use used at s/<> + + +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 + + +Changelog +--------- + +**v0.5** + +- Replaced NullBooleanField with BooleanField (Credit: sen-den) +- Replaced travis-ci with github actions + + +**v0.4** + +- Allow null values in UrlProfile; null fields will use global values +- str representation of UrlProfile in admin +- add user to str representation of UrlMap +- removed 256 char limit on full_url (Credit: Khaeshah) + + +Upgrade Instructions +-------------------- + +**0.3 / 0.4 --> 0.5** + +:: + + pip install django-link-shortener==0.5 + python manage.py migrate + + diff --git a/django_link_shortener.egg-info/SOURCES.txt b/django_link_shortener.egg-info/SOURCES.txt index 0611939..e19c927 100644 --- a/django_link_shortener.egg-info/SOURCES.txt +++ b/django_link_shortener.egg-info/SOURCES.txt @@ -17,4 +17,5 @@ shortener/views.py shortener/migrations/0001_initial.py shortener/migrations/0002_auto_20190528_1522.py shortener/migrations/0003_auto_20190528_1558.py +shortener/migrations/0004_alter_urlprofile_enabled.py shortener/migrations/__init__.py \ No newline at end of file diff --git a/setup.py b/setup.py index 2896097..4d1d65c 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='django-link-shortener', - version='0.4', + version='0.5', packages=['shortener'], include_package_data=True, license='MIT License', @@ -20,15 +20,23 @@ author_email='petronaldgreen@gmail.com', keywords=['url shortener', 'link shortener'], classifiers=[ + 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Framework :: Django', - 'Framework :: Django :: 2.0', + 'Framework :: Django :: 2.2', + 'Framework :: Django :: 3.0', + 'Framework :: Django :: 3.1', + 'Framework :: Django :: 3.2', + 'Framework :: Django :: 4.0', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', ],