Metadata-Version: 1.1
Name: PDFutils
Version: 1.0.6
Summary: Django PDFutils
Home-page: https://github.com/h3/django-pdfutils
Author: Maxime Haineault
Author-email: haineault@gmail.com
License: BSD
Description: django-pdfutils
        ===============
        
        A simple django app to generate PDF documents.
        
        
        Installation
        ------------
        
        1. In your `settings.py`, add `pdfutils` to your `INSTALLED_APPS`.
        2. `(r'^reports/', include(pdfutils.site.urls)),` to your `urls.py`
        3. Add `pdfutils.autodiscover()` to your `urls.py`
        4. Create a `report.py` file in any installed django application.
        5. Create your report(s)
        6. Profit!
        
        **Note**: If you are using buildout, don't forget to put `pdfutils` 
        in your `eggs` section or else the django-pdfutils dependencies wont
        be installed.
        
        
        Example report
        --------------
        
        Reports are basically views with custom methods and properties.
        
        .. code-block:: python
        
            # -*- coding: utf-8 -*-
        
            from django.contrib.auth.models import User
            from django.core.urlresolvers import reverse
            from django.utils.translation import ugettext as _
        
            from pdfutils.reports import Report
            from pdfutils.sites import site
            from pdfutils.utils import memoize
        
        
            class MyUserReport(Report):
                title = _('Users')
                template_name = 'myapp/reports/users-report.html'
                slug = 'users-report'
                orientation = 'portrait'
        
                @memoize
                def get_users(self):
                    """
                    This method is not necessary, it is used to showcase the
                    memoize decorator which is included in utils. This prevent
                    methods from computing their output twice.
                    """
                    return User.objects.filter(is_staff=True)
        
                def get_styles(self):
                    """
                    It is possible to add or override style like so
                    """
                    self.styles.append('myapp/css/users-report.css')
                    return super(AccountStatementReport, self).get_styles()
        
                def filename(self):
                    """
                    The filename can be generated dynamically and translated
                    """
                    return _('Users-report-%(count)s.pdf') % {'count': self.get_users().count() }
        
                def get_context_data(self):
                    """
                    Context data is injected just like a normal view
                    """
                    context = super(AccountStatementReport, self).get_context_data()
                    context['user_list'] = self.get_users()
                    return context
        
            site.register(MyUserReport)
        
        
        The slug should obviously be unique since it is used to build the report URL.
        
        For example, with the default settings and URLs, the URL for report above would be `/reports/users-report/`.
        
        Example template
        ----------------
        
        .. code-block:: html
        
            <html>
                <head>
                    {{ STYLES|safe }}
                </head>
                <body class="{% if landscape %}landscape{% else %}portrait{% endif %}">
                    <ul>
                        {% for user in user_list %}
                        <li>{{ user }}</li>
                        {% endif %}
                    </ul>
                </body>
            </html>
        
        Some template variables are injected by default in reports:
        
        * title
        * slug
        * orientation
        * MEDIA_URL
        * STATIC_URL
        * STYLES
        
        
        Overriding default CSS
        ----------------------
        
        Since the default CSS (base.css, portrait.css, landscape.css) are normal static files, they can be overrided 
        from any other django app which has a `pdfutils` folder in their static folder.
        
        Note: Be sure your applications are listed in the right order in `INSTALLED_APPS` !
        
        
        Dependencies
        ------------
        
        * django >=1.4, < 1.5.99
        * decorator == 3.4.0, <= 3.9.9
        * PIL == 1.1.7
        * reportlab == 2.5
        * html5lib == 0.90
        * httplib2 == 0.7.4
        * pyPdf == 1.13
        * xhtml2pdf == 0.0.4
        * django-xhtml2pdf == 0.0.3
        
        Note: dependencies are specified in `setup.py`, thus are installed automatically.
        
        
        Changelog
        =========
        
        v1.0.6 (2015-03-27)
        -------------------
        
        - Cleanup. [Maxime Haineault]
        
        v1.0.5 (2015-03-27)
        -------------------
        
        - Fixed build script. [Maxime Haineault]
        
        v1.0.4 (2015-03-27)
        -------------------
        
        - Let pisa handle remote resources. [Maxime Haineault]
        
          https://github.com/dulaccc/django-pdfutils/commit/e92304c2c952a902c6461787aec2cb269595b738
        
        - Add a url name property to the urlpattern generated. [Maxime
          Haineault]
        
          https://github.com/dulaccc/django-pdfutils/commit/161c7fc044d21dbaf91c57266f4b408846af8122
        
        - Updated to httplib2 0.9. [Maxime Haineault]
        
        - Messed up version, dammit. [Maxime Haineault]
        
        v1.0.3 (2015-03-27)
        -------------------
        
        - Wheel doesn't build. well.. no wheel. [Maxime Haineault]
        
        v1.0.2 (2015-03-27)
        -------------------
        
        - Updated .gitignore. [Maxime Haineault]
        
        - Updated build script, now building wheel. [Maxime Haineault]
        
        v1.0.1 (2015-03-27)
        -------------------
        
        - Updated .gitignore, almost finished build script, updated setup.py.
          [Maxime Haineault]
        
        - Added a release script. [Maxime Haineault]
        
        - Merged. [Maxime Haineault]
        
        - Update setup.py. [Maxime Haineault]
        
        - Updated urls for django 1.5+ (unused), updated gitignore. [Maxime
          Haineault]
        
        - Fixed small bug in get_context. [Maxime Haineault]
        
        - Removed maximum django version restriction, updated gitignore. [Maxime
          Haineault]
        
        - Removed PIL dependency. [Maxime Haineault]
        
        - Removed django-xhtml2pdf dependency. [Maxime Haineault]
        
        - Removed THUMBNAIL_MEDIA_URL from template variables. [Maxime
          Haineault]
        
        
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Framework :: Django
