コード例 #1
0
ファイル: views.py プロジェクト: paulbersch/django-locus
def process_export(request):
	if 'export' in request.FILES:
		# back up the old database just in case

		sys.stdout = open('/tmp/locator_backup.json', 'w')
		call_command('dumpdata', 'locus', format='json', indent=2, interactive=False, all=True)
		sys.stdout.close()
		sys.stdout = sys.__stdout__

		locator_dataset_number = request.POST.get('locator_dataset', '1')
		locator_dataset = Promotion.objects.get(id=locator_dataset_number)
		f = open('/tmp/locator_export.txt', 'w')
		for chunk in request.FILES['export'].chunks():
			f.write(chunk)
		f.close()

		import csv
		import os
		import re
		from cartridge.shop.models import ProductVariation
		from django.template.defaultfilters import slugify

		f = open('/tmp/locator_export.txt', 'r')
		notfound = open('/tmp/notfound.txt', 'w')

		csvreader = csv.reader(f, delimiter="\t")

		# hide all locations (so that locations that haven't recieved new inventory won't appear in searches)
		# also clear out the inventory
		for location in Location.objects.all_with_deleted().filter(promotion = locator_dataset):
			location.inventory.clear()
			location.categories.clear()
			location.filtervalues.clear()
			location.do_not_display = True
			location.audio = False
			location.wireless = False
			location.hartke = False
			location.zoom = False
			location.save()

		d = Location()
		count = 0

		for row in csvreader:
			count += 1
			if row[0] == 'fiscal':
				continue
			if d.account_id != row[1] or d.account_key != row[3]:
				try:
					d = Location.objects.get(account_id = row[1], account_key = row[3])
				except Location.DoesNotExist:
					d = Location()
				id = d.id
				d.account_id = row[1]
				d.account_key = row[3]
				d.name = row[4]
				d.addr1 = row[5]
				d.addr2 = row[6]
				d.addr3 = row[7]
				d.city = row[8]
				d.state = row[9][:2]
				d.zip = row[10]
				d.save()
			else:
				print 'skip', row[1]

			d.filtervalues.add(locator_dataset)
			d.save()

			if row[11] == 'A':
				d.audio = True
			if row[11] == 'W':
				d.wireless = True
			if row[11] == 'H':
				d.hartke = True
			if row[11] == 'Z':
				d.zoom = True

			try:
				v = ProductVariation.objects.get(sku = row[12])
				p = v.product
				d.inventory.add(p)
				categories = Category.objects.filter(categories__products = p)
				for category in categories:
					d.categories.add(category)
				d.do_not_display = False
			except ProductVariation.DoesNotExist:
				print "couldn't find ", row[12]
				notfound.write(row[12] + "\n")

			d.save()

		for d in Location.objects.filter(latitude=None):
			d.lookup_address()
			d.save()
		return HttpResponseRedirect("/wheretobuy/ranged_geotagger?start=0&end=10000")
	return HttpResponse("Must upload a file")
コード例 #2
0
    c.name = category[0]
    c.shortname = category[1]
    c.save()

categories = list(Category.objects.all())

dataset = DataSet()
dataset.name = "Wal-Mart"
dataset.shortname = "walmart"
dataset.save()

with open('walmart.csv','r') as csvfile:
    reader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in reader:
        try:
            loc = Location()

            loc.longitude = float(row[0])
            loc.latitude = float(row[1])
            loc.name = row[2]

            address = row[3].split(',')

            loc.addr1 = address[0]

            if len(address) > 6:
                # there is an addr2+
                loc.addr2 = address[1]

            loc.city = address[-5]
            loc.state = address[-4]
コード例 #3
0
ファイル: views.py プロジェクト: paulbersch/django-locus
def process_export(request):
    if 'export' in request.FILES:
        # back up the old database just in case

        sys.stdout = open('/tmp/locator_backup.json', 'w')
        call_command('dumpdata',
                     'locus',
                     format='json',
                     indent=2,
                     interactive=False,
                     all=True)
        sys.stdout.close()
        sys.stdout = sys.__stdout__

        locator_dataset_number = request.POST.get('locator_dataset', '1')
        locator_dataset = Promotion.objects.get(id=locator_dataset_number)
        f = open('/tmp/locator_export.txt', 'w')
        for chunk in request.FILES['export'].chunks():
            f.write(chunk)
        f.close()

        import csv
        import os
        import re
        from cartridge.shop.models import ProductVariation
        from django.template.defaultfilters import slugify

        f = open('/tmp/locator_export.txt', 'r')
        notfound = open('/tmp/notfound.txt', 'w')

        csvreader = csv.reader(f, delimiter="\t")

        # hide all locations (so that locations that haven't recieved new inventory won't appear in searches)
        # also clear out the inventory
        for location in Location.objects.all_with_deleted().filter(
                promotion=locator_dataset):
            location.inventory.clear()
            location.categories.clear()
            location.filtervalues.clear()
            location.do_not_display = True
            location.audio = False
            location.wireless = False
            location.hartke = False
            location.zoom = False
            location.save()

        d = Location()
        count = 0

        for row in csvreader:
            count += 1
            if row[0] == 'fiscal':
                continue
            if d.account_id != row[1] or d.account_key != row[3]:
                try:
                    d = Location.objects.get(account_id=row[1],
                                             account_key=row[3])
                except Location.DoesNotExist:
                    d = Location()
                id = d.id
                d.account_id = row[1]
                d.account_key = row[3]
                d.name = row[4]
                d.addr1 = row[5]
                d.addr2 = row[6]
                d.addr3 = row[7]
                d.city = row[8]
                d.state = row[9][:2]
                d.zip = row[10]
                d.save()
            else:
                print 'skip', row[1]

            d.filtervalues.add(locator_dataset)
            d.save()

            if row[11] == 'A':
                d.audio = True
            if row[11] == 'W':
                d.wireless = True
            if row[11] == 'H':
                d.hartke = True
            if row[11] == 'Z':
                d.zoom = True

            try:
                v = ProductVariation.objects.get(sku=row[12])
                p = v.product
                d.inventory.add(p)
                categories = Category.objects.filter(categories__products=p)
                for category in categories:
                    d.categories.add(category)
                d.do_not_display = False
            except ProductVariation.DoesNotExist:
                print "couldn't find ", row[12]
                notfound.write(row[12] + "\n")

            d.save()

        for d in Location.objects.filter(latitude=None):
            d.lookup_address()
            d.save()
        return HttpResponseRedirect(
            "/wheretobuy/ranged_geotagger?start=0&end=10000")
    return HttpResponse("Must upload a file")