Beispiel #1
0
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
Beispiel #2
0
    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!")})
Beispiel #3
0
    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!")})