Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
aace6dd8df | 7 years ago |
370 changed files with 13198 additions and 10038 deletions
@ -0,0 +1 @@ |
||||
[{"model": "accounts_ext.user", "pk": 1, "fields": {"password": "pbkdf2_sha256$100000$AAP4DpqYKrFB$mQRKz7qi/1va3Zoh2O3g9j7wYKCBaMLz5LFrbszDNLA=", "last_login": "2018-08-12T20:46:54Z", "create_at": "2018-08-12T20:46:44.961Z", "updated_at": "2018-08-12T20:47:05.733Z", "status": 25, "is_superuser": true, "username": "dimkasp", "email": "dimkasp@mail.ru", "referral_user": null, "confirmed_at": null, "groups": [], "user_permissions": []}}] |
||||
@ -1,5 +1,6 @@ |
||||
from django.forms import forms |
||||
from django.utils.translation import ugettext_lazy as _ |
||||
|
||||
from pinax.blog.forms import AdminPostForm as BaseAdminPostForm |
||||
|
||||
from blog_ext.models import Post |
||||
@ -1,7 +1,7 @@ |
||||
from django.urls import re_path |
||||
|
||||
from . import views |
||||
|
||||
|
||||
urlpatterns = [ |
||||
re_path(r"^$", views.BlogIndexView.as_view(), name="blog"), |
||||
|
||||
@ -1,19 +1,24 @@ |
||||
import uuid |
||||
from decimal import Decimal |
||||
|
||||
from decimal import Decimal |
||||
from autoslug import AutoSlugField |
||||
from django.contrib.auth import get_user_model |
||||
|
||||
from django.core.validators import MinValueValidator, MaxValueValidator, RegexValidator |
||||
from django.db import models |
||||
from django.contrib.auth import get_user_model |
||||
from django.db.models import Avg |
||||
from django.utils.timezone import now, timedelta |
||||
from django.db.models.signals import post_save |
||||
from django.dispatch import receiver |
||||
from django.utils.translation import ugettext_lazy as _ |
||||
from django.utils.timezone import now, timedelta |
||||
|
||||
|
||||
# Create your models here. |
||||
from core.models import ( |
||||
AbstractStatusModel, AbstractDateTimeModel, |
||||
ActiveOnlyManager, |
||||
City, Currency) |
||||
|
||||
from products.models import Product |
||||
|
||||
|
||||
@ -1,3 +1,4 @@ |
||||
from django.conf.urls import url |
||||
from django.urls import re_path |
||||
|
||||
from . import views |
||||
File diff suppressed because it is too large
Load Diff
@ -1,93 +0,0 @@ |
||||
|
||||
.br-theme-css-stars .br-widget { |
||||
height: 28px; |
||||
white-space: nowrap |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget a { |
||||
text-decoration: none; |
||||
height: 18px; |
||||
width: 18px; |
||||
float: left; |
||||
font-size: 23px; |
||||
margin-right: 5px |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget a:after { |
||||
content: "\2605"; |
||||
color: #d2d2d2 |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget a.br-active:after { |
||||
color: #edb867 |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget a.br-selected:after { |
||||
color: #edb867 |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget .br-current-rating { |
||||
display: none |
||||
} |
||||
|
||||
.br-theme-css-stars .br-readonly a { |
||||
cursor: default |
||||
} |
||||
|
||||
@media print { |
||||
.br-theme-css-stars .br-widget a:after { |
||||
content: "\2606"; |
||||
color: #000 |
||||
} |
||||
|
||||
.br-theme-css-stars .br-widget a.br-active:after, .br-theme-css-stars .br-widget a.br-selected:after { |
||||
content: "\2605"; |
||||
color: #000 |
||||
} |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget { |
||||
height: 28px; |
||||
white-space: nowrap |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget a { |
||||
font: normal normal normal 20px/1 FontAwesome; |
||||
text-rendering: auto; |
||||
-webkit-font-smoothing: antialiased; |
||||
text-decoration: none; |
||||
margin-right: 2px |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget a:after { |
||||
content: '\f005'; |
||||
color: #d2d2d2 |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget a.br-active:after { |
||||
color: #edb867 |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget a.br-selected:after { |
||||
color: #edb867 |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget .br-current-rating { |
||||
display: none |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-readonly a { |
||||
cursor: default |
||||
} |
||||
|
||||
@media print { |
||||
.br-theme-fontawesome-stars .br-widget a:after { |
||||
content: '\f006'; |
||||
color: #000 |
||||
} |
||||
|
||||
.br-theme-fontawesome-stars .br-widget a.br-active:after, .br-theme-fontawesome-stars .br-widget a.br-selected:after { |
||||
content: '\f005'; |
||||
color: #000 |
||||
} |
||||
} |
||||
@ -1,16 +0,0 @@ |
||||
import "./asserts/css/main.css"; |
||||
import './node_modules/jquery-ui-dist/jquery-ui.min.css'; |
||||
import "./node_modules/bootstrap/dist/css/bootstrap.min.css"; |
||||
|
||||
import './node_modules/jquery/dist/jquery.js'; |
||||
import './node_modules/jquery-ui-dist/jquery-ui.js'; |
||||
import './node_modules/magnific-popup/dist/jquery.magnific-popup.js'; |
||||
import './node_modules/jquery-bar-rating/dist/jquery.barrating.min.js'; |
||||
import './node_modules/bootstrap/dist/js/bootstrap.js'; |
||||
import './node_modules/jquery-autocomplete/jquery.autocomplete.js'; |
||||
|
||||
import "./asserts/js/ajax.js"; |
||||
import "./asserts/js/basket.tools.js"; |
||||
import "./asserts/js/common.js"; |
||||
import "./asserts/js/our_search_code.js"; |
||||
|
||||
@ -1,29 +0,0 @@ |
||||
{ |
||||
"name": "eshop", |
||||
"version": "1.0.0", |
||||
"description": "", |
||||
"main": "index.js", |
||||
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1", |
||||
"dev": "webpack --mode=development --watch", |
||||
"build": "webpack --mode=production" |
||||
}, |
||||
"author": "FUNNYDMAN", |
||||
"license": "ISC", |
||||
"devDependencies": { |
||||
"webpack": "^4.25.1", |
||||
"webpack-cli": "^3.1.2", |
||||
"css-loader": "^1.0.1", |
||||
"extract-text-webpack-plugin": "^4.0.0-beta.0", |
||||
"file-loader": "^2.0.0", |
||||
"style-loader": "^0.23.1" |
||||
}, |
||||
"dependencies": { |
||||
"bootstrap": "3.3.7", |
||||
"jquery": "^3.3.1", |
||||
"jquery-autocomplete": "^1.2.8", |
||||
"jquery-bar-rating": "^1.2.2", |
||||
"jquery-ui-dist": "1.12.1", |
||||
"magnific-popup": "^1.1.0" |
||||
} |
||||
} |
||||
@ -1,48 +0,0 @@ |
||||
const path = require('path'); |
||||
const ExtractTextPlugin = require('extract-text-webpack-plugin'); |
||||
const webpack = require('webpack'); |
||||
|
||||
module.exports = { |
||||
entry: './index.js', |
||||
output: { |
||||
filename: './js/build-min.js', |
||||
path: path.resolve(__dirname, 'dist') |
||||
}, |
||||
module: { |
||||
rules: [{ |
||||
test: /\.(css)$/, |
||||
use: ExtractTextPlugin.extract({ |
||||
fallback: 'style-loader', |
||||
use: ['css-loader'] |
||||
}) |
||||
}, |
||||
{ |
||||
test: /\.(png|svg|jpg|gif|jpeg)$/, |
||||
use: [ |
||||
{ |
||||
loader: 'file-loader', |
||||
options: {outputPath: 'img/'} |
||||
} |
||||
] |
||||
}, { |
||||
test: /\.(woff(2)?|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/, |
||||
use: [ |
||||
{ |
||||
loader: 'file-loader', |
||||
options: { |
||||
name: '[name].[ext]', |
||||
outputPath: 'fonts/' |
||||
} |
||||
} |
||||
] |
||||
} |
||||
] |
||||
}, |
||||
plugins: [ |
||||
new ExtractTextPlugin("css/build.css"), |
||||
new webpack.ProvidePlugin({ |
||||
$: "jquery", |
||||
jQuery: "jquery" |
||||
}) |
||||
] |
||||
}; |
||||
@ -1,7 +1,13 @@ |
||||
import os |
||||
from django.conf import settings |
||||
from django.contrib.auth import get_user_model |
||||
from django.core.validators import RegexValidator |
||||
from django.db import models |
||||
from django.utils.translation import ugettext_lazy as _ |
||||
|
||||
# Create your models here. |
||||
from core.models import AbstractStatusModel, STATUS_DELETED |
||||
|
||||
# --------------------- REQUEST STATUS LIST -------------------- |
||||
|
||||
STATUS_NEW = 0 |
||||
@ -1,7 +1,6 @@ |
||||
from django.core.management.base import BaseCommand |
||||
from django.core.cache import cache |
||||
|
||||
|
||||
class Command(BaseCommand): |
||||
def handle(self, *args, **kwargs): |
||||
cache.clear() |
||||
@ -1,11 +0,0 @@ |
||||
server { |
||||
server_name name_or_ip; |
||||
listen 80; |
||||
location / { |
||||
proxy_pass http://localhost:8000; |
||||
} |
||||
|
||||
location /static/ { |
||||
root path_to_static_files; |
||||
} |
||||
} |
||||
@ -1,20 +0,0 @@ |
||||
[ |
||||
{ |
||||
"model": "accounts_ext.user", |
||||
"pk": 1, |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$100000$AAP4DpqYKrFB$mQRKz7qi/1va3Zoh2O3g9j7wYKCBaMLz5LFrbszDNLA=", |
||||
"last_login": "2018-08-12T20:46:54Z", |
||||
"create_at": "2018-08-12T20:46:44.961Z", |
||||
"updated_at": "2018-08-12T20:47:05.733Z", |
||||
"status": 25, |
||||
"is_superuser": true, |
||||
"username": "dimkasp", |
||||
"email": "dimkasp@mail.ru", |
||||
"referral_user": null, |
||||
"confirmed_at": null, |
||||
"groups": [], |
||||
"user_permissions": [] |
||||
} |
||||
} |
||||
] |
||||
@ -1,110 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
from django.conf import settings |
||||
import django.contrib.auth.models |
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
('auth', '0009_alter_user_last_name_max_length'), |
||||
('core', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='User', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('password', models.CharField(max_length=128, verbose_name='password')), |
||||
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), |
||||
('username', models.CharField(max_length=255, verbose_name='username')), |
||||
('email', models.EmailField(error_messages={'unique': 'A user with that email already exists.'}, max_length=254, unique=True, verbose_name='email')), |
||||
('confirmed_at', models.DateTimeField(blank=True, null=True, verbose_name='подвтержден в')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'пользователь', |
||||
'verbose_name_plural': 'пользователи', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Company', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('company_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='компания')), |
||||
('address', models.TextField(blank=True, null=True, verbose_name='адрес')), |
||||
('inn', models.CharField(blank=True, max_length=12, null=True, verbose_name='ИНН')), |
||||
('ogrn', models.CharField(blank=True, max_length=13, null=True, verbose_name='ОГРН')), |
||||
('type', models.SmallIntegerField(blank=True, choices=[(25, 'Компания'), (50, 'Физ лицо')], default=25, null=True, verbose_name='тип')), |
||||
('city', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.City')), |
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='username')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'компания', |
||||
'verbose_name_plural': 'компании', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Profile', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('first_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='first name')), |
||||
('last_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='last name')), |
||||
('patronymic', models.CharField(blank=True, max_length=100, null=True, verbose_name='отчество')), |
||||
('birthday', models.DateField(blank=True, null=True, verbose_name='дата рождения')), |
||||
('phone', models.CharField(blank=True, max_length=12, null=True, validators=[django.core.validators.RegexValidator(message="Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.", regex='^\\((+7)|8)?\\d{10}$')], verbose_name='телефон')), |
||||
('address', models.TextField(verbose_name='aдрес')), |
||||
('city', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.City', verbose_name='город')), |
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='username')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'профиль', |
||||
'verbose_name_plural': 'профили', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Group', |
||||
fields=[ |
||||
], |
||||
options={ |
||||
'verbose_name': 'группа', |
||||
'verbose_name_plural': 'группы', |
||||
'proxy': True, |
||||
'indexes': [], |
||||
}, |
||||
bases=('auth.group',), |
||||
managers=[ |
||||
('objects', django.contrib.auth.models.GroupManager()), |
||||
], |
||||
), |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='groups', |
||||
field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='referral_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Реферальный пользователь'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='user_permissions', |
||||
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), |
||||
), |
||||
] |
||||
@ -1,93 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
import blog_ext.models |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
('blog', '0001_initial'), |
||||
('pinax_images', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='ImageSet', |
||||
fields=[ |
||||
('imageset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='pinax_images.ImageSet')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Коллаж', |
||||
'verbose_name_plural': 'Коллажи', |
||||
}, |
||||
bases=('pinax_images.imageset', models.Model), |
||||
), |
||||
migrations.CreateModel( |
||||
name='Post', |
||||
fields=[ |
||||
('post_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='blog.Post')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('preview_image', models.FileField(blank=True, null=True, upload_to=blog_ext.models.Post.upload_file_to, verbose_name='Превью изображение')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Пост', |
||||
'verbose_name_plural': 'Посты', |
||||
}, |
||||
bases=('blog.post', models.Model), |
||||
), |
||||
migrations.CreateModel( |
||||
name='ReviewComment', |
||||
fields=[ |
||||
('reviewcomment_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='blog.ReviewComment')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Комментарий', |
||||
'verbose_name_plural': 'Комментарий', |
||||
}, |
||||
bases=('blog.reviewcomment',), |
||||
), |
||||
migrations.CreateModel( |
||||
name='Revision', |
||||
fields=[ |
||||
('revision_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='blog.Revision')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Ревизия', |
||||
'verbose_name_plural': 'Ревизии', |
||||
}, |
||||
bases=('blog.revision',), |
||||
), |
||||
migrations.CreateModel( |
||||
name='Section', |
||||
fields=[ |
||||
('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='blog.Section')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Секция', |
||||
'verbose_name_plural': 'Секции', |
||||
}, |
||||
bases=('blog.section', models.Model), |
||||
), |
||||
migrations.CreateModel( |
||||
name='PostImageSet', |
||||
fields=[ |
||||
], |
||||
options={ |
||||
'verbose_name': 'Изображение', |
||||
'verbose_name_plural': 'Изображения', |
||||
'proxy': True, |
||||
'indexes': [], |
||||
}, |
||||
bases=('blog_ext.imageset',), |
||||
), |
||||
] |
||||
@ -1,195 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
import autoslug.fields |
||||
import cart.models |
||||
import datetime |
||||
from django.conf import settings |
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import django.db.models.manager |
||||
from django.utils.timezone import utc |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
('products', '0001_initial'), |
||||
('core', '0001_initial'), |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Buying', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('bonus_points', models.IntegerField(validators=[django.core.validators.MinValueValidator(0)], verbose_name='бонусы')), |
||||
('status', models.SmallIntegerField(choices=[(25, 'В корзине'), (50, 'Обрабатываеться'), (75, 'Оплаченно')], default=25, verbose_name='статус')), |
||||
('amount', models.SmallIntegerField(default=0, verbose_name='колличество')), |
||||
('total_price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='цена')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Покупка', |
||||
'verbose_name_plural': 'Покупки', |
||||
}, |
||||
managers=[ |
||||
('active', django.db.models.manager.Manager()), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='Cashback', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('cashback', models.DecimalField(decimal_places=2, default=0, max_digits=7, verbose_name='Сумма')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'заработанный'), (100, 'потраченный')], default=0, verbose_name='статус')), |
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
options={ |
||||
'verbose_name': 'cashback', |
||||
'verbose_name_plural': 'cashback', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Client', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('name', models.CharField(max_length=255, verbose_name='Название')), |
||||
('image', models.FileField(upload_to=cart.models.Client.upload_file_to, verbose_name='Изображение')), |
||||
('preview', models.FileField(upload_to=cart.models.Client.upload_file_to, verbose_name='Миниатюрка')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Клиент', |
||||
'verbose_name_plural': 'Клиенты', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Discount', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='Имя')), |
||||
('image', models.FileField(blank=True, null=True, upload_to=cart.models.Discount.upload_file_to, verbose_name='Изображение')), |
||||
('code', models.CharField(blank=True, default='f09d1c83-a6f8-40b5-a980-c7e69f7f585c', max_length=50, unique=True, verbose_name='Код')), |
||||
('valid_from', models.DateTimeField(auto_now_add=True, verbose_name='Начало')), |
||||
('valid_to', models.DateTimeField(blank=True, default=datetime.datetime(2018, 11, 1, 15, 27, 27, 195955, tzinfo=utc), verbose_name='Конец')), |
||||
('value', models.IntegerField(default=0, help_text='Указываем целым числом. Пример: 30 = 30%', validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Процент')), |
||||
('active', models.BooleanField(default=True, verbose_name='Активная')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Дисконт', |
||||
'verbose_name_plural': 'Дисконт', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Offer', |
||||
fields=[ |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('product', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='products.Product', verbose_name='Продукт')), |
||||
('vendor_code', models.CharField(help_text='Должен быть уникальным', max_length=255, unique=True, verbose_name='Артикул')), |
||||
('price', models.DecimalField(decimal_places=2, help_text='Цена за продукт', max_digits=10, validators=[django.core.validators.MinValueValidator(1.0)], verbose_name='цена')), |
||||
('amount', models.IntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Колличество')), |
||||
('cashback', models.DecimalField(decimal_places=2, default=0, help_text='Указаная сумма будет отображаться в выбранной валюте позиции', max_digits=6, verbose_name='Кешбек')), |
||||
('note', models.TextField(blank=True, null=True, verbose_name='Пометка')), |
||||
('account_nds', models.BooleanField(default=False, verbose_name='с учетом НДС')), |
||||
('currency', models.ForeignKey(help_text='Цена по умолчанию в рублях', on_delete=django.db.models.deletion.PROTECT, to='core.Currency', verbose_name='Валюта')), |
||||
('discount', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cart.Discount', verbose_name='Дисконт')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Позиция', |
||||
'verbose_name_plural': 'Позиции', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Order', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('order_code', models.CharField(max_length=255, verbose_name='код заказа')), |
||||
('customer_name', models.CharField(max_length=255, verbose_name='имя')), |
||||
('customer_email', models.EmailField(blank=True, default=None, max_length=254, null=True, verbose_name='email')), |
||||
('phone', models.CharField(max_length=12, validators=[django.core.validators.RegexValidator(message="Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.", regex='^((\\+7)|8)?\\d{10}$')], verbose_name='телефон')), |
||||
('customer_address', models.TextField(verbose_name='адрес')), |
||||
('total_price', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='стоимость')), |
||||
('comment', models.TextField(blank=True, default=None, null=True, verbose_name='комментарий')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (50, 'Обрабатывается'), (100, 'Оплаченно')], default=0, verbose_name='статус')), |
||||
('city', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='core.City', verbose_name='Город')), |
||||
('customer_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='пользователь')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Заказ', |
||||
'verbose_name_plural': 'Заказы', |
||||
'ordering': ('-create_at',), |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='SupplyTarget', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='Назначение')), |
||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True)), |
||||
('status', models.PositiveSmallIntegerField(help_text='Необходимо указать числовой код статус', verbose_name='статус')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Лицензия', |
||||
'verbose_name_plural': 'Лицензии', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='SupplyType', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='Тип')), |
||||
('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True)), |
||||
('min_term', models.IntegerField(help_text='Минимальный срок поставки', verbose_name='от')), |
||||
('max_term', models.IntegerField(help_text='Максимальный срок поставки', verbose_name='до')), |
||||
('term_dimension', models.SmallIntegerField(choices=[(0, 'Час'), (0, 'День'), (0, 'Неделя'), (0, 'Месяц')], default=0, verbose_name='размерность')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Тип поставки', |
||||
'verbose_name_plural': 'Тип поставки', |
||||
}, |
||||
), |
||||
migrations.AddField( |
||||
model_name='offer', |
||||
name='supply_target', |
||||
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cart.SupplyTarget', verbose_name='Лицензия'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='offer', |
||||
name='supply_type', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cart.SupplyType', verbose_name='Поставка'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='buying', |
||||
name='offer', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cart.Offer', verbose_name='позиция'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='buying', |
||||
name='order', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cart.Order', verbose_name='пользователь'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='buying', |
||||
name='user', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='пользователь'), |
||||
), |
||||
] |
||||
@ -1,25 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-27 16:53 |
||||
|
||||
import datetime |
||||
from django.db import migrations, models |
||||
from django.utils.timezone import utc |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('cart', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='discount', |
||||
name='code', |
||||
field=models.CharField(blank=True, default='866872fd-bf5a-48bc-8e22-c3581eb7a307', max_length=50, unique=True, verbose_name='Код'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='discount', |
||||
name='valid_to', |
||||
field=models.DateTimeField(blank=True, default=datetime.datetime(2018, 11, 3, 16, 53, 38, 906817, tzinfo=utc), verbose_name='Конец'), |
||||
), |
||||
] |
||||
@ -1,33 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Request', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='Name')), |
||||
('email', models.EmailField(max_length=254, verbose_name='Email')), |
||||
('subject', models.CharField(max_length=500, verbose_name='Subject')), |
||||
('message', models.TextField(blank=True, null=True)), |
||||
('phone', models.CharField(blank=True, max_length=12, null=True, validators=[django.core.validators.RegexValidator(message="Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.", regex='^((\\+7)|8)?\\d{10}$')])), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (10, 'Обрабатывается'), (20, 'Обработан'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Запрос', |
||||
'verbose_name_plural': 'Запросы', |
||||
}, |
||||
), |
||||
] |
||||
@ -1,60 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
import core.models |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Certificate', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('status', models.SmallIntegerField(choices=[(0, 'Новый'), (25, 'Активный'), (50, 'Удаленный')], default=0, verbose_name='статус')), |
||||
('name', models.CharField(max_length=255, verbose_name='Название')), |
||||
('image', models.FileField(blank=True, null=True, upload_to=core.models.Certificate.upload_file_to, verbose_name='Изображение')), |
||||
('preview', models.FileField(upload_to=core.models.Certificate.upload_file_to, verbose_name='Миниатюрка')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Сертификат', |
||||
'verbose_name_plural': 'Сертификаты', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='City', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='Город')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Город', |
||||
'verbose_name_plural': 'Города', |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Currency', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('create_at', models.DateTimeField(auto_now_add=True, verbose_name='создан в')), |
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='обновлен')), |
||||
('name', models.CharField(max_length=255, verbose_name='название')), |
||||
('code', models.CharField(max_length=64, verbose_name='код валюты')), |
||||
('sign', models.CharField(blank=True, max_length=10, null=True, verbose_name='символ валюты')), |
||||
('value', models.DecimalField(decimal_places=2, help_text='Указывается в рублях', max_digits=6, verbose_name='Курс')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Валюта', |
||||
'verbose_name_plural': 'Валюта', |
||||
}, |
||||
), |
||||
] |
||||
@ -1,5 +0,0 @@ |
||||
from django.test import TestCase |
||||
|
||||
|
||||
class BehaviourTestCaseMixin: |
||||
pass |
||||
@ -1,18 +0,0 @@ |
||||
try: |
||||
from .base import * |
||||
except ImportError: |
||||
raise ImportError("Oops,can't find base settings") |
||||
|
||||
# configurations for django debug toolbar |
||||
INTERNAL_IPS = ('127.0.0.1',) |
||||
|
||||
MIDDLEWARE = [ |
||||
'debug_toolbar.middleware.DebugToolbarMiddleware' |
||||
] + MIDDLEWARE |
||||
INSTALLED_APPS = INSTALLED_APPS + ['debug_toolbar'] |
||||
DEBUG_TOOLBAR_CONFIG = { |
||||
'RESULTS_CACHE_SIZE': 50 |
||||
} |
||||
DEFAULT_FROM_EMAIL = 'order@russian-programms.ru' |
||||
CELERY_ALWAYS_EAGER = True |
||||
|
||||
@ -1,47 +0,0 @@ |
||||
from django.urls import re_path, path, include |
||||
from django.contrib import admin |
||||
from django.conf import settings |
||||
from django.conf.urls.static import static |
||||
|
||||
from core import views |
||||
|
||||
admin.autodiscover() |
||||
|
||||
urlpatterns = [ |
||||
re_path(r'^jet/', include('jet.urls', 'jet')), |
||||
re_path(r'^jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')), |
||||
re_path(r'^admin/', admin.site.urls), |
||||
|
||||
re_path(r'^ckeditor/', include('ckeditor_uploader.urls')), |
||||
|
||||
re_path('pages/', include('django.contrib.flatpages.urls')), |
||||
|
||||
re_path('accounts/', include(('accounts_ext.urls', 'accounts_ext'), namespace='accounts_ext')), |
||||
re_path('accounts/', include('registration.backends.default.urls')), |
||||
re_path('accounts/', |
||||
include(('django.contrib.auth.urls', 'django.contrib.auth'), namespace='accounts')), |
||||
|
||||
re_path(r'', include(('index.urls', 'index'), namespace='index')), |
||||
re_path(r'^contact-us/', include(('contact_us.urls', 'contact_us'), namespace='contact_us')), |
||||
|
||||
re_path(r'^products/', include(('products.urls', 'products'), namespace='products')), |
||||
re_path(r'^cabinet/', include(('cabinet.urls', 'cabinet'), namespace='cabinet')), |
||||
|
||||
re_path(r'^cart/', include(('cart.urls', 'cart'), namespace='cart')), |
||||
|
||||
re_path(r'^news/', include(('blog_ext.urls', 'blog_ext'), namespace='news')), |
||||
|
||||
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \ |
||||
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
||||
|
||||
if settings.DEBUG: |
||||
import debug_toolbar |
||||
|
||||
urlpatterns = [ |
||||
path('__debug__/', include(debug_toolbar.urls)), |
||||
] + urlpatterns |
||||
|
||||
handler404 = views.Handler404View.as_view() |
||||
handler500 = views.Handler500View.as_view() |
||||
handler403 = views.Handler403View.as_view() |
||||
handler400 = views.Handler400View.as_view() |
||||
@ -1,44 +0,0 @@ |
||||
# Generated by Django 2.0.7 on 2018-10-25 15:27 |
||||
|
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
('flatpages', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='CKFlatPage', |
||||
fields=[ |
||||
('flatpage_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='flatpages.FlatPage')), |
||||
('order', models.PositiveIntegerField(default=0, verbose_name='Порядок')), |
||||
('is_visible', models.BooleanField(default=True, verbose_name='показывать?')), |
||||
('header_class', models.CharField(blank=True, max_length=255, null=True, verbose_name='Header css class')), |
||||
('description', models.CharField(blank=True, max_length=255, null=True, verbose_name='Meta описание')), |
||||
('keywords', models.CharField(blank=True, max_length=255, null=True, verbose_name='Meta теги')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Простая страница', |
||||
'verbose_name_plural': 'Простые страницы', |
||||
}, |
||||
bases=('flatpages.flatpage',), |
||||
), |
||||
migrations.CreateModel( |
||||
name='Subscriber', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('email', models.EmailField(max_length=254, verbose_name='Email')), |
||||
('name', models.CharField(max_length=128, verbose_name='Имя')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Подписчик', |
||||
'verbose_name_plural': 'Подписчики', |
||||
}, |
||||
), |
||||
] |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue