mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 12:06:44 +00:00
Theme change works but applies to all user
This commit is contained in:
parent
0548bee8ad
commit
2e5ec5d249
@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
|
|||||||
from django import forms
|
from django import forms
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, Field
|
from crispy_forms.layout import Layout, Field
|
||||||
from crispy_forms.bootstrap import PrependedText, AppendedText, PrependedAppendedText
|
from crispy_forms.bootstrap import PrependedText, AppendedText, PrependedAppendedText, StrictButton
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from common.models import Theme
|
from common.models import Theme
|
||||||
|
|
||||||
@ -172,3 +172,15 @@ class ThemeSelectForm(forms.ModelForm):
|
|||||||
fields = [
|
fields = [
|
||||||
'theme'
|
'theme'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ThemeSelectForm, self).__init__(*args, **kwargs)
|
||||||
|
self.helper = FormHelper()
|
||||||
|
# Form rendering
|
||||||
|
self.helper.form_show_labels = False
|
||||||
|
self.helper.form_class = 'form-inline'
|
||||||
|
# self.helper.field_template = 'bootstrap4/layout/inline_field.html'
|
||||||
|
self.helper.layout = Layout(
|
||||||
|
Field('theme'),
|
||||||
|
StrictButton(_('Apply Theme'), css_class='btn btn-primary', type='submit')
|
||||||
|
)
|
@ -564,6 +564,32 @@ class ThemeSelectView(FormView):
|
|||||||
success_url = reverse_lazy('settings-theme')
|
success_url = reverse_lazy('settings-theme')
|
||||||
template_name = "InvenTree/settings/theme.html"
|
template_name = "InvenTree/settings/theme.html"
|
||||||
|
|
||||||
|
def get_initial(self):
|
||||||
|
""" Select user theme """
|
||||||
|
initial = super(ThemeSelectView, self).get_initial()
|
||||||
|
initial['theme'] = Theme.objects.all().get().theme
|
||||||
|
return initial
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
""" Save user color theme """
|
||||||
|
form = self.get_form()
|
||||||
|
if form.is_valid():
|
||||||
|
theme_select = form.cleaned_data['theme']
|
||||||
|
|
||||||
|
try:
|
||||||
|
user_theme = Theme.objects.all().get()
|
||||||
|
except Theme.DoesNotExist:
|
||||||
|
print('No theme selected yet')
|
||||||
|
user_theme = Theme()
|
||||||
|
|
||||||
|
# Set color theme
|
||||||
|
user_theme.theme = theme_select
|
||||||
|
user_theme.save()
|
||||||
|
|
||||||
|
return self.form_valid(form)
|
||||||
|
else:
|
||||||
|
return self.form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
class DatabaseStatsView(AjaxView):
|
class DatabaseStatsView(AjaxView):
|
||||||
""" View for displaying database statistics """
|
""" View for displaying database statistics """
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 3.0.7 on 2020-09-07 16:12
|
# Generated by Django 3.0.7 on 2020-09-07 20:12
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ class Migration(migrations.Migration):
|
|||||||
name='Theme',
|
name='Theme',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('theme', models.IntegerField(choices=[(0, 'Default'), (1, 'Darker')], default=0)),
|
('theme', models.CharField(blank=True, choices=[('', 'Default'), ('-darker', 'Darker')], default='', max_length=20)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -159,12 +159,12 @@ class Currency(models.Model):
|
|||||||
class Theme(models.Model):
|
class Theme(models.Model):
|
||||||
""" Color Theme setting """
|
""" Color Theme setting """
|
||||||
|
|
||||||
class ThemeChoices(models.IntegerChoices):
|
class ThemeChoices(models.TextChoices):
|
||||||
DEFAULT = 0, _('Default')
|
DEFAULT = '', _('Default')
|
||||||
DARKER = 1, _('Darker')
|
DARKER = '-darker', _('Darker')
|
||||||
|
|
||||||
theme = models.IntegerField(choices=ThemeChoices.choices,
|
theme = models.CharField(max_length=20,
|
||||||
default=ThemeChoices.DEFAULT)
|
choices=ThemeChoices.choices,
|
||||||
|
default=ThemeChoices.DEFAULT,
|
||||||
|
blank=True)
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.theme
|
|
||||||
|
@ -3,10 +3,10 @@ over and above the built-in Django tags.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
from InvenTree import version
|
from InvenTree import version, settings
|
||||||
from InvenTree.helpers import decimal2string
|
from InvenTree.helpers import decimal2string
|
||||||
|
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting, Theme
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
@ -88,3 +88,9 @@ def inventree_docs_url(*args, **kwargs):
|
|||||||
@register.simple_tag()
|
@register.simple_tag()
|
||||||
def inventree_setting(key, *args, **kwargs):
|
def inventree_setting(key, *args, **kwargs):
|
||||||
return InvenTreeSetting.get_setting(key)
|
return InvenTreeSetting.get_setting(key)
|
||||||
|
|
||||||
|
|
||||||
|
@register.simple_tag()
|
||||||
|
def get_theme_css():
|
||||||
|
user_theme = Theme.objects.all().get().theme
|
||||||
|
return f'{settings.STATIC_URL}css/inventree' + user_theme + '.css'
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
{% extends "InvenTree/settings/settings.html" %}
|
{% extends "InvenTree/settings/settings.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load inventree_extras %}
|
||||||
|
|
||||||
{% block tabs %}
|
{% block tabs %}
|
||||||
{% include "InvenTree/settings/tabs.html" with tab='theme' %}
|
{% include "InvenTree/settings/tabs.html" with tab='theme' %}
|
||||||
@ -16,9 +18,10 @@
|
|||||||
<div class='col-sm-6'>
|
<div class='col-sm-6'>
|
||||||
<div style='float: left;'>
|
<div style='float: left;'>
|
||||||
<form action="{% url 'settings-theme' %}" method="post">
|
<form action="{% url 'settings-theme' %}" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form }}
|
{% load crispy_forms_tags %}
|
||||||
<input class='btn btn-primary' type="submit" value='Apply Theme'>
|
{% crispy form %}
|
||||||
|
{# <button type='submit' class='btn btn-primary'>{% trans "Apply Theme" %}</button> #}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{% load static %}
|
{% load static %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
{% load inventree_extras %}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
@ -38,7 +39,7 @@
|
|||||||
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
|
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'css/select2-bootstrap.css' %}">
|
<link rel="stylesheet" href="{% static 'css/select2-bootstrap.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'css/bootstrap-toggle.css' %}">
|
<link rel="stylesheet" href="{% static 'css/bootstrap-toggle.css' %}">
|
||||||
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
|
<link rel="stylesheet" href="{% get_theme_css %}">
|
||||||
|
|
||||||
{% block css %}
|
{% block css %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user