diff gpp/bio/models.py @ 1:dbd703f7d63a

Initial import of sg101 stuff from private repository.
author gremmie
date Mon, 06 Apr 2009 02:43:12 +0000
parents
children 5eed5e7c1c98
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/bio/models.py	Mon Apr 06 02:43:12 2009 +0000
@@ -0,0 +1,58 @@
+"""
+Contains models for the bio application.
+I would have picked profile for this application, but that is already taken, apparently.
+"""
+
+import os.path
+
+from django.db import models
+from django.contrib import auth
+from django.conf import settings
+from django.template.loader import render_to_string
+
+
+def avatar_file_path_for_user(username, filename):
+    return os.path.join(settings.AVATAR_DIR, 'users', username, filename)
+
+def avatar_file_path(instance, filename):
+    return avatar_file_path_for_user(instance.user.username, filename)
+
+
+class UserProfile(models.Model):
+    """model to represent additional information about users"""
+
+    user = models.ForeignKey(auth.models.User, unique=True)
+    location = models.CharField(max_length=128, blank=True)
+    birthday = models.DateField(blank=True, null=True,
+            help_text='Optional; the year is not shown to others')
+    occupation = models.CharField(max_length=128, blank=True)
+    interests = models.CharField(max_length=255, blank=True)
+    website_1 = models.URLField(verify_exists=False, blank=True)
+    website_2 = models.URLField(verify_exists=False, blank=True)
+    website_3 = models.URLField(verify_exists=False, blank=True)
+    profile_text = models.TextField(blank=True)
+    profile_html = models.TextField(blank=True)
+    hide_email = models.BooleanField(default=True)
+    icq = models.CharField('ICQ', max_length=15, blank=True)
+    aim = models.CharField('AIM', max_length=18, blank=True)
+    yim = models.CharField('YIM', max_length=25, blank=True)
+    msnm = models.CharField('MSN', max_length=25, blank=True)
+    twitter = models.CharField(max_length=64, blank=True)
+    signature = models.TextField(blank=True)
+    signature_html = models.TextField(blank=True)
+    avatar = models.ImageField(upload_to=avatar_file_path, blank=True)
+
+    def __unicode__(self):
+        return self.user.username
+
+    class Meta:
+        ordering = ('user__username', )
+
+    def save(self, *args, **kwargs):
+        html = render_to_string('bio/markdown.html', {'data': self.profile_text})
+        self.profile_html = html.strip()
+        html = render_to_string('bio/markdown.html', {'data': self.signature})
+        self.signature_html = html.strip()
+        super(UserProfile, self).save(*args, **kwargs)
+
+# vim: ts=4 sw=4