Beispiel #1
0
    def owner(self):
        user = User(username="******", email="owner@localhost")
        user.set_password('owner')
        user.save()

        Team.objects.create(owner=user, name='foo', slug='foo')

        return user
Beispiel #2
0
    def create_user(self, email, **kwargs):
        kwargs.setdefault("username", email)
        kwargs.setdefault("is_staff", True)
        kwargs.setdefault("is_superuser", True)

        user = User(email=email, **kwargs)
        user.set_password("admin")
        user.save()

        return user
Beispiel #3
0
    def create_user(self, email, **kwargs):
        kwargs.setdefault('username', email)
        kwargs.setdefault('is_staff', True)
        kwargs.setdefault('is_superuser', True)

        user = User(email=email, **kwargs)
        user.set_password('admin')
        user.save()

        return user
Beispiel #4
0
def createuser(email, password, superuser, no_password, no_input):
    "Create a new user."
    if not no_input:
        if not email:
            email = _get_email()

        if not (password or no_password):
            password = _get_password()

        if superuser is None:
            superuser = _get_superuser()

    if superuser is None:
        superuser = False

    if not email:
        raise click.ClickException('Invalid or missing email address.')

    # TODO(mattrobenolt): Accept password over stdin?
    if not no_password and not password:
        raise click.ClickException('No password set and --no-password not passed.')

    from sentry import roles
    from sentry.models import User
    from django.conf import settings

    user = User(
        email=email,
        username=email,
        is_superuser=superuser,
        is_staff=superuser,
        is_active=True,
    )

    if password:
        user.set_password(password)

    user.save()

    click.echo('User created: %s' % (email,))

    # TODO(dcramer): kill this when we improve flows
    if settings.SENTRY_SINGLE_ORGANIZATION:
        from sentry.models import Organization, OrganizationMember
        org = Organization.get_default()
        if superuser:
            role = roles.get_top_dog().id
        else:
            role = org.default_role
        OrganizationMember.objects.create(
            organization=org,
            user=user,
            role=role,
        )
        click.echo('Added to organization: %s' % (org.slug,))
Beispiel #5
0
    def member(self):
        user = User(username="******", email="member@localhost")
        user.set_password('member')
        user.save()

        TeamMember.objects.create(
            user=user,
            team=self.team,
            type=MEMBER_USER,
        )
        return user
Beispiel #6
0
    def member(self):
        user = User(username="******", email="member@localhost")
        user.set_password('member')
        user.save()

        om = OrganizationMember.objects.create(
            organization=self.team.organization,
            user=user,
            type=MEMBER_USER,
        )
        om.teams.add(self.team)
        return user
Beispiel #7
0
    def member(self):
        user = User(username="******", email="member@localhost")
        user.set_password('member')
        user.save()

        om = self.create_member(
            organization=self.team.organization,
            user=user,
            type=MEMBER_USER,
            teams=[self.team],
        )
        return user
Beispiel #8
0
    def create_user(self, email=None, **kwargs):
        if not email:
            email = uuid4().hex + "@example.com"

        kwargs.setdefault("username", email)
        kwargs.setdefault("is_staff", True)
        kwargs.setdefault("is_superuser", False)

        user = User(email=email, **kwargs)
        user.set_password("admin")
        user.save()

        return user
Beispiel #9
0
    def create_user(self, email=None, **kwargs):
        if not email:
            email = uuid4().hex + '@example.com'

        kwargs.setdefault('username', email)
        kwargs.setdefault('is_staff', True)
        kwargs.setdefault('is_superuser', False)

        user = User(email=email, **kwargs)
        user.set_password('admin')
        user.save()

        return user
Beispiel #10
0
    def handle(self, **options):
        email = options['email']
        is_superuser = options['is_superuser']
        password = options['password']

        if not options['noinput']:
            try:
                if not email:
                    email = self.get_email()

                if not (password or options['nopassword']):
                    password = self.get_password()

                if is_superuser is None:
                    is_superuser = self.get_superuser()
            except KeyboardInterrupt:
                self.stderr.write("\nOperation cancelled.")
                sys.exit(1)

        if not email:
            raise CommandError('Invalid or missing email address')

        if not options['nopassword'] and not password:
            raise CommandError('No password set and --no-password not passed')

        user = User(
            email=email,
            username=email,
            is_superuser=is_superuser,
            is_staff=is_superuser,
            is_active=True,
        )

        if password:
            user.set_password(password)

        user.save()

        self.stdout.write('User created: %s' % (email,))

        # TODO(dcramer): kill this when we improve flows
        if settings.SENTRY_SINGLE_ORGANIZATION:
            org = Organization.objects.all()[0]
            OrganizationMember.objects.create(
                organization=org,
                user=user,
                type=OrganizationMemberType.OWNER,
                has_global_access=user.is_superuser,
            )
            self.stdout.write('Added to organization: %s' % (org.slug,))
Beispiel #11
0
 def test_get_user_for_authors_no_user(self):
     user = User(email="*****@*****.**")
     project = self.create_project()
     users = get_users_for_authors(organization_id=project.organization_id,
                                   authors=[user])
     assert len(users) == 1
     assert users[str(user.id)]["email"] == user.email
def validate_has_feature(user: User) -> None:
    if not any([
            features.has("organizations:notification-platform",
                         organization,
                         actor=user) for organization in user.get_orgs()
    ]):
        raise ResourceDoesNotExist
    def get(self, request: Request) -> Response:
        org = Organization(id=1, slug="default", name="Default")
        user_to_join = User(name="Rick Swan")
        pending_member = OrganizationMember(
            email="*****@*****.**",
            organization=org,
            user=user_to_join,
            invite_status=InviteStatus.REQUESTED_TO_JOIN.value,
        )
        recipient = User(name="James Bond")
        recipient_member = OrganizationMember(user=recipient, organization=org)

        notification = JoinRequestNotification(pending_member, user_to_join)

        # hack to avoid a query
        notification.role_based_recipient_strategy.set_member_in_cache(recipient_member)
        return render_preview_email_for_notification(notification, recipient)
Beispiel #14
0
def get_access_requests(item_list: Sequence[Team],
                        user: User) -> AbstractSet[Team]:
    if user.is_authenticated():
        return frozenset(
            OrganizationAccessRequest.objects.filter(
                team__in=item_list, member__user=user).values_list("team",
                                                                   flat=True))
    return frozenset()
Beispiel #15
0
def parse_query(query, user):
    # TODO(dcramer): make this better
    tokens = query.split(' ')

    results = {'tags': {}, 'query': []}

    tokens_iter = iter(tokens)
    for token in tokens_iter:
        if ':' not in token:
            results['query'].append(token)
            continue

        key, value = token.split(':', 1)
        if not value:
            results['query'].append(token)
            continue

        if value[0] == '"':
            nvalue = value
            while nvalue[-1] != '"':
                try:
                    nvalue = tokens_iter.next()
                except StopIteration:
                    break
                value = '%s %s' % (value, nvalue)

            if value.endswith('"'):
                value = value[1:-1]
            else:
                value = value[1:]

        if key == 'is':
            try:
                results['status'] = STATUS_CHOICES[value]
            except KeyError:
                pass
        elif key == 'assigned':
            if value == 'me':
                results['assigned_to'] = user
            else:
                try:
                    results['assigned_to'] = find_users(value)[0]
                except IndexError:
                    # XXX(dcramer): hacky way to avoid showing any results when
                    # an invalid user is entered
                    results['assigned_to'] = User(id=0)
        elif key == 'first-release':
            results['first_release'] = value
        elif key == 'release':
            results['tags']['sentry:release'] = value
        elif key == 'user':
            results['tags']['sentry:user'] = value
        else:
            results['tags'][key] = value

    results['query'] = ' '.join(results['query'])

    return results
def sentry_create_user(username, password, admin=False):
    model = sentry_find_user(username)
    existing = model is not None
    if not existing:
        model = User()
        model.username = username
        model.is_superuser = admin
        model.set_password(password)
        model.save()

    return model, existing
Beispiel #17
0
def openid_login_callback(request):
    #构造需要检查签名的内容
    OPENID_RESPONSE = dict(request.GET)
    SIGNED_CONTENT = []
    #import json
    #print json.dumps(OPENID_RESPONSE, indent=4)
    for k in OPENID_RESPONSE['openid.signed'][0].split(","):
        response_data = OPENID_RESPONSE["openid.%s" % k]
        SIGNED_CONTENT.append("%s:%s\n" % (k, response_data[0]))
    SIGNED_CONTENT = "".join(SIGNED_CONTENT).encode("UTF-8")
    # 使用associate请求获得的mac_key与SIGNED_CONTENT进行assoc_type hash,
    # 检查是否与OpenID Server返回的一致
    SIGNED_CONTENT_SIG = base64.b64encode(
        hmac.new(base64.b64decode(request.session.get('mac_key', '')),
                 SIGNED_CONTENT, hashlib.sha256).digest())

    if SIGNED_CONTENT_SIG != OPENID_RESPONSE['openid.sig'][0]:
        return '认证失败,请重新登录验证'

    request.session.pop('mac_key', None)
    email = request.GET.get('openid.sreg.email', '')
    fullname = request.GET.get('openid.sreg.fullname', '')
    next_url = request.GET.get('next', '/')

    login_user = User.objects.filter(username__iexact=email)
    if login_user.exists():
        login_user = login_user[0]
        login_user.set_password("sentry_netease_openid_pwd")
        login_user.name = fullname  # update by hzwangzhiwei @20160329
        login_user.save()
    else:
        #不存在数据,则增加数据数用户表
        login_user = User(username=email, name=fullname, email=email)
        login_user.set_password("sentry_netease_openid_pwd")
        login_user.save()  #save to db

    # 如果不存在将这个人加入到组织member表中
    if not OrganizationMember.objects.filter(
            user=login_user, organization=Organization.get_default()).exists():
        # 同时给他们默认的trace收集
        # 将用户到组织中
        orgMember = OrganizationMember(user=login_user,
                                       organization=Organization.get_default())
        orgMember.save()
        orgMember = OrganizationMember.objects.get(
            user=login_user, organization=Organization.get_default())
        # 保存组织者到第一个小组
        orgMemTeam = OrganizationMemberTeam(organizationmember=orgMember,
                                            team=Team.objects.get(id=1))
        orgMemTeam.save()

    # HACK: grab whatever the first backend is and assume it works
    login_user.backend = settings.AUTHENTICATION_BACKENDS[0]

    auth.login(request, login_user)
    # can_register should only allow a single registration
    request.session.pop('can_register', None)
    request.session.pop('needs_captcha', None)
    return HttpResponseRedirect(next_url)
Beispiel #18
0
def parse_user_value(value, user):
    if value == "me":
        return user

    try:
        return find_users(value)[0]
    except IndexError:
        # XXX(dcramer): hacky way to avoid showing any results when
        # an invalid user is entered
        return User(id=0)
Beispiel #19
0
def get_team_memberships(team_list: Sequence[Team],
                         user: User) -> Iterable[int]:
    """Get memberships the user has in the provided team list"""
    if not user.is_authenticated():
        return []

    team_ids: Iterable[int] = OrganizationMemberTeam.objects.filter(
        organizationmember__user=user,
        team__in=team_list).values_list("team", flat=True)
    return team_ids
Beispiel #20
0
    def test_by_user(self):
        user = User(email="*****@*****.**")
        for n in range(100):
            assert not ratelimits.for_organization_member_invite(
                Organization(id=randint(0, 100000)),
                "{}@example.com".format(randint(0, 1000000)),
                user=user,
            )

        assert ratelimits.for_organization_member_invite(
            Organization(id=1), "*****@*****.**")
def get_identities(user: User) -> Iterable[UserIdentityConfig]:
    """Get objects representing all of a user's identities.

    Fetch the identity-related objects from the database and set
    their associated statuses. This function is responsible for
    setting the status because it depends on the user state and the
    full set of available identities.
    """

    has_password = user.has_usable_password()
    global_identity_objs = list(Identity.objects.filter(user=user))
    global_login_id_count = sum(1 for obj in global_identity_objs if supports_login(obj))

    def get_global_identity_status(obj: Identity) -> Status:
        if not supports_login(obj):
            return Status.CAN_DISCONNECT

        # Allow global login IDs to be deleted if the user has a
        # password or at least one other login ID to fall back on.
        # AuthIdentities don't count, because we don't want to risk
        # the user getting locked out of their profile if they're
        # kicked from the organization.
        return (
            Status.CAN_DISCONNECT
            if has_password or global_login_id_count > 1
            else Status.NEEDED_FOR_GLOBAL_AUTH
        )

    def get_org_identity_status(obj: AuthIdentity) -> Status:
        if not obj.auth_provider.flags.allow_unlinked:
            return Status.NEEDED_FOR_ORG_AUTH
        elif has_password or global_login_id_count > 0:
            return Status.CAN_DISCONNECT
        else:
            # Assume the user has only this AuthIdentity as their
            # means of logging in. (They might actually have two or
            # more from non-SSO-requiring orgs, but that's so rare
            # and weird that we don't care.)
            return Status.NEEDED_FOR_GLOBAL_AUTH

    social_identities = (
        UserIdentityConfig.wrap(obj, Status.CAN_DISCONNECT)
        for obj in UserSocialAuth.objects.filter(user=user)
    )
    global_identities = (
        UserIdentityConfig.wrap(obj, get_global_identity_status(obj))
        for obj in global_identity_objs
    )
    org_identities = (
        UserIdentityConfig.wrap(obj, get_org_identity_status(obj))
        for obj in AuthIdentity.objects.filter(user=user).select_related()
    )

    return itertools.chain(social_identities, global_identities, org_identities)
Beispiel #22
0
    def get(self, request: Request) -> Response:
        org = Organization(id=1, slug="petal", name="Petal")
        project = Project(id=1,
                          slug="nodejs",
                          name="Node.js",
                          organization=org)
        user = User(name="Nisanthan")
        OrganizationMember(organization=org, user=user, role="admin")
        notification = AutoSyncNotification(project)

        return render_preview_email_for_notification(notification, user)
Beispiel #23
0
    def create_user(self, email=None, **kwargs):
        if not email:
            email = uuid4().hex + '@example.com'

        kwargs.setdefault('username', email)
        kwargs.setdefault('is_staff', True)
        kwargs.setdefault('is_active', True)
        kwargs.setdefault('is_superuser', False)

        user = User(email=email, **kwargs)
        user.set_password('admin')
        user.save()

        # UserEmail is created by a signal
        UserEmail.objects.filter(
            user=user,
            email=email,
        ).update(is_verified=True)

        return user
Beispiel #24
0
    def handle(self, **options):
        email = options['email']
        is_superuser = options['is_superuser']

        if not options['noinput']:
            try:
                if not email:
                    email = self.get_email()

                if not options['nopassword']:
                    password = self.get_password()

                if is_superuser is None:
                    is_superuser = self.get_superuser()
            except KeyboardInterrupt:
                self.stderr.write("\nOperation cancelled.")
                sys.exit(1)

        else:
            password = None

        if not email:
            raise CommandError('Invalid or missing email address')

        if not options['nopassword'] and not password:
            raise CommandError('No password set and --no-password not passed')

        user = User(
            email=email,
            username=email,
            is_superuser=is_superuser,
            is_staff=is_superuser,
            is_active=True,
        )

        if password:
            user.set_password(password)

        user.save()

        self.stdout.write('User created: %s' % (email,))
Beispiel #25
0
def get_org_roles(org_ids: Set[int], user: User) -> Mapping[int, str]:
    """Get the role the user has in each org"""
    if not user.is_authenticated():
        return {}

    # map of org id to role
    return {
        om["organization_id"]: om["role"]
        for om in OrganizationMember.objects.filter(
            user=user, organization__in=set(org_ids)).values(
                "role", "organization_id")
    }
Beispiel #26
0
def get_member_totals(team_list: Sequence[Team],
                      user: User) -> Mapping[str, int]:
    """Get the total number of members in each team"""
    if not user.is_authenticated():
        return {}

    query = (Team.objects.filter(
        id__in=[t.pk for t in team_list],
        organizationmember__invite_status=InviteStatus.APPROVED.value,
    ).annotate(member_count=Count("organizationmemberteam")).values(
        "id", "member_count"))
    return {item["id"]: item["member_count"] for item in query}
Beispiel #27
0
 def get(self, request):
     auth_identity = {"id": "*****@*****.**", "email": "*****@*****.**"}
     return render_to_response(
         "sentry/auth-confirm-link.html",
         context={
             "existing_user": User(email="*****@*****.**"),
             "identity": auth_identity,
             "identity_display_name": auth_identity["email"],
             "identity_identifier": auth_identity["id"],
         },
         request=request,
     )
Beispiel #28
0
class EmailAuthBackendTest(TestCase):
    def setUp(self):
        self.user = User(username="******", email="*****@*****.**")
        self.user.set_password("bar")
        self.user.save()

    @property
    def backend(self):
        return EmailAuthBackend()

    def test_can_authenticate_with_username(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, self.user)

    def test_can_authenticate_with_email(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, self.user)

    def test_does_not_authenticate_with_invalid_password(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, None)
Beispiel #29
0
 def get(self, request):
     auth_identity = {
         'id': '*****@*****.**',
         'email': '*****@*****.**',
     }
     return render_to_response('sentry/auth-confirm-link.html', {
         'existing_user': User(email='*****@*****.**'),
         'identity': auth_identity,
         'request': request,
         'identity_display_name': auth_identity['email'],
         'identity_identifier': auth_identity['id']
     })
Beispiel #30
0
class EmailAuthBackendTest(TestCase):
    def setUp(self):
        self.user = User(username="******", email="*****@*****.**")
        self.user.set_password("bar")
        self.user.save()

    @property
    def backend(self):
        return EmailAuthBackend()

    def test_can_authenticate_with_username(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, self.user)

    def test_can_authenticate_with_email(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, self.user)

    def test_does_not_authenticate_with_invalid_password(self):
        result = self.backend.authenticate(username='******', password='******')
        self.assertEquals(result, None)
Beispiel #31
0
def parse_user_value(value, user):
    from sentry.models import User  # Django 1.9 setup issue
    from sentry.utils.auth import find_users  # Django 1.9 setup issue
    if value == 'me':
        return user

    try:
        return find_users(value)[0]
    except IndexError:
        # XXX(dcramer): hacky way to avoid showing any results when
        # an invalid user is entered
        return User(id=0)
Beispiel #32
0
def createuser(email, password, superuser, no_password, no_input):
    "Create a new user."
    if not no_input:
        if not email:
            email = _get_email()

        if not (password or no_password):
            password = _get_password()

        if superuser is None:
            superuser = _get_superuser()

    if superuser is None:
        superuser = False

    if not email:
        raise click.ClickException("Invalid or missing email address.")

    # TODO(mattrobenolt): Accept password over stdin?
    if not no_password and not password:
        raise click.ClickException(
            "No password set and --no-password not passed.")

    from sentry import roles
    from sentry.models import User
    from django.conf import settings

    user = User(email=email,
                username=email,
                is_superuser=superuser,
                is_staff=superuser,
                is_active=True)

    if password:
        user.set_password(password)

    user.save()

    click.echo("User created: %s" % (email, ))

    # TODO(dcramer): kill this when we improve flows
    if settings.SENTRY_SINGLE_ORGANIZATION:
        from sentry.models import Organization, OrganizationMember, OrganizationMemberTeam, Team

        org = Organization.get_default()
        if superuser:
            role = roles.get_top_dog().id
        else:
            role = org.default_role
        member = OrganizationMember.objects.create(organization=org,
                                                   user=user,
                                                   role=role)

        # if we've only got a single team let's go ahead and give
        # access to that team as its likely the desired outcome
        teams = list(Team.objects.filter(organization=org)[0:2])
        if len(teams) == 1:
            OrganizationMemberTeam.objects.create(team=teams[0],
                                                  organizationmember=member)
        click.echo("Added to organization: %s" % (org.slug, ))
Beispiel #33
0
 def clean(self, value):
     value = super(CorpEmailField, self).clean(value)
     if not value:
         return None
     # valid corp email
     value = value.lower()
     if value.endswith('@corp.netease.com') or value.endswith(
             '@mesg.corp.netease.com'):
         # valid ok
         user_add = User.objects.filter(username__iexact=value)
         if user_add.exists():
             # user exist
             user_add = user_add[0]
             user_add.set_password("sentry_netease_openid_pwd")
         else:
             # user not exist, save to db
             user_add = User(username=value, name=value, email=value)
             user_add.set_password("sentry_netease_openid_pwd")
             user_add.save()  #save to db
         return user_add
     else:
         # invalid user, give the tip
         raise ValidationError(
             _('Invalid Corp Email, must end with @corp.netease.com or @mesg.corp.netease.com'
               ))
Beispiel #34
0
 def get(self, request):
     auth_identity = {"id": "*****@*****.**", "email": "*****@*****.**"}
     return render_to_response(
         "sentry/auth-confirm-identity.html",
         {
             "existing_user": User(email="*****@*****.**"),
             "identity": auth_identity,
             "login_form": None,
             "request": request,
             "identity_display_name": auth_identity["email"],
             "identity_identifier": auth_identity["id"],
         },
     )
Beispiel #35
0
    def get(self, request: Request) -> Response:
        requester_name = request.GET.get("requester_name", "Requester")
        recipient_name = request.GET.get("recipient_name", "Recipient")

        org = Organization(id=1, slug="petal", name="Petal")
        project = Project(id=1, slug="nodejs", name="Node.js", organization=org)
        user = User(name=recipient_name)
        member = OrganizationMember(organization=org, user=user, role="admin")
        preview = MailPreviewAdapter(
            **get_codeowners_request_builder_args(project, member, requester_name)
        )

        return render_to_response("sentry/debug/mail/preview.html", {"preview": preview})
Beispiel #36
0
    def owner(self):
        user = User(username="******", email="owner@localhost")
        user.set_password('owner')
        user.save()

        Team.objects.create(owner=user, name='foo', slug='foo')

        return user
Beispiel #37
0
def parse_query(project, query, user):
    # TODO(dcramer): handle query being wrapped in quotes
    tokens = tokenize_query(query)

    results = {'tags': {}, 'query': []}

    for key, token_list in tokens.iteritems():
        for value in token_list:
            if key == 'query':
                results['query'].append(value)
            elif key == 'is':
                if value == 'unassigned':
                    results['unassigned'] = True
                elif value == 'assigned':
                    results['unassigned'] = False
                else:
                    try:
                        results['status'] = STATUS_CHOICES[value]
                    except KeyError:
                        pass
            elif key == 'assigned':
                if value == 'me':
                    results['assigned_to'] = user
                else:
                    try:
                        results['assigned_to'] = find_users(value)[0]
                    except IndexError:
                        # XXX(dcramer): hacky way to avoid showing any results when
                        # an invalid user is entered
                        results['assigned_to'] = User(id=0)
            elif key == 'first-release':
                results['first_release'] = value
            elif key == 'release':
                results['tags']['sentry:release'] = value
            elif key == 'user':
                if ':' in value:
                    comp, value = value.split(':', 1)
                else:
                    comp = 'id'
                results['tags']['sentry:user'] = get_user_tag(
                    project, comp, value)
            elif key.startswith('user.'):
                results['tags']['sentry:user'] = get_user_tag(
                    project,
                    key.split('.', 1)[1], value)
            else:
                results['tags'][key] = value

    results['query'] = ' '.join(results['query'])

    return results
Beispiel #38
0
 def user(self):
     user = User(username="******",
                 email="admin@localhost",
                 is_staff=True,
                 is_superuser=True)
     user.set_password('admin')
     user.save()
     return user
Beispiel #39
0
def createuser(email, password, superuser, no_password, no_input):
    "Create a new user."
    if not no_input:
        if not email:
            email = _get_email()

        if not (password or no_password):
            password = _get_password()

        if superuser is None:
            superuser = _get_superuser()

    if superuser is None:
        superuser = False

    if not email:
        raise click.ClickException('Invalid or missing email address.')

    # TODO(mattrobenolt): Accept password over stdin?
    if not no_password and not password:
        raise click.ClickException(
            'No password set and --no-password not passed.')

    from sentry import roles
    from sentry.models import User
    from django.conf import settings

    user = User(
        email=email,
        username=email,
        is_superuser=superuser,
        is_staff=superuser,
        is_active=True,
    )

    if password:
        user.set_password(password)

    user.save()

    click.echo('User created: %s' % (email, ))

    # TODO(dcramer): kill this when we improve flows
    if settings.SENTRY_SINGLE_ORGANIZATION:
        from sentry.models import Organization, OrganizationMember
        org = Organization.get_default()
        if superuser:
            role = roles.get_top_dog().id
        else:
            role = org.default_role
        OrganizationMember.objects.create(
            organization=org,
            user=user,
            role=role,
        )
        click.echo('Added to organization: %s' % (org.slug, ))
Beispiel #40
0
 def get(self, request: Request) -> Response:
     organization = Organization(slug="myorg")
     user = User(id=1235, name="Hello There")
     incident = Incident(id=2,
                         identifier=123,
                         organization=organization,
                         title="Something broke")
     activity = IncidentActivity(incident=incident,
                                 user=user,
                                 type=IncidentActivityType.COMMENT.value,
                                 comment="hi")
     email = generate_incident_activity_email(activity, user)
     return MailPreview(html_template=email.html_template,
                        text_template=email.template,
                        context=email.context).render(request)
Beispiel #41
0
    def test_by_user(self):
        user = User(email="*****@*****.**")
        for n in range(5):
            assert not ratelimits.for_organization_member_invite(
                Organization(id=randint(0, 100000)),
                f"{randint(0, 1000000)}@example.com",
                user=user,
                config=RELAXED_CONFIG,
            )

        assert ratelimits.for_organization_member_invite(
            Organization(id=1),
            "*****@*****.**",
            user=user,
            config=RELAXED_CONFIG)
Beispiel #42
0
    def create_user(self, email, **kwargs):
        kwargs.setdefault('username', email)
        kwargs.setdefault('is_staff', True)
        kwargs.setdefault('is_superuser', True)

        user = User(email=email, **kwargs)
        user.set_password('admin')
        user.save()

        return user
Beispiel #43
0
def test_is_active_superuser():
    request = HttpRequest()
    request.META['REMOTE_ADDR'] = '10.0.0.1'

    with override_settings(INTERNAL_IPS=()):
        assert is_active_superuser(request) is False
        request.user = User()
        assert is_active_superuser(request) is False
        request.user.is_superuser = True
        assert is_active_superuser(request) is True

    with override_settings(INTERNAL_IPS=('127.0.0.1', )):
        assert is_active_superuser(request) is False

    with override_settings(INTERNAL_IPS=('10.0.0.1', )):
        assert is_active_superuser(request) is True
#!/srv/sentry/application/current/bin/python
{% from "sentry/map.jinja" import sentry with context %}

from sentry.utils.runner import configure
configure()

from sentry.models import Team, Project, ProjectKey, User, Organization

user = User()
user.username = '******'
user.email = '{{sentry.bootstrap.email}}'
user.is_superuser = True
user.set_password('{{sentry.bootstrap.password}}')
user.save()

organization = Organization()
organization.name = '{{sentry.bootstrap.organization}}'
organization.owner = user
organization.save()

team = Team()
team.organization = organization
team.name = '{{sentry.bootstrap.team}}'
team.owner = user
team.save()

project = Project()
project.organization = organization
project.team = team
project.owner = user
project.name = '{{sentry.bootstrap.project}}'
Beispiel #45
0
from sentry.utils.runner import configure
configure()

from sentry.models import Team, Project, ProjectKey, User, Organization

user = User()
user.username = '******'
user.email = 'admin@localhost'
user.is_superuser = True
user.set_password('admin')
user.save()

organization = Organization()
organization.name = 'MyOrg'
organization.owner = user
organization.save()

team = Team()
team.name = 'Sentry'
team.organization = organization
team.owner = user
team.save()

project = Project()
project.team = team
project.name = 'Default'
project.organization = organization
project.save()

f = open('dsn', 'wb')
key = ProjectKey.objects.filter(project=project)[0]
Based on example code from: 'https://docs.sentry.io/server/faq/'

"""

# Bootstrap the Sentry environment
from sentry.models import Organization, OrganizationMember, \
    OrganizationMemberTeam, Project, ProjectKey, Team, User
from sentry.utils.runner import configure

configure()


# Make an assumption that if 'admin' -User exists Sentry has been initialized
if not User.objects.filter(username='******').exists():
    user = User()
    user.username = '******'
    user.email = '*****@*****.**'
    user.is_superuser = True
    user.set_password('admin')
    user.save()

    organization = Organization.objects.filter(slug='sentry')[0]

    team = Team()
    team.name = 'COD'
    team.organization = organization
    team.save()

    project = Project()
    project.team = team
Beispiel #47
0
 def test_requires_password_on_valid_accounts(self):
     user = User()
     user.set_password('foo')
     form = RemoveProjectForm(user=user, project_list=[])
     self.assertIn('password', form.fields)
Beispiel #48
0
 def nobody(self):
     user = User(username="******", email="nobody@localhost")
     user.set_password('nobody')
     user.save()
     return user
#!/usr/bin/env python

import sys

# Bootstrap the Sentry environment
from sentry.utils.runner import configure
configure()

# Add default superuser
from sentry.models import User

user = User()
user.username = sys.argv[1]
user.email = sys.argv[2]
user.is_superuser = True
user.set_password(sys.argv[3])
user.save()
Beispiel #50
0
 def test_requires_password_on_valid_accounts(self):
     user = User()
     user.set_password('foo')
     form = AccountSettingsForm(user=user)
     self.assertIn('old_password', form.fields)
Beispiel #51
0
 def setUp(self):
     self.user = User(username="******", email="*****@*****.**")
     self.user.set_password("bar")
     self.user.save()
Beispiel #52
0
def createuser(email, password, superuser, no_password, no_input):
    "Create a new user."
    if not no_input:
        if not email:
            email = _get_email()

        if not (password or no_password):
            password = _get_password()

        if superuser is None:
            superuser = _get_superuser()

    if superuser is None:
        superuser = False

    if not email:
        raise click.ClickException('Invalid or missing email address.')

    # TODO(mattrobenolt): Accept password over stdin?
    if not no_password and not password:
        raise click.ClickException('No password set and --no-password not passed.')

    from sentry import roles
    from sentry.models import User
    from django.conf import settings

    user = User(
        email=email,
        username=email,
        is_superuser=superuser,
        is_staff=superuser,
        is_active=True,
    )

    if password:
        user.set_password(password)

    user.save()

    click.echo('User created: %s' % (email, ))

    # TODO(dcramer): kill this when we improve flows
    if settings.SENTRY_SINGLE_ORGANIZATION:
        from sentry.models import (Organization, OrganizationMember, OrganizationMemberTeam, Team)

        org = Organization.get_default()
        if superuser:
            role = roles.get_top_dog().id
        else:
            role = org.default_role
        member = OrganizationMember.objects.create(
            organization=org,
            user=user,
            role=role,
        )

        # if we've only got a single team let's go ahead and give
        # access to that team as its likely the desired outcome
        teams = list(Team.objects.filter(organization=org)[0:2])
        if len(teams) == 1:
            OrganizationMemberTeam.objects.create(
                team=teams[0],
                organizationmember=member,
            )
        click.echo('Added to organization: %s' % (org.slug, ))
Beispiel #53
0
    def owner(self):
        user = User(username="******", email="owner@localhost")
        user.set_password('owner')
        user.save()

        return user
Beispiel #54
0
 def admin(self):
     user = User(username="******", email="admin@localhost", is_staff=True, is_superuser=True)
     user.set_password('admin')
     user.save()
     return user