Commits

Anonymous committed 852ee23

initial commit

Comments (0)

Files changed (10)

+# use glob syntax.
+syntax: glob
+
+*.pyc
+*.swp
+*.orig
+*.DS_Store
+*.log
+*.cache
+.svn*
+.git*
+Thumbs.db
+Copyright (c) 2012 Jason Christa and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    3. Neither the name of this project nor the names of its contributors may
+       be used to endorse or promote products derived from this software without
+       specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Empty file added.

google_dfp/__init__.py

+__version_info__ = {
+    'major': 0,
+    'minor': 1,
+    'micro': 0,
+    'releaselevel': 'alpha',
+    'serial': 1
+}
+
+def get_version(short=False):
+    assert __version_info__['releaselevel'] in ('alpha', 'beta', 'final')
+    vers = ["%(major)i.%(minor)i" % __version_info__, ]
+    if __version_info__['micro']:
+        vers.append(".%(micro)i" % __version_info__)
+    if __version_info__['releaselevel'] != 'final' and not short:
+        vers.append('%s%i' % (__version_info__['releaselevel'][0], __version_info__['serial']))
+    return ''.join(vers)
+
+__version__ = get_version()

google_dfp/models.py

Empty file added.

google_dfp/templatetags/__init__.py

Empty file added.

google_dfp/templatetags/dfp_tags.py

+from django import template
+from django.utils.safestring import mark_safe
+from django.conf import settings
+import re
+from random import randint
+
+
+register = template.Library()
+
+
+SERVICE_NUMBER = getattr(settings, 'AD_SERVICE_NUMBER', '')
+
+AD_SIZES = {
+    (728, 90): 'leaderboard-advertisement',
+    (300, 250): 'medium-rectangle-advertisement',
+    (160, 600): 'wide-skyscraper-advertisement',
+    (300, 100): 'three-to-one-rectangle-advertisement',
+    (88, 31): 'micro-bar-advertisement',
+}
+
+
+@register.simple_tag
+def ad_header():
+    ret = """
+    <script type="text/javascript">
+        var googletag = googletag || {};
+        googletag.cmd = googletag.cmd || [];
+        (function() {
+            var gads = document.createElement("script");
+            gads.async = true;
+            gads.type = "text/javascript";
+            var useSSL = "https:" == document.location.protocol;
+            gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
+            var node = document.getElementsByTagName("script")[0];
+            node.parentNode.insertBefore(gads, node);
+         })();
+   </script>"""
+    return mark_safe(ret)
+
+
+@register.simple_tag
+def ad_tag(ad_unit):
+    matches = re.match(r'^\w+_(?P<width>\d+)x(?P<height>\d+)', ad_unit)
+    width = int(matches.group('width'))
+    height = int(matches.group('height'))
+    class_name = AD_SIZES.get((width, height), '')
+    id = "gpt-ad-%d" % randint(1000000000, 9999999999)
+    ret = """
+    <div id="%(id)s" class="advertisement %(class_name)s" style="height:%(height)dpx; width:%(width)dpx;">
+        <script type="text/javascript">
+            googletag.cmd.push(function() {
+                googletag.pubads().display("/%(service_number)s/%(ad_unit)s", [%(width)d, %(height)d], "%(id)s");
+            });
+        </script>
+    </div>""" % {'id': id,
+                 'service_number': SERVICE_NUMBER,
+                 'ad_unit': ad_unit,
+                 'class_name': class_name,
+                 'width': width,
+                 'height': height,}
+    return mark_safe(ret)

google_dfp/views.py

Empty file added.
+Django>=1.2
+import os
+try:
+    from setuptools import setup, find_packages
+except ImportError:
+    from distutils.core import setup, find_packages
+
+
+def read_file(filename):
+    """Read a file into a string"""
+    path = os.path.abspath(os.path.dirname(__file__))
+    filepath = os.path.join(path, filename)
+    try:
+        return open(filepath).read()
+    except IOError:
+        return ''
+
+
+def get_readme():
+    """Return the README file contents. Supports text,rst, and markdown"""
+    for name in ('README', 'README.rst', 'README.md'):
+        if os.path.exists(name):
+            return read_file(name)
+    return ''
+
+setup(
+    name = 'Django Google DFP',
+    version = __import__('google_dfp').get_version().replace(' ', '-'),
+    url = 'https://bitbucket.org/nextscreenlabs/django-google-dfp',
+    author = 'Jason Christa',
+    author_email = 'jason@zeitcode.com',
+    description = 'Template tags for Google DFP.',
+    long_description = get_readme(),
+    packages = find_packages(exclude=['tests']),
+    include_package_data = True,
+    install_requires = read_file('requirements.txt'),
+    classifiers = [
+        'Environment :: Web Environment',
+        'License :: OSI Approved :: BSD Liscense',
+        'Framework :: Django',
+        'Programming Language :: Python',
+    ],
+)