def convert_email_group_invites(sender, profile, **kwargs): """ Converts all `CosinnusUnregisterdUserGroupInvite` to `CosinnusGroupMembership` pending invites for a user after registration. If there were any, also adds an entry to the user's profile's visit-next setting. """ # TODO: caching? user = profile.user invites = CosinnusUnregisterdUserGroupInvite.objects.filter(email=get_newly_registered_user_email(user)) if invites: with transaction.atomic(): other_invites = [] for invite in invites: # skip inviting to auto-invite groups, users are in them automatically if invite.group.slug in get_default_user_group_slugs(): continue # check if the inviting user may invite directly if invite.invited_by_id in invite.group.admins: CosinnusGroupMembership.objects.create(group=invite.group, user=user, status=MEMBERSHIP_INVITED_PENDING) else: other_invites.append(invite.group.id) # trigger translation indexing _('Welcome! You were invited to the following projects and groups. Please click the dropdown button to accept or decline the invitation for each of them!') msg = 'Welcome! You were invited to the following projects and groups. Please click the dropdown button to accept or decline the invitation for each of them!' # create a user-settings-entry if other_invites: profile.settings['group_recruits'] = other_invites profile.add_redirect_on_next_page(reverse('cosinnus:invitations'), msg)
def save(self, *args, **kwargs): created = bool(self.pk is None) # sanity check for missing media_tag: if not self.media_tag: from cosinnus.models.tagged import get_tag_object_model media_tag = get_tag_object_model()._default_manager.create() self.media_tag = media_tag try: existing = self._meta.model._default_manager.get(user=self.user) # workaround for http://goo.gl/4I8Ok self.id = existing.id # force update instead of insert except ObjectDoesNotExist: pass super(BaseUserProfile, self).save(*args, **kwargs) if created: # send creation signal signals.userprofile_created.send(sender=self, profile=self) # send a copy of the ToS to the User via email? if settings.COSINNUS_SEND_TOS_AFTER_USER_REGISTRATION and self.user and self.user.email: if self.settings.get( 'tos_accepted', False) and not self._settings.get('tos_accepted', False): tos_content = mark_safe( strip_tags( render_to_string('nutzungsbedingungen_content.html'))) data = { 'user': self.user, 'site_name': _(settings.COSINNUS_BASE_PAGE_TITLE_TRANS), 'domain_url': CosinnusPortal.get_current().get_domain(), 'tos_content': tos_content, } subj_user = '******' % (_('Terms of Service'), data['site_name']) send_mail_or_fail_threaded( get_newly_registered_user_email(self.user), subj_user, 'cosinnus/mail/user_terms_of_services.html', data) self._settings = copy.deepcopy(self.settings) self._dynamic_fields = copy.deepcopy(self.dynamic_fields)
def remove_user_from_blacklist(sender, profile, **kwargs): user = profile.user email = get_newly_registered_user_email(user) GlobalBlacklistedEmail.remove_for_email(email)