def get_members_from_bulk(bulk_data, **additional_fields): """Convert `bulk_data` into a list of members. :param bulk_data: List of members in bulk format. :param additional_fields: Additional fields when instantiating each task. :return: List of `Member` instances. """ members = [] for data in bulk_data: data_copy = data.copy() # Try to find the user username = data_copy.pop("username") try: user = get_user_by_username_or_email(username) data_copy["user_id"] = user.id except WrongArguments: # If not exist, is an invitation. Set the email and a token try: validate_email(username) data_copy["email"] = username except ValidationError: raise WrongArguments(_("Malformed email adress.")) if "token" not in data_copy.keys(): data_copy["token"] = str(uuid.uuid1()) data_copy.update(additional_fields) members.append(models.Membership(**data_copy)) return members
def password_recovery(self, request, pk=None): username_or_email = request.DATA.get('username', None) self.check_permissions(request, "password_recovery", None) if not username_or_email: raise exc.WrongArguments(_("Invalid username or email")) user = get_user_by_username_or_email(username_or_email) user.token = str(uuid.uuid1()) user.save(update_fields=["token"]) email = mail_builder.password_recovery(user, {"user": user}) email.send() return response.Ok({"detail": _("Mail sended successful!")})