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")
"""