├── tests ├── __init__.py ├── product_advertising_api │ └── __init__.py ├── test_utils.py ├── settings.py └── test_product.py ├── price_monitor ├── api │ ├── __init__.py │ ├── views │ │ ├── __init__.py │ │ ├── mixins │ │ │ ├── __init__.py │ │ │ └── ProductFilteringMixin.py │ │ ├── ProductListView.py │ │ ├── SubscriptionListView.py │ │ ├── SubscriptionRetrieveView.py │ │ ├── PriceListView.py │ │ ├── EmailNotificationListView.py │ │ └── ProductCreateRetrieveUpdateDestroyAPIView.py │ ├── renderers │ │ ├── __init__.py │ │ └── PriceChartPNGRenderer.py │ ├── serializers │ │ ├── __init__.py │ │ ├── PriceSerializer.py │ │ ├── EmailNotificationSerializer.py │ │ ├── SubscriptionSerializer.py │ │ └── ProductSerializer.py │ └── urls.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ ├── price_monitor_recreate_product.py │ │ ├── price_monitor_search.py │ │ ├── price_monitor_batch_create_products.py │ │ ├── price_monitor_send_test_mail.py │ │ └── price_monitor_clean_db.py ├── migrations │ ├── __init__.py │ ├── 0005_product_artist.py │ ├── 0004_make_price_and_currency_nullable.py │ ├── 0003_datamigration_for_min_max_cur_fks.py │ ├── 0002_add_min_max_fk_to_product.py │ └── 0001_initial.py ├── models │ ├── mixins │ │ ├── __init__.py │ │ └── PublicIDMixin.py │ ├── EmailNotification.py │ ├── Price.py │ ├── Subscription.py │ ├── __init__.py │ └── Product.py ├── product_advertising_api │ ├── __init__.py │ └── api.py ├── static │ └── price_monitor │ │ ├── css │ │ ├── base.css │ │ └── inline-form.css │ │ ├── bootstrap │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── css │ │ │ ├── bootstrap-theme.min.css │ │ │ └── bootstrap-theme.css │ │ ├── app │ │ ├── js │ │ │ ├── controller │ │ │ │ ├── main-ctrl.js │ │ │ │ ├── product-delete-ctrl.js │ │ │ │ ├── emailnotification-create-ctrl.js │ │ │ │ ├── product-detail-ctrl.js │ │ │ │ └── product-list-ctrl.js │ │ │ ├── filters.js │ │ │ ├── server-connector.js │ │ │ └── app.js │ │ ├── partials │ │ │ ├── product-delete.html │ │ │ ├── emailnotification-create.html │ │ │ ├── product-detail.html │ │ │ └── product-list.html │ │ └── css │ │ │ ├── app.css │ │ │ └── xeditable.css │ │ └── angular │ │ ├── angular-cookies.min.js │ │ ├── angular-resource.min.js │ │ ├── angular-route.min.js │ │ └── angular-responsive-images.js ├── locale │ └── de │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── django.po ├── urls.py ├── __init__.py ├── tasks.py ├── forms.py ├── views.py ├── admin.py ├── utils.py ├── app_settings.py └── templates │ └── price_monitor │ └── angular_index_view.html ├── docker ├── web │ ├── project │ │ ├── glue_auth │ │ │ ├── models.py │ │ │ ├── __init__.py │ │ │ ├── templates │ │ │ │ ├── price_monitor │ │ │ │ │ └── angular_index_view.html │ │ │ │ └── glue_auth │ │ │ │ │ ├── base.html │ │ │ │ │ └── login.html │ │ │ ├── urls.py │ │ │ └── fixtures │ │ │ │ └── admin.json │ │ ├── requirements.pip │ │ ├── glue │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── wsgi.py │ │ │ ├── celery.py │ │ │ └── settings.py │ │ └── manage.py │ ├── celery_run.sh │ ├── web_run.sh │ ├── django-amazon-price-monitor │ │ ├── price_monitor │ │ │ └── __init__.py │ │ └── setup.py │ └── Dockerfile ├── .gitignore ├── compose.env ├── base │ └── Dockerfile └── docker-compose.yml ├── setup.cfg ├── .coveragerc ├── hooks └── pre-commit ├── models.png ├── MANIFEST.in ├── docs └── price_monitor.product_advertising_api.tasks.png ├── .editorconfig ├── .gitignore ├── .landscape.yaml ├── Makefile ├── LICENSE ├── .travis.yml ├── CONTRIBUTING.rst ├── setup.py ├── tox.ini └── HISTORY.rst /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docker/web/project/glue_auth/models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/api/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [wheel] 2 | universal = 1 -------------------------------------------------------------------------------- /docker/web/project/glue_auth/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/api/renderers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/api/serializers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/api/views/mixins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/models/mixins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/product_advertising_api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /price_monitor/product_advertising_api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = price_monitor/migrations/* -------------------------------------------------------------------------------- /hooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | flake8 price_monitor --ignore=E501,E128 --exclude=migrations -------------------------------------------------------------------------------- /models.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/models.png -------------------------------------------------------------------------------- /docker/web/celery_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # wait for redis 3 | sleep 5 4 | celery --beat -A glue worker -------------------------------------------------------------------------------- /docker/.gitignore: -------------------------------------------------------------------------------- 1 | docker-compose.override.yml 2 | logs 3 | media 4 | postgres 5 | web/project/celerybeat-schedule.db -------------------------------------------------------------------------------- /price_monitor/static/price_monitor/css/base.css: -------------------------------------------------------------------------------- 1 | #footer div { 2 | font-size: 12px; 3 | margin-top: 30px; 4 | text-align: center; 5 | } -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.rst 2 | include HISTORY.rst 3 | recursive-include price_monitor *.html *.png *.gif *js *.css *jpg *jpeg *svg *py *eot *ttf *woff 4 | -------------------------------------------------------------------------------- /docker/web/project/requirements.pip: -------------------------------------------------------------------------------- 1 | Django<2 2 | dj-database-url 3 | psycopg2>=2.5.4 4 | celery>=4,<5 5 | django-redis-cache>=1.5.4 6 | hiredis<0.3 7 | Pillow<6 -------------------------------------------------------------------------------- /price_monitor/locale/de/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/price_monitor/locale/de/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /docs/price_monitor.product_advertising_api.tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/docs/price_monitor.product_advertising_api.tasks.png -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.rst] 2 | indent_style = tab 3 | indent_size = 4 4 | 5 | [*.json] 6 | indent_style = space 7 | indent_size = 4 8 | 9 | [Makefile] 10 | indent_style = tab 11 | indent_size = 4 -------------------------------------------------------------------------------- /docker/web/web_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # wait for postgres 3 | sleep 5 4 | cd /srv/project/ 5 | python3 manage.py migrate 6 | python3 manage.py loaddata admin 7 | python3 manage.py runserver 0.0.0.0:8000 -------------------------------------------------------------------------------- /price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ponyriders/django-amazon-price-monitor/HEAD/price_monitor/static/price_monitor/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /docker/web/project/glue/__init__.py: -------------------------------------------------------------------------------- 1 | """Glue project init""" 2 | from __future__ import absolute_import 3 | 4 | # This will make sure the app is always imported when 5 | # Django starts so that shared_task will use this app. 6 | from .celery import app as celery_app # noqa 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.pot 3 | *.pyc 4 | .coverage 5 | .cache 6 | .env 7 | .idea 8 | .project 9 | .pydevproject 10 | .settings 11 | .tox 12 | .vscode 13 | build 14 | dist 15 | django_amazon_price_monitor.egg-info 16 | price_monitor/management/commands/price_monitor_dev.py -------------------------------------------------------------------------------- /docker/web/project/glue_auth/templates/price_monitor/angular_index_view.html: -------------------------------------------------------------------------------- 1 | {% extends "price_monitor/angular_index_view.html" %} 2 | 3 | 4 | {% block footer %} 5 |
Your username and password didn't match. Please try again.
7 | {% endif %} 8 | 24 | {% endblock %} -------------------------------------------------------------------------------- /price_monitor/static/price_monitor/angular/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.3.9 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /docker/web/Dockerfile: -------------------------------------------------------------------------------- 1 | # basic setup, use base image of treasury project 2 | FROM pricemonitor/base:latest 3 | MAINTAINER Alexander Herrmann