This reverts commit d9246b1ec0.

remotes/origin/enhancement/email-actions
Jesús Espino 2014-08-12 09:17:58 +02:00
parent b6e9b8d9e0
commit b317c7521e
5 changed files with 26 additions and 11 deletions

View File

@ -62,7 +62,7 @@ def save_in_bulk(instances, callback=None, precall=None, **save_options):
precall(instance) precall(instance)
instance.save(**save_options) instance.save(**save_options)
callback(instance, created=True) callback(instance)
@transaction.atomic @transaction.atomic

View File

@ -205,6 +205,15 @@ class MembershipViewSet(ModelCrudViewSet):
services.send_invitation(invitation=invitation) services.send_invitation(invitation=invitation)
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
def pre_save(self, object):
# Only assign new token if a current token value is empty.
if not object.token:
object.token = str(uuid.uuid1())
object.user = services.find_invited_user(object, default=object.user)
super().pre_save(object)
def post_save(self, object, created=False): def post_save(self, object, created=False):
super().post_save(object, created=created) super().post_save(object, created=created)

View File

@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import itertools import itertools
import uuid
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
@ -32,7 +31,7 @@ from djorm_pgarray.fields import TextArrayField
from taiga.permissions.permissions import ANON_PERMISSIONS, USER_PERMISSIONS from taiga.permissions.permissions import ANON_PERMISSIONS, USER_PERMISSIONS
from taiga.base.tags import TaggedMixin from taiga.base.tags import TaggedMixin
from taiga.users.models import User, Role from taiga.users.models import Role
from taiga.base.utils.slug import slugify_uniquely from taiga.base.utils.slug import slugify_uniquely
from taiga.base.utils.dicts import dict_sum from taiga.base.utils.dicts import dict_sum
from taiga.base.utils.sequence import arithmetic_progression from taiga.base.utils.sequence import arithmetic_progression
@ -74,14 +73,6 @@ class Membership(models.Model):
if self.user and memberships.count() > 0 and memberships[0].id != self.id: if self.user and memberships.count() > 0 and memberships[0].id != self.id:
raise ValidationError(_('The user is already member of the project')) raise ValidationError(_('The user is already member of the project'))
def save(self, *args, **kwargs):
if not self.token:
self.token = str(uuid.uuid1())
self.user = User.objects.filter(email=self.email).first()
super().save(*args, **kwargs)
class Meta: class Meta:
verbose_name = "membership" verbose_name = "membership"
verbose_name_plural = "membershipss" verbose_name_plural = "membershipss"

View File

@ -35,5 +35,6 @@ from .members import create_members_in_bulk
from .members import get_members_from_bulk from .members import get_members_from_bulk
from .invitations import send_invitation from .invitations import send_invitation
from .invitations import find_invited_user
from .tags_colors import update_project_tags_colors_handler from .tags_colors import update_project_tags_colors_handler

View File

@ -10,3 +10,17 @@ def send_invitation(invitation):
template = mbuilder.membership_invitation template = mbuilder.membership_invitation
email = template(invitation.email, {"membership": invitation}) email = template(invitation.email, {"membership": invitation})
email.send() email.send()
def find_invited_user(invitation, default=None):
"""Check if the invited user is already a registered.
:param invitation: Invitation object.
:param default: Default object to return if user is not found.
:return: The user if it's found, othwerwise return `default`.
"""
try:
return type(invitation).user.get_queryset().filter(email=invitation.email).all()[0]
except IndexError:
return default