本文整理汇总了Python中sentry.features.has函数的典型用法代码示例。如果您正苦于以下问题:Python has函数的具体用法?Python has怎么用?Python has使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了has函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get
def get(self, request, organization):
has_catchall = features.has('organizations:internal-catchall',
organization,
actor=request.user)
has_github_apps = features.has('organizations:github-apps',
organization,
actor=request.user)
providers = []
for provider in integrations.all():
internal_integrations = {
i for i in settings.SENTRY_INTERNAL_INTEGRATIONS if i != 'github' or not has_github_apps}
if not has_catchall and provider.key in internal_integrations:
continue
providers.append(provider)
providers.sort(key=lambda i: i.key)
serialized = serialize(
providers,
organization=organization,
serializer=IntegrationProviderSerializer(),
)
return Response({'providers': serialized})
开发者ID:binlee1990,项目名称:sentry,代码行数:26,代码来源:organization_config_integrations.py
示例2: get_react_config
def get_react_config(context):
if 'request' in context:
user = context['request'].user
else:
user = None
if user:
user = extract_lazy_object(user)
enabled_features = []
if features.has('organizations:create', actor=user):
enabled_features.append('organizations:create')
if features.has('auth:register', actor=user):
enabled_features.append('auth:register')
context = {
'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION,
'urlPrefix': settings.SENTRY_URL_PREFIX,
'version': _get_version_info(),
'features': enabled_features,
'mediaUrl': reverse('sentry-media', args=['sentry', '']),
}
if user and user.is_authenticated():
context.update({
'isAuthenticated': True,
'user': serialize(user, user),
})
else:
context.update({
'isAuthenticated': False,
'user': None,
})
return mark_safe(json.dumps(context))
开发者ID:carriercomm,项目名称:sentry-1,代码行数:33,代码来源:sentry_react.py
示例3: serialize
def serialize(self, obj, attrs, user):
from sentry import features
from sentry.app import env
from sentry.api.serializers.models.team import TeamWithProjectsSerializer
team_list = list(Team.objects.filter(organization=obj, status=TeamStatus.VISIBLE))
feature_list = []
if features.has("organizations:events", obj, actor=user):
feature_list.append("events")
if features.has("organizations:sso", obj, actor=user):
feature_list.append("sso")
if getattr(obj.flags, "allow_joinleave"):
feature_list.append("open-membership")
context = super(DetailedOrganizationSerializer, self).serialize(obj, attrs, user)
context["quota"] = {
"maxRate": quotas.get_organization_quota(obj),
"projectLimit": int(
OrganizationOption.objects.get_value(organization=obj, key="sentry:project-rate-limit", default=100)
),
}
context["teams"] = serialize(team_list, user, TeamWithProjectsSerializer())
if env.request:
context["access"] = access.from_request(env.request, obj).scopes
else:
context["access"] = access.from_user(user, obj).scopes
context["features"] = feature_list
context["pendingAccessRequests"] = OrganizationAccessRequest.objects.filter(team__organization=obj).count()
return context
开发者ID:simudream,项目名称:sentry,代码行数:31,代码来源:organization.py
示例4: handle
def handle(self, request):
if request.user.is_authenticated():
return self.redirect(get_login_redirect(request))
form = AuthenticationForm(request, request.POST or None, captcha=bool(request.session.get("needs_captcha")))
if form.is_valid():
login(request, form.get_user())
request.session.pop("needs_captcha", None)
return self.redirect(get_login_redirect(request))
elif request.POST and not request.session.get("needs_captcha"):
request.session["needs_captcha"] = 1
form = AuthenticationForm(request, request.POST or None, captcha=True)
form.errors.pop("captcha", None)
request.session.set_test_cookie()
context = {
"form": form,
"next": request.session.get("_next"),
"CAN_REGISTER": features.has("auth:register") or request.session.get("can_register"),
"AUTH_PROVIDERS": get_auth_providers(),
"SOCIAL_AUTH_CREATE_USERS": features.has("social-auth:register"),
}
return self.respond("sentry/login.html", context)
开发者ID:Juraldinio,项目名称:sentry,代码行数:27,代码来源:auth_login.py
示例5: rule_notify
def rule_notify(self, event, futures):
rules = []
for future in futures:
rules.append(future.rule)
if not future.kwargs:
continue
raise NotImplementedError('The default behavior for notification de-duplication does not support args')
if hasattr(self, 'notify_digest'):
project = event.group.project
# If digest delivery is disabled, we still need to send a
# notification -- we also need to check rate limits, since
# ``should_notify`` skips this step if the plugin supports digests.
if not features.has('projects:digests:deliver', project):
if self.__is_rate_limited(event.group, event):
logger = logging.getLogger('sentry.plugins.{0}'.format(self.get_conf_key()))
logger.info('Notification for project %r dropped due to rate limiting', project)
return
notification = Notification(event=event, rules=rules)
self.notify(notification)
if features.has('projects:digests:store', project):
key = unsplit_key(self, event.group.project)
if digests.add(key, event_to_record(event, rules)):
deliver_digest.delay(key)
else:
notification = Notification(event=event, rules=rules)
self.notify(notification)
开发者ID:haojiang1,项目名称:sentry,代码行数:31,代码来源:notify.py
示例6: get
def get(self, request, group):
has_issue_basic = features.has('organizations:integrations-issue-basic',
group.organization,
actor=request.user)
has_issue_sync = features.has('organizations:integrations-issue-sync',
group.organization,
actor=request.user)
if not (has_issue_basic or has_issue_sync):
return self.respond([])
providers = [
i.key for i in integrations.all() if i.has_feature(IntegrationFeatures.ISSUE_BASIC) or i.has_feature(IntegrationFeatures.ISSUE_SYNC)
]
return self.paginate(
queryset=Integration.objects.filter(
organizations=group.organization,
provider__in=providers,
),
request=request,
order_by='name',
on_results=lambda x: serialize(x, request.user, IntegrationIssueSerializer(group)),
paginator_cls=OffsetPaginator,
)
开发者ID:Kayle009,项目名称:sentry,代码行数:25,代码来源:group_integrations.py
示例7: register
def register(request):
from django.conf import settings
if not (features.has('auth:register') or request.session.get('can_register')):
return HttpResponseRedirect(reverse('sentry'))
form = RegistrationForm(request.POST or None,
captcha=bool(request.session.get('needs_captcha')))
if form.is_valid():
user = form.save()
# can_register should only allow a single registration
request.session.pop('can_register', None)
# HACK: grab whatever the first backend is and assume it works
user.backend = settings.AUTHENTICATION_BACKENDS[0]
login_user(request, user)
request.session.pop('needs_captcha', None)
return login_redirect(request)
elif request.POST and not request.session.get('needs_captcha'):
request.session['needs_captcha'] = 1
form = RegistrationForm(request.POST or None, captcha=True)
form.errors.pop('captcha', None)
return render_to_response('sentry/register.html', {
'form': form,
'AUTH_PROVIDERS': get_auth_providers(),
'SOCIAL_AUTH_CREATE_USERS': features.has('social-auth:register'),
}, request)
开发者ID:andrei1610399,项目名称:sentry,代码行数:33,代码来源:accounts.py
示例8: handle
def handle(self, request, organization):
try:
auth_provider = AuthProvider.objects.get(
organization=organization,
)
except AuthProvider.DoesNotExist:
pass
else:
provider = auth_provider.get_provider()
requires_feature = provider.required_feature
# Provider is not enabled
# Allow superusers to edit and disable SSO for orgs that
# downgrade plans and can no longer access the feature
if requires_feature and not features.has(
requires_feature,
organization,
actor=request.user
) and not is_active_superuser(request):
home_url = organization.get_url()
messages.add_message(request, messages.ERROR, ERR_NO_SSO)
return HttpResponseRedirect(home_url)
return self.handle_existing_provider(
request=request,
organization=organization,
auth_provider=auth_provider,
)
if request.method == 'POST':
provider_key = request.POST.get('provider')
if not manager.exists(provider_key):
raise ValueError(u'Provider not found: {}'.format(provider_key))
helper = AuthHelper(
request=request,
organization=organization,
provider_key=provider_key,
flow=AuthHelper.FLOW_SETUP_PROVIDER,
)
feature = helper.provider.required_feature
if feature and not features.has(feature, organization, actor=request.user):
return HttpResponse('Provider is not enabled', status=401)
if request.POST.get('init'):
helper.init_pipeline()
if not helper.pipeline_is_valid():
return helper.error('Something unexpected happened during authentication.')
# render first time setup view
return helper.current_step()
# Otherwise user is in bad state since frontend/react should handle this case
return HttpResponseRedirect(
organization.get_url()
)
开发者ID:yaoqi,项目名称:sentry,代码行数:59,代码来源:organization_auth_settings.py
示例9: get_react_config
def get_react_config(context):
if 'request' in context:
user = context['request'].user
messages = get_messages(context['request'])
try:
is_superuser = context['request'].is_superuser()
except AttributeError:
is_superuser = False
else:
user = None
messages = []
is_superuser = False
if user:
user = extract_lazy_object(user)
enabled_features = []
if features.has('organizations:create', actor=user):
enabled_features.append('organizations:create')
if features.has('auth:register', actor=user):
enabled_features.append('auth:register')
version_info = _get_version_info()
needs_upgrade = False
if is_superuser:
needs_upgrade = _needs_upgrade()
context = {
'singleOrganization': settings.SENTRY_SINGLE_ORGANIZATION,
'supportEmail': get_support_mail(),
'urlPrefix': options.get('system.url-prefix'),
'version': version_info,
'features': enabled_features,
'mediaUrl': get_asset_url('sentry', ''),
'needsUpgrade': needs_upgrade,
'dsn': _get_public_dsn(),
'statuspage': _get_statuspage(),
'messages': [{
'message': msg.message,
'level': msg.tags,
} for msg in messages],
'isOnPremise': settings.SENTRY_ONPREMISE,
}
if user and user.is_authenticated():
context.update({
'isAuthenticated': True,
'user': serialize(user, user),
})
context['user']['isSuperuser'] = is_superuser
else:
context.update({
'isAuthenticated': False,
'user': None,
})
return json.dumps_htmlsafe(context)
开发者ID:ForkRepo,项目名称:sentry,代码行数:57,代码来源:sentry_react.py
示例10: serialize
def serialize(self, obj, attrs, user):
from sentry import features
from sentry.app import env
from sentry.api.serializers.models.team import TeamWithProjectsSerializer
team_list = list(Team.objects.filter(
organization=obj,
status=TeamStatus.VISIBLE,
))
for team in team_list:
team._organization_cache = obj
onboarding_tasks = list(OrganizationOnboardingTask.objects.filter(
organization=obj,
).select_related('user'))
feature_list = []
if features.has('organizations:sso', obj, actor=user):
feature_list.append('sso')
if features.has('organizations:callsigns', obj, actor=user):
feature_list.append('callsigns')
if features.has('organizations:new-tracebacks', obj, actor=user):
feature_list.append('new-tracebacks')
if features.has('organizations:onboarding', obj, actor=user) and \
not OrganizationOption.objects.filter(organization=obj).exists():
feature_list.append('onboarding')
if features.has('organizations:api-keys', obj, actor=user) or \
ApiKey.objects.filter(organization=obj).exists():
feature_list.append('api-keys')
if getattr(obj.flags, 'allow_joinleave'):
feature_list.append('open-membership')
if not getattr(obj.flags, 'disable_shared_issues'):
feature_list.append('shared-issues')
context = super(DetailedOrganizationSerializer, self).serialize(
obj, attrs, user)
context['quota'] = {
'maxRate': quotas.get_organization_quota(obj),
'projectLimit': int(OrganizationOption.objects.get_value(
organization=obj,
key='sentry:project-rate-limit',
default=100,
)),
}
context['teams'] = serialize(
team_list, user, TeamWithProjectsSerializer())
if env.request:
context['access'] = access.from_request(env.request, obj).scopes
else:
context['access'] = access.from_user(user, obj).scopes
context['features'] = feature_list
context['pendingAccessRequests'] = OrganizationAccessRequest.objects.filter(
team__organization=obj,
).count()
context['onboardingTasks'] = serialize(onboarding_tasks, user, OnboardingTasksSerializer())
return context
开发者ID:E-LLP,项目名称:sentry,代码行数:57,代码来源:organization.py
示例11: _has_issue_feature
def _has_issue_feature(self, organization, user):
has_issue_basic = features.has('organizations:integrations-issue-basic',
organization,
actor=user)
has_issue_sync = features.has('organizations:integrations-issue-sync',
organization,
actor=user)
return has_issue_sync or has_issue_basic
开发者ID:Kayle009,项目名称:sentry,代码行数:10,代码来源:group_integration_details.py
示例12: handle
def handle(self, request, organization):
if not features.has('organizations:sso-basic', organization, actor=request.user):
messages.add_message(
request,
messages.ERROR,
ERR_NO_SSO,
)
return HttpResponseRedirect(
reverse('sentry-organization-home', args=[organization.slug])
)
try:
auth_provider = AuthProvider.objects.get(
organization=organization,
)
except AuthProvider.DoesNotExist:
pass
else:
return self.handle_existing_provider(
request=request,
organization=organization,
auth_provider=auth_provider,
)
if request.method == 'POST':
provider_key = request.POST.get('provider')
if not manager.exists(provider_key):
raise ValueError(u'Provider not found: {}'.format(provider_key))
helper = AuthHelper(
request=request,
organization=organization,
provider_key=provider_key,
flow=AuthHelper.FLOW_SETUP_PROVIDER,
)
feature = helper.provider.required_feature
if feature and not features.has(feature, organization, actor=request.user):
return HttpResponse('Provider is not enabled', status=401)
if request.POST.get('init'):
helper.init_pipeline()
if not helper.pipeline_is_valid():
return helper.error('Something unexpected happened during authentication.')
# render first time setup view
return helper.current_step()
# Otherwise user is in bad state since frontend/react should handle this case
return HttpResponseRedirect(
reverse('sentry-organization-home', args=[organization.slug])
)
开发者ID:alexandrul,项目名称:sentry,代码行数:53,代码来源:organization_auth_settings.py
示例13: serialize
def serialize(self, obj, attrs, user):
from sentry import features
from sentry.api.serializers.models.team import TeamWithProjectsSerializer
team_list = list(Team.objects.filter(
organization=obj,
status=TeamStatus.VISIBLE,
))
feature_list = []
if features.has('organizations:sso', obj, actor=user):
feature_list.append('sso')
if getattr(obj.flags, 'allow_joinleave'):
feature_list.append('open-membership')
context = super(DetailedOrganizationSerializer, self).serialize(
obj, attrs, user)
context['teams'] = serialize(
team_list, user, TeamWithProjectsSerializer())
context['access'] = access.from_user(user, obj).scopes
context['features'] = feature_list
context['pendingAccessRequests'] = OrganizationAccessRequest.objects.filter(
team__organization=obj,
).count()
return context
开发者ID:noah-lee,项目名称:sentry,代码行数:26,代码来源:organization.py
示例14: get
def get(self, request, installation):
if not features.has('organizations:internal-catchall',
installation.organization,
actor=request.user):
return Response(status=404)
return Response(serialize(installation))
开发者ID:Kayle009,项目名称:sentry,代码行数:7,代码来源:sentry_app_installation_details.py
示例15: handle_basic_auth
def handle_basic_auth(self, request, organization):
can_register = features.has('auth:register') or request.session.get('can_register')
op = request.POST.get('op')
login_form = self.get_login_form(request)
if can_register:
register_form = self.get_register_form(request)
else:
register_form = None
if can_register and register_form.is_valid():
user = register_form.save()
defaults = {
'has_global_access': True,
'type': OrganizationMemberType.MEMBER,
}
organization.member_set.create(
user=user,
**defaults
)
# HACK: grab whatever the first backend is and assume it works
user.backend = settings.AUTHENTICATION_BACKENDS[0]
login(request, user)
# can_register should only allow a single registration
request.session.pop('can_register', None)
request.session.pop('needs_captcha', None)
return self.redirect(get_login_redirect(request))
elif login_form.is_valid():
login(request, login_form.get_user())
request.session.pop('needs_captcha', None)
return self.redirect(get_login_redirect(request))
elif request.POST and not request.session.get('needs_captcha'):
request.session['needs_captcha'] = 1
login_form = self.get_login_form(request)
login_form.errors.pop('captcha', None)
if can_register:
register_form = self.get_register_form(request)
register_form.errors.pop('captcha', None)
request.session.set_test_cookie()
context = {
'op': op or 'login',
'login_form': login_form,
'register_form': register_form,
'organization': organization,
'CAN_REGISTER': can_register,
}
return self.respond('sentry/organization-login.html', context)
开发者ID:Batterfii,项目名称:sentry,代码行数:60,代码来源:auth_organization_login.py
示例16: handle_basic_auth
def handle_basic_auth(self, request, organization):
form = SimplifiedAuthenticationForm(
request, request.POST or None,
captcha=bool(request.session.get('needs_captcha')),
)
if form.is_valid():
login(request, form.get_user())
request.session.pop('needs_captcha', None)
return self.redirect(get_login_redirect(request))
elif request.POST and not request.session.get('needs_captcha'):
request.session['needs_captcha'] = 1
form = AuthenticationForm(request, request.POST or None, captcha=True)
form.errors.pop('captcha', None)
context = {
'form': form,
'CAN_REGISTER': features.has('auth:register') or request.session.get('can_register'),
'organization': organization,
}
return self.respond('sentry/organization-login.html', context)
开发者ID:DZTPY,项目名称:sentry,代码行数:25,代码来源:auth_organization_login.py
示例17: handle
def handle(self, request, organization, project):
form = self.get_form(request)
if form.is_valid():
client.delete(
'/projects/{}/{}/'.format(organization.slug, project.slug),
request=request,
is_sudo=True
)
has_new_teams = features.has(
'organizations:new-teams',
organization,
actor=request.user,
)
project_name = (project.slug if has_new_teams else project.name).encode('utf-8')
messages.add_message(
request, messages.SUCCESS,
_(u'The project %r was scheduled for deletion.') % (project_name, )
)
return HttpResponseRedirect(
reverse('sentry-organization-home', args=[organization.slug])
)
context = {
'form': form,
}
return self.respond('sentry/projects/remove.html', context)
开发者ID:hosmelq,项目名称:sentry,代码行数:30,代码来源:remove_project.py
示例18: post
def post(self, request, organization):
"""
Create a saved query
"""
if not features.has('organizations:discover', organization, actor=request.user):
return self.respond(status=404)
serializer = DiscoverSavedQuerySerializer(data=request.DATA, context={
'organization': organization,
})
if not serializer.is_valid():
return Response(serializer.errors, status=400)
data = serializer.object
model = DiscoverSavedQuery.objects.create(
organization=organization,
name=data['name'],
query=data['query'],
created_by=request.user if request.user.is_authenticated() else None,
)
model.set_projects(data['project_ids'])
return Response(serialize(model), status=201)
开发者ID:mjumbewu,项目名称:sentry,代码行数:26,代码来源:organization_discover_saved_queries.py
示例19: handle
def handle(self, request, organization):
if not features.has('organizations:sso', organization, actor=request.user):
messages.add_message(
request, messages.ERROR,
ERR_NO_SSO,
)
return HttpResponseRedirect(reverse('sentry-organization-home', args=[organization.slug]))
try:
auth_provider = AuthProvider.objects.get(
organization=organization,
)
except AuthProvider.DoesNotExist:
pass
else:
return self.handle_existing_provider(
request=request,
organization=organization,
auth_provider=auth_provider,
)
if request.method == 'POST':
provider_key = request.POST.get('provider')
if not manager.exists(provider_key):
raise ValueError('Provider not found: {}'.format(provider_key))
# render first time setup view
return self.handle_provider_setup(request, organization, provider_key)
context = {
'provider_list': [(k, v.name) for k, v in manager],
}
return self.respond('sentry/organization-auth-settings.html', context)
开发者ID:duanshuaimin,项目名称:sentry,代码行数:34,代码来源:organization_auth_settings.py
示例20: put
def put(self, request, sentry_app):
if not features.has('organizations:internal-catchall',
sentry_app.owner,
actor=request.user):
return Response(status=404)
serializer = SentryAppSerializer(data=request.DATA, partial=True)
if serializer.is_valid():
result = serializer.object
updated_app = Updater.run(
sentry_app=sentry_app,
name=result.get('name'),
webhook_url=result.get('webhookUrl'),
redirect_url=result.get('redirectUrl'),
is_alertable=result.get('isAlertable'),
scopes=result.get('scopes'),
events=result.get('events'),
overview=result.get('overview'),
)
return Response(serialize(updated_app, request.user))
return Response(serializer.errors, status=400)
开发者ID:Kayle009,项目名称:sentry,代码行数:26,代码来源:sentry_app_details.py
注:本文中的sentry.features.has函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论