Mercurial > agora-palash
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="." >