]> git.parisson.com Git - mezzo.git/commitdiff
add price sync and fine display
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 10 Apr 2016 21:55:18 +0000 (23:55 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Sun, 10 Apr 2016 21:55:18 +0000 (23:55 +0200)
app/festival/management/commands/festival-sync-eve-events.py [new file with mode: 0644]
app/festival/management/commands/sync-eve-events.py [deleted file]
app/migrations/mezzanine_agenda/0011_auto_20160410_2330.py [new file with mode: 0644]
app/migrations/mezzanine_agenda/0012_auto_20160410_2336.py [new file with mode: 0644]
app/templates/agenda/includes/event_metainfo.html

diff --git a/app/festival/management/commands/festival-sync-eve-events.py b/app/festival/management/commands/festival-sync-eve-events.py
new file mode 100644 (file)
index 0000000..01948c0
--- /dev/null
@@ -0,0 +1,84 @@
+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
+
+import mezzanine_agenda.models as ma_models
+import eve.models as eve_models
+
+
+class Command(BaseCommand):
+    """Synchronize events from E-vement to mezzanine_agenda"""
+
+
+    option_list = BaseCommand.option_list + (
+          make_option('-m', '--meta_event',
+            dest='meta_event',
+            help='define eve meta_event'),
+          )
+
+    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()
+        meta_event_name = kwargs.get('meta_event')
+        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
+
+                category, c = ma_models.EventCategory.objects.get_or_create(name=eve_event.event_category.name)
+                event.category = category
+                event.save()
+
+                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:
+                        event.prices.add(event_price)
+
+                if not first:
+                    event.parent = parent
+                else:
+                    parent = event
+                    first = False
+
+                event.save()
diff --git a/app/festival/management/commands/sync-eve-events.py b/app/festival/management/commands/sync-eve-events.py
deleted file mode 100644 (file)
index e6edc43..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-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
-
-import mezzanine_agenda.models as ma_models
-import eve.models as eve_models
-
-
-class Command(BaseCommand):
-    """Synchronize events from E-vement to mezzanine_agenda"""
-
-
-    option_list = BaseCommand.option_list + (
-          make_option('-m', '--meta_event',
-            dest='meta_event',
-            help='define eve meta_event'),
-          )
-
-    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()
-
-    def handle(self, *args, **kwargs):
-        self.cleanup()
-        meta_event_name = kwargs.get('meta_event')
-        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.clean()
-                location.save()
-                event.location = location
-
-                category, c = ma_models.EventCategory.objects.get_or_create(name=eve_event.event_category.name)
-                event.category = category
-
-                if not first:
-                    event.parent = parent
-                else:
-                    parent = event
-                    first = False
-
-                event.save()
diff --git a/app/migrations/mezzanine_agenda/0011_auto_20160410_2330.py b/app/migrations/mezzanine_agenda/0011_auto_20160410_2330.py
new file mode 100644 (file)
index 0000000..53985ab
--- /dev/null
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.2 on 2016-04-10 21:30
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('mezzanine_agenda', '0010_eventlocation_external_id'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='eventprice',
+            name='price',
+        ),
+        migrations.AddField(
+            model_name='eventprice',
+            name='value',
+            field=models.FloatField(default=0, verbose_name='value'),
+            preserve_default=False,
+        ),
+        migrations.AlterField(
+            model_name='eventlocation',
+            name='featured_name',
+            field=models.CharField(blank=True, max_length=512, null=True, verbose_name='featured name'),
+        ),
+    ]
diff --git a/app/migrations/mezzanine_agenda/0012_auto_20160410_2336.py b/app/migrations/mezzanine_agenda/0012_auto_20160410_2336.py
new file mode 100644 (file)
index 0000000..e7f9fac
--- /dev/null
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.2 on 2016-04-10 21:36
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('mezzanine_agenda', '0011_auto_20160410_2330'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='eventprice',
+            name='unit',
+            field=models.CharField(blank=True, max_length=16, null=True, verbose_name='Unit'),
+        ),
+    ]
index 15bbd16efb772888b2e3a0be06297961dd964cf2..1fcc9e7df2c2341ddc57c1634d89fe52a870c53e 100644 (file)
@@ -5,10 +5,13 @@
         {% if event.end %}
         {% if event.end|date == event.start|date and event.end.hour|subtract:event.start.hour > 3 %}{{ event.end|time:"TIME_FORMAT" }}{% endif %}
         {% if unit_booking %}
-            | {% for price in event.prices.all %}{{ price|floatformat }} €{% if not forloop.last %} - {% endif %}{% endfor %} 
+            &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
+            {% for price in event.prices.all %}{{ price.value|floatformat:"-2" }} €{% if not forloop.last %} / {% endif %}{% endfor %}
+            {% if event.prices.all.0|floatformat != '0' %}
             <a href="{% url 'event_booking' event.slug %}" class="event__meta__btn">
                 {% trans "Booking" %}
             </a>
+            {% endif %}
         {% endif %}
         {% endif %}
         {% if event.location %}