diff options
author | bnewbold <bnewbold@robocracy.org> | 2011-04-21 00:03:52 -0400 |
---|---|---|
committer | bnewbold <bnewbold@robocracy.org> | 2011-04-21 01:17:22 -0400 |
commit | 17f2d1ab9b3344d1880a7f7e98c972b8c599976b (patch) | |
tree | 4d747f42b2aebd3be3c2d8ed4651a808a645fd4f /piccast/feeds | |
parent | 150fa6dce3ac024fd2cf27acfa595d30905f2ccf (diff) | |
download | piccast-17f2d1ab9b3344d1880a7f7e98c972b8c599976b.tar.gz piccast-17f2d1ab9b3344d1880a7f7e98c972b8c599976b.zip |
some basic progress on models etc
Diffstat (limited to 'piccast/feeds')
-rw-r--r-- | piccast/feeds/__init__.py | 0 | ||||
-rw-r--r-- | piccast/feeds/admin.py | 7 | ||||
-rw-r--r-- | piccast/feeds/models.py | 54 | ||||
-rw-r--r-- | piccast/feeds/tests.py | 23 | ||||
-rw-r--r-- | piccast/feeds/views.py | 35 |
5 files changed, 119 insertions, 0 deletions
diff --git a/piccast/feeds/__init__.py b/piccast/feeds/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/piccast/feeds/__init__.py diff --git a/piccast/feeds/admin.py b/piccast/feeds/admin.py new file mode 100644 index 0000000..b25f40d --- /dev/null +++ b/piccast/feeds/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from piccast.feeds.models import * + +admin.site.register(Category) +admin.site.register(PicFeed) +admin.site.register(PicSet) +admin.site.register(Pic) diff --git a/piccast/feeds/models.py b/piccast/feeds/models.py new file mode 100644 index 0000000..925bc87 --- /dev/null +++ b/piccast/feeds/models.py @@ -0,0 +1,54 @@ +from django.db import models + +class Category(models.Model): + #id + name = models.CharField(max_length=50); + + def __unicode__(self): + return self.name + +class PicFeed(models.Model): + #id + created = models.DateTimeField() + shortname = models.SlugField(blank=False) + source_url = models.URLField(blank=True) + rssfeed_url = models.URLField(blank=True) + title = models.CharField(max_length=80, blank=True) + description = models.TextField(blank=True) + image = models.ForeignKey('feeds.Pic', blank=True, null=True) + + def __unicode__(self): + return self.shortname + +class PicSet(models.Model): + #id + created = models.DateTimeField(null=True,blank=True) + source_url = models.URLField(blank=True) + title = models.CharField(max_length=128, blank=False) + description = models.TextField(blank=True) + keywords = models.CharField(max_length=256, blank=True) + image = models.ForeignKey('feeds.Pic', null=True,blank=True) + feed = models.ForeignKey('feeds.PicFeed', null=True,blank=False) + category = models.ForeignKey('feeds.Category', null=True,blank=True) + is_nsfw = models.BooleanField(default=False, blank=False); + + def __unicode__(self): + return self.title + +class Pic(models.Model): + #id + set = models.ForeignKey('feeds.PicSet', null=True,blank=True) + title = models.CharField(max_length=128, blank=False) + thumbnail_url = models.URLField(blank=True) + thumbnail_height = models.PositiveIntegerField(null=True,blank=True) + thumbnail_width = models.PositiveIntegerField(null=True,blank=True) + original_url = models.URLField(blank=False) + original_height = models.PositiveIntegerField(null=True,blank=True) + original_width = models.PositiveIntegerField(null=True,blank=True) + source_url = models.URLField(blank=True) + caption = models.TextField(blank=True) + is_nsfw = models.NullBooleanField(null=True, blank=True) + + def __unicode__(self): + return self.title + diff --git a/piccast/feeds/tests.py b/piccast/feeds/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/piccast/feeds/tests.py @@ -0,0 +1,23 @@ +""" +This file demonstrates two different styles of tests (one doctest and one +unittest). These will both pass when you run "manage.py test". + +Replace these 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.failUnlessEqual(1 + 1, 2) + +__test__ = {"doctest": """ +Another way to test that 1 + 1 is equal to 2. + +>>> 1 + 1 == 2 +True +"""} + diff --git a/piccast/feeds/views.py b/piccast/feeds/views.py new file mode 100644 index 0000000..4a80144 --- /dev/null +++ b/piccast/feeds/views.py @@ -0,0 +1,35 @@ +from django.http import HttpResponse +from django.core import serializers +from models import * + +JSONSerializer = serializers.get_serializer("json") + +def newest_feeds(request): + feeds = PicFeed.objects.order_by('-created')[:20] + json_serializer = JSONSerializer() + json_serializer.serialize(feeds) + return HttpResponse(json_serializer.getvalue(), mimetype="application/json") + +def sets_by_feed(request, req_feed): + # TODO: validate req_feed + sets = PicSet.objects.filter(feed=req_feed) + json_serializer = JSONSerializer() + json_serializer.serialize(sets) + return HttpResponse(json_serializer.getvalue(), mimetype="application/json") + +def sets_by_feedslug(request, req_feedslug): + # TODO: validate req_feedslug + feed = PicFeed.objects.filter(shortname=req_feedslug) + sets = PicSet.objects.filter(feed=feed) + json_serializer = JSONSerializer() + json_serializer.serialize(sets) + return HttpResponse(json_serializer.getvalue(), mimetype="application/json") + + +def pics_by_set(request, req_picset): + # TODO: validate req_picset + pics = Pic.objects.filter(set=req_picset) + json_serializer = JSONSerializer() + json_serializer.serialize(pics) + return HttpResponse(json_serializer.getvalue(), mimetype="application/json") + |