Changeset View
Changeset View
Standalone View
Standalone View
blender_fund_main/signals.py
| import logging | import logging | ||||
| import typing | import typing | ||||
| from django.conf import settings | from django.conf import settings | ||||
| from django.contrib.auth.models import User | |||||
| from django.dispatch import receiver | from django.dispatch import receiver | ||||
| import django.db.models.signals as django_signals | import django.db.models.signals as django_signals | ||||
| from blender_id_oauth_client import signals as bid_signals | |||||
| import looper.signals | import looper.signals | ||||
| import looper.models | import looper.models | ||||
| from . import models | from . import models | ||||
| log = logging.getLogger(__name__) | log = logging.getLogger(__name__) | ||||
| # The signal's sender is the membership itself. | # The signal's sender is the membership itself. | ||||
| membership_activated = django_signals.Signal(providing_args=['old_status']) | membership_activated = django_signals.Signal(providing_args=['old_status']) | ||||
| ▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | other_granters_count: int = instance.user.memberships \ | ||||
| .count() | .count() | ||||
| if other_granters_count: | if other_granters_count: | ||||
| return | return | ||||
| my_log.info('Revoking badge %r from user %r due to loss of their fund membership %s', | my_log.info('Revoking badge %r from user %r due to loss of their fund membership %s', | ||||
| current_badge, instance.user.pk, instance) | current_badge, instance.user.pk, instance) | ||||
| badges.change_badge(user=instance.user, revoke=current_badge) | badges.change_badge(user=instance.user, revoke=current_badge) | ||||
| @receiver(bid_signals.user_created) | |||||
| def set_customer_fullname(sender, instance: User, oauth_info: dict, **kwargs): | |||||
| """Create a Customer when a new User is created via OAuth.""" | |||||
| my_log = log.getChild('set_customer_fullname') | |||||
| if not instance.customer: | |||||
| my_log.info('NOT updating user full_name of user %s, as they have no Customer') | |||||
| return | |||||
| my_log.info('Updating Customer full_name as result of OAuth login of %s', instance.pk) | |||||
| instance.customer.full_name = oauth_info['full_name'] | |||||
| instance.customer.save() | |||||
| # TODO(Sybren): respond to M2M change on Membership, when assigning membership to another user. | # TODO(Sybren): respond to M2M change on Membership, when assigning membership to another user. | ||||