views.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import subprocess
  2. from django.contrib import messages
  3. from django.http import HttpResponseRedirect
  4. from django.shortcuts import render
  5. from core import settings
  6. from design_template.forms import ColorsForm, LogoForm
  7. from design_template.utils import handle_uploaded_file
  8. def upload(request):
  9. if request.method == 'POST':
  10. form = LogoForm(request.POST, request.FILES)
  11. if form.is_valid():
  12. settings.NAME_SYSTEM = request.POST.get('namesystem')
  13. handle_uploaded_file(request.FILES.get('logo'))
  14. form.save()
  15. subprocess.run(
  16. ["/root/sharix-open-webapp-base/bin/collectstatic.sh"]
  17. )
  18. messages.success(
  19. request,
  20. "The logo has been uploaded successfully."
  21. )
  22. return HttpResponseRedirect("/admin")
  23. else:
  24. form = LogoForm()
  25. return render(
  26. request,
  27. "admin/upload_logo.html",
  28. {'form': form}
  29. )
  30. def change_colors(request):
  31. if request.method == 'POST':
  32. form = ColorsForm(request.POST)
  33. if form:
  34. btnBg = request.POST.get('btnBg')
  35. btnTxt = request.POST.get('btnTxt')
  36. btnHover = request.POST.get('btnHover')
  37. pillsBg = request.POST.get('pillsBg')
  38. pillsTxt = request.POST.get('pillsTxt')
  39. linksTxt = request.POST.get('linksTxt')
  40. linksHover = request.POST.get('linksHover')
  41. btnSuccessBg = request.POST.get('btnSuccessBg')
  42. btnSuccessTxt = request.POST.get('btnSuccessTxt')
  43. btnSuccessHover = request.POST.get('btnSuccessHover')
  44. btnDangerBg = request.POST.get('btnDangerBg')
  45. btnDangerTxt = request.POST.get('btnDangerTxt')
  46. btnDangerHover = request.POST.get('btnDangerHover')
  47. css = f'''
  48. :root{{
  49. --btn-bg-color: {btnBg};
  50. --btn-txt-color: {btnTxt};
  51. --btn-hover-color: {btnHover};
  52. --pills-bg-color: {pillsBg};
  53. --pills-txt-color: {pillsTxt};
  54. --links-txt-color: {linksTxt};
  55. --links-hover-color: {linksHover};
  56. --btn-success: {btnSuccessBg};
  57. --btn-success-txt: {btnSuccessTxt};
  58. --btn-success-hover: {btnSuccessHover};
  59. --btn-danger: {btnDangerBg};
  60. --btn-danger-txt: {btnDangerTxt};
  61. --btn-danger-hover: {btnDangerHover};
  62. }}
  63. .btn-primary, .btn-outline-primary{{
  64. background-color: var(--btn-bg-color);
  65. color: var(--btn-txt-color);
  66. border-color: var(--btn-bg-color);
  67. }}
  68. .btn-primary:hover, .btn-outline-primary:hover{{
  69. background-color: var(--btn-hover-color);
  70. border-color: var(--btn-hover-color);
  71. }}
  72. .nav-pills .nav-link.active, .nav-pills .show>.nav-link{{
  73. background-color: var(--pills-bg-color);
  74. color: var(--pills-txt-color);
  75. }}
  76. a{{
  77. color: var(--links-txt-color);
  78. }}
  79. a:hover{{
  80. color:var(--links-hover-color)
  81. }}
  82. .nav-link{{
  83. color: var(--links-txt-color)
  84. }}
  85. .nav-link:hover{{
  86. color:var(--links-hover-color)
  87. }}
  88. .btn-success, .btn-outline-success{{
  89. color: var(--btn-txt-color);
  90. background-color: var(--btn-success);
  91. border-color: var(--btn-success);
  92. }}
  93. .btn-success:hover, .btn-outline-success:hover{{
  94. background-color: var(--btn-success-hover);
  95. border-color: var(--btn-success-hover);
  96. }}
  97. .btn-danger, .btn-outline-danger{{
  98. color: var(--btn-danger-txt);
  99. background-color: var(--btn-danger);
  100. border-color: var(--btn-danger);
  101. }}
  102. .btn-danger:hover, .btn-outline-danger:hover{{
  103. background-color: var(--btn-danger-hover);
  104. border-color: var(--btn-danger-hover);
  105. }}
  106. '''
  107. with open("design_template/static/design_template/colors.css", 'r+', encoding='utf-8') as file:
  108. file.write(css)
  109. subprocess.run(
  110. ["bin/collectstatic.sh"]
  111. )
  112. messages.success(request, "The colors changed successfully.")
  113. else:
  114. form = ColorsForm()
  115. return render(request, "admin/change_colors.html", {'form': form})