Skip to content

Commit

Permalink
Add news to the dev hub (bug 660899)
Browse files Browse the repository at this point in the history
  • Loading branch information
gkoberger committed Jun 2, 2011
1 parent 4515b2e commit 3fbdaa4
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 5 deletions.
9 changes: 9 additions & 0 deletions apps/devhub/models.py
Expand Up @@ -34,6 +34,15 @@ class Meta:
db_table = 'hubrsskeys'


class BlogPost(amo.models.ModelBase):
title = models.CharField(max_length=255)
date_posted = models.DateField(default=datetime.now)
permalink = models.CharField(max_length=255)

class Meta:
db_table = 'blogposts'


class HubPromo(amo.models.ModelBase):
VISIBILITY_CHOICES = (
(0, 'Nobody'),
Expand Down
2 changes: 2 additions & 0 deletions apps/devhub/templates/devhub/addons/dashboard.html
Expand Up @@ -81,6 +81,8 @@ <h3>
<p class="older-activity"><a href="{{ url('devhub.feed_all') }}">
{{ _('Older activity for My Add-ons') }} &#9658;</a></p>
</div>

{% include "devhub/includes/blog_posts.html" %}
</section>
{% endif %}
{% endblock %}
22 changes: 22 additions & 0 deletions apps/devhub/templates/devhub/includes/blog_posts.html
@@ -0,0 +1,22 @@
<div class="blog-posts">
<h3>
{{ _('Developer News') }}
<a title="{{ _('Subscribe to this feed') }}" class="subscribe-feed"
href="http://blog.mozilla.com/addons/feed/">
{{ _('Subscribe to this feed') }}</a>
</h3>
<ul>
{% for post in blog_posts %}
<li class="item">
<a href="{{ post.permalink }}" target="_new">
{{ post.title }}
</a>
<span class="activity-timestamp">
{{ post.date_posted|timesince }}
</span>
</li>
{% endfor %}
</ul>
<p class="older-activity"><a href="http://blog.mozilla.com/addons/">
{{ _('View the blog &#9658;') }}</a></p>
</div>
12 changes: 11 additions & 1 deletion apps/devhub/tests/test_models.py
Expand Up @@ -9,7 +9,7 @@
import amo
from addons.models import Addon, AddonUser
from bandwagon.models import Collection
from devhub.models import ActivityLog, AddonLog
from devhub.models import ActivityLog, AddonLog, BlogPost
from tags.models import Tag
from files.models import File
from reviews.models import Review
Expand Down Expand Up @@ -281,3 +281,13 @@ def test_total_last_month(self):
eq_(len(result), 1)
eq_(result[0]['approval_count'], 1)
eq_(result[0]['user'], self.user.pk)


class TestBlogPosts(test_utils.TestCase):

def test_blog_posts(self):
BlogPost.objects.create(title='hi')
bp = BlogPost.objects.all()
eq_(bp.count(), 1)
eq_(bp[0].title, "hi")

16 changes: 15 additions & 1 deletion apps/devhub/tests/test_views.py
Expand Up @@ -32,7 +32,7 @@
from addons.utils import ReverseNameLookup
from applications.models import Application, AppVersion
from devhub.forms import ContribForm
from devhub.models import ActivityLog, SubmitStep
from devhub.models import ActivityLog, BlogPost, SubmitStep
from files.models import File, FileUpload, Platform
from files.tests.test_models import UploadTest as BaseUploadTest
from reviews.models import Review
Expand Down Expand Up @@ -207,6 +207,20 @@ def test_incomplete_addon_item(self):
assert not doc('.item[data-addonid=%s] h4 a' % a_pk)
assert doc('.item[data-addonid=%s] > p' % a_pk)

def test_dev_news(self):
self.clone_addon(1) # We need one to see this module
for i in xrange(7):
bp = BlogPost(title='hi %s' % i,
date_posted=datetime.now() - timedelta(days=i))
bp.save()
r = self.client.get(self.url)
doc = pq(r.content)

eq_(doc('.blog-posts').length, 1)
eq_(doc('.blog-posts li').length, 5)
eq_(doc('.blog-posts li a').eq(0).text(), "hi 0")
eq_(doc('.blog-posts li a').eq(4).text(), "hi 4")


class TestUpdateCompatibility(test_utils.TestCase):
fixtures = ['base/apps', 'base/users', 'base/addon_4594_a9',
Expand Down
5 changes: 3 additions & 2 deletions apps/devhub/views.py
Expand Up @@ -38,7 +38,7 @@
from addons.decorators import addon_view
from addons.models import Addon, AddonUser
from addons.views import BaseFilter
from devhub.models import ActivityLog, RssKey, SubmitStep
from devhub.models import ActivityLog, BlogPost, RssKey, SubmitStep
from files.models import File, FileUpload
from files.utils import parse_addon
from translations.models import delete_translation
Expand Down Expand Up @@ -118,10 +118,11 @@ def index(request):
def dashboard(request):
addons, filter = addon_listing(request, addon_type=amo.ADDON_ANY)
addons = amo.utils.paginate(request, addons, per_page=10)
blog_posts = BlogPost.objects.order_by('-date_posted')[0:5]
data = dict(addons=addons, sorting=filter.field,
items=_get_items(None, request.amo_user.addons.all())[:4],
sort_opts=filter.opts, rss=_get_rss_feed(request),
timestamp=int(time.time()))
blog_posts=blog_posts, timestamp=int(time.time()))
return jingo.render(request, 'devhub/addons/dashboard.html', data)


Expand Down
4 changes: 3 additions & 1 deletion media/css/zamboni/developers.css
Expand Up @@ -805,11 +805,13 @@ a.more-actions:after:hover {
margin-bottom: 3em;
}

.secondary .recent-activity>ul>li {
.secondary .recent-activity>ul>li,
.secondary .blog-posts>ul>li {
color: #555;
line-height: 1.2em;
margin-bottom: 0.75em;
}
.secondary .blog-posts>ul>li a,
.secondary .recent-activity>ul>li a {
color: #333;
}
Expand Down
7 changes: 7 additions & 0 deletions migrations/201-add-pk-to-blogpost.sql
@@ -0,0 +1,7 @@
ALTER TABLE blogposts
ADD COLUMN id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST,
ADD COLUMN `modified` datetime NOT NULL default '0000-00-00 00:00:00',
ADD COLUMN `created` datetime NOT NULL default '0000-00-00 00:00:00';

UPDATE blogposts SET modified=date_posted, created=date_posted;

0 comments on commit 3fbdaa4

Please sign in to comment.