Compare commits
28 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
9c3df89cb6 | 7 years ago |
|
|
20f706acaa | 7 years ago |
|
|
a19a96eac6 | 7 years ago |
|
|
af65dbc7ba | 7 years ago |
|
|
ce305afae2 | 7 years ago |
|
|
7321a632f1 | 7 years ago |
|
|
08e9ca1762 | 7 years ago |
|
|
7904795a30 | 7 years ago |
|
|
b073155efc | 7 years ago |
|
|
cbedba8c3f | 7 years ago |
|
|
d22034f02e | 7 years ago |
|
|
289eecb57e | 7 years ago |
|
|
a117ba8bea | 7 years ago |
|
|
19f9cc95e9 | 7 years ago |
|
|
75106ef662 | 7 years ago |
|
|
788ee4f88b | 7 years ago |
|
|
a0b1a36fc1 | 7 years ago |
|
|
06d39b615b | 7 years ago |
|
|
7cd4a3fbce | 7 years ago |
|
|
1a9e008ed0 | 7 years ago |
|
|
c56134f01e | 7 years ago |
|
|
37a855ad88 | 7 years ago |
|
|
1d192b8075 | 7 years ago |
|
|
3624239a4b | 7 years ago |
|
|
b315ef3fe8 | 7 years ago |
|
|
de0ff868be | 7 years ago |
|
|
8d2d52ae45 | 7 years ago |
|
|
ecd92b31d5 | 7 years ago |
@ -1 +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": []}}] |
|
||||||
@ -0,0 +1,93 @@ |
|||||||
|
|
||||||
|
.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 |
||||||
|
} |
||||||
|
} |
||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 418 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 266 KiB After Width: | Height: | Size: 266 KiB |
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 721 B |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
@ -0,0 +1,16 @@ |
|||||||
|
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"; |
||||||
|
|
||||||
@ -0,0 +1,29 @@ |
|||||||
|
{ |
||||||
|
"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" |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,48 @@ |
|||||||
|
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" |
||||||
|
}) |
||||||
|
] |
||||||
|
}; |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
server { |
||||||
|
server_name name_or_ip; |
||||||
|
listen 80; |
||||||
|
location / { |
||||||
|
proxy_pass http://localhost:8000; |
||||||
|
} |
||||||
|
|
||||||
|
location /static/ { |
||||||
|
root path_to_static_files; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
[ |
||||||
|
{ |
||||||
|
"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": [] |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
@ -0,0 +1,110 @@ |
|||||||
|
# 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,6 +1,5 @@ |
|||||||
from django.forms import forms |
from django.forms import forms |
||||||
from django.utils.translation import ugettext_lazy as _ |
from django.utils.translation import ugettext_lazy as _ |
||||||
|
|
||||||
from pinax.blog.forms import AdminPostForm as BaseAdminPostForm |
from pinax.blog.forms import AdminPostForm as BaseAdminPostForm |
||||||
|
|
||||||
from blog_ext.models import Post |
from blog_ext.models import Post |
||||||
@ -0,0 +1,93 @@ |
|||||||
|
# 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,6 +1,6 @@ |
|||||||
from django.urls import re_path |
from django.urls import re_path |
||||||
from . import views |
|
||||||
|
|
||||||
|
from . import views |
||||||
|
|
||||||
urlpatterns = [ |
urlpatterns = [ |
||||||
re_path(r"^$", views.BlogIndexView.as_view(), name="blog"), |
re_path(r"^$", views.BlogIndexView.as_view(), name="blog"), |
||||||
@ -0,0 +1,195 @@ |
|||||||
|
# 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='пользователь'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
# 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='Конец'), |
||||||
|
), |
||||||
|
] |
||||||