]> git.parisson.com Git - mezzo.git/commitdiff
Fix import prestashop products to events, adapt event view
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 19 Oct 2016 16:49:33 +0000 (18:49 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 19 Oct 2016 16:49:33 +0000 (18:49 +0200)
.gitmodules
app/organization/agenda/management/commands/organization-sync-prestashop-events.py
app/organization/agenda/models.py
app/organization/shop/models.py
app/templates/agenda/includes/event_metainfo.html
lib/django-prestashop [deleted submodule]
lib/mezzanine-agenda

index 8bc911da45b1e328eff245588cfdd0533200e77f..6fd51c5a96b24b13d1c22174e7952c60726a26c0 100644 (file)
@@ -7,6 +7,3 @@
 [submodule "data"]
        path = data
        url = git+ssh://git@git.forge.ircam.fr/ircam-www-data.git
-[submodule "lib/django-prestashop"]
-       path = lib/django-prestashop
-       url = git+ssh://git@git.forge.ircam.fr/django-prestashop.git
index 14b795a192f62df1e5a7404f2ba006ebf34051b8..bc781bcad21174734e88f95831af39dea41306f1 100644 (file)
@@ -9,7 +9,9 @@ from django.core.mail import EmailMessage
 from mezzanine.generic.models import AssignedKeyword, Keyword
 
 import mezzanine_agenda.models as ma_models
+import organization.agenda.models as oa_models
 import prestashop.models as pa_models
+import cartridge.shop.models as ca_models
 
 
 class Command(BaseCommand):
@@ -28,15 +30,11 @@ class Command(BaseCommand):
 
 
     def cleanup(self):
-        # for event in ma_models.Event.objects.all():
-        #     event.delete()
-        # for location in ma_models.EventLocation.objects.all():
-        #     location.delete()
-        for event_price in ma_models.EventPrice.objects.all():
-            event_price.delete()
+        for event in ma_models.Event.objects.all():
+             event.delete()
 
     def handle(self, *args, **kwargs):
-        self.cleanup()
+        self.cleanup()
 
         products = []
         category_lang_name = kwargs.get('category_lang_name')
@@ -45,76 +43,46 @@ class Command(BaseCommand):
             for category in pa_models.PsCategoryLang.objects.all():
                 print(category.name)
 
-        print('---------------------------')
-
         category_lang_name = kwargs.get('category_lang_name')
         category_lang = pa_models.PsCategoryLang.objects.get(name=category_lang_name)
         category = pa_models.PsCategory.objects.get(id_category=category_lang.id_category)
-
         category_products = pa_models.PsCategoryProduct.objects.filter(id_category=category.id_category)
+
         for category_product in category_products:
             products.append(pa_models.PsProduct.objects.get(id_product=category_product.id_product))
 
         for product in products:
+            print('---------------------------')
             print(product.id_product)
+
+            events = ma_models.Event.objects.filter(external_id=product.id_product)
+            if events:
+                event = events[0]
+            else:
+                event = ma_models.Event(external_id=product.id_product)
+
             product_langs = pa_models.PsProductLang.objects.filter(id_product=product.id_product)
             for product_lang in product_langs:
                 lang_code = self.languages[product_lang.id_lang]['code']
 
                 for lang in self.languages:
                     if product_lang.teaching_lang.lower() in self.languages[product_lang.id_lang]['names']:
-                        teaching_lang = self.languages[product_lang.id_lang]['code']
-                        print(teaching_lang)
+                        language = self.languages[product_lang.id_lang]['code']
+                        event_training = oa_models.EventTraining(language=language)
                         break
 
-                print(product_lang.name, lang_code, product_lang.dates, product_lang.times, product_lang.description)
-
-        # meta_trans_all = eve_models.MetaEventTranslation.objects.all()
-        # for meta_trans in meta_trans_all:
-        #     if meta_trans.name == meta_event_name:
-        #         break
-        # eve_events = eve_models.Event.objects.filter(meta_event=meta_trans.id)
-        # for eve_event in eve_events:
-        #     event_trans = eve_models.EventTranslation.objects.filter(id=eve_event, lang='fr')[0]
-        #     manifestations = eve_event.manifestations.all().order_by('happens_at')
-        #     first = True
-        #     for manifestation in manifestations:
-        #         events = ma_models.Event.objects.filter(external_id=manifestation.id)
-        #         if not events:
-        #             event = ma_models.Event(external_id=manifestation.id)
-        #         else:
-        #             event = events[0]
-        #         event.start = manifestation.happens_at
-        #         event.end = manifestation.happens_at + timedelta(seconds=manifestation.duration)
-        #         event.title = event_trans.name
-        #         event.user = self.default_user
-        #
-        #         locations = ma_models.EventLocation.objects.filter(title=manifestation.location.name)
-        #         if locations:
-        #             location = locations[0]
-        #         else:
-        #             location = ma_models.EventLocation(title=manifestation.location.name)
-        #         address = '\n'.join([manifestation.location.address, manifestation.location.postalcode + ' ' + manifestation.location.city])
-        #         location.address = address
-        #         location.external_id = manifestation.id
-        #         location.clean()
-        #         location.save()
-        #         event.location = location
-        #         event.save()
-        #         keyword, _ = Keyword.objects.get_or_create(title=eve_event.event_category.name)
-        #         event.keywords.add(AssignedKeyword(keyword=keyword), bulk=False)
-        #
-        #         eve_prices = eve_models.PriceManifestation.objects.filter(manifestation=manifestation)
-        #         for price in eve_prices:
-        #             event_price, c = ma_models.EventPrice.objects.get_or_create(value=float(price.value))
-        #             if event:
-        #                 if not event_price in event.prices.all():
-        #                     event.prices.add(event_price)
-        #
-        #         if not first:
-        #             event.parent = parent
-        #         else:
-        #             parent = event
-        #             first = False
-        #
-        #         event.save()
+                print(product_lang.name, lang_code, product_lang.dates)
+
+                setattr(event, 'title' + '_' + lang_code, product_lang.name)
+                setattr(event, 'content' + '_' + lang_code, product_lang.description)
+                event.date_text = product_lang.dates
+
+            event.start = datetime.now()
+            event.user = self.default_user
+            event_price, c = ma_models.EventPrice.objects.get_or_create(value=product.price)
+            event.save()
+            event.prices.add(event_price)
+            event.status = 1
+            event.save()
+            event_training.event = event
+            event_training.save()
index 8de24c7c367f115d705827a8bcaecb372e6f97dc..9a5c02ad79e86e2f5ad7a038ac36a40f6ff83909 100644 (file)
@@ -9,6 +9,7 @@ from organization.core.models import *
 from organization.network.models import *
 
 
+
 class EventBlock(Block):
 
     event = models.ForeignKey(Event, verbose_name=_('event'), related_name='blocks', blank=True, null=True, on_delete=models.SET_NULL)
@@ -93,7 +94,7 @@ class EventTrainingLevel(Named):
 class EventTraining(models.Model):
 
     event = models.ForeignKey(Event, verbose_name=_('event'), related_name='trainings', blank=True, null=True, on_delete=models.SET_NULL)
-    language = models.CharField(_('Language'), max_length=64, blank=True, null=True, choices=settings.LANGUAGES)
+    language = models.CharField(_('language'), max_length=64, blank=True, null=True, choices=settings.LANGUAGES)
     public_type = models.ForeignKey(EventPublicType, verbose_name=_('public type'), related_name='trainings', blank=True, null=True, on_delete=models.SET_NULL)
     level = models.ForeignKey(EventTrainingLevel, verbose_name=_('level'), related_name='trainings', blank=True, null=True, on_delete=models.SET_NULL)
 
index 30db82e57fabf199f6084ef22be834f1a3c872ce..44e224736da10b2566950fef22751a91aab3a25a 100644 (file)
@@ -37,7 +37,6 @@ class ProductListProduct(Orderable):
         verbose_name_plural = _("products")
 
 
-
 class PageProductList(models.Model):
 
     page = models.ForeignKey('pages.Page', verbose_name=_('page'), related_name='product_lists', blank=True, null=True, on_delete=models.SET_NULL)
@@ -51,3 +50,18 @@ class PageProductList(models.Model):
 class ProductLink(Link):
 
     product = models.ForeignKey(Product, verbose_name=_('product'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL)
+
+
+class ProductPrestashopProduct(models.Model):
+
+    product = models.OneToOneField(Product, verbose_name=_('prestashop product'), related_name='prestashop_products')
+    prestashop_id = models.IntegerField(verbose_name=_('prestashop id'))
+    prestashop_slug = models.CharField(max_length=255, verbose_name=_('slug'), null=True, blank=True)
+    prestashop_url = models.CharField(max_length=512, verbose_name=_('relative url'), null=True, blank=True)
+
+    class Meta:
+        verbose_name = _("prestashop product")
+        verbose_name_plural = _("prestashop products")
+
+    def __str__(self):
+        return ' - '.join((self.product.title, self.prestashop_id))
index 036297012d67a86822c9f455e20abc21124b1379..256a526a9ac811767d9ef5af1324f4d3f38d5f4a 100644 (file)
@@ -23,7 +23,7 @@
 {% with event.trainings.all.0 as training %}
     {% if training %}
         <div class="page__meta-title page__meta-title--small">{% trans "Language" %}</div>
-        <p class="page__meta-text">{{ training.language }}</p>
+        <p class="page__meta-text">{{ training.get_language_display }}</p>
         <div class="page__meta-title page__meta-title--small">{% trans "Public type" %}</div>
         <p class="page__meta-text">{{ training.public_type }}</p>
         <div class="page__meta-title page__meta-title--small">{% trans "Level" %}</div>
diff --git a/lib/django-prestashop b/lib/django-prestashop
deleted file mode 160000 (submodule)
index 37a97f9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 37a97f9affa7979e52b6b0ff7c3bc39ce2c05302
index 2329e6a7bf55e852f0ad7686d17ff773a07aa6c6..2c6e15e6a66c507e05ab803016acd4d250f4d2dd 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 2329e6a7bf55e852f0ad7686d17ff773a07aa6c6
+Subproject commit 2c6e15e6a66c507e05ab803016acd4d250f4d2dd