diff options
author | luxagraf <sng@luxagraf.net> | 2023-06-29 15:39:38 -0500 |
---|---|---|
committer | luxagraf <sng@luxagraf.net> | 2023-06-29 15:39:38 -0500 |
commit | 1ebcea727da09a1b16853c7bb3a5523cf04d9ffc (patch) | |
tree | 24891eff48d9876248f6a0a0133fb4ecc638377d | |
parent | 67fbb0244bd401b360d5d921be6005a44105130e (diff) |
added some features
-rw-r--r-- | app/deals/admin.py | 2 | ||||
-rw-r--r-- | app/deals/migrations/0008_alter_deal_deal_price.py | 18 | ||||
-rw-r--r-- | app/deals/migrations/0009_alter_deal_original_price.py | 18 | ||||
-rw-r--r-- | app/deals/migrations/0010_alter_deal_discount_percent_str.py | 18 | ||||
-rw-r--r-- | app/deals/models.py | 43 | ||||
-rw-r--r-- | app/deals/templates/deals/deal_detail.html | 3 | ||||
-rw-r--r-- | app/deals/urls.py | 13 | ||||
-rw-r--r-- | app/deals/views.py | 7 | ||||
-rw-r--r-- | config/base_urls.py | 1 | ||||
-rw-r--r-- | config/settings.py | 2 |
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': [ |