Skip to content

uncommitted-and-forgotten/django-copywriting

Repository files navigation

Django Copywriting ============

Django app for writing copy or blogposts. This repository is no longer maintained.

Features

  • Generic Author Model support
  • Articles
  • Automatically generated Feed
  • Tags / search by tags
  • Ping Google on publish
  • Workflow (Draft -> Review -> Ready to Publish -> Published)
  • Automatically register Articles for search if https://github.com/etianen/django-watson is installed
  • Get next/prev published article
  • Comments powered by https://disqus.com/

Installation

To get the latest stable release from PyPi

pip install django-copywriting (not pushed yet! use latest commit from GitHub)

To get the latest commit from GitHub

pip install -e git+git://github.com/arteria/django-copywriting.git#egg=copywriting

TODO: Describe further installation steps (edit / remove the examples below):

Add copywriting and its dependencies to your INSTALLED_APPS

INSTALLED_APPS = (
    ...,
    'copywriting',
    'transmeta',
    'arimagebucket',
    'filer',
    'mptt',
    'easy_thumbnails',
)

Add the copywriting URLs to your urls.py

urlpatterns = patterns('',
    ...
    url(r'^blog/', include('copywriting.urls')),
)

Before your tags/filters are available in your templates, load them by using

{% load blogtags %}

Don't forget to migrate your database

./manage.py migrate copywriting

Usage

Sitemaps

Add the following lines to your urls.py

from copywriting.sitemaps import BlogSitemap
sitemaps = {
    'blog': BlogSitemap,
}

# in patterns... 

url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),

Make sure that 'django.contrib.sitemaps' is in your INSTALLED_APPS.

Comments

To use comments add a shortname and a context_processor to your settings:

DISQUS_SHORTNAME = 'example'

TEMPLATE_CONTEXT_PROCESSORS = (
    # ...
    'copywriting.context_processors.disqus_shortname',
    # ...
)

The comments will render where the div with the id="disqus_thread" is located:

<div id="disqus_thread"></div>

The comments are controlled with the comments_enabled boolean in the article entity.

Signals

You can catch a signal when a article changes to "ready to review" or "ready to publish". Here is an example:

from django.dispatch import receiver
from copywriting.signals import ready_to_review
from copywriting.signals import ready_to_publish

@receiver(ready_to_publish)
def notify_publisher(sender, **kwargs):
    print "New article with ID=%s" % kwargs['articleID']

TODO:

  • Describe usage or point to docs. Also describe available settings and templatetags.
  • Add dependencies
  • Better Installation Guide

Set the FEED_SETTINGS in your projects settings.py file, here is an example:

FEED_SETTINGS = {
    'title': "My awesome Blog",
    'link': "/blog/",
    'description': "Don't miss any of my new posts",
    'author_email': "me@domain.ch",
    'author_name': "Scrooge McDuck",
    'author_link': "https://www.domain.ch/",
    'feed_url': "https://www.domain.ch/blog/feed/",
    'categories': [
        'DuckTales',
        'Daisy Duck',
        ]
}

Known issues, TODOs and planned features

  • ImageBucketObject is missing! Issue #5
  • ImageCropping dependencies
  • Translation added for desc so manual migrations of the DB are required. Add the new rows and rename desc to your primary language. This would be desc_de in case you start with German. Migration hints can be found here: #14

Contribute

If you want to contribute to this project, just send us your pull requests. Thanks.