import datetime import os from decimal import Decimal from django.dispatch import receiver from django.contrib.gis.db import models from django.utils.html import format_html, format_html_join class Brand(models.Model): name = models.CharField(max_length=200) class Meta: ordering = ('name',) def __str__(self): return self.name class Deal(models.Model): brand = models.ForeignKey(Brand, on_delete=models.CASCADE, null=True) asin = models.CharField(max_length=200) category = models.CharField(max_length=200) brand_str = models.CharField(max_length=200) title = models.CharField(max_length=200, blank=True, null=True) prime_only = models.BooleanField(default=True) promo_type = models.CharField(max_length=200, blank=True) deal_price = models.CharField(max_length=20, null=True) original_price = models.CharField(max_length=20, null=True) discount_percent_str = models.CharField(max_length=20, null=True) discount_percent = models.FloatField(null=True) url = models.CharField(max_length=200) class Meta: ordering = ('title',) def __str__(self): return self.title def dollars_off(self): return "{:.0f}".format(Decimal(self.original_price) - Decimal(self.deal_price)) def get_deal_price_pretty(self): return "{:.0f}".format(Decimal(self.deal_price)) def amazon_link(self): return format_html('Amazon' % (self.url)) admin_link.short_description = 'Link' def search_wired(self): term = "https://www.google.com/search?q=%s" % (str(self.title)) term = term+"+site%3Awired.com" return format_html("wired search" % (term)) admin_link.short_description = 'Link' def get_airtable_code(self): return format_html("Get code" % (self.pk)) admin_link.short_description = 'Link' def search_ccc(self): return format_html("Deal?" % (self.asin)) admin_link.short_description = 'Link' class MyDeal(models.Model): title = models.CharField(max_length=200, blank=True, null=True) lookup_title = models.CharField(max_length=200, blank=True, null=True) asin = models.CharField(max_length=200, blank=True, null=True) brand = models.CharField(max_length=200, blank=True, null=True) retailer = models.CharField(max_length=200, blank=True, null=True) secondary_retailer = models.CharField(max_length=200, blank=True, null=True) tertiary_retailer = models.CharField(max_length=200, blank=True, null=True) url = models.CharField(max_length=200) secondary_url = models.CharField(max_length=200, blank=True, null=True) tertiary_url = models.CharField(max_length=200, blank=True, null=True) body = models.TextField(null=True, blank=True) blurb = models.TextField(null=True) class Meta: ordering = ('title',) def __str__(self): return self.title def amazon_link(self): return format_html('%s' % (self.url, self.asin)) admin_link.short_description = 'Link' def search_wired(self): term = "https://www.google.com/search?q=%s" % (str(self.lookup_title)) term = term+"+site%3Awired.com" return format_html("wired search" % (term)) admin_link.short_description = 'Link' def search_ccc(self): return format_html("Deal?" % (self.asin)) admin_link.short_description = 'Link' """ with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: if count > 0 print(row) count = count+1 with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: print(row) count = count+1 import csv path = "pdelectronicsdata.csv" with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: if count > 0: print(row) if row[4] == "Y": prime = True else: prime = False _, created = Deal.objects.get_or_create( asin=row[0], category=row[1], brand_str=row[2], title=row[3], prime_only=prime, promo_type=row[5], deal_price= row[9], original_price = row[10], discount_percent_str=row[12], url=row[13], ) count = count+1 b, created = Brand.objects.get_or_create( name = deal.brand_str ) deal.brand = b deal.save() with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: if count > 0 if row[5] == "Y": prime = True else: prime = False _, created = Deal.objects.get_or_create( print(row) asin=row[0], cateogry="New", brand=row[7], title=row[18], prime_only=row[19], promo_type=row[21], deal_price= row[29], original_price = row[31], discount_percent=row[32], url=row[34], ) title, prime_only, promo_type, deal_price, discount_percent, url) _, created = Deal.objects.get_or_create( asin=row[0], cateogry=row[1], brand=row[2], title=row[4], prime_only=row[5], prime_only=row[6], deal_price=row[10], discount_percent=row[13], url=row[14], ) # creates a tuple of the new object or # current object and a boolean of if it was created """ """ parse airtable csv: import tldextract, csv path = '' with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: if count > 0: domain = tldextract.extract(row[2]) retailer = domain.domain.capitalize() d = '#### [%s](%s)\n\n+++button-group\n\n[%s](%s "%s"){: target="_blank"}\n\n+++\n\n%s\n\n' %(str(row[0]).strip(), row[2], retailer, row[2], retailer, row[4]) with open('out.txt', 'a') as the_file: the_file.write(d) print(d) count = count+1 import tldextract, csv path = '' with open(path) as f: reader = csv.reader(f) count = 0 for row in reader: if count > 0: domain = tldextract.extract(row[2]) retailer = domain.domain.capitalize() title = str(row[0].strip()) try: stitle = title.split('for')[0] except: stitle=title try: asin = str(row[2]).split("/dp/")[1] except: asin = '' d, created = MyDeal.objects.get_or_create( title = str(row[0].strip()), lookup_title = stitle, asin = asin, retailer = retailer, url = str(row[2].strip()) ) if not created: d.body = row[4] d.save() count = count+1 +++button-group [Amazon]({{object.url}} "Amazon"){: target="_blank"} +++ """ """ asin = 3 deal_type = 4 name = 6 url = 7 deal price = 9 price = 8 percent_discount_str = 10 prime only = 11 from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By driver = webdriver.Firefox() driver.get("http://www.python.org") """