]> git.parisson.com Git - diggersdigest.git/commitdiff
Update Record model and populate_db managment command
authorThomas Fillon <thomas@parisson.com>
Sun, 6 Sep 2015 09:37:10 +0000 (11:37 +0200)
committerThomas Fillon <thomas@parisson.com>
Sun, 6 Sep 2015 09:37:10 +0000 (11:37 +0200)
diggersdigest/records/management/commands/populate_db.py
diggersdigest/records/migrations/0005_auto_20150904_1309.py [new file with mode: 0644]
diggersdigest/records/models.py
diggersdigest/static/img/dotted_background.png
diggersdigest/templates/base.html

index 49673e3ddcb21f8a424cac83adc799c881b4fb6e..1012d1cb9b2728e39950fcf5b38baeac473f234f 100644 (file)
@@ -11,17 +11,27 @@ from django.core.management.base import BaseCommand, CommandError
 
 import os
 from records import models as rec_models
-from cartridge.shop.models import ProductOption
+from cartridge.shop.models import Product, ProductOption, Category
 
 from diggersdigest import settings
 
 
 import HTMLParser
 parser = HTMLParser.HTMLParser()
+import string
 
 import mezzanine.blog.models as blog_models
 from mezzanine.pages.models import Page
 
+# Clean Up DB
+try:
+    obj = rec_models.Shop.objects.get(titre='nkvbhbjh')
+    obj.delete()
+except rec_models.Shop.DoesNotExist:
+    pass
+
+DOLLAR_TO_EURO = 0.898642152 # 04/09/2015
+
 # Check mp3 in media upload path
 def check_mp3(file_list, file_path):
     abs_file_path = os.path.join(settings.MEDIA_ROOT, file_path)
@@ -36,6 +46,30 @@ def check_mp3(file_list, file_path):
         print "No missing MP3 Mix files"
     return missing_files
 
+def get_year(date):
+    if date == '197':
+        date = date + '?'
+    try:
+        year = int(date)
+        decade = (year // 10 ) * 10
+    except ValueError:
+        if (date == '196?') | (string.find(date, '60')>-1):
+            year = None
+            decade = '1960'
+        elif (date == '197?') | (date=='197.') | (string.find(date, '70')>-1):
+            year = None
+            decade = '1970'
+        elif (date == '198?') | (date == 'late 198') | (string.find(date, '80')>-1):
+            year = None
+            decade = 1980
+        elif (date == '199?') | (string.find(date, '90')>-1):
+            year = None
+            decade = 1990
+        else:
+            year, decade = None, None
+    return (year, decade)
+
+
 class Command(BaseCommand):
     help = 'Populate the new database from the original backup'
 
@@ -98,7 +132,7 @@ class Command(BaseCommand):
         # MP3 for mix
         mp3_mix_list = [mix.mp3 for mix in rec_models.Mix.objects.all()]
 
-        check_mp3(mp3_mix_list, os.join(PODCAST_AUDIO_PATH)
+        check_mp3(mp3_mix_list, os.path.join(PODCAST_AUDIO_PATH))
 
         ordered_mix_list = sorted(rec_models.Mix.objects.all(), key=lambda mix: mix.ordre)
         count = 0
@@ -183,15 +217,21 @@ class Command(BaseCommand):
                 print n.titre, ' - ', d
                 
 
-    def get_year(date):
-        import parsedatime
-        cal = parsedatetime.Calendar()
-        res_date, flag = cal.parse(date)
-        if flag:
-            return res_date.tm_year, (res_date.tm_year//10) * 10
-        else:
-            return (None,None)
-    
+    # Theme -> Category
+    def populate_category(self):
+        #
+        theme_list = [theme for theme in rec_models.Theme.objects.all() if theme.published==1]
+        count = 0
+        for theme in theme_list:
+            obj, create = Category.objects.get_or_create(pk=theme.id,
+                                                         title = theme.nom)
+            if create:
+                count +=1
+                
+        self.stdout.write('Category\n-------\n')
+        self.stdout.write("\t%d new Category objects" % count)
+
+
     # SHOPS TO RECORDS
     def populate_record(self):
         self.stdout.write('Records\n-------\n')
@@ -200,6 +240,7 @@ class Command(BaseCommand):
         RECORDS_PATH = os.path.join(AUDIO_PATH, "records")
 
         shop_list = rec_models.Shop.objects.all()
+                     
         for shop in shop_list:
             obj, created = rec_models.Record.objects.get_or_create(pk=shop.id)
 
@@ -207,13 +248,39 @@ class Command(BaseCommand):
             obj.country = rec_models.Country.objects.get(name = shop.pays)
             obj.audio_file = os.path.join(RECORDS_PATH, shop.mp3)
             # product_id --> FK
-            #obj.release_year =
-            # obj.release_decade =
-            obj.date_text = shop.date
+            
+            obj.release_year , obj.release_decade = get_year(shop.date)
+            obj.date_text = shop.date # To be deleted later ?
             obj.record_status = shop.new
             obj.label = rec_models.Label.objects.get(name = shop.label)
             obj.artist = rec_models.Artist.objects.get(name = shop.artiste)
             obj.save()
+
+            self.stdout.write('------')
+            self.stdout.write('Record %d -  %d' % (obj.pk,len(shop_list)))
+
+            theme = rec_models.Theme.objects.get(id=shop.theme)
+            if (theme.published == 1) and (shop.published==1):
+                prod_obj, prod_created = Product.objects.get_or_create(pk=shop.id,
+                                                                       site_id=1)
+
+                if shop.devise == 3: #Euros
+                    prod_obj.unit_price = shop.prix
+                elif shop.devise == 1: # Dollar
+                    prod_obj.price = round(shop.prix * DOLLAR_TO_EURO)
+                prod_obj.title = obj.title
+                prod_obj.sale_price = prod_obj.unit_price
+                prod_obj.available = bool(shop.published)
+                prod_obj.num_in_stock = 1
+                category = Category.objects.get(pk=shop.theme)
+                prod_obj.categories.add(category)
+
+                prod_obj.save()
+                obj.product = prod_obj
+                obj.save()
+                
+                self.stdout.write('Product %d / %d --> %s' % (prod_obj.pk,len(shop_list), prod_obj.available))
+            
             #self.stdout.write('\b\b\b\b%.4d' % obj.pk)
             #print obj.__dict__
 
@@ -258,16 +325,16 @@ class Command(BaseCommand):
                                                                  is_staff=True,
                                                                  email=u'') 
 
+        self.populate_category()
         self.populate_label()
         self.populate_artist()
         self.populate_country()
         self.populate_podcast(user=digger)
         #self.populate_pages()
         #self.populate_news()
+
         self.populate_record()
 
-# Theme
-[theme for theme in rec_models.Theme.objects.all()]
 
 
 # MP3
diff --git a/diggersdigest/records/migrations/0005_auto_20150904_1309.py b/diggersdigest/records/migrations/0005_auto_20150904_1309.py
new file mode 100644 (file)
index 0000000..070bd6c
--- /dev/null
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('records', '0004_auto_20150904_0733'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='record',
+            name='release_decade',
+            field=models.IntegerField(null=True, verbose_name='release decade', choices=[(1920, '1920s'), (1930, '1930s'), (1940, '1940s'), (1950, '1950s'), (1960, '1960s'), (1970, '1970s'), (1980, '1980s'), (1990, '1990s'), (2000, '2000s'), (2010, '2010s'), (2020, '2020s')]),
+        ),
+    ]
index d8ff5afc5fce081c2f9b9031777987e1921e82d5..3f24318e5c2586c407e2dc823dbd3a5975f9715c 100644 (file)
@@ -230,7 +230,7 @@ class Record(models.Model):
     record_status = models.IntegerField(_('record status'), choices=NOVELTY_CHOICES, default=NEW)
     label = models.ForeignKey(Label, verbose_name=_('label'), related_name='records', null=True, on_delete=models.SET_NULL)
     release_year = models.IntegerField(_('release year'), null=True, choices=YEAR_CHOICES)
-    release_decade = models.CharField(_('release decade'), max_length=8, null=True, choices=DECADE_CHOICES)
+    release_decade = models.IntegerField(_('release decade'), null=True, choices=DECADE_CHOICES)
     date_text = models.CharField(_('date text'), max_length=8, null=True)
     country = models.ForeignKey(Country, verbose_name=_('country'), related_name='records', null=True, on_delete=models.SET_NULL)
     #cover_state = models.ForeignKey(ConditionGrading, verbose_name=_('cover condition'), related_name='records_cover_condition', null=True, on_delete=models.SET_NULL)
index 4bee33bc06fdcb77d8972c6c8fc3d1b9fec61976..cabfa99af433a0af593b5e396621b7426e30688d 100644 (file)
Binary files a/diggersdigest/static/img/dotted_background.png and b/diggersdigest/static/img/dotted_background.png differ
index 59a978c3125f0222c9e426b8b7a1d9d613ca60ba..7117c27aaf68ed54fbf00e4eb33288dd7d36816c 100644 (file)
 </head>
 
 <body id="{% block body_id %}body{% endblock %}">
-
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.4&appId=348560078520326";
+  fjs.parentNode.insertBefore(js, fjs);
+  }(document, 'script', 'facebook-jssdk'));
+</script>
 <div class="navbar navbar-default navbar-fixed-top" role="navigation">
   <div class="container ">
     <div class="navbar-header">
     {% endifinstalled %}
 </p>
 </div>
+<div class="fb-follow"></div>
 </div>
+
 </footer>
 
 {% include "includes/footer_scripts.html" %}