--- /dev/null
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sites', '0001_initial'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('django_comments', '__first__'),
+ ('contenttypes', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AssignedKeyword',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('_order', models.IntegerField(null=True, verbose_name='Order')),
+ ('object_pk', models.IntegerField()),
+ ('content_type', models.ForeignKey(to='contenttypes.ContentType')),
+ ],
+ options={
+ 'ordering': ('_order',),
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Keyword',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('title', models.CharField(max_length=500, verbose_name='Title')),
+ ('slug', models.CharField(help_text='Leave blank to have the URL auto-generated from the title.', max_length=2000, null=True, verbose_name='URL', blank=True)),
+ ('site', models.ForeignKey(editable=False, to='sites.Site')),
+ ],
+ options={
+ 'verbose_name': 'Keyword',
+ 'verbose_name_plural': 'Keywords',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='Rating',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('value', models.IntegerField(verbose_name='Value')),
+ ('rating_date', models.DateTimeField(auto_now_add=True, verbose_name='Rating date', null=True)),
+ ('object_pk', models.IntegerField()),
+ ('content_type', models.ForeignKey(to='contenttypes.ContentType')),
+ ('user', models.ForeignKey(related_name='ratings', verbose_name='Rater', to=settings.AUTH_USER_MODEL, null=True)),
+ ],
+ options={
+ 'verbose_name': 'Rating',
+ 'verbose_name_plural': 'Ratings',
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
+ name='ThreadedComment',
+ fields=[
+ ('comment_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='django_comments.Comment')),
+ ('rating_count', models.IntegerField(default=0, editable=False)),
+ ('rating_sum', models.IntegerField(default=0, editable=False)),
+ ('rating_average', models.FloatField(default=0, editable=False)),
+ ('by_author', models.BooleanField(default=False, verbose_name='By the blog author')),
+ ('replied_to', models.ForeignKey(related_name='comments', editable=False, to='generic.ThreadedComment', null=True)),
+ ],
+ options={
+ 'verbose_name': 'Comment',
+ 'verbose_name_plural': 'Comments',
+ },
+ bases=('django_comments.comment',),
+ ),
+ migrations.AddField(
+ model_name='assignedkeyword',
+ name='keyword',
+ field=models.ForeignKey(related_name='assignments', verbose_name='Keyword', to='generic.Keyword'),
+ preserve_default=True,
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+import mezzanine.core.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('generic', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='assignedkeyword',
+ name='_order',
+ field=mezzanine.core.fields.OrderField(null=True, verbose_name='Order'),
+ preserve_default=True,
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-23 12:26
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('generic', '0002_auto_20141227_0224'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='keyword',
+ name='title_en',
+ field=models.CharField(max_length=500, null=True, verbose_name='Title'),
+ ),
+ migrations.AddField(
+ model_name='keyword',
+ name='title_fr',
+ field=models.CharField(max_length=500, null=True, verbose_name='Title'),
+ ),
+ ]
--- /dev/null
+from datetime import datetime, timedelta
+from optparse import make_option
+
+from django.conf import settings
+from django.core.management.base import BaseCommand, CommandError
+from django.contrib.auth.models import User
+from django.core.mail import EmailMessage
+
+from mezzanine.generic.models import AssignedKeyword, Keyword
+
+import mezzanine_agenda.models as ma_models
+import prestashop.models as pa_models
+
+
+class Command(BaseCommand):
+ """Synchronize events from PrestaShop to mezzanine_agenda"""
+
+
+ option_list = BaseCommand.option_list + (
+ make_option('-c', '--category',
+ dest='category_lang_name',
+ help='define prestashop PsCategoryLang'),
+ )
+
+ default_user = User.objects.get(username='admin')
+
+ 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()
+
+ def handle(self, *args, **kwargs):
+ # self.cleanup()
+ 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)
+ products = pa_models.PsProduct.objects.filter(id_category_default=category.id_category)
+
+ for product in products:
+ product_langs = pa_models.PsProductLang.objects.filter(id_product=product.id_product)
+ for product_lang in product_langs:
+ print(product_lang.name, product_lang.dates, product_lang.times)
+
+ # 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()
from mezzanine.pages.admin import PageAdmin
from organization.core.models import *
from mezzanine.blog.models import BlogPost
-from mezzanine.generic.models import ThreadedComment
+from mezzanine.generic.models import ThreadedComment, Keyword
-admin.site.register(LinkType)
+class KeywordAdmin(BaseTranslationModelAdmin):
+
+ model = Keyword
+
+
+admin.site.register(LinkType)
admin.site.unregister(BlogPost)
admin.site.unregister(ThreadedComment)
+admin.site.register(Keyword, KeywordAdmin)
from modeltranslation.translator import translator, register, TranslationOptions
from mezzanine.pages.models import Page, RichText
from mezzanine.pages.translation import TranslatedRichText
+from mezzanine.generic.models import Keyword
from organization.core.models import *
-pass
+
+
+@register(Keyword)
+class KeywordTranslationOptions(TranslationOptions):
+
+ fields = ('title',)
"pages": "migrations.pages",
"conf": "migrations.conf",
"shop": "migrations.shop",
+ "generic": "migrations.generic",
}
MODELTRANSLATION_TRANSLATION_FILES = (