Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.82 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.template import defaultfilters
  4. from django.contrib.auth.models import User, Group
  5. from django.utils import timezone
  6. from django.utils.dateformat import format
  7. from django.conf import settings
  8. from django.contrib.sites.models import Site
  9. from ckeditor.fields import RichTextField
  10. from django.urls import reverse, reverse_lazy
  11.  
  12. import datetime
  13. import json
  14. import uuid
  15. import re
  16. import math
  17.  
  18. from django.db import models
  19.  
  20.  
  21. class Page(models.Model):
  22.     class Meta:
  23.         abstract = True
  24.  
  25.     hash = models.CharField(max_length=200, verbose_name="Хэш")
  26.     alias = models.SlugField(max_length=200, verbose_name="Псевдоним")
  27.     content = models.TextField(verbose_name=u"Статья", null=True, blank=True)
  28.     #content = RichTextField(
  29.     #    verbose_name="Статья", config_name="default", null=True, blank=True
  30.     #)
  31.     seo_h1 = models.CharField(
  32.         max_length=200, verbose_name="H1", null=True, blank=True)
  33.     seo_title = models.CharField(
  34.         max_length=200, verbose_name="Title", null=True, blank=True
  35.     )
  36.     seo_description = models.CharField(
  37.         max_length=500, verbose_name="Description", null=True, blank=True
  38.     )
  39.     seo_keywords = models.CharField(
  40.         max_length=200, verbose_name="Keywords", null=True, blank=True
  41.     )
  42.     menutitle = models.CharField(
  43.         max_length=200, verbose_name="Название в меню", null=True, blank=True
  44.     )
  45.     menuposition = models.IntegerField(
  46.         max_length=200, verbose_name="Позиция в меню", null=True, blank=True
  47.     )
  48.     menushow = models.BooleanField(
  49.         default=True, verbose_name="Показывать в меню")
  50.     sitemap = models.BooleanField(
  51.         default=True, verbose_name="Показывать в карте сайта")
  52.     og_title = models.CharField(
  53.         max_length=200, verbose_name="OG Title", null=True, blank=True
  54.     )
  55.     og_description = models.TextField(
  56.         max_length=2000, verbose_name="OG Description", null=True, blank=True
  57.     )
  58.     og_type = models.CharField(
  59.         max_length=200, verbose_name="OG Type", null=True, blank=True
  60.     )
  61.     og_image = models.CharField(
  62.         max_length=500, verbose_name="OG image", null=True, blank=True
  63.     )
  64.     og_type_pb_time = models.DateField(
  65.         default=datetime.date.today, verbose_name="Время публикации"
  66.     )
  67.     og_type_author = models.CharField(
  68.         max_length=200, verbose_name="OG author", null=True, blank=True
  69.     )
  70.     host = models.ForeignKey(
  71.         Site, on_delete=models.deletion.SET_DEFAULT, default=2, verbose_name="Хост"
  72.     )
  73.  
  74.  
  75. class Textpage(Page):
  76.     class Meta:
  77.         verbose_name = "Текстовая страница"
  78.         verbose_name_plural = "Страницы"
  79.  
  80.     maintitle = models.CharField(max_length=200, verbose_name="Название")
  81.     menuposition = models.IntegerField(verbose_name="Позиция в меню")
  82.  
  83.     def __str__(self):
  84.         return self.maintitle
  85.  
  86.     def get_absolute_url(self):
  87.         if self.alias == "index":
  88.             return reverse('index', kwargs={})
  89.         else:
  90.             return reverse('textpage', kwargs={'alias': self.alias})
  91.  
  92.  
  93. class Subcategory(Page):
  94.     class Meta:
  95.         verbose_name = "Подкатегория"
  96.         verbose_name_plural = "Подкатегории"
  97.  
  98.     name = models.CharField(
  99.         max_length=200, verbose_name="Название подкатегории")
  100.     comment = models.CharField(
  101.         max_length=2000, verbose_name="Комментарий", null=True, blank=True
  102.     )
  103.  
  104.     def __str__(self):
  105.         return self.name
  106.  
  107.     def get_absolute_url(self):
  108.         return reverse('subcat', kwargs={'alias': self.alias})
  109.  
  110.  
  111. class Category(Page):
  112.     class Meta:
  113.         verbose_name = "Категория"
  114.         verbose_name_plural = "Категории"
  115.  
  116.     name = models.CharField(max_length=200, verbose_name="Название категории")
  117.     comment = models.CharField(
  118.         max_length=2000, verbose_name="Комментарий", null=True, blank=True
  119.     )
  120.     domain = models.CharField(
  121.         max_length=100, verbose_name="Домен", null=True, blank=True
  122.     )
  123.     category = models.ForeignKey(
  124.         Subcategory,
  125.         verbose_name="Подкатегория",
  126.         null=True,
  127.         blank=True,
  128.         on_delete=models.CASCADE,
  129.     )
  130.     language = models.CharField(
  131.         max_length=100, verbose_name="Язык", null=True, blank=True
  132.     )
  133.     osob = models.CharField(
  134.         max_length=100, verbose_name="Особенности", null=True, blank=True
  135.     )
  136.  
  137.     def __str__(self):
  138.         return self.name
  139.  
  140.     def get_absolute_url(self):
  141.         return reverse('category', kwargs={'alias': self.alias})
  142.  
  143.  
  144. class Reservation(Page):
  145.     class Meta:
  146.         verbose_name = "Заявка на аккаунт"
  147.         verbose_name_plural = "Заявки на аккаунт"
  148.  
  149.     name = models.CharField(max_length=200, verbose_name="Название заявки")
  150.     mail = models.CharField(max_length=200, verbose_name="Почта клиента")
  151.     comment = models.CharField(
  152.         max_length=2000, verbose_name="Комментарий", null=True, blank=True
  153.     )
  154.     count = models.IntegerField(
  155.         verbose_name="Количество аккаунтов", null=True, blank=True
  156.     )
  157.     service = models.CharField(
  158.         max_length=100, verbose_name="Сервис", null=True, blank=True
  159.     )
  160.     datetime = models.DateTimeField(
  161.         default=datetime.datetime.now(), verbose_name="Время заявки"
  162.     )
  163.  
  164.     def __str__(self):
  165.         return self.name
  166.  
  167.  
  168. class Service(Page):
  169.     class Meta:
  170.         verbose_name = "Услуга"
  171.         verbose_name_plural = "Услуги"
  172.  
  173.     name = models.CharField(max_length=200, verbose_name="Название услуги")
  174.     menuposition = models.IntegerField(
  175.         verbose_name="Позиция в меню", null=True, blank=True
  176.     )
  177.     price = models.FloatField(default=1, verbose_name="Цена за услугу")
  178.     description = models.CharField(
  179.         max_length=1000,
  180.         verbose_name="Описание услуги(до 1000 символов)",
  181.         null=True,
  182.         blank=True,
  183.     )
  184.     pic = models.ImageField(
  185.         verbose_name="Изображение товара(превью)", null=True, blank=True
  186.     )
  187.     item_image = models.ImageField(
  188.         verbose_name="Картинка на странице товара", null=True, blank=True
  189.     )
  190.     comment = models.CharField(
  191.         max_length=2000, verbose_name="Комментарий", null=True, blank=True
  192.     )
  193.     discount = models.IntegerField(
  194.         verbose_name="Скидка", null=True, blank=True)
  195.  
  196.     def __str__(self):
  197.         return self.name
  198.  
  199.  
  200. class Item(Page):
  201.     class Meta:
  202.         verbose_name = "Товар"
  203.         verbose_name_plural = "Товары"
  204.  
  205.     name = models.CharField(max_length=200, verbose_name="Название товара")
  206.     menuposition = models.IntegerField(
  207.         verbose_name="Позиция в меню", null=True, blank=True
  208.     )
  209.     price = models.FloatField(default=1, verbose_name="Цена за единицу товара")
  210.     category = models.ForeignKey(
  211.         Category,
  212.         verbose_name="Категория",
  213.         null=True,
  214.         blank=True,
  215.         on_delete=models.CASCADE,
  216.     )
  217.     min_pay = models.IntegerField(
  218.         default=1, verbose_name="Минимальная количество покупки"
  219.     )
  220.     count = models.IntegerField(
  221.         default=0, verbose_name="Количество товара", null=True, blank=True
  222.     )
  223.     items = models.TextField(
  224.         verbose_name="Строки товара", null=True, blank=True)
  225.     description = models.CharField(
  226.         max_length=1000,
  227.         verbose_name="Описание товара(до 1000 символов)",
  228.         null=True,
  229.         blank=True,
  230.     )
  231.     pic = models.ImageField(
  232.         verbose_name="Изображение товара(превью)", null=True, blank=True
  233.     )
  234.     itemimage = models.ImageField(
  235.         verbose_name="Картинка на странице товара", null=True, blank=True
  236.     )
  237.     comment = models.CharField(
  238.         max_length=2000, verbose_name="Комментарий", null=True, blank=True
  239.     )
  240.     discount = models.IntegerField(
  241.         verbose_name="Скидка", null=True, blank=True)
  242.  
  243.     def __str__(self):
  244.         return self.alias
  245.  
  246.     def get_absolute_url(self):
  247.         return reverse('product', kwargs={'alias': self.category.alias, 'product': self.alias})
  248.  
  249.  
  250. class Client(models.Model):
  251.     class Meta:
  252.         verbose_name = "Клиент"
  253.         verbose_name_plural = "Клиенты"
  254.  
  255.     mail = models.CharField(max_length=200, verbose_name="Ящик клиента")
  256.  
  257.     def __str__(self):
  258.         return self.mail
  259.  
  260.  
  261. class PayMethod(models.Model):
  262.     class Meta:
  263.         verbose_name = "Метод оплаты"
  264.         verbose_name_plural = "Методы оплаты"
  265.  
  266.     paymethod = models.CharField(max_length=200, verbose_name="Тип Оплаты")
  267.     token = models.CharField(max_length=2000, verbose_name="Токен системы")
  268.     phone = models.CharField(max_length=20, verbose_name="Номер телефона")
  269.  
  270.     def __str__(self):
  271.         return self.paymethod
  272.  
  273.  
  274. class Promocode(models.Model):
  275.     class Meta:
  276.         verbose_name = "Промокод"
  277.         verbose_name_plural = "Промокоды"
  278.  
  279.     name = models.CharField(verbose_name="Наименование", max_length=100)
  280.     code = models.CharField(verbose_name="Промокод", max_length=100)
  281.     percentage = models.IntegerField(verbose_name="Скидка (%)", null=True)
  282.     creation_date = models.DateTimeField(
  283.         default=datetime.datetime.now(), verbose_name="Дата создания"
  284.     )
  285.     completion_date = models.DateTimeField(verbose_name="Дата окончания")
  286.  
  287.     def __str__(self):
  288.         return "{} ({})".format(self.code, self.name)
  289.  
  290.  
  291. class Order(models.Model):
  292.     class Meta:
  293.         verbose_name = "Заказ"
  294.         verbose_name_plural = "Заказы"
  295.  
  296.     order_id = models.IntegerField(verbose_name="Id Заказа")
  297.     hash = models.CharField(
  298.         max_length=100, verbose_name="Hash заказа", null=True, blank=True
  299.     )
  300.     paymethod = models.ForeignKey(
  301.         PayMethod, verbose_name="Метод оплаты", on_delete=models.CASCADE
  302.     )
  303.     client = models.ForeignKey(
  304.         Client, verbose_name="Клиент", on_delete=models.CASCADE)
  305.     purse = models.CharField(
  306.         max_length=200, verbose_name="Номер Кошелька", null=True, blank=True
  307.     )
  308.     item = models.ForeignKey(Item, verbose_name="Товар",
  309.                              on_delete=models.CASCADE)
  310.     count = models.IntegerField(verbose_name="Кол-во аккаунтов")
  311.     items = models.TextField(
  312.         verbose_name="Строки товара", null=True, blank=True)
  313.     status = models.CharField(max_length=20, verbose_name="Статус заказа")
  314.     price = models.FloatField(verbose_name="Сумма заказа")
  315.     datetime = models.DateTimeField(
  316.         default=datetime.datetime.now, verbose_name="Время покупки"
  317.     )
  318.     promocode = models.ForeignKey(
  319.         Promocode,
  320.         verbose_name="Промокод",
  321.         null=True,
  322.         blank=True,
  323.         on_delete=models.SET_NULL
  324.     )
  325.  
  326.     def __str__(self):
  327.         return self.hash
  328.  
  329.  
  330. class ClientsAndOrders(models.Model):
  331.     class Meta:
  332.         verbose_name = "Клиент и их заказы"
  333.         verbose_name_plural = "Клиент и их заказы"
  334.  
  335.     client = models.ForeignKey(
  336.         Client, verbose_name="Клиент", on_delete=models.CASCADE)
  337.     orders = models.ManyToManyField(Order, verbose_name="Заказы", blank=True)
  338.  
  339.     def __str__(self):
  340.         return self.client.mail
  341.  
  342.  
  343. class CommentAuths(models.Model):
  344.     class Meta:
  345.         verbose_name = "Авторизированные юзеры(к)"
  346.         verbose_name_plural = "Авторизированные юзеры(к)"
  347.  
  348.     vkid = models.CharField(max_length=100, verbose_name="id vk")
  349.     username = models.CharField(max_length=500, verbose_name="Имя в вк")
  350.     hash = models.CharField(max_length=500, verbose_name="hash")
  351.     avatar = models.CharField(max_length=500, verbose_name="avatar")
  352.     admin = models.BooleanField(default=False, verbose_name="Админ")
  353.  
  354.     def __str__(self):
  355.         return self.vkid
  356.  
  357.  
  358. class CommentVk(models.Model):
  359.     class Meta:
  360.         verbose_name = "Комментарий вк"
  361.         verbose_name_plural = "Комментарии вк"
  362.  
  363.     vkid = models.CharField(max_length=100, verbose_name="id vk")
  364.     username = models.CharField(max_length=500, verbose_name="Имя в вк")
  365.     time = models.CharField(max_length=500, verbose_name="Дата коммента")
  366.     comment = models.CharField(
  367.         max_length=5000, verbose_name="Плохой коментарий")
  368.     news_comment = models.CharField(
  369.         max_length=5000, verbose_name="Хороший Коментарий", null=True, blank=True
  370.     )
  371.     avatar = models.CharField(max_length=500, verbose_name="avatar")
  372.     view = models.BooleanField(default=False, verbose_name="Показывать?")
  373.  
  374.     def datetime(self):
  375.         time = dict(
  376.             time=datetime.datetime.fromtimestamp(int(self.time)),
  377.             now=datetime.datetime.now(),
  378.         )
  379.         return time
  380.  
  381.     def __str__(self):
  382.         return self.vkid
  383.  
  384.  
  385. class Blog(Page):
  386.     class Meta:
  387.         verbose_name = "Блог"
  388.         verbose_name_plural = "Блоги"
  389.  
  390.     name = models.CharField(max_length=200, verbose_name="Название Блога")
  391.     datetime = models.DateTimeField(
  392.         default=datetime.datetime.now(), verbose_name="Время публикации"
  393.     )
  394.  
  395.     def __str__(self):
  396.         return self.hash
  397.  
  398.  
  399. class Scripts(models.Model):
  400.     class Meta:
  401.         verbose_name = "Скрипт"
  402.         verbose_name_plural = "Импортируемые скрипты"
  403.  
  404.     name = models.CharField(max_length=200, verbose_name="Заголовок")
  405.     content = models.TextField(verbose_name="Содержимое")
  406.     to_head = models.BooleanField(default=False, verbose_name="Для HEAD")
  407.  
  408.     def __str__(self):
  409.         return self.name
  410.  
  411.  
  412. class Robots(models.Model):
  413.     class Meta:
  414.         verbose_name = "Robots"
  415.         verbose_name_plural = "Robots"
  416.  
  417.     content = models.TextField(verbose_name="Содержимое")
  418.     host = models.ForeignKey(
  419.         Site, on_delete=models.deletion.SET_DEFAULT, default=2, verbose_name="Хост"
  420.     )
  421.  
  422.     def __str__(self):
  423.         return self.content
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement