Metadata-Version: 1.1
Name: django-faker
Version: 0.2
Summary: Django-faker uses python-faker to generate test data for Django models and templates.
Home-page: http://github.com/joke2k/django-faker
Author: joke2k
Author-email: joke2k@gmail.com
License: MIT
Description: Django-faker
        ============
        
        *Django-faker* uses `PyFaker`_ to generate test data for Django models and templates.
        
        How to use
        ----------
        
        To install Django-faker you can use pip::
        
            pip install django-faker
        
        
        Configuration
        ~~~~~~~~~~~~~
        
        In django application `settings.py`::
        
            INSTALLED_APPS = (
        
                # ...
                'django_faker',
            )
        
            FAKER_LOCALE = None     # settings.LANGUAGE_CODE is loaded
            FAKER_PROVIDERS = None  # faker.DEFAULT_PROVIDERS is loaded (all)
        
        
        Populating Django Models
        ~~~~~~~~~~~~~~~~~~~~~~~~
        
        *Django-faker* provides an adapter for Django Models, for easy population of test databases.
        To populate with Model instances, create a new Populator class,
        then list the class and number of all of Models that must be generated. To launch the actual data population,
        call `execute()` method.
        
        Here is an example showing how to populate 5 `Game` and 10 `Player` objects::
        
            from django_faker import Faker
            # this Populator is only a function thats return a django_faker.populator.Populator instance
            # correctly initialized with a faker.generator.Generator instance, configured as above
            populator = Faker.getPopulator()
        
            from myapp.models import Game, Player
            populator.addEntity(Game,5)
            populator.addEntity(Player,10)
        
            insertedPks = populator.execute()
        
        The populator uses name and column type guessers to populate each column with relevant data.
        For instance, Django-faker populates a column named `first_name` using the `firstName` formatter, and a column with
        a `datetime` instance using the `dateTime`.
        The resulting entities are therefore coherent. If Django-faker misinterprets a column name, you can still specify a custom
        function to be used for populating a particular column, using the third argument to `addEntity()`::
        
        
            populator.addEntity(Player, 10, {
                'score':    lambda x: populator.generator.randomInt(0,1000),
                'nickname': lambda x: populator.generator.email(),
            })
            populator.execute()
        
        Of course, Django-faker does not populate autoincremented primary keys.
        In addition, `django_faker.populator.Populator.execute()` returns the list of inserted PKs, indexed by class::
        
            print insertedPks
            {
                <class 'faker.django.tests.Player'>: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                <class 'faker.django.tests.Game'>: [1, 2, 3, 4, 5]
            }
        
        In the previous example, the `Player` and `Game` models share a relationship. Since `Game` entities are populated first,
        Faker is smart enough to relate the populated `Player` entities to one of populated `Game` entities.
        
        
        Template tags and filter
        ~~~~~~~~~~~~~~~~~~~~~~~~
        
        Django-faker offers a useful template tags and filters for interact with `PyFaker`_::
        
            {% fake 'name' as myname %}{% fake 'dateTimeBetween' '-10d' as mydate %}
        
            {{ myname|title }} - {{ mydate|date:"M Y" }}
        
        
        
            {% load fakers %}
        
            <?xml version="1.0" encoding="UTF-8"?>
            <contacts>
                {% fake 'randomInt' 10 20 as times %}
                {% for i in 10|get_range %}
                <contact firstName="{% fakestr 'firstName' %}" lastName="{% fakestr 'lastName' %}" email="{% fakestr 'email' %}"/>
                    <phone number="{% fakestr 'phoneNumber' %}"/>
                    {% if 'boolean'|fake:25 %}
                    <birth date="{{ 'dateTimeThisCentury'|fake|date:"D d M Y" }}" place="{% fakestr 'city' %}"/>
                    {% endif %}
                    <address>
                        <street>{% fakestr 'streetAddress' %}</street>
                        <city>{% fakestr 'city' %}</city>
                        <postcode>{% fakestr 'postcode' %}</postcode>
                        <state>{% fakestr 'state' %}</state>
                    </address>
                    <company name="{% fakestr 'company' %}" catchPhrase="{% fakestr 'catchPhrase' %}">
                    {% if 'boolean'|fake:25 %}
                        <offer>{% fakestr 'bs' %}</offer>
                    {% endif %}
                    {% if 'boolean'|fake:33 %}
                        <director name="{% fakestr 'name' %}" />
                    {% endif %}
                    </company>
                    {% if 'boolean'|fake:15 %}
                    <details>
                    <![CDATA[
                    {% fakestr 'text' 500 %}
                    ]]>
                    </details>
                    {% endif %}
                </contact>
                {% endfor %}
            </contacts>
        
        
        Page preview
        ~~~~~~~~~~~~
        Open `url.py` in your main application and add this url::
        
            urlpatterns = patterns('',
                ...
                url(r'', include('django_faker.urls')),
                ...
            )
        
        http://127.0.0.1:8000/preview/ shows a faked browser windows, useful for screenshots.
        
        Running the Tests
        -----------------
        
        Run django tests in a django environment:
        
            $ python runtests.py
        
        or if you have 'django_faker' in INSTALLED_APPS:
        
            $ python manage.py test django_faker
        
        
        .. _PyFaker: https://www.github.com/joke2k/faker/
Keywords: faker fixtures data test django
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Information Technology
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Widget Sets
Classifier: Topic :: Utilities
Classifier: License :: OSI Approved :: MIT License
Classifier: Framework :: Django
