"""
Definition of models.
"""

from django.db import models

from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _

# Create your models here.
from datetime import datetime
from django.contrib import admin
from django.urls import reverse
from django.contrib.auth.models import User



class Blog(models.Model):
    title = models.CharField(max_length = 100, unique_for_date = "posted", verbose_name = "Заголовок")
    description = models.TextField(verbose_name = "Краткое содержание")
    content = models.TextField(verbose_name = "Полное содержание")
    author = models.ForeignKey(User, null=True, blank=True, on_delete = models.SET_NULL, verbose_name = "Автор")
    posted = models.DateTimeField(default = datetime.now(), db_index = True, verbose_name="Опубликована")
    image = models.FileField (default = 'temp.jpg', verbose_name= "Путь к картинке")

    def get_absolute_url(self): # метод возвращает строку с URL-адресом записи
        return reverse("blogpost", args=[str(self.id)])

    def __str__(self): # метод возвращает название, используемое для представления отдельных записей в административном разделе
        return self.title

    class Meta:
        db_table = "Posts" # имя таблицы для модели
        ordering = ["-posted"] # порядок сортировки данных в модели ("-" означает по убыванию)
        verbose_name = "статья блога" # имя, под которым модель будет отображаться в административном разделе (для одной статьи блога)
        verbose_name_plural = "статьи блога" # тоже для всех статей блога



admin.site.register(Blog)
# Create your models here.

class Comment(models.Model):
    text = models.TextField(verbose_name = "Комментарий",)
    date = models.DateTimeField(default = datetime.now(), db_index = True, verbose_name = "Дата")
    author = models.ForeignKey(User, on_delete = models.CASCADE, verbose_name = "Автор")
    post = models.ForeignKey(Blog, on_delete = models.CASCADE, verbose_name = "Статья")

    def __str__(self):
        return 'Комментарий {} к {}'.format(self.author, self.post)

    class Meta:
        db_table = "Comments" 
        verbose_name = "Комментарий" 
        verbose_name_plural = "Комментарий к статьям блога"
        ordering = ["-date"] 

admin.site.register(Comment) 



class Zakaz(models.Model):
    __payvar = (('1' , 'Наличные') , ('2' , 'Безналичный расчет'))
    __rabota = (('1' , 'Забрать груз') , ('2' , 'Аренда манипулятора') , ('3' , 'Аренда грузовой машины'))
    name = models.CharField(max_length = 100, unique_for_date = "posted", verbose_name = "ФИО")
    number = models.CharField(max_length = 100, unique_for_date = "posted", verbose_name = "Телефон")
    pay = models.CharField(max_length=100, choices= __payvar, verbose_name = "Способ оплаты")
    rabota = models.CharField(max_length=100, choices= __rabota, verbose_name = "Вид работы")
    description = models.TextField(verbose_name = "Подробнее о заказе")
    author = models.ForeignKey(User, null=True, blank=True, on_delete = models.SET_NULL, verbose_name = "Имя пользователя")
    posted = models.DateTimeField(default = datetime.now(), db_index = True, verbose_name="Дата")
    image = models.FileField (default = 'temp.jpg', verbose_name= "Фото места работы")
    status = models.BooleanField (default = False, verbose_name= "Статус заказа")
    
    def get_absolute_url(self): # метод возвращает строку с URL-адресом записи
        return reverse("Zakaz", args=[str(self.id)])

    def __str__(self): # метод возвращает название, используемое для представления отдельных записей в административном разделе
        return self.name

    def __unicode__(self):
        return self.pay

    class Meta:
        db_table = "Zakaz" # имя таблицы для модели
        ordering = ["-posted"] # порядок сортировки данных в модели ("-" означает по убыванию)
        verbose_name = "Заказ" # имя, под которым модель будет отображаться в административном разделе (для одной статьи блога)
        verbose_name_plural = "Заказ клиента" # тоже для всех статей блога

admin.site.register(Zakaz) 