Add support for custom user models

This commit is contained in:
Iacopo Spalletti 2014-09-04 09:16:56 +02:00
parent 3fad926559
commit 3a03cb71fe
5 changed files with 22 additions and 15 deletions

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from cms.models import PlaceholderField, CMSPlugin from cms.models import PlaceholderField, CMSPlugin
from cmsplugin_filer_image.models import ThumbnailOption from cmsplugin_filer_image.models import ThumbnailOption
from django.contrib.auth.models import User from django.conf import settings as dj_settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
@ -62,7 +62,8 @@ class Post(ModelMeta, TranslatableModel):
""" """
Blog post Blog post
""" """
author = models.ForeignKey(User, verbose_name=_('Author'), null=True, blank=True, author = models.ForeignKey(dj_settings.AUTH_USER_MODEL,
verbose_name=_('Author'), null=True, blank=True,
related_name='djangocms_blog_post_author') related_name='djangocms_blog_post_author')
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)
@ -217,11 +218,14 @@ class LatestPostsPlugin(CMSPlugin):
class AuthorEntriesPlugin(CMSPlugin): class AuthorEntriesPlugin(CMSPlugin):
authors = models.ManyToManyField(User, verbose_name=_('Authors'), authors = models.ManyToManyField(
limit_choices_to={'djangocms_blog_post_author__publish': True} dj_settings.AUTH_USER_MODEL, verbose_name=_('Authors'),
) limit_choices_to={'djangocms_blog_post_author__publish': True}
latest_posts = models.IntegerField(_(u'Articles'), default=settings.BLOG_LATEST_POSTS, )
help_text=_('The number of author articles to be displayed.')) latest_posts = models.IntegerField(
_(u'Articles'), default=settings.BLOG_LATEST_POSTS,
help_text=_('The number of author articles to be displayed.')
)
def __unicode__(self): def __unicode__(self):
return u"%s latest articles by author" % self.latest_posts return u"%s latest articles by author" % self.latest_posts

View file

@ -7,7 +7,7 @@
{% block blog_meta %} {% block blog_meta %}
<ul class="post-detail"> <ul class="post-detail">
<li> <li>
{% trans "by" %} <a href="{% url 'djangocms_blog:posts-author' post.author.username %}">{{ post.author.get_full_name }}</a> {% trans "by" %} <a href="{% url 'djangocms_blog:posts-author' post.author.get_username %}">{{ post.author.get_full_name }}</a>
</li> </li>
<li> <li>
{{ post.date_published|date:"M d, Y" }} {{ post.date_published|date:"M d, Y" }}

View file

@ -3,7 +3,7 @@
<h3>{% trans "Authors" %}</h3> <h3>{% trans "Authors" %}</h3>
<ul class="blog-authors"> <ul class="blog-authors">
{% for author in instance.get_authors %} {% for author in instance.get_authors %}
<li><a href="{% url 'djangocms_blog:posts-author' author.username %}"> <li><a href="{% url 'djangocms_blog:posts-author' author.get_username %}">
{{ author.get_full_name }} {{ author.get_full_name }}
<span>( <span>(
{% if author.count > 0 %} {% if author.count > 0 %}

View file

@ -13,7 +13,7 @@
{% block blog_meta %} {% block blog_meta %}
<ul class="post-detail"> <ul class="post-detail">
<li> <li>
{% trans "by" %} <a href="{% url 'djangocms_blog:posts-author' post.author.username %}">{{ post.author.get_full_name }}</a> {% trans "by" %} <a href="{% url 'djangocms_blog:posts-author' post.author.get_username %}">{{ post.author.get_full_name }}</a>
</li> </li>
<li> <li>
{{ post.date_published|date:"M d, Y" }} {{ post.date_published|date:"M d, Y" }}

View file

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.utils.translation import get_language from django.contrib.auth import get_user_model
from django.utils.timezone import now from django.conf import settings as dj_settings
from django.contrib.auth.models import User
from django.core.urlresolvers import resolve from django.core.urlresolvers import resolve
from django.utils.timezone import now
from django.utils.translation import get_language
from django.views.generic import ListView, DetailView from django.views.generic import ListView, DetailView
from parler.views import ViewUrlMixin, TranslatableSlugMixin from parler.views import ViewUrlMixin, TranslatableSlugMixin
@ -11,6 +12,8 @@ from .models import Post, BlogCategory, BLOG_CURRENT_POST_IDENTIFIER
from .settings import (BLOG_PAGINATION, BLOG_POSTS_LIST_TRUNCWORDS_COUNT, from .settings import (BLOG_PAGINATION, BLOG_POSTS_LIST_TRUNCWORDS_COUNT,
BLOG_USE_PLACEHOLDER) BLOG_USE_PLACEHOLDER)
User = get_user_model()
class BaseBlogView(ViewUrlMixin): class BaseBlogView(ViewUrlMixin):
@ -107,11 +110,11 @@ class AuthorEntriesView(BaseBlogView, ListView):
def get_queryset(self): def get_queryset(self):
qs = super(AuthorEntriesView, self).get_queryset() qs = super(AuthorEntriesView, self).get_queryset()
if 'username' in self.kwargs: if 'username' in self.kwargs:
qs = qs.filter(author__username=self.kwargs['username']) qs = qs.filter(**{'author__%s' % User.USERNAME_FIELD: self.kwargs['username']})
return qs return qs
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
kwargs['author'] = User.objects.get(username=self.kwargs.get('username')) kwargs['author'] = User.objects.get(**{User.USERNAME_FIELD: self.kwargs.get('username')})
return super(AuthorEntriesView, self).get_context_data(**kwargs) return super(AuthorEntriesView, self).get_context_data(**kwargs)