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, })
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.")
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, }, )