Metadata-Version: 1.0
Name: django-tools
Version: 0.21.1.0124
Summary: miscellaneous tools for django
Home-page: http://code.google.com/p/django-tools/
Author: Jens Diemer
Author-email: django-tools@jensdiemer.de
License: UNKNOWN
Description: ===========
        description
        ===========
        
        Miscellaneous tools for django.
        
        --------------
        existing stuff
        --------------
        
        local sync cache
        ================
        
        Keep a local dict in a multi-threaded environment up-to-date. Usefull for cache dicts.
        More info, read DocString in `./local_sync_cache/local_sync_cache.py <https://github.com/jedie/django-tools/blob/master/django_tools/local_sync_cache/local_sync_cache.py>`_.
        
        threadlocals middleware
        =======================
        
        For getting request object anywhere, use `./middlewares/ThreadLocal.py <https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py>`_
        
        Dynamic SITE_ID middleware
        ==========================
        
        Set settings.SITE_ID dynamically with a middleware base on the current request domain name.
        Domain name alias can be specify as a simple string or as a regular expression.
        
        more info, read `./dynamic_site/README.creole <https://github.com/jedie/django-tools/blob/master/django_tools/dynamic_site/README.creole>`_.
        
        StackInfoStorage
        ================
        
        Message storage like LegacyFallbackStorage, except, every message would have a stack info, witch is helpful, for debugging.
        Stack info would only be added, if settings DEBUG or MESSAGE_DEBUG is on.
        To use it, put this into your settings:
        
        ::
        
            MESSAGE_STORAGE = "django_tools.utils.messages.StackInfoStorage"
        
        More info, read DocString in `./utils/messages.py <https://github.com/jedie/django-tools/blob/master/django_tools/utils/messages.py>`_.
        
        limit to usergroups
        ===================
        
        Limit something with only one field, by selecting:
        
        * anonymous users
        
        * staff users
        
        * superusers
        
        * ..all existing user groups..
        
        More info, read DocString in `./limit_to_usergroups.py <https://github.com/jedie/django-tools/blob/master/django_tools/limit_to_usergroups.py>`_
        
        DOM compare in unittests
        ========================
        
        The Problem:
        You can’t easy check if e.g. some form input fields are in the reponse,
        because the form rendering use a dict for storing all html attributes.
        So, the ordering of form field attributes are not sorted and varied.
        
        The Solution:
        You need to parse the response content into a DOM tree and compare nodes.
        
        We add the gread work of Gregor Müllegger at his GSoC 2011 form-rendering branch.
        You will have the following assert methods inherit from: django_tools.unittest_utils.unittest_base.BaseTestCase
        
        * self.assertHTMLEqual() – for compare two HTML DOM trees
        
        * self.assertDOM() – for check if nodes in response or not.
        
        * self.assertContains() – Check if ond node occurs 'count’ times in response
        
        More info and examples in `./tests/test_dom_asserts.py <https://github.com/jedie/django-tools/blob/master/django_tools/tests/test_dom_asserts.py>`_.
        
        small tools
        ===========
        
        debug_csrf_failure()
        --------------------
        
        Display the normal debug page and not the minimal csrf debug page.
        More info in DocString here: `django_tools/views/csrf.py <https://github.com/jedie/django-tools/blob/master/django_tools/views/csrf.py>`_.
        
        upgrade virtualenv
        ==================
        
        A simple commandline script that calls ``pip install —-upgrade XY`` for every package thats installed in a virtualenv.
        Simply copy/symlink it into the root directory of your virtualenv and start it.
        
        **Note:** `Seems that this solution can't observe editables right. <https://github.com/pypa/pip/issues/319>`_
        
        To use it, without installing django-tools:
        
        ::
        
            ~/$ cd goto/your_env
            .../your_env/$ wget https://github.com/jedie/django-tools/raw/master/django_tools/upgrade_virtualenv.py
            .../your_env/$ chmod +x upgrade_virtualenv.py
            .../your_env/$ ./upgrade_virtualenv.py
        
        This script will be obsolete, if `pip has a own upgrade command <https://github.com/pypa/pip/issues/59>`_.
        
        ..all others…
        =============
        
        There exist many miscellaneous stuff. Look in the source, luke!
        
        ------------------------------
        Backwards-incompatible changes
        ------------------------------
        
        v0.9
        ====
        
        Language code field and SelectMediaPath are renamed.
        
        change:
        **from django_tools.fields import LanguageCodeFormField**
        to:
        **from django_tools.fields.language_code import LanguageCodeFormField**
        
        change and rename:
        **from django_tools.fields import LanguageCodeField**
        to:
        **from django_tools.fields.language_code import LanguageCodeModelField**
        
        change and rename:
        **from django_tools.widgets import SelectMediaPath**
        to:
        **from django_tools.fields.media_path import MediaPathWidget**
        
        -------
        history
        -------
        
        * v0.21.1
        
            * Bugfixes in `Dynamic Site <https://github.com/jedie/django-tools/blob/master/django_tools/dynamic_site/README.creole>`_.
        
        * v0.21.0beta
        
            * New: site alias function
        
            * refractory 'DynamicSiteMiddleware' to a own app (**Backwards-incompatible change:** change your settings if you use the old DynamicSiteMiddleware.)
        
        * v0.20.1
        
            * New: `debug_csrf_failure() <https://github.com/jedie/django-tools/blob/master/django_tools/views/csrf.py>`_ to display the normal debug page and not the minimal csrf debug page.
        
        * v0.20.0
        
            * Add experimental `DynamicSiteMiddleware <https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/DynamicSite.py>`_, please test it and give feedback.
        
        * v0.19.6
        
            * Add some south introspection rules for LanguageCodeModelField and jQueryTagModelField
        
            * fallback if message for anonymous user can't created, because django.contrib.messages middleware not used.
        
            * Bugfix in django_tools.utils.messages.StackInfoStorage
        
        * v0.19.5
        
            * Add `http://bugs.python.org/file22767/hp_fix.diff <http://bugs.python.org/file22767/hp_fix.diff>`_ for `https://github.com/gregmuellegger/django/issues/1 <https://github.com/gregmuellegger/django/issues/1>`_
        
        * v0.19.4
        
            * Bugfix for PyPy in local_sync_cache get_cache_information(): sys.getsizeof() not implemented on PyPy
        
            * Bugfix in template.filters.chmod_symbol()
        
            * Nicer solution for template.filters.human_duration()
        
        * v0.19.3
        
            * Add support for https in utils/http.py
        
        * v0.19.2
        
            * Bugfix in utils/http.py timeout work-a-round
        
        * v0.19.1
        
            * utils/http.py changes:
        
                * Use a better solution, see:
        
                * Add timeout and add a work-a-round for Python < 2.6
        
        * v0.19.0
        
            * NEW: Add utils/http.py with helpers to get a webpage via http GET in unicode
        
            * Change README from textile to creole ;)
        
        * v0.18.2
        
            * Bugfix: Add missing template in pypi package
        
        * v0.18.0
        
            * NEW: Add DOM compare from Gregor Müllegger GSoC work into unittest utils.
        
        * v0.17.1
        
            * Bugfix in “limit_to_usergroups”: Make choices “lazy”: Don’t access the database in *init*
        
        * v0.17
        
            * Add the script “upgrade_virtualenv.py”
        
            * Add “limit_to_usergroups”
        
            * Add “local sync cache”
        
            * Add models.UpdateInfoBaseModel
        
            * Update decorators.render_to
        
            * render_to pass keyword arguments to render_to_response() (e.g.: mimetype=“text/plain”)
        
            * new argument “skip_fail” in get_filtered_apps(): If True: raise excaption if app is not importable
        
        * v0.16.4
        
            * Bugfix: ``get_db_prep_save() got an unexpected keyword argument 'connection’`` when save a SignSeparatedModelField()
        
        * v0.16.3
        
            * Update BrowserDebug: Use response.templates instead of response.template and make output nicer
        
        * v0.16.2
        
            * Merge stack info code and display better stack info on browser debug page
        
        * v0.16.1
        
            * Update django_tools.utils.messages.StackInfoStorage for django code changes.
        
        * v0.16.0
        
            * NEW: path model field (check if direcotry exist)
        
        * v0.15.0
        
            * NEW: Add a flexible URL field (own validator, model- and form-field)
        
        * v0.14.1
        
            * Bugfix: make path in MediaPathModelField relativ (remove slashes)
        
        * v0.14
        
            * NEW: django-tagging addon: Display existing tags under a tag field
        
        * v0.13
        
            * Bugfix UnicodeEncodeError in Browser debug
        
        * v0.12
        
            * NEW: django_tools.utils.messages.failsafe_message
        
        * v0.11
        
            * NEW: Store data in a secure cookie, see: utils/client_storage.py
        
        * v0.10.1
        
            * New: Display used templates in unittest BrowserDebug
        
            * Bugfix: catch if last usermessages exist
        
        * v0.10.0
        
            * NEW: utils around django messages, see: /django_tools/utils/messages.py
        
        * v0.9.1
        
            * Bugfix: database column was not created: don’t overwrite get_internal_type()
        
        * v0.9
        
            * New: stuff in /django_tools/fields/
        
            * see also backwards-incompatible changes, above!
        
        * v0.8.2
        
            * New: widgets.SelectMediaPath(): Select a sub directory in settings.MEDIA_ROOT
        
            * New: fields.SignSeparatedField()
        
        * v0.8.1
        
            * Add “no_args” keyword argument to installed_apps_utils.get_filtered_apps()
        
        * v0.8.0
        
            * Add model LanguageCode field and form LanguageCode field in Accept-Language header format (RFC 2616)
        
        * v0.7.0
        
            * Add decorators.py
        
        * v0.6.0
        
            * Add forms_utils.LimitManyToManyFields, crosspost: `http://www.djangosnippets.org/snippets/1691/ <http://www.djangosnippets.org/snippets/1691/>`_
        
        * v0.5.0
        
            * Add template/filters.py from PyLucid v0.8.x
        
        * v0.4.0
        
            * Add experimental “warn_invalid_template_vars”
        
        * v0.3.1
        
            * Bugfix: Exclude the instance if it was saved in the past.
        
        * v0.3.0
        
            * Add utils.installed_apps_utils
        
        * v0.2.0
        
            * Add models_utils, see: `http://www.jensdiemer.de/_command/118/blog/detail/67/ <http://www.jensdiemer.de/_command/118/blog/detail/67/>`_ (de)
        
        * v0.1.0
        
            * first version cut out from PyLucid CMS – `http://www.pylucid.org <http://www.pylucid.org>`_
        
        -----------
        pip upgrade
        -----------
        
        To do a pip upgrade in a virtual environment, run this:
        
        ::
        
            ~$ cd /YourVirtualEnv/bin
            ~/YourVirtualEnv/bin$ source activate
            (YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose --editable=git+git://github.com/jedie/django-tools.git#egg=django-tools
        
        The example used git readonly clone url. If you use subversion do this:
        
        ::
        
            (YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose --editable=http://svn.github.com/jedie/django-tools.git#egg=django-tools
        
        If you have git write access, use this:
        
        ::
        
            (YourVirtualEnv)~/YourVirtualEnv/bin$ pip install --upgrade --verbose --editable=git+git@github.com:jedie/django-tools.git#egg=django-tools
        
        ...or just use our limit_to_usergroups.py script (see above)
        
        ----------------
        fast repo update
        ----------------
        
        To made a fast repository update, you can run this simple shell script:
        
        ::
        
            ~$ cd /path/to/django-tools
            /path/to/django-tools$ ./update.sh
        
        the update script runs “git pull origin master” or “svn update”.
        
        -----
        links
        -----
        
        +-------------+----------------------------------------------+
        | Homepage:   | `http://code.google.com/p/django-tools/`_    |
        +-------------+----------------------------------------------+
        | Sourcecode: | `http://github.com/jedie/django-tools`_      |
        +-------------+----------------------------------------------+
        | PyPi:       | `http://pypi.python.org/pypi/django-tools/`_ |
        +-------------+----------------------------------------------+
        | IRC         | `#pylucid on freenode.net`_                  |
        +-------------+----------------------------------------------+
        
        .. _http://code.google.com/p/django-tools/: http://code.google.com/p/django-tools/
        .. _http://github.com/jedie/django-tools: http://github.com/jedie/django-tools
        .. _http://pypi.python.org/pypi/django-tools/: http://pypi.python.org/pypi/django-tools/
        .. _#pylucid on freenode.net: http://www.pylucid.org/permalink/304/irc-channel
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Programming Language :: Python
Classifier: Framework :: Django
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Documentation
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Operating System :: OS Independent
