gremmie@1
|
1 """
|
gremmie@1
|
2 Contains models for the bio application.
|
gremmie@1
|
3 I would have picked profile for this application, but that is already taken, apparently.
|
gremmie@1
|
4 """
|
gremmie@1
|
5
|
gremmie@1
|
6 import os.path
|
gremmie@1
|
7
|
gremmie@1
|
8 from django.db import models
|
gremmie@1
|
9 from django.contrib import auth
|
gremmie@1
|
10 from django.conf import settings
|
gremmie@1
|
11 from django.template.loader import render_to_string
|
gremmie@1
|
12
|
gremmie@1
|
13
|
gremmie@1
|
14 def avatar_file_path_for_user(username, filename):
|
gremmie@1
|
15 return os.path.join(settings.AVATAR_DIR, 'users', username, filename)
|
gremmie@1
|
16
|
gremmie@1
|
17 def avatar_file_path(instance, filename):
|
gremmie@1
|
18 return avatar_file_path_for_user(instance.user.username, filename)
|
gremmie@1
|
19
|
gremmie@1
|
20
|
gremmie@1
|
21 class UserProfile(models.Model):
|
gremmie@1
|
22 """model to represent additional information about users"""
|
gremmie@1
|
23
|
gremmie@1
|
24 user = models.ForeignKey(auth.models.User, unique=True)
|
gremmie@1
|
25 location = models.CharField(max_length=128, blank=True)
|
gremmie@1
|
26 birthday = models.DateField(blank=True, null=True,
|
gremmie@1
|
27 help_text='Optional; the year is not shown to others')
|
gremmie@1
|
28 occupation = models.CharField(max_length=128, blank=True)
|
gremmie@1
|
29 interests = models.CharField(max_length=255, blank=True)
|
gremmie@1
|
30 profile_text = models.TextField(blank=True)
|
gremmie@1
|
31 profile_html = models.TextField(blank=True)
|
gremmie@1
|
32 hide_email = models.BooleanField(default=True)
|
gremmie@1
|
33 signature = models.TextField(blank=True)
|
gremmie@1
|
34 signature_html = models.TextField(blank=True)
|
gremmie@1
|
35 avatar = models.ImageField(upload_to=avatar_file_path, blank=True)
|
gremmie@1
|
36
|
gremmie@1
|
37 def __unicode__(self):
|
gremmie@1
|
38 return self.user.username
|
gremmie@1
|
39
|
gremmie@1
|
40 class Meta:
|
gremmie@1
|
41 ordering = ('user__username', )
|
gremmie@1
|
42
|
gremmie@1
|
43 def save(self, *args, **kwargs):
|
gremmie@1
|
44 html = render_to_string('bio/markdown.html', {'data': self.profile_text})
|
gremmie@1
|
45 self.profile_html = html.strip()
|
gremmie@1
|
46 html = render_to_string('bio/markdown.html', {'data': self.signature})
|
gremmie@1
|
47 self.signature_html = html.strip()
|
gremmie@1
|
48 super(UserProfile, self).save(*args, **kwargs)
|
gremmie@1
|
49
|