NewsBlur/apps/profile/models.py

43 lines
1.5 KiB
Python
Raw Normal View History

import datetime
2009-06-16 03:08:55 +00:00
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
2010-10-16 23:24:55 -04:00
from apps.reader.models import UserSubscription
2010-10-16 18:52:52 -04:00
from paypal.standard.ipn.signals import subscription_signup
2009-06-16 03:08:55 +00:00
class Profile(models.Model):
user = models.OneToOneField(User, unique=True, related_name="profile")
is_premium = models.BooleanField(default=False)
preferences = models.TextField(default="{}")
view_settings = models.TextField(default="{}")
collapsed_folders = models.TextField(default="[]")
last_seen_on = models.DateTimeField(default=datetime.datetime.now)
last_seen_ip = models.CharField(max_length=50, blank=True, null=True)
def __unicode__(self):
return "%s" % self.user
def activate_premium(self):
self.is_premium = True
self.save()
subs = UserSubscription.objects.filter(user=self.user)
for sub in subs:
sub.active = True
sub.save()
sub.feed.setup_feed_for_premium_subscribers()
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
else:
Profile.objects.get_or_create(user=instance)
2010-10-16 18:52:52 -04:00
post_save.connect(create_profile, sender=User)
def paypal_signup(sender, **kwargs):
ipn_obj = sender
user = User.objects.get(username=ipn_obj.custom)
user.profile.activate_premium()
2010-10-16 18:52:52 -04:00
subscription_signup.connect(paypal_signup)