From 1fc1db29e86e66d5a858ee3874b2ed6429152a01 Mon Sep 17 00:00:00 2001 From: Thomas Fillon Date: Sun, 6 Sep 2015 11:37:10 +0200 Subject: [PATCH] Update Record model and populate_db managment command --- .../management/commands/populate_db.py | 99 +++++++++++++++--- .../migrations/0005_auto_20150904_1309.py | 19 ++++ diggersdigest/records/models.py | 2 +- .../static/img/dotted_background.png | Bin 106 -> 112 bytes diggersdigest/templates/base.html | 12 ++- 5 files changed, 114 insertions(+), 18 deletions(-) create mode 100644 diggersdigest/records/migrations/0005_auto_20150904_1309.py diff --git a/diggersdigest/records/management/commands/populate_db.py b/diggersdigest/records/management/commands/populate_db.py index 49673e3..1012d1c 100644 --- a/diggersdigest/records/management/commands/populate_db.py +++ b/diggersdigest/records/management/commands/populate_db.py @@ -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 index 0000000..070bd6c --- /dev/null +++ b/diggersdigest/records/migrations/0005_auto_20150904_1309.py @@ -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')]), + ), + ] diff --git a/diggersdigest/records/models.py b/diggersdigest/records/models.py index d8ff5af..3f24318 100644 --- a/diggersdigest/records/models.py +++ b/diggersdigest/records/models.py @@ -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) diff --git a/diggersdigest/static/img/dotted_background.png b/diggersdigest/static/img/dotted_background.png index 4bee33bc06fdcb77d8972c6c8fc3d1b9fec61976..cabfa99af433a0af593b5e396621b7426e30688d 100644 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$0wn*`OvwRKOiAAEE)4(M`_JqL@-#hN977~7 zC(rmL&p6>`&;S3%39LRmJQb?T6geGlq)4=8axm|73p^jnaKA`tao5D#mw}oXJYD@< J);T3K0RTzJAf48G5=nhDc0JP5^=%8xjxKvpFRk zZsYx*I78zoi|9r6J9{c8ZwSu2x96vP+sb66qYMoBQxyJLY_}=^YG&|s^>bP0l+XkK D^qwLa diff --git a/diggersdigest/templates/base.html b/diggersdigest/templates/base.html index 59a978c..7117c27 100644 --- a/diggersdigest/templates/base.html +++ b/diggersdigest/templates/base.html @@ -48,7 +48,15 @@ - +
+