From 21a825f10a27311ee39bd9ccaf485d8091755775 Mon Sep 17 00:00:00 2001 From: Nick Sergeant Date: Thu, 5 Sep 2013 13:28:35 -0400 Subject: [PATCH] Jobs. --- jobs/__init__.py | 0 jobs/admin.py | 8 +++ jobs/migrations/0001_initial.py | 42 ++++++++++++ jobs/migrations/__init__.py | 0 jobs/models.py | 16 +++++ jobs/templates/jobs/jobs.html | 31 +++++++++ jobs/tests.py | 16 +++++ jobs/views.py | 9 +++ settings.py | 1 + templates/base.html | 3 + templates/homepage.html | 3 + templates/jobs.html | 118 -------------------------------- urls.py | 11 +-- views.py | 30 +++++--- 14 files changed, 155 insertions(+), 133 deletions(-) create mode 100644 jobs/__init__.py create mode 100644 jobs/admin.py create mode 100644 jobs/migrations/0001_initial.py create mode 100644 jobs/migrations/__init__.py create mode 100644 jobs/models.py create mode 100644 jobs/templates/jobs/jobs.html create mode 100644 jobs/tests.py create mode 100644 jobs/views.py delete mode 100644 templates/jobs.html diff --git a/jobs/__init__.py b/jobs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jobs/admin.py b/jobs/admin.py new file mode 100644 index 0000000..270122b --- /dev/null +++ b/jobs/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin +from jobs.models import Job + + +class JobAdmin(admin.ModelAdmin): + list_display = ('title', 'company', 'location', 'url',) + +admin.site.register(Job, JobAdmin) diff --git a/jobs/migrations/0001_initial.py b/jobs/migrations/0001_initial.py new file mode 100644 index 0000000..90d310e --- /dev/null +++ b/jobs/migrations/0001_initial.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'Job' + db.create_table(u'jobs_job', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('company', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('location', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('url', self.gf('django.db.models.fields.CharField')(max_length=255)), + ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), + ('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)), + )) + db.send_create_signal(u'jobs', ['Job']) + + + def backwards(self, orm): + # Deleting model 'Job' + db.delete_table(u'jobs_job') + + + models = { + u'jobs.job': { + 'Meta': {'object_name': 'Job'}, + 'company': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'url': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + } + } + + complete_apps = ['jobs'] \ No newline at end of file diff --git a/jobs/migrations/__init__.py b/jobs/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jobs/models.py b/jobs/models.py new file mode 100644 index 0000000..8b156df --- /dev/null +++ b/jobs/models.py @@ -0,0 +1,16 @@ +from django.db import models + + +class Job(models.Model): + """An individual Job.""" + + title = models.CharField(max_length=255) + company = models.CharField(max_length=255) + location = models.CharField(max_length=255) + url = models.CharField(max_length=255) + + created = models.DateTimeField(auto_now_add=True, editable=False) + modified = models.DateTimeField(auto_now=True, editable=False) + + def __unicode__(self): + return self.title diff --git a/jobs/templates/jobs/jobs.html b/jobs/templates/jobs/jobs.html new file mode 100644 index 0000000..42b2f48 --- /dev/null +++ b/jobs/templates/jobs/jobs.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} + +{% load pagination_tags %} + +{% block page-title %}Snipt Jobs{% endblock %} + +{% block body-class %}{{ block.super }} static jobs{% endblock %} + +{% block breadcrumb %} +
  • Snipt Jobs
  • +{% endblock %} + +{% block content %} +
    + +
    +{% endblock %} diff --git a/jobs/tests.py b/jobs/tests.py new file mode 100644 index 0000000..501deb7 --- /dev/null +++ b/jobs/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/jobs/views.py b/jobs/views.py new file mode 100644 index 0000000..61a7b96 --- /dev/null +++ b/jobs/views.py @@ -0,0 +1,9 @@ +from annoying.decorators import render_to +from jobs.models import Job + + +@render_to('jobs/jobs.html') +def jobs(request): + return { + 'jobs': Job.objects.all().order_by('-created') + } diff --git a/settings.py b/settings.py index 15704c1..ace080a 100644 --- a/settings.py +++ b/settings.py @@ -103,6 +103,7 @@ INSTALLED_APPS = ( 'accounts', 'blogs', + 'jobs', 'snipts', 'utils', ) diff --git a/templates/base.html b/templates/base.html index 44aff86..6e8e535 100644 --- a/templates/base.html +++ b/templates/base.html @@ -112,6 +112,9 @@ {% endif %} +
  • + Jobs +
  • {% if request.user.is_authenticated %} diff --git a/templates/homepage.html b/templates/homepage.html index 5fadb0b..aee17a9 100644 --- a/templates/homepage.html +++ b/templates/homepage.html @@ -35,6 +35,9 @@
  • Search
  • +
  • + Jobs +
  • {% if not request.user.is_authenticated %}
  • Log in diff --git a/templates/jobs.html b/templates/jobs.html deleted file mode 100644 index dad3638..0000000 --- a/templates/jobs.html +++ /dev/null @@ -1,118 +0,0 @@ -{% extends "base.html" %} - -{% load pagination_tags %} - -{% block page-title %}Snipt Jobs{% endblock %} - -{% block body-class %}{{ block.super }} static jobs{% endblock %} - -{% block breadcrumb %} -
  • Snipt Jobs
  • -{% endblock %} - -{% block content %} -
    -

    New (7)

    - -

    Past week (27)

    - -
    -{% endblock %} diff --git a/urls.py b/urls.py index 2b5e90c..daba7c4 100644 --- a/urls.py +++ b/urls.py @@ -5,13 +5,15 @@ from django.views.generic import TemplateView from django.http import HttpResponseRedirect from django.contrib import admin from snipts.api import (PublicSniptResource, PublicTagResource, - PublicUserResource, PrivateSniptResource, - PrivateFavoriteResource, PrivateUserProfileResource, - PrivateTagResource, PrivateUserResource) + PublicUserResource, PrivateSniptResource, + PrivateFavoriteResource, PrivateUserProfileResource, + PrivateTagResource, PrivateUserResource) from snipts.views import search from tastypie.api import Api from utils.views import SniptRegistrationView -from views import (homepage, lexers, login_redirect, pro_signup, sitemap, tags, pro_signup_complete) +from jobs.views import jobs +from views import (homepage, lexers, login_redirect, pro_signup, sitemap, tags, + pro_signup_complete) import admin as custom_admin import os @@ -45,6 +47,7 @@ urlpatterns = patterns('', url(r'^humans.txt$', TemplateView.as_view(template_name='humans.txt')), url(r'^sitemap.xml$', sitemap), url(r'^tags/$', tags), + url(r'^jobs/$', jobs), url(r'^pro/$', TemplateView.as_view(template_name='pro.html')), url(r'^pro/signup/$', pro_signup), diff --git a/views.py b/views.py index 836edab..bc6ffe9 100644 --- a/views.py +++ b/views.py @@ -11,10 +11,12 @@ from django.db.models import Count from snipts.models import Snipt from taggit.models import Tag -import hashlib, stripe +import hashlib +import stripe from settings_local import STRIPE_SECRET_KEY + @render_to('homepage.html') def homepage(request): @@ -28,7 +30,8 @@ def homepage(request): ).order_by('?') for user in users_with_gravatars: - public_snipts_count = Snipt.objects.filter(user=user, public=True).values('pk').count() + public_snipts_count = Snipt.objects.filter( + user=user, public=True).values('pk').count() if public_snipts_count: user.email_md5 = hashlib.md5(user.email.lower()).hexdigest() @@ -43,6 +46,7 @@ def homepage(request): 'users_count': User.objects.all().count(), } + @ajax_request def lexers(request): lexers = get_lexers_list() @@ -69,12 +73,14 @@ def lexers(request): return {'objects': objects} + def login_redirect(request): if request.user.is_authenticated(): return HttpResponseRedirect('/' + request.user.username + '/') else: return HttpResponseRedirect('/') + @login_required @render_to('pro-signup.html') def pro_signup(request): @@ -82,6 +88,7 @@ def pro_signup(request): return HttpResponseRedirect('/' + request.user.username + '/') return {} + @login_required @render_to('pro-signup-complete.html') def pro_signup_complete(request): @@ -93,11 +100,9 @@ def pro_signup_complete(request): plan = 'snipt-pro-monthly' - customer = stripe.Customer.create( - card = token, - plan = plan, - email = request.user.email - ) + customer = stripe.Customer.create(card=token, + plan=plan, + email=request.user.email) profile = request.user.profile profile.is_pro = True @@ -109,6 +114,7 @@ def pro_signup_complete(request): else: return HttpResponseBadRequest() + def sitemap(request): tags = Tag.objects.filter(snipt__public=True) @@ -116,9 +122,10 @@ def sitemap(request): tags = tags.order_by('-count')[:1000] return render_to_response('sitemap.xml', - {'tags': tags}, - context_instance=RequestContext(request), - mimetype='application/xml') + {'tags': tags}, + context_instance=RequestContext(request), + mimetype='application/xml') + @render_to('tags.html') def tags(request): @@ -127,7 +134,8 @@ def tags(request): all_tags = all_tags.annotate(count=Count('taggit_taggeditem_items__id')) popular_tags = Tag.objects.filter(snipt__public=True) - popular_tags = popular_tags.annotate(count=Count('taggit_taggeditem_items__id')) + popular_tags = popular_tags.annotate( + count=Count('taggit_taggeditem_items__id')) popular_tags = popular_tags.order_by('-count')[:20] popular_tags = sorted(popular_tags, key=lambda tag: tag.name)