On corrige un bug dans l'import des événements, au moment de sauver les images
This commit is contained in:
		@@ -7,7 +7,6 @@ from selenium.webdriver.chrome.service import Service
 | 
			
		||||
from selenium.webdriver.chrome.options import Options
 | 
			
		||||
 | 
			
		||||
import urllib.request
 | 
			
		||||
from django.core.files.uploadedfile import SimpleUploadedFile
 | 
			
		||||
from tempfile import NamedTemporaryFile
 | 
			
		||||
from urllib.parse import urlparse
 | 
			
		||||
import os
 | 
			
		||||
@@ -55,22 +54,6 @@ class Extractor:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def guess_filename(url):
 | 
			
		||||
        a = urlparse(url)
 | 
			
		||||
        return os.path.basename(a.path)
 | 
			
		||||
 | 
			
		||||
    def download_media(url):
 | 
			
		||||
        # first download file
 | 
			
		||||
        
 | 
			
		||||
        basename = Extractor.guess_filename(url)
 | 
			
		||||
        try:
 | 
			
		||||
            tmpfile, _ = urllib.request.urlretrieve(url)
 | 
			
		||||
        except:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        # if the download is ok, then create create the corresponding file object
 | 
			
		||||
        return SimpleUploadedFile(basename, open(tmpfile, "rb").read())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -210,7 +193,6 @@ class ExtractorFacebook(Extractor):
 | 
			
		||||
            from .models import Event
 | 
			
		||||
 | 
			
		||||
            image = self.get_element("image")
 | 
			
		||||
            local_image = None if image is None else Extractor.download_media(image)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return Event(title=self.get_element("name"), 
 | 
			
		||||
@@ -221,7 +203,6 @@ class ExtractorFacebook(Extractor):
 | 
			
		||||
                end_time=self.get_element_time("end_timestamp"),
 | 
			
		||||
                location=self.get_element("event_place_name"),
 | 
			
		||||
                description=self.get_element("description"),
 | 
			
		||||
                local_image=local_image,
 | 
			
		||||
                image=self.get_element("image"),
 | 
			
		||||
                image_alt=self.get_element("image_alt"),
 | 
			
		||||
                reference_urls=[url])
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,10 @@ from django.template.defaultfilters import slugify
 | 
			
		||||
from django.urls import reverse
 | 
			
		||||
from colorfield.fields import ColorField
 | 
			
		||||
from ckeditor.fields import RichTextField
 | 
			
		||||
from urllib.parse import urlparse
 | 
			
		||||
import urllib.request
 | 
			
		||||
import os
 | 
			
		||||
from django.core.files import File
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from django.template.defaultfilters import date as _date
 | 
			
		||||
@@ -175,6 +179,25 @@ class Event(models.Model):
 | 
			
		||||
    def nb_draft_events():
 | 
			
		||||
        return Event.objects.filter(status=Event.STATUS.DRAFT).count()
 | 
			
		||||
 | 
			
		||||
    def save(self, *args, **kwargs):
 | 
			
		||||
        # if the image is defined but not locally downloaded
 | 
			
		||||
        if self.image and not self.local_image:
 | 
			
		||||
            # first download file
 | 
			
		||||
            
 | 
			
		||||
            a = urlparse(self.image)
 | 
			
		||||
            basename = os.path.basename(a.path)
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                tmpfile, _ = urllib.request.urlretrieve(self.image)
 | 
			
		||||
            except:
 | 
			
		||||
                return None
 | 
			
		||||
 | 
			
		||||
            # if the download is ok, then create the corresponding file object
 | 
			
		||||
            self.local_image = File(name=basename, file=open(tmpfile, "rb"))
 | 
			
		||||
 | 
			
		||||
        super().save(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ContactMessage(models.Model):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@
 | 
			
		||||
<script>window.CKEDITOR_BASEPATH = '/static/ckeditor/ckeditor/';</script>
 | 
			
		||||
<script src="/static/admin/js/vendor/jquery/jquery.js"></script>
 | 
			
		||||
<script src="/static/admin/js/jquery.init.js"></script>
 | 
			
		||||
<link href="{% static 'js/css/django_better_admin_arrayfield.min.css' %}" type="text/css" media="all" rel="stylesheet">
 | 
			
		||||
<script src="{% static 'js/js/django_better_admin_arrayfield.min.js' %}"></script>
 | 
			
		||||
<link href="{% static 'css/django_better_admin_arrayfield.min.css' %}" type="text/css" media="all" rel="stylesheet">
 | 
			
		||||
<script src="{% static 'js/django_better_admin_arrayfield.min.js' %}"></script>
 | 
			
		||||
<script src="{% static 'js/adjust_datetimes.js' %}"></script>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user