css.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from .utils import get_file_hash
  2. def create_css(theme, css):
  3. order = None
  4. if css_exists(theme, css):
  5. order = get_css_order(theme, css)
  6. delete_css(theme, css)
  7. save_css(theme, css, order)
  8. def css_exists(theme, css):
  9. return theme.css.filter(name=css.name).exists()
  10. def get_css_order(theme, css):
  11. return theme.css.get(name=css.name).order
  12. def delete_css(theme, css):
  13. theme.css.get(name=css.name).delete()
  14. def save_css(theme, css, order=None):
  15. if order is None:
  16. order = get_next_css_order(theme)
  17. theme.css.create(
  18. name=css.name,
  19. source_file=css,
  20. source_hash=get_file_hash(css),
  21. size=css.size,
  22. order=order,
  23. )
  24. def get_next_css_order(theme):
  25. last_css = theme.css.order_by("order").last()
  26. if last_css:
  27. return last_css.order + 1
  28. return 0
  29. def move_css_up(theme, css):
  30. previous_css = theme.css.filter(order__lt=css.order).order_by("-order").first()
  31. if not previous_css:
  32. return False
  33. css.order, previous_css.order = previous_css.order, css.order
  34. css.save(update_fields=["order"])
  35. previous_css.save(update_fields=["order"])
  36. return True
  37. def move_css_down(theme, css):
  38. next_css = theme.css.filter(order__gt=css.order).order_by("order").first()
  39. if not next_css:
  40. return False
  41. css.order, next_css.order = next_css.order, css.order
  42. css.save(update_fields=["order"])
  43. next_css.save(update_fields=["order"])
  44. return True