Exemple #1
0
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])
        })
Exemple #2
0
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])
        })
Exemple #3
0
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]),
        },
    )