summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2023-06-29 15:39:38 -0500
committerluxagraf <sng@luxagraf.net>2023-06-29 15:39:38 -0500
commit1ebcea727da09a1b16853c7bb3a5523cf04d9ffc (patch)
tree24891eff48d9876248f6a0a0133fb4ecc638377d
parent67fbb0244bd401b360d5d921be6005a44105130e (diff)
added some features
-rw-r--r--app/deals/admin.py2
-rw-r--r--app/deals/migrations/0008_alter_deal_deal_price.py18
-rw-r--r--app/deals/migrations/0009_alter_deal_original_price.py18
-rw-r--r--app/deals/migrations/0010_alter_deal_discount_percent_str.py18
-rw-r--r--app/deals/models.py43
-rw-r--r--app/deals/templates/deals/deal_detail.html3
-rw-r--r--app/deals/urls.py13
-rw-r--r--app/deals/views.py7
-rw-r--r--config/base_urls.py1
-rw-r--r--config/settings.py2
10 files changed, 116 insertions, 9 deletions
diff --git a/app/deals/admin.py b/app/deals/admin.py
index 8c93ead..24aa35e 100644
--- a/app/deals/admin.py
+++ b/app/deals/admin.py
@@ -9,7 +9,7 @@ from .models import Deal
@admin.register(Deal)
class DealAdmin(OSMGeoAdmin):
- list_display = ('brand', 'title', 'category', 'deal_price', 'original_price', 'discount_percent', 'promo_type', 'amazon_link', 'search_wired')
+ list_display = ('brand', 'title', 'category', 'deal_price', 'original_price', 'discount_percent', 'promo_type', 'amazon_link', 'search_wired', 'get_airtable_code')
search_fields = ['title', ]
list_filter = ('category', 'promo_type', ('brand', DropdownFilter),)
diff --git a/app/deals/migrations/0008_alter_deal_deal_price.py b/app/deals/migrations/0008_alter_deal_deal_price.py
new file mode 100644
index 0000000..62437d3
--- /dev/null
+++ b/app/deals/migrations/0008_alter_deal_deal_price.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.2 on 2023-06-29 19:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('deals', '0007_rename_discount_percent_num_deal_discount_percent'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='deal',
+ name='deal_price',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ ]
diff --git a/app/deals/migrations/0009_alter_deal_original_price.py b/app/deals/migrations/0009_alter_deal_original_price.py
new file mode 100644
index 0000000..3d1c9fa
--- /dev/null
+++ b/app/deals/migrations/0009_alter_deal_original_price.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.2 on 2023-06-29 19:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('deals', '0008_alter_deal_deal_price'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='deal',
+ name='original_price',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ ]
diff --git a/app/deals/migrations/0010_alter_deal_discount_percent_str.py b/app/deals/migrations/0010_alter_deal_discount_percent_str.py
new file mode 100644
index 0000000..99017ea
--- /dev/null
+++ b/app/deals/migrations/0010_alter_deal_discount_percent_str.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.2 on 2023-06-29 19:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('deals', '0009_alter_deal_original_price'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='deal',
+ name='discount_percent_str',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ ]
diff --git a/app/deals/models.py b/app/deals/models.py
index 8afdb11..dde4465 100644
--- a/app/deals/models.py
+++ b/app/deals/models.py
@@ -1,5 +1,6 @@
import datetime
import os
+from decimal import Decimal
from django.dispatch import receiver
from django.contrib.gis.db import models
@@ -12,9 +13,9 @@ class Deal(models.Model):
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=12, null=True)
- original_price = models.CharField(max_length=12, null=True)
- discount_percent_str = models.CharField(max_length=12, null=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)
@@ -24,6 +25,12 @@ class Deal(models.Model):
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('<a target="_blank" href="%s">%s</a>' % (self.url, self.url))
admin_link.short_description = 'Link'
@@ -33,30 +40,52 @@ class Deal(models.Model):
term = term+"+site%3Awired.com"
return format_html("<a target='_blank' href='%s'>wired search</a>" % (term))
admin_link.short_description = 'Link'
+
+ def get_airtable_code(self):
+ return format_html("<a target='_blank' href='/code/%s'>Get code</a>" % (self.pk))
+ 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:
- price = f'{num(row[10]):.2f}'
+ if count > 0
if row[5] == "Y":
prime = True
else:
prime = False
_, created = Deal.objects.get_or_create(
print(row)
- count = 1
asin=row[0],
cateogry=row[1],
brand=row[2],
title=row[4],
prime_only=row[5],
promo_type=row[6],
- deal_price= Decimal(price),
+ deal_price= row[10],
+ original_price = row[11],
discount_percent=row[13],
- url=row[14],
+ url=row[13],
)
print(row[0], row[1], row[2], row[4],row[5],row[6],row[10],row[13],row[14])
diff --git a/app/deals/templates/deals/deal_detail.html b/app/deals/templates/deals/deal_detail.html
new file mode 100644
index 0000000..8ddb6d8
--- /dev/null
+++ b/app/deals/templates/deals/deal_detail.html
@@ -0,0 +1,3 @@
+<h4><a href="{{object.url}}">{{object.title|capfirst}} for ${{object.get_deal_price_pretty}} (${{object.dollars_off}} off)</a></h4>
+
+
diff --git a/app/deals/urls.py b/app/deals/urls.py
new file mode 100644
index 0000000..2a9bf4a
--- /dev/null
+++ b/app/deals/urls.py
@@ -0,0 +1,13 @@
+from django.urls import path, re_path
+
+from . import views
+
+app_name = "deals"
+
+urlpatterns = [
+ path(
+ r'<str:pk>',
+ views.DealDetailView.as_view(),
+ name="detail"
+ ),
+]
diff --git a/app/deals/views.py b/app/deals/views.py
new file mode 100644
index 0000000..c615bd8
--- /dev/null
+++ b/app/deals/views.py
@@ -0,0 +1,7 @@
+from django.views.generic import DetailView, ListView
+
+from .models import Deal
+
+
+class DealDetailView(DetailView):
+ model = Deal
diff --git a/config/base_urls.py b/config/base_urls.py
index 8fb6658..ec1b30e 100644
--- a/config/base_urls.py
+++ b/config/base_urls.py
@@ -12,6 +12,7 @@ AdminSite.site_header = "PD Data Sorting Tools"
AdminSite.site_title = "Sorting"
urlpatterns = [
path(r'admin/', admin.site.urls),
+ path(r'code/', include('deals.urls', namespace='deals')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
diff --git a/config/settings.py b/config/settings.py
index ee0ea53..3808f20 100644
--- a/config/settings.py
+++ b/config/settings.py
@@ -67,7 +67,7 @@ ROOT_URLCONF = 'config.base_urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [],
+ 'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [