1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import requests
- from celery import shared_task
- from requests.exceptions import RequestException
- from ..models import Theme, Css
- from .css import get_theme_media_map, rebuild_css
- @shared_task
- def update_remote_css_size(pk):
- try:
- css = Css.objects.get(pk=pk, url__isnull=False)
- except Css.DoesNotExist:
- pass
- else:
- css.size = get_remote_css_size(css.url)
- css.save(update_fields=["size"])
- def get_remote_css_size(url):
- try:
- response = requests.head(url)
- response.raise_for_status()
- except RequestException:
- return 0
- else:
- try:
- return int(response.headers.get("content-length", 0))
- except (TypeError, ValueError):
- return 0
- @shared_task
- def build_single_theme_css(pk):
- try:
- css = Css.objects.get(pk=pk, source_needs_building=True)
- except Css.DoesNotExist:
- pass
- else:
- media_map = get_theme_media_map(css.theme)
- rebuild_css(media_map, css)
- @shared_task
- def build_theme_css(pk):
- try:
- theme = Theme.objects.get(pk=pk)
- except Theme.DoesNotExist:
- pass
- else:
- media_map = get_theme_media_map(theme)
- for css in theme.css.filter(source_needs_building=True):
- rebuild_css(media_map, css)
|