changeset 29:6ba969517b9c

Implement initial profiles, cleanup models, change Free_license to FreeLicense
author Jordi Gutiérrez Hermoso <jordigh@gmail.com>
date Wed, 30 Jun 2010 00:04:34 -0500
parents 9f17312f3914
children f14aaa98306a
files apps/bundle/models.py apps/free_license/admin.py apps/free_license/models.py apps/profile/__init__.py apps/profile/models.py apps/profile/tests.py apps/profile/views.py apps/snippet/models.py templates/user.djhtml templates/whitebox.djhtml urls.py
diffstat 10 files changed, 90 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/apps/bundle/models.py	Tue Jun 29 14:58:36 2010 -0500
+++ b/apps/bundle/models.py	Wed Jun 30 00:04:34 2010 -0500
@@ -1,12 +1,13 @@
 from django.db import models
 from django.contrib.auth.models import User
-from agora.apps.free_license.models import Free_license
+from agora.apps.free_license.models import FreeLicense
+from agora.apps.snippet.models import CodeLanguage
 
 class Bundle(models.Model):
     name = models.CharField(max_length=256)
     uploader = models.ForeignKey(User)
-    description = models.TextField()
-    free_license = models.ForeignKey(Free_license)
+    description = models.TextField(max_length=32728)
+    free_license = models.ForeignKey(FreeLicense)
     pub_date = models.DateTimeField('date uploaded')
     mod_date = models.DateTimeField('date last modified')
 
@@ -26,4 +27,4 @@
 
 class CodeFile(BundleFile):
     code = models.TextField()
-    language = models.CharField(max_length=50)
+    language = models.ForeignKey(CodeLanguage)
--- a/apps/free_license/admin.py	Tue Jun 29 14:58:36 2010 -0500
+++ b/apps/free_license/admin.py	Wed Jun 30 00:04:34 2010 -0500
@@ -1,4 +1,4 @@
 from agora.apps.free_license.models import *
 from django.contrib import admin
 
-admin.site.register(Free_license)
+admin.site.register(FreeLicense)
--- a/apps/free_license/models.py	Tue Jun 29 14:58:36 2010 -0500
+++ b/apps/free_license/models.py	Wed Jun 30 00:04:34 2010 -0500
@@ -1,6 +1,6 @@
 from django.db import models
 
-class Free_license(models.Model):
+class FreeLicense(models.Model):
     name = models.CharField(max_length=256)
     description = models.TextField()
     text = models.TextField()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apps/profile/models.py	Wed Jun 30 00:04:34 2010 -0500
@@ -0,0 +1,12 @@
+from django.db import models
+from django.contrib.auth.models import User
+from agora.apps.free_license.models import FreeLicense
+
+class Profile(models.Model):
+    user = models.OneToOneField(User)
+    preferred_license = models.ForeignKey(FreeLicense)
+    interests = models.CharField(max_length=512)
+    blurb = models.TextField(max_length=16384)
+
+    def __unicode__(self):
+        return self.user.username
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apps/profile/tests.py	Wed Jun 30 00:04:34 2010 -0500
@@ -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
+"""}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apps/profile/views.py	Wed Jun 30 00:04:34 2010 -0500
@@ -0,0 +1,31 @@
+from django.shortcuts import render_to_response, get_object_or_404
+from agora.apps.profile.models import *
+from django.contrib.auth.models import User
+from django.http import Http404
+from agora.apps.free_license.models import FreeLicense
+from agora.apps.bundle.models import Bundle
+from agora.apps.snippet.models import Snippet
+
+def showprofile(request, user):
+    u = get_object_or_404(User, username=user)
+
+    #Inactive users "don't exist"
+    if not u.is_active:
+        raise Http404
+
+    try:
+        p = u.get_profile()
+    #Create a default profile if none exists
+    except Profile.DoesNotExist:
+        #At least one FreeLicense *must* exist.
+        p = Profile(user=u, preferred_license=FreeLicense.objects.get(id=1))
+        p.save()
+
+    b = Bundle.objects.filter(uploader=u)
+    s = Snippet.objects.filter(uploader=u)
+
+    return render_to_response('user.djhtml', {'user' : u,
+                                              'profile' : p,
+                                              'bundles' : b,
+                                              'snippets' :s,
+                                              })
--- a/apps/snippet/models.py	Tue Jun 29 14:58:36 2010 -0500
+++ b/apps/snippet/models.py	Wed Jun 30 00:04:34 2010 -0500
@@ -3,6 +3,11 @@
 
 class Snippet(models.Model):
     code = models.TextField(max_length=32768)
+    name = models.CharField(max_length=256)
+    description = models.TextField(max_length=1024)
     uploader = models.ForeignKey(User)
     pub_date = models.DateTimeField('date uploaded')
     mod_date = models.DateTimeField('date last modified')
+
+class CodeLanguage(models.Model):
+    name = models.CharField(max_length=64)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/user.djhtml	Wed Jun 30 00:04:34 2010 -0500
@@ -0,0 +1,9 @@
+{% extends "whitebox.djhtml" %}
+{% block boxtitle %}
+{{user.username}}
+{% endblock %}
+{% block boxcontents %}
+{{profile.preferred_license}} <br/>
+{{bundles}} <br/>
+{{snippets}} <br/>
+{% endblock %}
--- a/templates/whitebox.djhtml	Tue Jun 29 14:58:36 2010 -0500
+++ b/templates/whitebox.djhtml	Wed Jun 30 00:04:34 2010 -0500
@@ -27,7 +27,7 @@
     </p>
     {% else %}
     <p>
-      <a href="{% url auth_login%}?next={{ request.path }}">Log in</a>
+      <a href="{% url auth_login %}?next={{ request.path }}">Log in</a>
     </p>
     {% endif %}
     <form method="get" action="." >
--- a/urls.py	Tue Jun 29 14:58:36 2010 -0500
+++ b/urls.py	Wed Jun 30 00:04:34 2010 -0500
@@ -18,6 +18,8 @@
 
      (r'^accounts/', include('registration.urls')),
 
+     (r'^(?P<user>[\w|_]*)/$', 'agora.apps.profile.views.showprofile'),
+
      (r'^', include('agora.apps.bundle.urls')),
 
 )