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
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
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
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,))
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
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
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
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
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
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,))
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)
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()
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
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)
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)
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
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)
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)
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
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,))
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") }
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}
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, )
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)
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'] })
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)
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, ))
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' ))
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"], }, )
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})
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
def user(self): user = User(username="******", email="admin@localhost", is_staff=True, is_superuser=True) user.set_password('admin') user.save() return user
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, ))
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)
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)
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}}'
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
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)
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()
def test_requires_password_on_valid_accounts(self): user = User() user.set_password('foo') form = AccountSettingsForm(user=user) self.assertIn('old_password', form.fields)
def setUp(self): self.user = User(username="******", email="*****@*****.**") self.user.set_password("bar") self.user.save()
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, ))
def owner(self): user = User(username="******", email="owner@localhost") user.set_password('owner') user.save() return user
def admin(self): user = User(username="******", email="admin@localhost", is_staff=True, is_superuser=True) user.set_password('admin') user.save() return user