Example #1
0
def settings(request):
    """View and edit user settings."""
    if request.method == 'POST':
        locales_form = forms.UserLocalesOrderForm(
            request.POST,
            instance=request.user.profile,
        )
        profile_form = forms.UserProfileForm(
            request.POST,
            instance=request.user,
        )
        user = get_object_or_404(User, username=request.user.username)

        if locales_form.is_valid() and profile_form.is_valid():
            locales_form.save()
            profile_form.save()

            messages.success(request, 'Settings saved.')

            if user.email != request.user.email:
                logout(request)
                return redirect(request.POST.get('return_url', '/'))
    else:
        profile_form = forms.UserProfileForm(instance=request.user)

    selected_locales = list(request.user.profile.sorted_locales)
    available_locales = Locale.objects.exclude(
        pk__in=[l.pk for l in selected_locales])

    default_homepage_locale = Locale(name='Default homepage', code='')
    all_locales = list(Locale.objects.all())
    all_locales.insert(0, default_homepage_locale)

    # Set custom homepage selector value
    custom_homepage = request.user.profile.custom_homepage
    if custom_homepage:
        custom_homepage_locale = (Locale.objects.filter(
            code=custom_homepage).first())
    else:
        custom_homepage_locale = default_homepage_locale

    return render(
        request, 'contributors/settings.html', {
            'selected_locales': selected_locales,
            'available_locales': available_locales,
            'locales': all_locales,
            'locale': custom_homepage_locale,
            'profile_form': profile_form,
        })
Example #2
0
def extract_l20n(project, locale, path, entities=False):
    """Extract .l20n file with path and save or update in DB."""

    parser = L20nParser.L20nParser()

    with codecs.open(path, 'r', 'utf-8') as f:
        structure = parser.parse(f.read())

    comment = ""
    order = 0

    relative_path = get_relative_path(path, locale)
    resource, created = Resource.objects.get_or_create(
        project=project, path=relative_path, format='l20n')

    for obj in structure.body:
        # Entities
        if obj.type == "Entity":

            # Simple
            if obj.value.type == "String":
                key = obj.id.name
                string = obj.value.source

                store_l20n(
                    entities, resource, key, string, comment, locale,
                    order)

                comment = ""
                order += 1

            # Plurals
            elif obj.value.type == "Hash":
                key = obj.id.name
                string_plural = ""
                plural_form = None

                # Get strings
                for item in obj.value.items:
                    if entities:
                        if item.id.name == "one":
                            string = item.value.source

                        elif item.id.name == "many":
                            string_plural = item.value.source

                    else:
                        string = item.value.source
                        idx = Locale.cldr_plural_to_id(item.id.name)
                        plural_form = locale.cldr_plurals_list().index(idx)

                    store_l20n(
                        entities, resource, key, string, comment, locale,
                        order, string_plural, plural_form)

                comment = ""
                order += 1

            # Attributes
            for attr in obj.attrs:
                key = ".".join([obj.id.name, attr.id.name])
                string = attr.value.source

                store_l20n(
                    entities, resource, key, string, comment, locale,
                    order)

                comment = ""
                order += 1

        # Comments
        elif obj.type == "Comment":
            comment = obj.body

    if entities:
        update_entity_count(resource)
    else:
        update_stats(resource, locale)

    log.debug("[" + locale.code + "]: " + path + " saved to DB.")
Example #3
0
def settings(request):
    """View and edit user settings."""
    if request.method == "POST":
        locales_form = forms.UserLocalesOrderForm(
            request.POST, instance=request.user.profile,
        )
        profile_form = forms.UserProfileForm(request.POST, instance=request.user,)
        user = get_object_or_404(User, username=request.user.username)

        if locales_form.is_valid() and profile_form.is_valid():
            locales_form.save()
            profile_form.save()

            messages.success(request, "Settings saved.")

            if user.email != request.user.email:
                logout(request)
                return redirect(request.POST.get("return_url", "/"))
    else:
        profile_form = forms.UserProfileForm(instance=request.user)

    selected_locales = list(request.user.profile.sorted_locales)
    available_locales = Locale.objects.exclude(pk__in=[l.pk for l in selected_locales])

    default_homepage_locale = Locale(name="Default homepage", code="")
    all_locales = list(Locale.objects.all())
    all_locales.insert(0, default_homepage_locale)

    # Set custom homepage selector value
    custom_homepage_locale = request.user.profile.custom_homepage
    if custom_homepage_locale:
        custom_homepage_locale = Locale.objects.filter(
            code=custom_homepage_locale
        ).first()
    else:
        custom_homepage_locale = default_homepage_locale

    default_preferred_source_locale = Locale(name="Default project locale", code="")
    preferred_locales = list(Locale.objects.all())
    preferred_locales.insert(0, default_preferred_source_locale)

    # Set preferred source locale
    preferred_source_locale = request.user.profile.preferred_source_locale
    if preferred_source_locale:
        preferred_source_locale = Locale.objects.filter(
            code=preferred_source_locale
        ).first()
    else:
        preferred_source_locale = default_preferred_source_locale

    return render(
        request,
        "contributors/settings.html",
        {
            "selected_locales": selected_locales,
            "available_locales": available_locales,
            "locales": all_locales,
            "locale": custom_homepage_locale,
            "preferred_locales": preferred_locales,
            "preferred_locale": preferred_source_locale,
            "profile_form": profile_form,
        },
    )