Skip to main content

A reusable Django app for managing news/blog entries in different languages.

Project description

A reusable Django app for managing news/blog entries in different languages.

Comes with a django-cms apphook and has been prepared using Django 1.5.1 and django-cms 2.4.1. From version 2.0 onwards it is tested and developed further on Django 1.6.2 and django-cms 3.

This app is based on the great https://github.com/fivethreeo/cmsplugin-blog and re-used some of it’s snippets.

Current features include

  • Entry authors based on a django-people Person
  • Entry attachments based on the django-document-library Document
  • Tagging via django-multilingual-tags with a tag based archive view
  • Entry categories
  • RSS Feeds for all news entries, just special authors or tag based.
  • Site maps
  • SEO fields on the Entry for storing custom individual meta descriptions and titles.

Installation

If you want to install the latest stable release from PyPi:

$ pip install django-multilingual-news

If you feel adventurous and want to install the latest commit from GitHub:

$ pip install -e git://github.com/bitmazk/django-multilingual-news.git#egg=multilingual_news

Add multilingual_news to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...,
    'multilingual_news',
    'people',
    'hvad',
    'multilingual_tags',
)

Run the South migrations:

./manage.py migrate multilingual_news

Twitter Bootstrap 3

List of Bootstrap compatible features:

  • A delete confirmation modal for deleting news entries.

For support of the Twitter Bootstrap 3 functionality, you need to add the library to your template.

<script type="text/javascript" src="{% static "multilingual_news/js/multilingual_news.bootstrap.js" %}"></script>

Delete confirmation modal

Add the following markup to your template.

{% load static %}

{# add this before multilingual_news.bootstrap.js #}
<script type="text/javascript" src="{% static "django_libs/js/modals.js" %}"></script>

<div id="ajax-modal" class="modal fade" tabindex="-1">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        </div>
        <div class="modal-body">
        </div>
    </div>
</div>

To trigger the modal, create a link that looks like this.

<a href="{% url "news_delete" pk=news_entry.pk %}" data-class="toggleDeleteModal">Delete</a>

Usage

Using the apphook

Simply create a django-cms page and select Multilingual News Apphook in the Application field of the Advanced Settings.

Sitemaps

To add a sitemap of your blog, add the following to your urlconf:

from multilingual_news.sitemaps import NewsSitemap

urlpatterns += patterns(
    '',
    url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {
        'sitemaps': {
            'blogentries': NewsSitemap,
        }, }),
)

RSS Feeds

The app provides three different types of feeds, you can link to.

  1. All news {% url "news_rss" %}
  2. News from a specific author {% url "news_rss_author" author=author.pk %}, where author is an instance of a people.Person
  3. All news {% url "news_rss_tagged" tag=tag.slug %}, where Tag is an instance of a multilingual_tags.Tag.

Tagging

You can simply add tags for a news entry from the NewsEntry admin page, which renders an inline form at the bottom.

Template tags

get_recent_news

To render recent news:

{% load multilingual_news_tags %}
{% get_recent_news limit=5 as recent_news %}
{% include "multilingual_news/recent.html" with object_list=recent_news %}

You might want to filter recent news by a category. Just add the relevant category slug:

{% get_recent_news category='category-slug' as recent_news %}

If you want to render recent news on a news detail page, you might want to exclude the current news from the queryset:

{% get_recent_news exclude=object as recent_news %}

get_newsentry_meta_description and get_newsentry_meta_title

To render the best matching title or description from the SEO fields, you can use the template tags get_newsentry_meta_description and get_newsentry_meta_title.

<title>{% get_newsentry_meta_title entry_instance %}</title>
<meta name="description" content="{% get_newsentry_meta_description entry_instance %}" />

Settings

NEWS_PAGINATION_AMOUNT

Default: 10

Amount of news entries to display in the list view.

Contribute

If you want to contribute to this project, please perform the following steps:

# Fork this repository
# Clone your fork
$ mkvirtualenv -p python2.7 django-multilingual-news
$ pip install -r requirements.txt
$ ./logger/tests/runtests.sh
# You should get no failing tests

$ git co -b feature_branch master
# Implement your feature and tests
# Describe your change in the CHANGELOG.txt
$ git add . && git commit
$ git push origin feature_branch
# Send us a pull request for your feature branch

Whenever you run the tests a coverage output will be generated in tests/coverage/index.html. When adding new features, please make sure that you keep the coverage at 100%.

Roadmap

Check the issue tracker on github for milestones and features to come.

Project details


Release history Release notifications

History Node

2.6.9

History Node

2.6.8

History Node

2.6.7

History Node

2.6.6

History Node

2.6.5

History Node

2.6.4

History Node

2.6.3

History Node

2.6.2

History Node

2.6.1

History Node

2.6

History Node

2.5.3

History Node

2.5.2

History Node

2.5.1

History Node

2.5

History Node

2.4.1

History Node

2.4

History Node

2.3.1

This version
History Node

2.3

History Node

2.2

History Node

2.1.1

History Node

2.1

History Node

2.0.3

History Node

2.0.2

History Node

2.0.1

History Node

2.0

History Node

1.3.1

History Node

1.3

History Node

1.2

History Node

1.1

History Node

1.0

History Node

0.2

History Node

0.1.1

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
django-multilingual-news-2.3.tar.gz (32.2 kB) Copy SHA256 hash SHA256 Source None Jul 8, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page