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):
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')
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()
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)
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)
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)
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))