Yann Malet avatar Yann Malet committed 74d05e7

Initial creation of cmsplugin_feed

Comments (0)

Files changed (15)

+The primary author of cmsplugin-feed is Yann Malet <yann.malet@gmail.com>
+Thanks for downloading cmsplugin-feed.
+
+To install it, run the following command inside this directory:
+
+    python setup.py install
+
+Or if you're using ``pip``::
+
+    pip install cmsplugin-feed
+
+Or if you'd prefer you can simply place the included ``cmsplugin_feed`` 
+directory somewhere on your Python path, or symlink to it from somewhere on
+your Python path; this is useful if your working from a Mercurial checkout.
+
+Note that this application requires Python2.3 or later, and a functional
+installation of Django 1.` or newer as well as a functional install of 
+Django-CMS 2.` Final or newer. it also requires feedparser ::
+
+    pip install feedparser
+Copyright (c) 2009, Gwadeloop
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+        this list of conditions and the following disclaimer.
+    * 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.
+    * Neither the name of the Xenofox, LLC 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 HOLDER 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.
+#include CHANGELOG
+include INSTALL
+include LICENSE
+include MANIFEST.in
+include README
+include AUTHORS
+recursive-include docs *
+recursive-include cmsplugin_feed *
+
+========================
+Django CMS Feed
+========================
+
+This is a fairly simple plugin for django-cms that allows displaying feed
+on a page.
+It depends on Django 1.1 or newer and on Django-Cms 2.0 final or newer.
+
+For installation instructions, see the file "INSTALL" in this directory.

cmsplugin_feed/__init__.py

+VERSION = (0,1,0,'alpha', 4)
+__version__ = '.'.join(map(str, VERSION))
+
+def get_version():
+    version = '%s.%s' % (VERSION[0], VERSION[1])
+    if VERSION[2]:
+        version = '%s.%s' % (version, VERSION[2])
+    if VERSION[3:] == ('alpha', 0):
+        version = '%s pre-alpha' % version
+    else:
+        if VERSION[3] != 'final':
+            version = '%s %s %s' % (version, VERSION[3], VERSION[4])
+    return version
+
+# patch settings
+try:
+    from conf import patch_settings
+    from django.conf import settings
+    patch_settings()
+except ImportError:
+    """
+    This exception means that either the application is being built, or is
+    otherwise installed improperly. Both make running patch_settings
+    irrelevant.
+    """
+    pass
+except AttributeError:
+    """
+    Same as Above
+    """
+    pass
Add a comment to this file

cmsplugin_feed/__init__.pyc

Binary file added.

cmsplugin_feed/cms_plugins.py

+import feedparser
+
+from django.utils.translation import ugettext as _
+from cms.plugin_base import CMSPluginBase
+from cms.plugin_pool import plugin_pool
+
+from cmsplugin_feed.models import Feed
+from cmsplugin_feed.forms import FeedForm
+
+class FeedPlugin(CMSPluginBase):
+    model = Feed
+    name = _('Feed')
+    form = FeedForm
+    render_template = 'cmsplugin_feed/feed.html'
+
+    def render(self, context, instance, placeholder):
+        feed = feedparser.parse(instance.feed_url)
+        context.update({
+            'object': instance,
+            'feed': feed,
+            'placeholder': placeholder,
+            })
+        return context
+
+plugin_pool.register_plugin(FeedPlugin)
Add a comment to this file

cmsplugin_feed/cms_plugins.pyc

Binary file added.

cmsplugin_feed/forms.py

+from django.forms.models import ModelForm
+from django import forms
+
+from cmsplugin_feed.models import Feed
+
+class FeedForm(ModelForm):
+    class Meta:
+        model = Feed
Add a comment to this file

cmsplugin_feed/forms.pyc

Binary file added.

cmsplugin_feed/models.py

+from django.db import models
+from django.utils.translation import ugettext as _
+from cms.models import CMSPlugin
+
+class Feed(CMSPlugin):
+    name = models.CharField(verbose_name=_('name'),max_length=255,
+                            null=True, blank=True)
+    feed_url = models.URLField(verbose_name=_('feed URL'),verify_exists=True)
+
+    def __unicode__(self):
+        return self.name
Add a comment to this file

cmsplugin_feed/models.pyc

Binary file added.

cmsplugin_feed/templates/cmsplugin_feed/feed.html

+<h1>{{ object.name }}</h1>
+
+{% for item in feed.entries %}
+    <h2><a href='{{ item.link}}'>{{ item.title }}</a></h2>
+    {{ item.summary|safe }}
+{% endfor %}
+#!/usr/bin/env python
+PACKAGE_NAME = 'cmsplugin_feed'
+PACKAGE_DIR = PACKAGE_NAME
+
+import os, sys
+
+from distutils.core import setup
+from distutils.command.install import INSTALL_SCHEMES
+
+def fullsplit(path, result=None):
+    """
+    Split a pathname into compontents (the opposite of os.path.join) in a
+    platform-neutral way.
+    """
+    if result is None:
+        result = []
+    head, tail = os.path.split(path)
+    if head == '':
+        return [tail] + result
+    if head == path:
+        return result
+    return fullsplit(head, [tail] + result)
+
+# Tell disutils to put the data_files in platofmr-specific installation
+# locations.
+for scheme in INSTALL_SCHEMES.values():
+    scheme['data'] = scheme['purelib']
+
+# Compile the list of packages available, because distuils doesn't have
+# and easy way to do this.
+packages, data_files = [], []
+root_dir = os.path.dirname(__file__)
+if root_dir != '':
+    os.chdir(root_dir)
+
+for dirpath, dirnames, filenames in os.walk(PACKAGE_DIR):
+    # Ignore dirnames that start with '.'
+    for i, dirname in enumerate(dirnames):
+        if dirname.startswith('.'): del dirnames[i]
+    if '__init__.py' in filenames:
+        packages.append('.'.join(fullsplit(dirpath)))
+    elif filenames:
+        data_files.append(
+                [dirpath, [os.path.join(dirpath, f) for f in filenames]]
+                )
+# Small hack for working with bdist_wininst
+# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
+if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst':
+    for file_info in data_files:
+        file_info[0] = '\\PURELIB\\%s' % file_info[0]
+
+# Dynamically calculate the version based on package.VERSION
+version = __import__(PACKAGE_NAME).get_version()
+
+setup(
+        name='cmsplugin-feed',
+        version=version.replace(' ', '-'),
+        description='Adds a plugin based MarkUp System for django-cms',
+        author='Yann Malet, gwadeloop',
+        author_email='yann.malet@gmail.com',
+        url='http://bitbucket.org/yml/cmsplugin-feed',
+        packages=packages,
+        data_files=data_files,
+        classifiers=[
+            'Development Status :: 3 - Alpha',
+            'Environment :: Web Environment',
+            'Framework :: Django',
+            'Intended Audience :: Developers',
+            'Natural Language :: English',
+            'Operating System :: OS Independent',
+            'Programming Language :: Python :: 2',
+            'Topic :: Software Development :: Libraries :: Python Modules',
+            'Topic :: Utilities',
+            'License :: OSI Approved :: BSD License',
+            ]
+        )
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.