mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Refactor "theme" selection
This commit is contained in:
parent
0186d23563
commit
c63a061cf3
@ -82,9 +82,9 @@ settings_urls = [
|
|||||||
url(r'^i18n/?', include('django.conf.urls.i18n')),
|
url(r'^i18n/?', include('django.conf.urls.i18n')),
|
||||||
|
|
||||||
url(r'^appearance/?', AppearanceSelectView.as_view(), name='settings-appearance'),
|
url(r'^appearance/?', AppearanceSelectView.as_view(), name='settings-appearance'),
|
||||||
|
url(r'^currencies-refresh/', CurrencyRefreshView.as_view(), name='settings-currencies-refresh'),
|
||||||
|
|
||||||
url(r'^category/', SettingCategorySelectView.as_view(), name='settings-category'),
|
url(r'^category/', SettingCategorySelectView.as_view(), name='settings-category'),
|
||||||
url(r'^currencies-refresh/', CurrencyRefreshView.as_view(), name='settings-currencies-refresh'),
|
|
||||||
|
|
||||||
url(r'^(?P<pk>\d+)/edit/user', UserSettingEdit.as_view(), name='user-setting-edit'),
|
url(r'^(?P<pk>\d+)/edit/user', UserSettingEdit.as_view(), name='user-setting-edit'),
|
||||||
url(r'^(?P<pk>\d+)/edit/', SettingEdit.as_view(), name='setting-edit'),
|
url(r'^(?P<pk>\d+)/edit/', SettingEdit.as_view(), name='setting-edit'),
|
||||||
|
@ -821,13 +821,9 @@ class CurrencyRefreshView(RedirectView):
|
|||||||
return redirect(reverse_lazy('settings'))
|
return redirect(reverse_lazy('settings'))
|
||||||
|
|
||||||
|
|
||||||
class AppearanceSelectView(FormView):
|
class AppearanceSelectView(RedirectView):
|
||||||
""" View for selecting a color theme """
|
""" View for selecting a color theme """
|
||||||
|
|
||||||
form_class = ColorThemeSelectForm
|
|
||||||
success_url = reverse_lazy('settings-appearance')
|
|
||||||
template_name = "InvenTree/settings/appearance.html"
|
|
||||||
|
|
||||||
def get_user_theme(self):
|
def get_user_theme(self):
|
||||||
""" Get current user color theme """
|
""" Get current user color theme """
|
||||||
try:
|
try:
|
||||||
@ -837,40 +833,10 @@ class AppearanceSelectView(FormView):
|
|||||||
|
|
||||||
return user_theme
|
return user_theme
|
||||||
|
|
||||||
def get_initial(self):
|
|
||||||
""" Select current user color theme as initial choice """
|
|
||||||
|
|
||||||
initial = super(AppearanceSelectView, self).get_initial()
|
|
||||||
|
|
||||||
user_theme = self.get_user_theme()
|
|
||||||
if user_theme:
|
|
||||||
initial['name'] = user_theme.name
|
|
||||||
return initial
|
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
|
||||||
""" Check if current color theme exists, else display alert box """
|
|
||||||
|
|
||||||
context = {}
|
|
||||||
|
|
||||||
form = self.get_form()
|
|
||||||
context['form'] = form
|
|
||||||
|
|
||||||
user_theme = self.get_user_theme()
|
|
||||||
if user_theme:
|
|
||||||
# Check color theme is a valid choice
|
|
||||||
if not ColorTheme.is_valid_choice(user_theme):
|
|
||||||
user_color_theme_name = user_theme.name
|
|
||||||
if not user_color_theme_name:
|
|
||||||
user_color_theme_name = 'default'
|
|
||||||
|
|
||||||
context['invalid_color_theme'] = user_color_theme_name
|
|
||||||
|
|
||||||
return self.render_to_response(context)
|
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
""" Save user color theme selection """
|
""" Save user color theme selection """
|
||||||
|
|
||||||
form = self.get_form()
|
theme = request.POST.get('theme', None)
|
||||||
|
|
||||||
# Get current user theme
|
# Get current user theme
|
||||||
user_theme = self.get_user_theme()
|
user_theme = self.get_user_theme()
|
||||||
@ -880,20 +846,10 @@ class AppearanceSelectView(FormView):
|
|||||||
user_theme = ColorTheme()
|
user_theme = ColorTheme()
|
||||||
user_theme.user = request.user
|
user_theme.user = request.user
|
||||||
|
|
||||||
if form.is_valid():
|
user_theme.name = theme
|
||||||
theme_selected = form.cleaned_data['name']
|
user_theme.save()
|
||||||
|
|
||||||
# Set color theme to form selection
|
return redirect(reverse_lazy('settings'))
|
||||||
user_theme.name = theme_selected
|
|
||||||
user_theme.save()
|
|
||||||
|
|
||||||
return self.form_valid(form)
|
|
||||||
else:
|
|
||||||
# Set color theme to default
|
|
||||||
user_theme.name = ColorTheme.default_color_theme[0]
|
|
||||||
user_theme.save()
|
|
||||||
|
|
||||||
return self.form_invalid(form)
|
|
||||||
|
|
||||||
|
|
||||||
class SettingCategorySelectView(FormView):
|
class SettingCategorySelectView(FormView):
|
||||||
|
@ -232,10 +232,15 @@ def get_available_themes(*args, **kwargs):
|
|||||||
Return the available theme choices
|
Return the available theme choices
|
||||||
"""
|
"""
|
||||||
|
|
||||||
print("available:")
|
themes = []
|
||||||
print(ColorTheme.get_color_themes_choices())
|
|
||||||
|
|
||||||
return ColorTheme.get_color_themes_choices()
|
for key, name in ColorTheme.get_color_themes_choices():
|
||||||
|
themes.append({
|
||||||
|
'key': key,
|
||||||
|
'name': name
|
||||||
|
})
|
||||||
|
|
||||||
|
return themes
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
{% extends "panel.html" %}
|
|
||||||
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block label %}appearance{% endblock %}
|
|
||||||
|
|
||||||
{% block heading %}
|
|
||||||
{% trans "Appearance" %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<div class='row'>
|
|
||||||
<div class='col-sm-6'>
|
|
||||||
<h4>{% trans "Color Themes" %}</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<form action="{% url 'settings-appearance' %}" method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{% load crispy_forms_tags %}
|
|
||||||
{% crispy form %}
|
|
||||||
</form>
|
|
||||||
|
|
||||||
{% if invalid_color_theme %}
|
|
||||||
<div class="alert alert-danger alert-block" role="alert" style="display: inline-block;">
|
|
||||||
{% blocktrans %}
|
|
||||||
The CSS sheet "{{invalid_color_theme}}.css" for the currently selected color theme was not found.<br>
|
|
||||||
Please select another color theme :)
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class='row'>
|
|
||||||
<div class='col-sm-6'>
|
|
||||||
<h4>{% trans "Language" %}</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class='panel-heading'>
|
|
||||||
<h4>{% trans "Language Settings" %}</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
|
|
||||||
<input name="next" type="hidden" value="{% url 'settings-appearance' %}">
|
|
||||||
<div class="col-sm-6" style="width: 200px;"><div id="div_id_name" class="form-group"><div class="controls ">
|
|
||||||
<select name="language" class="select form-control">
|
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
|
||||||
{% get_available_languages as LANGUAGES %}
|
|
||||||
{% get_language_info_list for LANGUAGES as languages %}
|
|
||||||
{% for language in languages %}
|
|
||||||
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
|
|
||||||
{{ language.name_local }} ({{ language.code }})
|
|
||||||
</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div></div></div>
|
|
||||||
<div class="col-sm-6" style="width: auto;">
|
|
||||||
<input type="submit" value="{% trans 'Set Language' %}" class="btn btn btn-primary">
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
@ -44,14 +44,24 @@
|
|||||||
|
|
||||||
<div class='row'>
|
<div class='row'>
|
||||||
|
|
||||||
<form action='' method='post'>
|
<form action='{% url "settings-appearance" %}' method='post'>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input name='next' type='hidden' value='{% url "settings" %}'>
|
<input name='next' type='hidden' value='{% url "settings" %}'>
|
||||||
<select name='theme' class='select form-control'>
|
<div class="col-sm-6" style="width: 200px;">
|
||||||
{% for theme in get_available_themes %}
|
<div id="div_id_themes" class="form-group">
|
||||||
{{ theme }}
|
<div class="controls ">
|
||||||
{% endfor %}
|
<select name='theme' class='select form-control'>
|
||||||
</select>
|
{% get_available_themes as themes %}
|
||||||
|
{% for theme in themes %}
|
||||||
|
<option value='{{ theme.key }}'>{{ theme.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6" style="width: auto;">
|
||||||
|
<input type="submit" value="{% trans 'Set Theme' %}" class="btn btn btn-primary">
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -64,7 +74,7 @@
|
|||||||
<form action="{% url 'set_language' %}" method="post">
|
<form action="{% url 'set_language' %}" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input name="next" type="hidden" value="{% url 'settings' %}">
|
<input name="next" type="hidden" value="{% url 'settings' %}">
|
||||||
<div class="col-sm-6" style="width: 200px;"><div id="div_id_name" class="form-group"><div class="controls ">
|
<div class="col-sm-6" style="width: 200px;"><div id="div_id_language" class="form-group"><div class="controls ">
|
||||||
<select name="language" class="select form-control">
|
<select name="language" class="select form-control">
|
||||||
{% get_current_language as LANGUAGE_CODE %}
|
{% get_current_language as LANGUAGE_CODE %}
|
||||||
{% get_available_languages as LANGUAGES %}
|
{% get_available_languages as LANGUAGES %}
|
||||||
|
Loading…
Reference in New Issue
Block a user