예제 #1
0
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)
예제 #2
0
    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)
예제 #3
0
def remove_user_from_blacklist(sender, profile, **kwargs):
    user = profile.user
    email = get_newly_registered_user_email(user)
    GlobalBlacklistedEmail.remove_for_email(email)