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)
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'
# 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
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')
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)
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__
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
--- /dev/null
+# -*- 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')]),
+ ),
+ ]
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)
</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" %}