master
Nick Sergeant 2013-09-05 13:28:35 -04:00
parent 4f4f03880e
commit 21a825f10a
14 changed files with 155 additions and 133 deletions

0
jobs/__init__.py Normal file
View File

8
jobs/admin.py Normal file
View File

@ -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)

View File

@ -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']

View File

16
jobs/models.py Normal file
View File

@ -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

View File

@ -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 %}
<li><a href="/jobs/">Snipt Jobs</a></li>
{% endblock %}
{% block content %}
<section class="jobs">
<ul>
{% for job in jobs %}
<li>
<a href="{{ job.url }}" class="group">
<span class="left">
<span class="job">{{ job.title }}</span>
<span class="company">{{ job.company }}</span>
</span>
<span class="right">
<span class="location">{{ job.location }}</span>
</span>
</a>
</li>
{% endfor %}
</ul>
</section>
{% endblock %}

16
jobs/tests.py Normal file
View File

@ -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)

9
jobs/views.py Normal file
View File

@ -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')
}

View File

@ -103,6 +103,7 @@ INSTALLED_APPS = (
'accounts',
'blogs',
'jobs',
'snipts',
'utils',
)

View File

@ -112,6 +112,9 @@
</button>
</li>
{% endif %}
<li>
<a href="/jobs/" {% if '/jobs/' in request.path %} class="active"{% endif %}>Jobs</a>
</li>
</ul>
</nav>
{% if request.user.is_authenticated %}

View File

@ -35,6 +35,9 @@
<li>
<a href="/search/">Search</a>
</li>
<li>
<a href="/jobs/">Jobs</a>
</li>
{% if not request.user.is_authenticated %}
<li>
<a class="button" href="/login/">Log in</a>

View File

@ -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 %}
<li><a href="/jobs/">Snipt Jobs</a></li>
{% endblock %}
{% block content %}
<section class="jobs">
<h4>New (7)</h4>
<ul>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
</ul>
<h4>Past week (27)</h4>
<ul>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
<li>
<a href="#" class="group">
<span class="left">
<span class="job">Visual Designer</span>
<span class="company">Acto A/S</span>
</span>
<span class="right">
<span class="location">Dallas, TX, USA</span>
<span class="date">Oct 15, 2012</span>
</span>
</a>
</li>
</ul>
</section>
{% endblock %}

11
urls.py
View File

@ -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),

View File

@ -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)