コード例 #1
0
ファイル: models.py プロジェクト: polymathdev/polymath
    profile.save()

    # send quick+dirty welcome email
    message = 'Hey ' + user.first_name + ',\n\nWelcome to Polymath!\n\n'
    message += 'We\'re working on building a central resource for the web\'s best educational content and the ultimate community-based online learning experience.\n\n'
    message += 'Learn more here: http://beta.whatispolymath.com/howitworks/\n\n'
    message += 'Looking forward to seeing you out there!\n\n'
    message += 'Thanks,\nThe Polymath Team'

    send_mail('Welcome to Polymath!', message, 'Polymath <*****@*****.**>', [user.email])

    return False


socialauth_registered.connect(new_users_handler, sender=None)


class CourseCategory(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(editable=False, unique=True)
    
    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(CourseCategory, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name


class Course(models.Model):
コード例 #2
0
                                  or '',
                                  website=response.get('url') or '')
    if response.get('profile_image_url'):
        try:
            cf = ContentFile(
                urllib.urlopen(response['profile_image_url']).read())
        except Exception:
            pass
        else:
            cf.name = response['profile_image_url']
            profile.logo = cf

    profile.save()


socialauth_registered.connect(twitter_profile_data, sender=TwitterBackend)


def facebook_profile_data(sender, user, response, details, **kwargs):
    get_profile_model().objects.create(user=user,
                                       location=response.get('location') or '',
                                       description=response.get('about_me')
                                       or '',
                                       website=response.get('url') or '')


socialauth_registered.connect(facebook_profile_data, sender=FacebookBackend)


### On creating a new user, if the user has an email address
### XXX If you make changes to the way users are auto-created on video import,
コード例 #3
0
ファイル: models.py プロジェクト: alfredo/scampcat.com
    u'friends_count': 0, 
    u'location': None, 
    u'profile_link_color': u'0084B4', 
    u'profile_image_url': u'http://a1.twimg.com/sticky/default_profile_images/default_profile_2_normal.png', 
    u'following': False, 
    u'show_all_inline_media': False, 
    u'geo_enabled': False, 
    u'profile_background_image_url': u'http://a0.twimg.com/images/themes/theme1/bg.png', 
    u'name': u'Scamp Cat', 
    u'lang': u'en', 
    u'profile_background_tile': False, 
    u'favourites_count': 0, 
    u'screen_name': u'ScampCatApp', 
    u'notifications': False, 
    u'url': None, 
    u'created_at': u'Thu Jul 07 08:02:46 +0000 2011', 
    u'contributors_enabled': False, 
    u'time_zone': None, 
    'access_token': 'oauth_token_secret=Kqtl23h3KZuBEcvg4EGReVxJLtqB0fAoZpO37QzeE&oauth_token=330856703-cWwysmOmdlQG6EgtnuRWUvmKcmJpeENnrFzh1sVQ', 
    u'profile_sidebar_border_color': u'C0DEED', 
    u'default_profile': True, 
    u'is_translator': False}
    """
    data = {'user': user,
            'avatar_url': response['profile_image_url'],
            'twitter_id': response['screen_name']}
    UserProfile.objects.create(**data)
    return False

socialauth_registered.connect(profile_creator, sender=None)
コード例 #4
0
ファイル: models.py プロジェクト: pdc/kanbo
        # ('blog_url', 'blog_url'),
        # ('github_url', 'html_url'),
        # ('location': 'location'),
        ]
    ]
    return True

def on_twitter_pre_update(sender, user, response, details, **kwargs):
    #logger.debug('on_twitter_pre_update signal')
    user.extras = [
        ( 'nick', response.get('screen_name')),
        ( 'image_url', response.get('profile_image_url')),
        ##( 'created_at', datetime.strftime('%a %b %d %H:%M:%S %z %Y', response.get('created_at'))),
    ]
    return True

def on_pre_update(sender, user, response, details, **kwargs):
    logger.debug('on_pre_update signal')
    logger.debug(response)
    return True

def on_socialauth_registration(sender, user, response, details, **kwargs):
    logger.debug('on_socialauth_registration signal')
    user.is_new = True
    return False

pre_update.connect(on_twitter_pre_update, sender=TwitterBackend)
pre_update.connect(on_github_pre_update, sender=GithubBackend)
pre_update.connect(on_pre_update, sender=None)
socialauth_registered.connect(on_socialauth_registration, sender=None)
コード例 #5
0
ファイル: models.py プロジェクト: nicolindemann/swb12

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)
        # country = Country.objects.get_or_create(name=)
        # 

post_save.connect(create_user_profile, sender=User)


def fill_user_profile(sender, user, response, details, **kwargs):
    profile = user.get_profile()
    try:
        country = Country.objects.get_or_create(code=response['location']['country']['code'])
        profile.country = country
    except:
        pass
    try:
        city = City.objects.get_or_create(name=response['location']['name'])
        profile.city = city
    except:
        pass
    profile.save()
    if 'skills' in response and 'skill' in response['skills']:
        for sk in response['skills']['skill']:
            skill, was_created = Skill.objects.get_or_create(name=sk['skill']['name'])
            profile.skills_offered.add(skill)

socialauth_registered.connect(fill_user_profile)
コード例 #6
0
ファイル: models.py プロジェクト: sameenjalal/mavenize
    #        if sender == FacebookBackend:
    #            url = "http://graph.facebook.com/%s/picture" % response["id"]
    #        
    #        if url:
    #            small_picture = urlopen(url, timeout=5)
    #            large_picture = urlopen(url+'?type=large', timeout=5)
    #            profile = UserProfile.objects.create(user=user)
    #            profile.picture_small.save(
    #                slugify(user_id)+u'.jpg',
    #                ContentFile(small_picture.read())
    #            )
    #            profile.picture_large.save(
    #                slugify(user_id)+u'_large.jpg',
    #                ContentFile(large_picture.read()),
    #            )
    #    except HttpError:
    #        pass

    # Create following and follower relationships
    signed_up = UserSocialAuth.objects.filter(uid__in=friend_ids).values_list(
        'user_id',flat=True)
    for friend in signed_up:
        Following.objects.get_or_create(fb_user=user_id, follow=friend)
        Following.objects.get_or_create(fb_user=friend, follow=user_id)
        Follower.objects.get_or_create(fb_user=user_id, follow=friend)
        Follower.objects.get_or_create(fb_user=friend, follow=user_id)

    return False

socialauth_registered.connect(new_user_handler, sender=None)
コード例 #7
0
ファイル: models.py プロジェクト: mo-mughrabi/garage
        user_profile = Profile.objects.create(user=instance)


def social_auth_new_users_handler(sender, user, response, details, **kwargs):
    """
    social_auth_new_users_handler: is a signal that fires when a new user signs up using
    social authentication. Currently it would do the following

        1. send out an email for the user congratulating him for signing up

    """
    html = get_template('accounts/email_template/social_auth_new_users.html')
    txt = get_template('accounts/email_template/social_auth_new_users.txt')
    c = Context({
        'user': user.first_name,
    })
    Notification.objects.send_email(
        send_to=user.email,
        subject=_('Welcome to Garage'),
        html_body=html.render(c),
        text_body=txt.render(c)
    )

    return False


socialauth_registered.connect(social_auth_new_users_handler, sender=None,
                              dispatch_uid="accounts.social_auth_new_users_handler")
post_save.connect(create_user_profile, sender=User,
                  dispatch_uid="accounts.create.user.profile")
コード例 #8
0
ファイル: models.py プロジェクト: MechanisM/django-manifest
        message = render_to_string('accounts/emails/activation_email_message.txt',
                                   context)
        send_mail(subject,
                  message,
                  settings.DEFAULT_FROM_EMAIL,
                  [self.user.email,])


if 'social_auth' in settings.INSTALLED_APPS:
    from social_auth.signals import socialauth_registered

    def create_user_account(sender, user, *args, **kwargs):
        account = Account.objects.create_account(user=user)
        user = Account.objects.activate_user(user.username, account.activation_key)
        
    socialauth_registered.connect(create_user_account, sender=None)

"""
User profile base class

"""
def upload_to_picture(instance, filename):
    """
    Uploads a picture for a user to the ``ACCOUNTS_GRAVATAR_PATH`` and saving it
    under unique hash for the image. This is for privacy reasons so others
    can't just browse through the picture directory.

    """
    extension = filename.split('.')[-1].lower()
    salt, hash = generate_sha1(instance.id)
    return '%(path)s/%(hash)s.%(extension)s' % {'path': getattr(accounts_settings, 
コード例 #9
0
ファイル: models.py プロジェクト: nranga/django-socialprofile
    user.last_name = response.get('last_name', '')
    user.first_name = response.get('first_name', '')
    profile = user.social_profile
    profile.gender = response.get('gender', '')
    if response.get('username') is not None:
        profile.image_url = 'https://graph.facebook.com/' + response.get('username') + '/picture'
        profile.url = 'http://facebook.com/' + response.get('username')
    profile.url = response.get('link', '')
    if response.get('hometown') is not None:
        profile.description = response.get('hometown').get('name')

    profile.save()

    return True

socialauth_registered.connect(facebook_extra_values, sender=FacebookBackend)

def google_extra_values(sender, user, response, details, **kwargs):
    """Populates a UserProfile Object when a new User is created via Google Auth"""
    LOGGER.debug('socialprofile.models.google_extra_values')
    user_info_url = "https://www.googleapis.com/oauth2/v1/userinfo"

    data = {'access_token': response.get('access_token', ''), 'alt': 'json'}
    params = urlencode(data)
    try:
        request = Request(user_info_url + '?' + params, headers={'Authorization': params})
        result = simplejson.loads(urlopen(request).read())

        user.last_name = result.get('family_name', '')
        user.first_name = result.get('given_name', '')
        profile = user.social_profile
コード例 #10
0
    value = models.IntegerField()


# Add some stuff to the admin interface.
admin.site.register(RegisLeague)
admin.site.register(RegisUser)
admin.site.register(QuestionTemplate)
admin.site.register(Question)
admin.site.register(QuestionHint)
admin.site.register(Answer)
admin.site.register(Guess)
admin.site.register(Suggestion)

# Social auth handlers.
from social_auth.signals import socialauth_registered
#from social_auth.backends.google import GoogleBackend
from social_auth.backends.facebook import FacebookBackend

#def google_extra_values(sender, user, response, details, **kwargs):
#    return True


# TODO: This currently doesn't work.  Not a big deal for us but would be nice to fix.
def facebook_extra_values(sender, user, response, details, **kwargs):
    user.email = response.get('email')
    return True


#socialauth_registered.connect(google_extra_values, sender=GoogleBackend)
socialauth_registered.connect(facebook_extra_values, sender=FacebookBackend)
コード例 #11
0
ファイル: models.py プロジェクト: harshulj/doxa
		return self.name

	def get_absolute_url(self):
		return (APP_NAME+"_user_profile", (), { 'username':self.user.username})
	get_absolute_url = models.permalink(get_absolute_url)

class ProfilePic(models.Model):
	"""
		Model for a users profile pic.
	"""
	image = ThumbnailerImageField(upload_to='profilepic/%Y/%b/%d', blank=True)
	user = models.OneToOneField(User, related_name="profile_pic")
	valid = models.BooleanField(default=True)

	class Meta:
		unique_together = (('user', 'valid'),)

	def __unicode__(self):
		return _("%s %s's Profile Pic") % (self.user.first_name , self.user.last_name)


from registration.signals import user_activated
from social_auth.signals import socialauth_registered

def create_userprofile(sender, user, request, **kwargs):
	profile = UserProfile.objects.create(user=user)
	profile_pic = ProfilePic.objects.create(user=user)

user_activated.connect(create_userprofile)
socialauth_registered.connect(create_userprofile)
コード例 #12
0
            extra_user.delete()
            social_user.user = user
            social_user.save()
        user = social_user.user
        if user.secret_key:
            if user.email_term is None: # test email has not been sent
                send_test_email(user, request.build_absolute_uri)
            elif user.email_term < datetime.date.today(): # no repsonse after 7 days
                user.delete()
                return {'social_user':None, 'user':None}
        return {'social_user': social_user, 'user':user}

def on_new_user(sender, user, response, details, **kwargs):
    user.is_active = False
    user.is_new = True
    user.first_name = details.get('first_name')
    user.last_name = details.get('last_name')
    user.email = details.get('email')
    return True  # necessary user.save()

def on_user_change(sender, user, response, details, **kwargs):
    for so in UserSocialAuth.objects.filter(user=user, provider='twitter'):
        user.tw = so.provider + so.uid + repr(so.extra_data)
    for so in UserSocialAuth.objects.filter(user=user, provider='facebook'):
        user.fb = so.provider + so.uid + repr(so.extra_data)
    return True  # necessary user.save()

from social_auth.signals import socialauth_registered, pre_update
socialauth_registered.connect(on_new_user)
pre_update.connect(on_user_change)
コード例 #13
0
ファイル: models.py プロジェクト: MechanisM/django-manifest
def update_profile(sender, user, response, *args, **kwargs):
    try:
        profile = user.get_profile()
        profile.copy_facebook(response)
        facebook = Graph(user)    
        if 'friends' in settings.MANIFEST_FACEBOOK_SYNC:
            friends = profile.copy_friends(facebook.get('friends'))
        if 'likes' in settings.MANIFEST_FACEBOOK_SYNC:
            likes = profile.copy_likes(facebook.get('likes'))
    except:
        pass
    
def register_profile(sender, user, response, *args, **kwargs):
    try:
        try:
            profile = user.get_profile()
        except:
            create_user_account(user)
            profile = user.get_profile()
        profile.copy_facebook(response)    
        facebook = Graph(user)    
        if settings.MANIFEST_FACEBOOK_FRIENDS:
            friends = profile.copy_friends(facebook.get('friends'))
        if settings.MANIFEST_FACEBOOK_LIKES:
            likes = profile.copy_likes(facebook.get('likes'))
    except:
        pass
    
pre_update.connect(update_profile, sender=FacebookBackend)
socialauth_registered.connect(register_profile, sender=FacebookBackend)
コード例 #14
0
ファイル: models.py プロジェクト: jelukas/greenphant
        from urllib2 import urlopen, HTTPError
        from django.template.defaultfilters import slugify
        from django.core.files.base import ContentFile

        try:
            url = None
            if sender == FacebookBackend:
                url = "http://graph.facebook.com/%s/picture?type=large"\
                      % response["id"]
            elif sender == google.GoogleOAuth2Backend and "picture" in response:
                url = response["picture"]
            elif sender == TwitterBackend:
                url = response["profile_image_url"]

            if url:
                profile = user.get_profile()
                if not profile.image:
                    avatar = urlopen(url)
                    profile.image.save(slugify(user.username + " social") + '.jpg',
                        ContentFile(avatar.read()))
                    profile.save()

        except HTTPError:
            pass

        result = True

    return result

socialauth_registered.connect(social_extra_values, sender=None)
pre_update.connect(social_extra_values, sender=None)
コード例 #15
0
    user.last_name = response.get('last_name', '')
    user.first_name = response.get('first_name', '')
    profile = user.social_profile
    profile.gender = response.get('gender', '')
    if response.get('username') is not None:
        profile.image_url = 'https://graph.facebook.com/' + response.get('username') + '/picture'
        profile.url = 'http://facebook.com/' + response.get('username')
    profile.url = response.get('link', '')
    if response.get('hometown') is not None:
        profile.description = response.get('hometown').get('name')

    profile.save()

    return True

socialauth_registered.connect(facebook_extra_values, sender=FacebookBackend)

def google_extra_values(sender, user, response, details, **kwargs):
    """Populates a UserProfile Object when a new User is created via Google Auth"""
    LOGGER.debug('socialprofile.models.google_extra_values')
    user_info_url = "https://www.googleapis.com/oauth2/v1/userinfo"

    data = {'access_token': response.get('access_token', ''), 'alt': 'json'}
    params = urlencode(data)
    try:
        request = Request(user_info_url + '?' + params, headers={'Authorization': params})
        result = simplejson.loads(urlopen(request).read())

        user.last_name = result.get('family_name', '')
        user.first_name = result.get('given_name', '')
        profile = user.social_profile
コード例 #16
0
ファイル: models.py プロジェクト: vencax/django-org-member
    class Meta:
        verbose_name = _('fees payment')
        verbose_name_plural = _('fees payments')
        
    user = models.ForeignKey(OrgMember)
    year = models.IntegerField(_('year'), choices=YEAR_CHOICES, default=2012)

# ------------- facility for checking if there is already member user -----
# This can happen when we have already database of organization members
# without social-auth associations.
try:
    from social_auth.signals import socialauth_registered, pre_update
    from existing_member_checker import check_if_memberuser_already_exists, \
        google_extra_values
    
    socialauth_registered.connect(check_if_memberuser_already_exists, 
                                  sender=None)
    
    pre_update.connect(google_extra_values, sender=GoogleBackend)
except ImportError:
    pass


if not hasattr(settings, 'ORG_MEMBER_DEFAULT_MEMBER_GROUP'):
    raise ImproperlyConfigured('You must define ORG_MEMBER_DEFAULT_MEMBER_GROUP in your settings')
if not hasattr(settings, 'ORG_MEMBER_ACCOUNT_NUMBER'):
    raise ImproperlyConfigured('You must define ORG_MEMBER_ACCOUNT_NUMBER in your settings')
if not hasattr(settings, 'ORG_MEMBER_FEES'):
    raise ImproperlyConfigured('You must define ORG_MEMBER_FEES in your settings')
elif not isinstance(settings.ORG_MEMBER_FEES, dict):
    raise ImproperlyConfigured('ORG_MEMBER_FEES settings variable must be dictionary')
コード例 #17
0
                                  location=response.get('location') or '',
                                  description=response.get('description') or '',
                                  website=response.get('url') or '')
    if response.get('profile_image_url'):
        try:
            cf = ContentFile(urllib.urlopen(response['profile_image_url']).read())
        except Exception:
            pass
        else:
            cf.name = response['profile_image_url']
            profile.logo = cf

    profile.save()


socialauth_registered.connect(twitter_profile_data, sender=TwitterBackend)


def facebook_profile_data(sender, user, response, details, **kwargs):
    get_profile_model().objects.create(
        user=user,
        location=response.get('location') or '',
        description=response.get('about_me') or '',
        website=response.get('url') or '')


socialauth_registered.connect(facebook_profile_data, sender=FacebookBackend)


### On creating a new user, if the user has an email address
### XXX If you make changes to the way users are auto-created on video import,
コード例 #18
0
class Brewer(AbstractUser):
    """ New in Dj 1.5: https://docs.djangoproject.com/en/dev/topics/auth/#auth-custom-user """
    objects = BrewerManager()

    ### profile
    #proficiencies = [('newbie', 'First Timer'),
    #        ('novice', 'Novice'),
    #            ('intermediate', 'Intermediate'),
    #               ('expert', 'Expert'),
    #              ('brewmaster', 'Brewmaster'),
    #        ]
    #bio = models.TextField(null=False, blank=True)
    #age = models.IntegerField(null=False, blank=True, default=21)
    birthday = models.DateField(null=True)
    age = models.IntegerField(null=True)
    #proficiency = models.CharField(blank=False, null=False, choices=proficiencies, max_length=50)

    # quasi- permissions
    show_facebook = models.BooleanField(default=False)
    show_email = models.BooleanField(default=False)

    # signal handlers related to this model
    def _facebook_extra_values(sender, user, response, details, **kwargs):
        birthday = response.get('birthday')  # response.get('birthday')
        user.birthday = datetime.datetime.strptime(birthday, '%m/%d/%Y')
        user.age = int(
            (datetime.datetime.now() - user.birthday).days / 365.2425)
        user.save()
        return True

    pre_update.connect(_facebook_extra_values, sender=FacebookBackend)

    def _new_user_handler(sender, user, response, details, **kwargs):
        #user.age = response.get('birthday')
        return True

    socialauth_registered.connect(_new_user_handler, sender=None)

    ### attributes
    # contributed_cash is the amount of money contributed
    # outstanding_fees are fees that have not yet been paid or charged against deposit
    contributed_cash = models.FloatField(null=False, blank=False, default=0.0)
    outstanding_fees = models.FloatField(null=False, blank=False, default=0.0)

    ### reverse relationships
    # equipment contributed
    # equipment borrowed
    # vouchers offered & active

    ### properties
    def _has_outstanding_fees(self):
        """ A member can only borrow when they owe no late charges """
        if self.outstanding_fees > 0:
            return True
        return False

    has_outstanding_fees = property(_has_outstanding_fees)

    def _contributed_equipment_value(self):
        """ Cash value of contributed equipment """
        return 44.4  # FIXME

    contributed_equipment_value = property(_contributed_equipment_value)

    def _contributed_equipment_and_cash_value(self):
        """ Cash value of contributed equipment and cash deposits """
        return self.contributed_cash + self.contributed_equipment_value

    deposit = property(_contributed_equipment_and_cash_value)

    def _sum_of_vouchers(self):
        """ Cash value of committed vouchers currently outstanding """
        return 33.2  # FIXME

    sum_of_vouchers = property(_sum_of_vouchers)

    def _accrued_primary_late_charges(self):
        """ Cash value of late charges accrued against PRIMARY active loans """
        return 12  # FIXME

    accrued_primary_late_charges = property(_accrued_primary_late_charges)

    def _accrued_secondary_late_charges(self):
        """ Cash value of late charges accrued against SECONDARY active loans """
        return 11  # FIXME

    accrued_secondary_late_charges = property(_accrued_secondary_late_charges)

    def _available_deposit(self):
        ret = self.deposit \
            - self.sum_of_vouchers \
            - self.accrued_primary_late_charges \
            - self.accrued_secondary_late_charges
        return ret

    available_deposit = property(_available_deposit)

    def _active_days_delinquent(self):
        """" Number of days deliquent on outstanding, active equipment loans """
        return 0  # FIXME

    active_days_delinquent = property(_active_days_delinquent)

    def _historical_days_delinquent(self):
        """ Number of days delinquent on all active and inactive equipment loans """
        return 0  # FIXME

    historical_days_delinquent = property(_historical_days_delinquent)

    def _full_name(self):
        if self.first_name or self.last_name:
            return "%s %s" % (self.first_name, self.last_name)
        return ""

    full_name = property(_full_name)

    def __unicode__(self):
        if self.full_name:
            return self.full_name
        return self.username

    def _username_link(self):
        return "<a href=\"%s\">%s</a>" % (reverse(
            'brewer-profile', args=[str(self.id)]), self.__unicode__())

    username_link = property(_username_link)

    def _profile_link(self):
        return "<a href=\"%s\">View Profile</a>" % reverse('brewer-profile',
                                                           args=[str(self.id)])

    profile_link = property(_profile_link)

    def _facebook_uid(self):
        if not self.show_facebook:
            return None

        facebook_uid = None
        try:
            facebook_uid = self.social_auth.filter(
                provider='facebook').get().uid
        except:
            pass
        return facebook_uid

    facebook_uid = property(_facebook_uid)

    def _facebook_link(self):
        fbid = self.facebook_uid
        if fbid:
            return """
            <a href="https://www.facebook.com/%s" target="_blank">Facebook Brewer</a>
            """ % fbid
        return ""

    facebook_link = property(_facebook_link)

    def _facebook_link_inline(self):
        fbid = self.facebook_uid
        if fbid:
            return """
            [<a href="https://www.facebook.com/%s" target="_blank">FB</a>]
            """ % fbid
        return ""

    facebook_link_inline = property(_facebook_link_inline)

    def _email_link(self):
        if self.show_email:
            return """
            <a href="mailto:%s" target="_blank">Email Brewer</a>
            """ % self.email
        return ""

    email_link = property(_email_link)

    def _email_link_inline(self):
        if self.show_email:
            return """
            [<a href="mailto:%s" target="_blank">@</a>]
            """ % self.email
        return ""

    email_link_inline = property(_email_link_inline)

    def _equipment_count(self):
        return self.equipment_set.filter(contributed=False).count()

    equipment_count = property(_equipment_count)
        verbose_name_plural = 'Banned IP addresses'



@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, raw,**kwargs):
    if created and not raw:
        Member.objects.create(user=instance)
        ReferralLink.objects.create(user=instance)

@receiver(user_logged_in)
def save_ip(sender, request, user, *args, **kwargs):
    obj, created = IPAddress.objects.get_or_create(user=user,
        IPAddress=request.META.get('X-Real-IP') or request.META.get('REMOTE_ADDR') or '127.0.0.1')
    if not created:
        obj.last_login = datetime.now()
        obj.save()

def user_registered(sender, user, response, details, **kwargs):
    profile = user.get_profile()
    if not profile.verified:
        profile.verified = True
        # this is a place to get an avatar for profile

    profile.points_amount += Member.rewards.associate
    profile.save()

socialauth_registered.connect(user_registered, sender=twitter.TwitterBackend)
socialauth_registered.connect(user_registered, sender=facebook.FacebookBackend)
socialauth_registered.connect(user_registered, sender=google.GoogleBackend)
コード例 #20
0
ファイル: models.py プロジェクト: FinalsClub/djKarma
def facebook_extra_data(sender, user, response, details, **kwargs):
    """
    This is triggered after a django_social_auth returns a user's data.
    This should save data to the UserProfile object, including username and school
    TODO: we may need to create schools based on what facebook returns

    see: http://django-social-auth.readthedocs.org/en/latest/signals.html
    """
    # TODO: This should live in util, on the UserProfile object or in a generic app
    user_profile = user.get_profile()
    user.email = response.get('email')
    user.save()

    user_profile.fb_id = response.get('id')
    #user_profile.gravatar = hashlib.md5(user.email.lower()).hashdigest()

    # take the user's school, save it to the UserProfile if found
    # create a new School if not
    # note this only takes the most recent school from a user's education history
    # FIXME: add a selector for which ofschool from their education history to use
    user_school = response.get('education')[-1]
    fb_school_name = user_school['school']['name']
    fb_school_id = user_school['school']['id']
    user_profile.school, created = School.objects.get_or_create(
            name=fb_school_name,
            facebook_id=fb_school_id)
    user_profile.save()

socialauth_registered.connect(facebook_extra_data, sender=FacebookBackend)

コード例 #21
0
ファイル: models.py プロジェクト: Cruel/Anondex

from social_auth.signals import pre_update, socialauth_registered, socialauth_not_registered
from social_auth.backends.facebook import FacebookBackend
from social_auth.models import UserSocialAuth
UserSocial = UserSocialAuth._meta.get_field('user').rel.to

def facebook_extra_values(sender, user, response, details, **kwargs):
    user.gender = response.get('gender')
    return True

def testy1(sender, user, response, details, **kwargs):
    user.is_active = False
    return True

def testy2(sender, uid, response, details, **kwargs):
    print "k2"
    return True

#def user_test(sender, response, details, **kwargs):
#    name = sender.username(details)
#    user = UserSocial.objects.create_user(username=name, email=details['email'])
#    user.is_active = False
#    kwargs['request'].session['social_auth_new_username'] = details['username']
#    return user

pre_update.connect(facebook_extra_values, sender=FacebookBackend)
socialauth_registered.connect(testy1)
#socialauth_not_registered.connect(testy2)

import socialauth.avatars
コード例 #22
0
ファイル: models.py プロジェクト: finid/drawnby
    def save(self, *args, **kwargs):
        if not self.slug:
            i = 0
            self.slug = slugify(self.title)
            while True:
                if i > 0:
                    if i > 1:
                        self.slug = self.slug.rsplit("-", 1)[0]
                    self.slug = "%s-%s" % (self.slug, i)
                try:
                    Drawing.objects.exclude(id=self.id).get(slug=self.slug)
                except Drawing.DoesNotExist:
                    break
                i += 1
        super(Drawing, self).save(*args, **kwargs)

def create_profile(sender, user, response, details, **kwargs):
    try:
        # twitter
        photo_url = response["profile_image_url"]
        photo_url = "_reasonably_small".join(photo_url.rsplit("_normal", 1))
    except KeyError:
        # facebook
        photo_url = "http://graph.facebook.com/%s/picture?type=large" % response["id"]
    path = join(settings.MEDIA_ROOT, "photos")
    if not exists(path):
        mkdir(path)
    urlretrieve(photo_url, join(path, str(user.id)))
socialauth_registered.connect(create_profile, sender=None)
コード例 #23
0
ファイル: receivers.py プロジェクト: adahlquist89/calo
@receiver(socialauth_registered, sender=GoogleOAuth2Backend)
def google_extra_values(sender, user, response, details, **kwargs):
    """Populates a UserProfile Object when a new User is created via Google Auth"""
    LOGGER.debug('profile.models.google_extra_values')
    user_info_url = "https://www.googleapis.com/oauth2/v1/userinfo"

    data = {'access_token': response.get('access_token', ''), 'alt': 'json'}
    params = urlencode(data)
    try:
        request = Request(user_info_url + '?' + params, headers={'Authorization': params})
        result = simplejson.loads(urlopen(request).read())

        user.last_name = result.get('family_name', '')
        user.first_name = result.get('given_name', '')
        profile = user.profile
        profile.gender = result.get('gender', '')
        profile.image_url = result.get('picture', '')
        profile.url = result.get('link', '')

        profile.save()
    except:
        pass

    return True

socialauth_registered.connect(google_extra_values, sender=GoogleOAuth2Backend)