diff --git a/zephyr/models.py b/zephyr/models.py index ac570d7dc7..710d3ff271 100644 --- a/zephyr/models.py +++ b/zephyr/models.py @@ -2,17 +2,41 @@ from django.db import models from django.contrib.auth.models import User from django.db.models.signals import post_save +def get_display_recipient(recipient): + """ + recipient: an instance of Recipient. + + returns: an appropriate string describing the recipient (the class + name, for a class, or the username, for a user). + """ + if recipient.type == "class": + zephyr_class = ZephyrClass.objects.get(pk=recipient.user_or_class) + return zephyr_class.name + else: + user = User.objects.get(pk=recipient.user_or_class) + return user.username + class UserProfile(models.Model): user = models.OneToOneField(User) pointer = models.IntegerField() + def __repr__(self): + return "" % (self.user.username,) + class ZephyrClass(models.Model): name = models.CharField(max_length=30) + def __repr__(self): + return "" % (self.name,) + class Recipient(models.Model): user_or_class = models.IntegerField() type = models.CharField(max_length=30) + def __repr__(self): + display_recipient = get_display_recipient(self) + return "" % (display_recipient, self.user_or_class, self.type) + class Zephyr(models.Model): sender = models.ForeignKey(UserProfile) recipient = models.ForeignKey(Recipient) # personal or class @@ -20,6 +44,10 @@ class Zephyr(models.Model): content = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') + def __repr__(self): + display_recipient = get_display_recipient(self.recipient) + return "" % (display_recipient, self.instance, self.sender) + def create_user_profile(**kwargs): """When creating a new user, make a profile for him or her.""" u = kwargs["instance"] diff --git a/zephyr/views.py b/zephyr/views.py index 6902d0221d..0b162cf5e1 100644 --- a/zephyr/views.py +++ b/zephyr/views.py @@ -8,7 +8,7 @@ from django.shortcuts import render from django.utils.timezone import utc from django.contrib.auth.models import User -from zephyr.models import Zephyr, UserProfile, ZephyrClass, Recipient +from zephyr.models import Zephyr, UserProfile, ZephyrClass, Recipient, get_display_recipient from zephyr.forms import RegistrationForm import datetime @@ -42,12 +42,7 @@ def home(request): zephyrs = Zephyr.objects.all() for zephyr in zephyrs: - if zephyr.recipient.type == "class": - zephyr_class = ZephyrClass.objects.get(pk=zephyr.recipient.user_or_class) - zephyr.display_recipient = zephyr_class.name - else: - user = User.objects.get(pk=zephyr.recipient.user_or_class) - zephyr.display_recipient = user.username + zephyr.display_recipient = get_display_recipient(zephyr.recipient) user = request.user user_profile = UserProfile.objects.get(user=user) @@ -76,16 +71,9 @@ def get_updates(request): new_zephyrs = Zephyr.objects.filter(id__gt=last_received) new_zephyr_list = [] for zephyr in new_zephyrs: - if zephyr.recipient.type == "class": - zephyr_class = ZephyrClass.objects.get(pk=zephyr.recipient.user_or_class) - display_recipient = zephyr_class.name - else: - user = User.objects.get(pk=zephyr.recipient.user_or_class) - display_recipient = user.username - new_zephyr_list.append({"id": zephyr.id, "sender": zephyr.sender.user.username, - "display_recipient": display_recipient, + "display_recipient": get_display_recipient(zephyr.recipient), "instance": zephyr.instance, "content": zephyr.content })