Skip to content

Commit 63e58d4

Browse files
committed
Merge pull request #6 from proevo/features/sponsors
Features/sponsors
2 parents 5a51bbc + dd1389a commit 63e58d4

File tree

12 files changed

+153
-1
lines changed

12 files changed

+153
-1
lines changed

pydotorg/settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@
8787

8888
'boxes',
8989
'cms',
90-
'pages',
9190
'companies',
9291
'jobs',
92+
'pages',
93+
'sponsors',
9394
'successstories',
9495
)
9596

pydotorg/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
url(r'^jobs/', include('jobs.urls', namespace='jobs')),
3838
url(r'^box/', include('boxes.urls')),
39+
url(r'^sponsors/', include('sponsors.urls')),
3940
url(r'^success-stories/', include('successstories.urls')),
4041

4142
# admin

sponsors/__init__.py

Whitespace-only changes.

sponsors/admin.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from django.contrib import admin
2+
3+
from .models import Sponsor
4+
from cms.admin import ContentManageableModelAdmin
5+
6+
7+
class SponsorAdmin(ContentManageableModelAdmin):
8+
raw_id_fields = ['company']
9+
10+
def get_list_filter(self, request):
11+
fields = list(super().get_list_filter(request))
12+
return fields + ['is_published']
13+
14+
def get_list_display(self, request):
15+
fields = list(super().get_list_display(request))
16+
return fields + ['is_published']
17+
18+
admin.site.register(Sponsor, SponsorAdmin)

sponsors/managers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.db.models import Manager
2+
from django.db.models.query import QuerySet
3+
4+
5+
class SponsorQuerySet(QuerySet):
6+
def draft(self):
7+
return self.filter(is_published=False)
8+
9+
def published(self):
10+
return self.filter(is_published=True)
11+
12+
13+
class SponsorManager(Manager):
14+
def get_query_set(self):
15+
return SponsorQuerySet(self.model, using=self._db)
16+
17+
def draft(self):
18+
return self.get_query_set().draft()
19+
20+
def published(self):
21+
return self.get_query_set().published()

sponsors/models.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from django.conf import settings
2+
from django.db import models
3+
from markupfield.fields import MarkupField
4+
5+
from .managers import SponsorManager
6+
from cms.models import ContentManageable
7+
from companies.models import Company
8+
9+
10+
DEFAULT_MARKUP_TYPE = getattr(settings, 'DEFAULT_MARKUP_TYPE', 'restructuredtext')
11+
12+
13+
class Sponsor(ContentManageable):
14+
company = models.ForeignKey(Company)
15+
content = MarkupField(default_markup_type=DEFAULT_MARKUP_TYPE, blank=True)
16+
is_published = models.BooleanField(default=False)
17+
18+
objects = SponsorManager()
19+
20+
class Meta:
21+
verbose_name = 'sponsor'
22+
verbose_name_plural = 'sponsors'
23+
24+
def __str__(self):
25+
return self.company.name

sponsors/tests/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .test_models import *
2+
from .test_views import *
3+
from .. import admin # coverage FTW

sponsors/tests/test_models.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from django.test import TestCase
2+
3+
from ..models import Sponsor
4+
from companies.models import Company
5+
6+
7+
class SponsorModelTests(TestCase):
8+
def setUp(self):
9+
self.company1 = Company.objects.create(name='Python')
10+
11+
self.Sponsor1 = Sponsor.objects.create(
12+
company=self.company1,
13+
is_published=True)
14+
15+
self.company2 = Company.objects.create(name='Python Hidden')
16+
17+
self.Sponsor2 = Sponsor.objects.create(
18+
company=self.company2,
19+
is_published=False)
20+
21+
def test_draft(self):
22+
self.assertQuerysetEqual(Sponsor.objects.draft(), ['<Sponsor: Python Hidden>'])
23+
24+
def test_published(self):
25+
self.assertQuerysetEqual(Sponsor.objects.published(), ['<Sponsor: Python>'])

sponsors/tests/test_views.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from django.core.urlresolvers import reverse
2+
from django.test import TestCase
3+
4+
from ..models import Sponsor
5+
from companies.models import Company
6+
7+
8+
class SponsorViewTests(TestCase):
9+
urls = 'sponsors.urls'
10+
11+
def setUp(self):
12+
self.company1 = Company.objects.create(name='Python')
13+
14+
self.Sponsor1 = Sponsor.objects.create(
15+
company=self.company1,
16+
is_published=True)
17+
18+
self.company2 = Company.objects.create(name='Python Hidden')
19+
20+
self.Sponsor2 = Sponsor.objects.create(
21+
company=self.company2,
22+
is_published=False)
23+
24+
def test_sponsor_list(self):
25+
url = reverse('sponsor_list')
26+
r = self.client.get(url)
27+
self.assertEqual(r.status_code, 200)
28+
self.assertEqual(len(r.context['sponsors']), 1)

sponsors/urls.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from django.conf.urls import patterns, url
2+
3+
from . import views
4+
5+
6+
urlpatterns = patterns('',
7+
url(r'^$', views.SponsorList.as_view(), name='sponsor_list'),
8+
)

0 commit comments

Comments
 (0)