def ajax_permissions(request, locale): locale = get_object_or_404(Locale, code=locale) project_locales = locale.project_locale.available() if request.method == 'POST': locale_form = forms.LocalePermsForm(request.POST, instance=locale, prefix='general', user=request.user) project_locale_form = forms.ProjectLocalePermsFormsSet( request.POST, prefix='project-locale', queryset=project_locales, form_kwargs={'user': request.user}) if locale_form.is_valid() and project_locale_form.is_valid(): locale_form.save() project_locale_form.save() else: errors = locale_form.errors errors.update(project_locale_form.errors_dict) return HttpResponseBadRequest(json.dumps(errors)) else: project_locale_form = forms.ProjectLocalePermsFormsSet( prefix='project-locale', queryset=project_locales, form_kwargs={'user': request.user}) managers = locale.managers_group.user_set.order_by('email') translators = locale.translators_group.user_set.exclude( pk__in=managers).order_by('email') all_users = (User.objects.exclude(pk__in=managers | translators).exclude( email='').order_by('email')) contributors_emails = set( contributor.email for contributor in User.translators.with_translation_counts( None, Q(locale=locale), None)) locale_projects = locale.projects_permissions return render( request, 'teams/includes/permissions.html', { 'locale': locale, 'all_users': all_users, 'contributors_emails': contributors_emails, 'translators': translators, 'managers': managers, 'locale_projects': locale_projects, 'project_locale_form': project_locale_form, 'all_projects_in_translation': all([x[5] for x in locale_projects]) })
def ajax_permissions(request, locale): l = get_object_or_404(Locale, code__iexact=locale) project_locales = l.project_locale.available() if request.method == 'POST': locale_form = forms.LocalePermsForm(request.POST, instance=l, prefix='general') project_locale_form = forms.ProjectLocalePermsFormsSet( request.POST, prefix='project-locale', queryset=project_locales, ) if locale_form.is_valid() and project_locale_form.is_valid(): locale_form.save() project_locale_form.save() else: errors = locale_form.errors errors.update(project_locale_form.errors_dict) return HttpResponseBadRequest(json.dumps(errors)) else: project_locale_form = forms.ProjectLocalePermsFormsSet( prefix='project-locale', queryset=project_locales, ) managers = l.managers_group.user_set.all() translators = l.translators_group.user_set.exclude(pk__in=managers).all() all_users = User.objects.exclude(pk__in=managers).exclude( pk__in=translators).exclude(email='') contributors = User.translators.filter(translation__locale=l).values_list( 'email', flat=True).distinct() locale_projects = l.projects_permissions return render( request, 'teams/includes/permissions.html', { 'locale': l, 'all_users': all_users, 'contributors': contributors, 'translators': translators, 'managers': managers, 'locale_projects': locale_projects, 'project_locale_form': project_locale_form, 'all_projects_in_translation': all([x[5] for x in locale_projects]) })
def ajax_permissions(request, locale): locale = get_object_or_404(Locale, code=locale) project_locales = locale.project_locale.visible().visible_for(request.user) if request.method == "POST": locale_form = forms.LocalePermsForm(request.POST, instance=locale, prefix="general", user=request.user) project_locale_form = forms.ProjectLocalePermsFormsSet( request.POST, prefix="project-locale", queryset=project_locales, form_kwargs={"user": request.user}, ) if locale_form.is_valid() and project_locale_form.is_valid(): locale_form.save() project_locale_form.save() else: errors = locale_form.errors errors.update(project_locale_form.errors_dict) error_msg = bleach.clean(json.dumps(errors)) return HttpResponseBadRequest(error_msg) else: project_locale_form = forms.ProjectLocalePermsFormsSet( prefix="project-locale", queryset=project_locales, form_kwargs={"user": request.user}, ) managers = locale.managers_group.user_set.order_by("email") translators = locale.translators_group.user_set.exclude( pk__in=managers).order_by("email") all_users = (User.objects.exclude(pk__in=managers | translators).exclude( email="").order_by("email")) contributors_emails = { contributor.email for contributor in users_with_translations_counts( None, Q(locale=locale) & Q(user__isnull=False), None) } locale_projects = locale.projects_permissions(request.user) return render( request, "teams/includes/permissions.html", { "locale": locale, "all_users": all_users, "contributors_emails": contributors_emails, "translators": translators, "managers": managers, "locale_projects": locale_projects, "project_locale_form": project_locale_form, "all_projects_in_translation": all([x[5] for x in locale_projects]), }, )