This reverts commit d9246b1ec0
.
parent
b6e9b8d9e0
commit
b317c7521e
|
@ -62,7 +62,7 @@ def save_in_bulk(instances, callback=None, precall=None, **save_options):
|
|||
|
||||
precall(instance)
|
||||
instance.save(**save_options)
|
||||
callback(instance, created=True)
|
||||
callback(instance)
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
|
|
|
@ -205,6 +205,15 @@ class MembershipViewSet(ModelCrudViewSet):
|
|||
services.send_invitation(invitation=invitation)
|
||||
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):
|
||||
super().post_save(object, created=created)
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import itertools
|
||||
import uuid
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
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.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.dicts import dict_sum
|
||||
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:
|
||||
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:
|
||||
verbose_name = "membership"
|
||||
verbose_name_plural = "membershipss"
|
||||
|
|
|
@ -35,5 +35,6 @@ from .members import create_members_in_bulk
|
|||
from .members import get_members_from_bulk
|
||||
|
||||
from .invitations import send_invitation
|
||||
from .invitations import find_invited_user
|
||||
|
||||
from .tags_colors import update_project_tags_colors_handler
|
||||
|
|
|
@ -10,3 +10,17 @@ def send_invitation(invitation):
|
|||
template = mbuilder.membership_invitation
|
||||
email = template(invitation.email, {"membership": invitation})
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue