aboutsummaryrefslogtreecommitdiffstats
path: root/piccast/feeds
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2011-04-21 00:03:52 -0400
committerbnewbold <bnewbold@robocracy.org>2011-04-21 01:17:22 -0400
commit17f2d1ab9b3344d1880a7f7e98c972b8c599976b (patch)
tree4d747f42b2aebd3be3c2d8ed4651a808a645fd4f /piccast/feeds
parent150fa6dce3ac024fd2cf27acfa595d30905f2ccf (diff)
downloadpiccast-17f2d1ab9b3344d1880a7f7e98c972b8c599976b.tar.gz
piccast-17f2d1ab9b3344d1880a7f7e98c972b8c599976b.zip
some basic progress on models etc
Diffstat (limited to 'piccast/feeds')
-rw-r--r--piccast/feeds/__init__.py0
-rw-r--r--piccast/feeds/admin.py7
-rw-r--r--piccast/feeds/models.py54
-rw-r--r--piccast/feeds/tests.py23
-rw-r--r--piccast/feeds/views.py35
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")
+