Skip to content

Commit

Permalink
Added flake8.cfg and cleaned up code.
Browse files Browse the repository at this point in the history
  • Loading branch information
timgraham committed Aug 25, 2014
1 parent b5a4908 commit a49a59a
Show file tree
Hide file tree
Showing 52 changed files with 264 additions and 163 deletions.
3 changes: 1 addition & 2 deletions accounts/forms.py
@@ -1,9 +1,8 @@
from __future__ import absolute_import

from django import forms

from .models import Profile


class ProfileForm(forms.ModelForm):
"""
A form for editing user profiles.
Expand Down
1 change: 1 addition & 0 deletions accounts/models.py
@@ -1,6 +1,7 @@
from django.db import models
from django.contrib.auth.models import User


class Profile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=200, blank=True)
Expand Down
15 changes: 10 additions & 5 deletions accounts/views.py
@@ -1,7 +1,6 @@
from __future__ import absolute_import

import hashlib
import json

from django.shortcuts import redirect, render, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
Expand All @@ -15,6 +14,7 @@
from .forms import ProfileForm
from .models import Profile


def user_profile(request, username):
u = get_object_or_404(User, username=username)
ctx = {
Expand All @@ -26,6 +26,7 @@ def user_profile(request, username):
}
return render(request, "accounts/user_profile.html", ctx)


@login_required
def edit_profile(request):
profile, created = Profile.objects.get_or_create(user=request.user)
Expand All @@ -35,6 +36,7 @@ def edit_profile(request):
return redirect('user_profile', request.user.username)
return render(request, "accounts/edit_profile.html", {'form': form})


def json_user_info(request):
"""
Return info about some users as a JSON object.
Expand All @@ -51,12 +53,13 @@ def json_user_info(request):
De-duplication on GET['user'] is performed since I don't want to have to
think about how best to do it in JavaScript :)
"""

userinfo = dict([
(name, get_user_info(name))
for name in set(request.GET.getlist('user'))])
(name, get_user_info(name))
for name in set(request.GET.getlist('user'))
])
return JSONResponse(userinfo)


def get_user_info(username):
c = cache.get_cache('default')
username = username.encode('ascii', 'ignore')
Expand All @@ -75,6 +78,7 @@ def get_user_info(username):
c.set(key, info, 60*60)
return info


def get_user_stats(user):
c = cache.get_cache('default')
key = 'user_vital_status:%s' % hashlib.md5(user.username).hexdigest()
Expand All @@ -89,6 +93,7 @@ def get_user_stats(user):
c.set(key, info, 60*60)
return info


class JSONResponse(HttpResponse):
def __init__(self, obj):
super(JSONResponse, self).__init__(
Expand Down
12 changes: 7 additions & 5 deletions aggregator/admin.py
@@ -1,6 +1,5 @@
from __future__ import absolute_import

from django.contrib import admin

from .models import Feed, FeedItem, FeedType, APPROVED_FEED, DENIED_FEED


Expand All @@ -18,7 +17,8 @@ def mark_denied(modeladmin, request, queryset):
mark_denied.short_description = "Mark selected feeds as denied."


admin.site.register(Feed,
admin.site.register(
Feed,
list_display=["title", "feed_type", "public_url", "approval_status"],
list_filter=["feed_type", "approval_status"],
ordering=["title"],
Expand All @@ -29,13 +29,15 @@ def mark_denied(modeladmin, request, queryset):
actions=[mark_approved, mark_denied],
)

admin.site.register(FeedItem,
admin.site.register(
FeedItem,
list_display=['title', 'feed', 'date_modified'],
list_filter=['feed'],
search_fields=['feed__title', 'feed__public_url', 'title'],
date_heirarchy=['date_modified'],
)

admin.site.register(FeedType,
admin.site.register(
FeedType,
prepopulated_fields={'slug': ('name',)},
)
8 changes: 5 additions & 3 deletions aggregator/feeds.py
@@ -1,10 +1,10 @@
from __future__ import absolute_import

from django.core import urlresolvers
from django.contrib.syndication.views import Feed
from django.shortcuts import get_object_or_404

from .models import FeedType, FeedItem


class BaseCommunityAggregatorFeed(Feed):
def item_title(self, item):
return item.title
Expand All @@ -27,6 +27,7 @@ def item_author_link(self, item):
def item_pubdate(self, item):
return item.date_modified


class CommunityAggregatorFeed(BaseCommunityAggregatorFeed):
def get_object(self, request, slug=None):
return get_object_or_404(FeedType, slug=slug)
Expand All @@ -46,6 +47,7 @@ def link(self, obj):
def description(self, obj):
return self.title(obj)


class CommunityAggregatorFirehoseFeed(BaseCommunityAggregatorFeed):
title = 'Django community aggregator firehose'
description = 'All activity from the Django community aggregator'
Expand All @@ -55,4 +57,4 @@ def link(self):

def items(self):
qs = FeedItem.objects.order_by('-date_modified').select_related('feed')
return qs[:50]
return qs[:50]
4 changes: 2 additions & 2 deletions aggregator/forms.py
@@ -1,8 +1,8 @@
from __future__ import absolute_import

from django import forms

from .models import Feed


class FeedModelForm(forms.ModelForm):
title = forms.CharField(max_length=250,
help_text="title of the resource / blog.")
Expand Down
4 changes: 2 additions & 2 deletions aggregator/management/commands/send_pending_approval_email.py
Expand Up @@ -2,15 +2,15 @@
Send an email to settings.FEED_APPROVERS with the feeds that need to
be manually approved.
"""
from __future__ import absolute_import

from django.conf import settings
from django.contrib.auth.models import User
from django.core import mail
from django.core.management.base import NoArgsCommand
from django.template import Context, Template

from ...models import Feed, PENDING_FEED


class Command(NoArgsCommand):

def handle_noargs(self, **kwargs):
Expand Down
22 changes: 12 additions & 10 deletions aggregator/models.py
Expand Up @@ -21,9 +21,9 @@ def __unicode__(self):
def items(self):
return FeedItem.objects.filter(feed__feed_type=self)

APPROVED_FEED='A'
DENIED_FEED='D'
PENDING_FEED='P'
APPROVED_FEED = 'A'
DENIED_FEED = 'D'
PENDING_FEED = 'P'

STATUS_CHOICES = (
(PENDING_FEED, 'Pending'),
Expand Down Expand Up @@ -93,12 +93,13 @@ def create_or_update_by_guid(self, guid, **kwargs):
# Don't update the date since most feeds get this wrong.
kwargs.pop('date_modified')

for k,v in kwargs.items():
for k, v in kwargs.items():
setattr(item, k, v)
item.save()

return item


class FeedItem(models.Model):
feed = models.ForeignKey(Feed)
title = models.CharField(max_length=500)
Expand Down Expand Up @@ -160,12 +161,13 @@ def feed_updated(sender, notification, **kwargs):
else:
date_modified = datetime.datetime.now()

FeedItem.objects.create_or_update_by_guid(guid,
feed = feed,
title = title,
link = link,
summary = content,
date_modified = date_modified
FeedItem.objects.create_or_update_by_guid(
guid,
feed=feed,
title=title,
link=link,
summary=content,
date_modified=date_modified,
)

push_signals.updated.connect(feed_updated)
43 changes: 21 additions & 22 deletions aggregator/tests.py
@@ -1,20 +1,17 @@
# email test
# https://docs.djangoproject.com/en/dev/topics/testing/#email-services
from __future__ import absolute_import

import datetime

from django.conf import settings
from django.contrib.auth.models import Group, User
from django.core import mail
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.test.client import Client

from docs.models import DocumentRelease

from .management.commands import send_pending_approval_email
from . import models


class AggregatorTests(TestCase):

def setUp(self):
Expand All @@ -26,27 +23,29 @@ def setUp(self):
self.user = User.objects.create(username="Mr. Potato", email="mr@potato.com")
self.user.groups.add(g)


self.feed_type = models.FeedType(name="Test Feed Type", slug="test-feed-type", can_self_add=True)
self.feed_type.save()

self.approved_feed = models.Feed(title="Approved", feed_url="foo.com/rss/", public_url="foo.com/",
approval_status=models.APPROVED_FEED, feed_type=self.feed_type)
self.denied_feed = models.Feed(title="Denied", feed_url="bar.com/rss/", public_url="bar.com/",
approval_status=models.DENIED_FEED, feed_type=self.feed_type)
self.pending_feed = models.Feed(title="Pending", feed_url="baz.com/rss/", public_url="baz.com/",
approval_status=models.PENDING_FEED, feed_type=self.feed_type)
self.feed_type = models.FeedType.objects.create(name="Test Feed Type", slug="test-feed-type", can_self_add=True)

self.approved_feed = models.Feed.objects.create(
title="Approved", feed_url="foo.com/rss/", public_url="foo.com/",
approval_status=models.APPROVED_FEED, feed_type=self.feed_type,
)
self.denied_feed = models.Feed.objects.create(
title="Denied", feed_url="bar.com/rss/", public_url="bar.com/",
approval_status=models.DENIED_FEED, feed_type=self.feed_type,
)
self.pending_feed = models.Feed.objects.create(
title="Pending", feed_url="baz.com/rss/", public_url="baz.com/",
approval_status=models.PENDING_FEED, feed_type=self.feed_type,
)

for feed in [self.approved_feed, self.denied_feed, self.pending_feed]:
feed.save()
feed_item = models.FeedItem(feed=feed, title="%s Item" % feed.title, link=feed.public_url,
date_modified=datetime.datetime.now(), guid=feed.title)
feed_item.save()

self.client = Client()
models.FeedItem.objects.create(
feed=feed, title="%s Item" % feed.title, link=feed.public_url,
date_modified=datetime.datetime.now(), guid=feed.title,
)

def test_feed_list_only_approved_and_active(self):
response = self.client.get(reverse('community-feed-list', kwargs={'feed_type_slug': self.feed_type.slug}));
response = self.client.get(reverse('community-feed-list', kwargs={'feed_type_slug': self.feed_type.slug}))
for item in response.context['object_list']:
self.assertEqual(models.APPROVED_FEED, item.feed.approval_status)

Expand Down
7 changes: 5 additions & 2 deletions aggregator/urls.py
Expand Up @@ -2,12 +2,15 @@

from . import views


urlpatterns = [
url(r'^$',
url(
r'^$',
views.index,
name='community-index'
),
url(r'^mine/$',
url(
r'^mine/$',
views.my_feeds,
name='community-my-feeds'
),
Expand Down
1 change: 1 addition & 0 deletions aggregator/utils.py
@@ -1,5 +1,6 @@
from django.conf import settings


def push_credentials(hub_url):
"""
Callback for django_push to get a hub's credentials.
Expand Down
10 changes: 7 additions & 3 deletions aggregator/views.py
@@ -1,13 +1,12 @@
from __future__ import absolute_import

from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic.list import ListView

from .models import FeedItem, Feed, FeedType, APPROVED_FEED
from .forms import FeedModelForm


def index(request):
"""
Displays the latest feeds of each type.
Expand All @@ -18,6 +17,7 @@ def index(request):
ctx = {'feedtype_list': feeds}
return render(request, 'aggregator/index.html', ctx)


class FeedListView(ListView):
"""
Shows the latest feeds for the given type.
Expand All @@ -34,6 +34,7 @@ def get_context_data(self, **kwargs):
context['feed_type'] = self.feed_type
return context


@login_required
def my_feeds(request):
"""
Expand All @@ -49,6 +50,7 @@ def my_feeds(request):
}
return render(request, 'aggregator/my-feeds.html', ctx)


@login_required
def add_feed(request, feed_type_slug):
"""
Expand All @@ -71,6 +73,7 @@ def add_feed(request, feed_type_slug):
ctx = {'form': f, 'feed_type': ft, 'adding': True}
return render(request, 'aggregator/edit-feed.html', ctx)


@login_required
def edit_feed(request, feed_id):
"""
Expand All @@ -87,6 +90,7 @@ def edit_feed(request, feed_id):
ctx = {'form': f, 'feed': feed, 'adding': False}
return render(request, 'aggregator/edit-feed.html', ctx)


@login_required
def delete_feed(request, feed_id):
"""
Expand Down

0 comments on commit a49a59a

Please sign in to comment.