Features: 1) Update POT-Creation-Date across translation files to reflect the latest changes; 2) Adjust line references in message comments for accurate mappings.
Fixes: 1) Harmonize inconsistent whitespace across translation files. Extra: Address formatting issues in translation strings for better readability and maintainability.
This commit is contained in:
parent
58e1390d4d
commit
e1f9a7cace
166 changed files with 13261 additions and 9982 deletions
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -36,8 +36,8 @@ msgstr "Posting"
|
|||
#: blog/models.py:88
|
||||
msgid "markdown files are not supported yet - use markdown content instead"
|
||||
msgstr ""
|
||||
"File penurunan harga tidak didukung - gunakan konten penurunan harga sebagai"
|
||||
" gantinya!"
|
||||
"File penurunan harga tidak didukung - gunakan konten penurunan harga sebagai "
|
||||
"gantinya!"
|
||||
|
||||
#: blog/models.py:90
|
||||
msgid ""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -35,7 +35,8 @@ msgstr "게시물"
|
|||
|
||||
#: blog/models.py:88
|
||||
msgid "markdown files are not supported yet - use markdown content instead"
|
||||
msgstr "마크다운 파일은 지원되지 않습니다 예 - 대신 마크다운 콘텐츠를 사용하세요!"
|
||||
msgstr ""
|
||||
"마크다운 파일은 지원되지 않습니다 예 - 대신 마크다운 콘텐츠를 사용하세요!"
|
||||
|
||||
#: blog/models.py:90
|
||||
msgid ""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -40,9 +40,7 @@ msgstr "ไฟล์มาร์กดาวน์ยังไม่รองร
|
|||
#: blog/models.py:90
|
||||
msgid ""
|
||||
"a markdown file or markdown content must be provided - mutually exclusive"
|
||||
msgstr ""
|
||||
"ไฟล์มาร์กดาวน์หรือเนื้อหาแบบมาร์กดาวน์ต้องได้รับการจัดเตรียมไว้ - "
|
||||
"ไม่สามารถใช้ร่วมกันได้"
|
||||
msgstr "ไฟล์มาร์กดาวน์หรือเนื้อหาแบบมาร์กดาวน์ต้องได้รับการจัดเตรียมไว้ - ไม่สามารถใช้ร่วมกันได้"
|
||||
|
||||
#: blog/models.py:122
|
||||
msgid "internal tag identifier for the post tag"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -43,8 +43,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"a markdown file or markdown content must be provided - mutually exclusive"
|
||||
msgstr ""
|
||||
"bir markdown dosyası veya markdown içeriği sağlanmalıdır - birbirini "
|
||||
"dışlayan"
|
||||
"bir markdown dosyası veya markdown içeriği sağlanmalıdır - birbirini dışlayan"
|
||||
|
||||
#: blog/models.py:122
|
||||
msgid "internal tag identifier for the post tag"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -278,15 +278,15 @@ class ProductFilter(FilterSet):
|
|||
|
||||
qs = qs.annotate(
|
||||
has_stock=Case(
|
||||
When(stocks__quantity__gt=0, then=Value(True)),
|
||||
default=Value(False),
|
||||
output_field=BooleanField(),
|
||||
),
|
||||
When(stocks__quantity__gt=0, then=Value(True)),
|
||||
default=Value(False),
|
||||
output_field=BooleanField(),
|
||||
),
|
||||
has_price=Case(
|
||||
When(stocks__price__gt=0, then=Value(True)),
|
||||
default=Value(False),
|
||||
output_field=BooleanField(),
|
||||
),
|
||||
When(stocks__price__gt=0, then=Value(True)),
|
||||
default=Value(False),
|
||||
output_field=BooleanField(),
|
||||
),
|
||||
).annotate(
|
||||
personal_orders_only=Case(
|
||||
When(has_stock=False, has_price=False, then=Value(True)),
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
346
core/models.py
346
core/models.py
|
|
@ -51,9 +51,9 @@ from core.errors import DisabledCommerceError, NotEnoughMoneyError
|
|||
from core.managers import AddressManager, ProductManager
|
||||
from core.utils import (
|
||||
generate_human_readable_id,
|
||||
generate_human_readable_token,
|
||||
get_product_uuid_as_path,
|
||||
get_random_code,
|
||||
generate_human_readable_token,
|
||||
)
|
||||
from core.utils.db import TweakedAutoSlugField, unicode_slugify_function
|
||||
from core.utils.lists import FAILED_STATUSES
|
||||
|
|
@ -66,7 +66,7 @@ logger = logging.getLogger("django")
|
|||
|
||||
|
||||
class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a group of attributes, which can be hierarchical."
|
||||
" This class is used to manage and organize attribute groups."
|
||||
" An attribute group can have a parent group, forming a hierarchical structure."
|
||||
|
|
@ -102,7 +102,7 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel):
|
|||
|
||||
|
||||
class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a vendor entity capable of storing information about external vendors and their interaction requirements."
|
||||
" The Vendor class is used to define and manage information related to an external vendor."
|
||||
" It stores the vendor's name, authentication details required for communication,"
|
||||
|
|
@ -159,7 +159,7 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [
|
|||
|
||||
|
||||
class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a product tag used for classifying or identifying products."
|
||||
" The ProductTag class is designed to uniquely identify and classify products through a combination"
|
||||
" of an internal tag identifier and a user-friendly display name."
|
||||
|
|
@ -191,7 +191,7 @@ class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): # type:
|
|||
|
||||
|
||||
class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a category tag used for products."
|
||||
" This class models a category tag that can be used to associate and classify products."
|
||||
" It includes attributes for an internal tag identifier and a user-friendly display name."
|
||||
|
|
@ -222,7 +222,7 @@ class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): # typ
|
|||
|
||||
|
||||
class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a category entity to organize and group related items in a hierarchical structure."
|
||||
" Categories may have hierarchical relationships with other categories, supporting parent-child relationships."
|
||||
" The class includes fields for metadata and visual representation,"
|
||||
|
|
@ -314,24 +314,12 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): #
|
|||
|
||||
|
||||
class Brand(ExportModelOperationsMixin("brand"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a Brand object in the system.
|
||||
|
||||
This class handles information and attributes related to a brand, including its name, logos,
|
||||
description, associated categories, a unique slug, and priority order.
|
||||
It allows for the organization and representation of brand-related data within the application.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): Indicates if the brand is visible publicly.
|
||||
name (str): The name of the brand.
|
||||
small_logo (ImageField): An optional small logo image file representing the brand.
|
||||
big_logo (ImageField): An optional large logo image file representing the brand.
|
||||
description (str): An optional textual description providing details about the brand.
|
||||
categories (Category): Optional categories associated with this brand.
|
||||
slug (str): A unique auto-generated slug used for SEO-friendly URLs.
|
||||
priority (int): Specifies the priority ranking of the brand.
|
||||
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a Brand object in the system. "
|
||||
"This class handles information and attributes related to a brand, including its name, logos, "
|
||||
"description, associated categories, a unique slug, and priority order. "
|
||||
"It allows for the organization and representation of brand-related data within the application."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
@ -396,7 +384,7 @@ class Brand(ExportModelOperationsMixin("brand"), NiceModel): # type: ignore [mi
|
|||
|
||||
|
||||
class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents the stock of a product managed in the system."
|
||||
" This class provides details about the relationship between vendors, products, and their stock information, "
|
||||
"as well as inventory-related properties like price, purchase price, quantity, SKU, and digital assets."
|
||||
|
|
@ -459,7 +447,7 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [mi
|
|||
|
||||
|
||||
class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a product with attributes such as category, brand, tags, digital status, name, description, part number, and slug."
|
||||
" Provides related utility properties to retrieve ratings, feedback counts, price, quantity, and total orders."
|
||||
" Designed for use in a system that handles e-commerce or inventory management."
|
||||
|
|
@ -557,7 +545,7 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore
|
|||
if rating is None:
|
||||
feedbacks = Feedback.objects.filter(order_product__product_id=self.pk)
|
||||
rating = feedbacks.aggregate(Avg("rating"))["rating__avg"] or 0
|
||||
cache.set(cache_key, rating, 604800)
|
||||
cache.set(cache_key, rating, 86400)
|
||||
return round(rating, 2)
|
||||
|
||||
@rating.setter
|
||||
|
|
@ -607,7 +595,7 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore
|
|||
|
||||
|
||||
class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents an attribute in the system."
|
||||
" This class is used to define and manage attributes,"
|
||||
" which are customizable pieces of data that can be associated with other entities."
|
||||
|
|
@ -671,28 +659,11 @@ class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): # type: ig
|
|||
|
||||
|
||||
class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a specific value for an attribute that is linked to a product.
|
||||
|
||||
This class serves the purpose of mapping a value to an attribute for a
|
||||
specific product. It links the 'attribute' to a unique 'value', allowing
|
||||
better organization and dynamic representation of product characteristics.
|
||||
It also defines whether the attribute value is public through the
|
||||
'is_publicly_visible' attribute.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
is_publicly_visible
|
||||
Determines if the attribute value is visible publicly. Defaults to True.
|
||||
attribute : core.Attribute
|
||||
The 'Attribute' object this value is linked to. Foreign key relationship
|
||||
with 'core.Attribute'.
|
||||
product : core.Product
|
||||
The specific 'Product' this attribute's value is associated with.
|
||||
Foreign key relationship with 'core.Product'.
|
||||
value
|
||||
Holds the specific value for this attribute as a text field.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a specific value for an attribute that is linked to a product. "
|
||||
"It links the 'attribute' to a unique 'value', allowing "
|
||||
"better organization and dynamic representation of product characteristics."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
@ -726,23 +697,13 @@ class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel):
|
|||
|
||||
|
||||
class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a product image associated with a product in the system.
|
||||
|
||||
This class is designed to manage images for products, including functionality
|
||||
for uploading image files, associating them with specific products, and
|
||||
determining their display order. It also includes an accessibility feature
|
||||
with alternative text for the images.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): A flag indicating whether the image is
|
||||
visible publicly.
|
||||
alt (str): Alternative text for the image to support accessibility.
|
||||
image (ImageField): The image file associated with the product.
|
||||
priority (int): The display priority of the image. Images with lower
|
||||
priority values are displayed first.
|
||||
product (ForeignKey): The product associated with this image.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a product image associated with a product in the system. "
|
||||
"This class is designed to manage images for products, including functionality "
|
||||
"for uploading image files, associating them with specific products, and "
|
||||
"determining their display order. It also includes an accessibility feature "
|
||||
"with alternative text for the images."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
@ -783,38 +744,14 @@ class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): # t
|
|||
|
||||
|
||||
class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a promotional campaign for products with a discount.
|
||||
|
||||
This class is used to define and manage promotional campaigns that offer a
|
||||
percentage-based discount for products. The class includes attributes for
|
||||
setting the discount rate, providing details about the promotion, and linking
|
||||
it to the applicable products. It integrates with the product catalog to
|
||||
determine the affected items in the campaign.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible: A class-level attribute indicating whether the promotion
|
||||
is publicly visible.
|
||||
discount_percent: IntegerField. Specifies the percentage discount for the
|
||||
selected products. Must be between 1 and 100 inclusive.
|
||||
name: CharField. A unique name for the promotion, required for promoting
|
||||
distinguishable campaigns. The maximum length is 256 characters.
|
||||
description: TextField, optional. Provides a detailed description of the
|
||||
promotion. Can be left blank or null.
|
||||
products. Links the promotion to the products that are included
|
||||
in its scope. Can be left blank.
|
||||
|
||||
Meta:
|
||||
verbose_name: The singular name for the promotion in database and UI contexts.
|
||||
verbose_name_plural: The pluralized name for multiple promotions in database and
|
||||
UI contexts.
|
||||
|
||||
Methods:
|
||||
__str__():
|
||||
Returns a string representation of the promotion. If the name is
|
||||
provided, it returns the name; otherwise, it returns the ID of the
|
||||
promotion as a string.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a promotional campaign for products with a discount. "
|
||||
"This class is used to define and manage promotional campaigns that offer a "
|
||||
"percentage-based discount for products. The class includes attributes for "
|
||||
"setting the discount rate, providing details about the promotion, and linking "
|
||||
"it to the applicable products. It integrates with the product catalog to "
|
||||
"determine the affected items in the campaign."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
@ -853,15 +790,13 @@ class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): # type: ig
|
|||
|
||||
|
||||
class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a user's wishlist for storing and managing desired products.
|
||||
|
||||
The Wishlist class provides functionality to manage a collection of products
|
||||
that a user wishes to save. It supports operations such as adding products,
|
||||
removing products, adding multiple products in bulk, and removing multiple
|
||||
products in bulk. The wishlist is associated with a specific user and is
|
||||
stored with optional public visibility status.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a user's wishlist for storing and managing desired products. "
|
||||
"The class provides functionality to manage a collection of products, "
|
||||
"supporting operations such as adding and removing products, "
|
||||
"as well as supporting operations for adding and removing multiple "
|
||||
"products at once."
|
||||
)
|
||||
|
||||
is_publicly_visible = False
|
||||
|
||||
|
|
@ -926,25 +861,13 @@ class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): # type: igno
|
|||
|
||||
|
||||
class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Model representing a documentary record tied to a product.
|
||||
|
||||
This class is used to store information about documentaries related to specific
|
||||
products, including file uploads and their metadata. It contains methods and
|
||||
properties to handle the file type and storage path for the documentary files.
|
||||
It extends functionality from specific mixins and provides additional custom
|
||||
features.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible: A boolean indicating if the documentary is
|
||||
publicly visible.
|
||||
product linking the documentary to a product.
|
||||
document: FileField used to store the file associated with the documentary.
|
||||
|
||||
Meta:
|
||||
verbose_name: Singular name for the documentary model.
|
||||
verbose_name_plural: Plural name for the documentary model.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a documentary record tied to a product. "
|
||||
"This class is used to store information about documentaries related to specific "
|
||||
"products, including file uploads and their metadata. It contains methods and "
|
||||
"properties to handle the file type and storage path for the documentary files. "
|
||||
"It extends functionality from specific mixins and provides additional custom features."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
@ -967,42 +890,16 @@ class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): #
|
|||
|
||||
|
||||
class Address(ExportModelOperationsMixin("address"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents an address entity that includes location details and associations with
|
||||
a user. Provides functionality for geographic and address data storage, as well
|
||||
as integration with geocoding services.
|
||||
|
||||
This class is designed to store detailed address information including components
|
||||
like street, city, region, country, and geolocation (longitude and latitude).
|
||||
|
||||
It supports integration with geocoding APIs, enabling the storage of raw API
|
||||
responses for further processing or inspection. The class also allows associating
|
||||
an address with a user, facilitating personalized data handling.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): Indicates whether the address is visible publicly.
|
||||
address_line (str): A general address line containing information about the
|
||||
customer's location. Optional.
|
||||
street (str): The street name or number in the address. Optional.
|
||||
district (str): The district related to the address. Optional.
|
||||
city (str): The name of the city where the address is located. Optional.
|
||||
region (str): The name of the region associated with the address. Optional.
|
||||
postal_code (str): The postal code corresponding to the address. Optional.
|
||||
country (str): The country where the address resides. Optional.
|
||||
location (PointField): A geolocation represented as (longitude, latitude).
|
||||
Allows geospatial searches. Optional.
|
||||
raw_data (dict): The full JSON response directly from the geocoding service,
|
||||
containing detailed information about the address. Optional.
|
||||
api_response (dict): Stores a processed version or subset of the JSON
|
||||
response from the geocoding service. Optional.
|
||||
user (ForeignKey): Reference to a User entity who owns this address. Optional.
|
||||
|
||||
Meta:
|
||||
verbose_name (str): Human-readable singular name for the address.
|
||||
verbose_name_plural (str): Human-readable plural name for addresses.
|
||||
indexes (list): Database indexes defined for improving query performance
|
||||
on specific fields like 'location'.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents an address entity that includes location details and associations with a user. "
|
||||
"Provides functionality for geographic and address data storage, as well "
|
||||
"as integration with geocoding services. "
|
||||
"This class is designed to store detailed address information including components "
|
||||
"like street, city, region, country, and geolocation (longitude and latitude). "
|
||||
"It supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows associating "
|
||||
"an address with a user, facilitating personalized data handling."
|
||||
)
|
||||
|
||||
is_publicly_visible = False
|
||||
|
||||
|
|
@ -1052,33 +949,14 @@ class Address(ExportModelOperationsMixin("address"), NiceModel): # type: ignore
|
|||
|
||||
|
||||
class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a promotional code that can be used for discounts, managing its validity,
|
||||
type of discount, and application.
|
||||
|
||||
The PromoCode class stores details about a promotional code, including its unique
|
||||
identifier, discount properties (amount or percentage), validity period, associated
|
||||
user (if any), and status of its usage. It includes functionality to validate and
|
||||
apply the promo code to an order while ensuring constraints are met.
|
||||
|
||||
Attributes:
|
||||
code (str): The unique identifier for the promo code.
|
||||
discount_amount (Decimal): The fixed discount amount applied, if defined.
|
||||
discount_percent (int): The percentage discount applied, if defined.
|
||||
end_time (datetime): The expiration timestamp of the promo code.
|
||||
start_time (datetime): The timestamp from when the promo code is valid.
|
||||
used_on (datetime): The timestamp when the promo code was used (if applicable).
|
||||
user (ForeignKey): The user associated with the promo code, if any.
|
||||
|
||||
Methods:
|
||||
save(**kwargs): Ensures only one type of discount (amount or percent) is defined.
|
||||
__str__(): Returns the promo code identifier as its string representation.
|
||||
use(order): Applies the promo code to the given order and calculates the final price.
|
||||
|
||||
Meta:
|
||||
verbose_name: Display name for the promo code model.
|
||||
verbose_name_plural: Plural display name for the promo code model.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents a promotional code that can be used for discounts, managing its validity, "
|
||||
"type of discount, and application. "
|
||||
"The PromoCode class stores details about a promotional code, including its unique "
|
||||
"identifier, discount properties (amount or percentage), validity period, associated "
|
||||
"user (if any), and status of its usage. It includes functionality to validate and "
|
||||
"apply the promo code to an order while ensuring constraints are met."
|
||||
)
|
||||
|
||||
is_publicly_visible = False
|
||||
|
||||
|
|
@ -1180,7 +1058,7 @@ class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): # type: ig
|
|||
|
||||
|
||||
class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
__doc__ = _(
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents an order placed by a user."
|
||||
" This class models an order within the application,"
|
||||
" including its various attributes such as billing and shipping information,"
|
||||
|
|
@ -1651,28 +1529,16 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi
|
|||
|
||||
|
||||
class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents a product associated with an order.
|
||||
|
||||
The OrderProduct model maintains information about a product that is part of an order,
|
||||
including details such as purchase price, quantity, product attributes, and status. It
|
||||
manages notifications for the user and administrators and handles operations such as
|
||||
returning the product balance or adding feedback. This model also provides methods and
|
||||
properties that support business logic, such as calculating the total price or generating
|
||||
a download URL for digital products. The model integrates with the Order and Product models
|
||||
and stores a reference to them.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): Indicates whether this model is visible publicly.
|
||||
buy_price (float): The price paid by the customer for this product at purchase time.
|
||||
comments (str): Internal comments entered by admins regarding this ordered product.
|
||||
notifications (dict): JSON structure containing notifications relevant to the product.
|
||||
attributes (dict): JSON representation of the product's attributes as part of the order.
|
||||
order (Order): Reference to the parent order that contains this product.
|
||||
product (Product): Reference to the specific product associated with the order line.
|
||||
quantity (int): Represents the quantity of this product ordered.
|
||||
status (str): The current status of the product in the order.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents products associated with orders and their attributes. "
|
||||
"The OrderProduct model maintains information about a product that is part of an order, "
|
||||
"including details such as purchase price, quantity, product attributes, and status. It "
|
||||
"manages notifications for the user and administrators and handles operations such as "
|
||||
"returning the product balance or adding feedback. This model also provides methods and "
|
||||
"properties that support business logic, such as calculating the total price or generating "
|
||||
"a download URL for digital products. The model integrates with the Order and Product models "
|
||||
"and stores a reference to them."
|
||||
)
|
||||
|
||||
is_publicly_visible = False
|
||||
|
||||
|
|
@ -1852,29 +1718,14 @@ class OrderCrmLink(ExportModelOperationsMixin("order_crm_link"), NiceModel): #
|
|||
|
||||
|
||||
class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Represents the downloading functionality for digital assets associated
|
||||
with orders.
|
||||
|
||||
The DigitalAssetDownload class provides the ability to manage and access
|
||||
downloads related to order products. It maintains information about the
|
||||
associated order product, the number of downloads, and whether the asset
|
||||
is publicly visible. It includes a method to generate a URL for downloading
|
||||
the asset when the associated order is in a completed status.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): Indicates whether the digital asset is
|
||||
publicly visible. Always set to False for this class.
|
||||
order_product (OneToOneField): Reference to the associated order product.
|
||||
It has a one-to-one relationship with the OrderProduct model, and
|
||||
deleting the OrderProduct will delete the associated download.
|
||||
num_downloads (int): Indicates the number of times the digital asset
|
||||
has been downloaded.
|
||||
|
||||
Methods:
|
||||
url: Property to generate the download URL for the digital asset
|
||||
if the associated order is in a finished status.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Represents the downloading functionality for digital assets associated with orders. "
|
||||
"The DigitalAssetDownload class provides the ability to manage and access "
|
||||
"downloads related to order products. It maintains information about the "
|
||||
"associated order product, the number of downloads, and whether the asset "
|
||||
"is publicly visible. It includes a method to generate a URL for downloading "
|
||||
"the asset when the associated order is in a completed status."
|
||||
)
|
||||
|
||||
is_publicly_visible = False
|
||||
|
||||
|
|
@ -1899,22 +1750,13 @@ class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceMo
|
|||
|
||||
|
||||
class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): # type: ignore [misc, django-manager-missing]
|
||||
"""
|
||||
Manages user feedback for products.
|
||||
|
||||
This class is designed to capture and store user feedback for specific products
|
||||
that they have purchased. It contains attributes to store user comments,
|
||||
a reference to the related product in the order, and a user-assigned rating. The
|
||||
class uses database fields to effectively model and manage feedback data.
|
||||
|
||||
Attributes:
|
||||
is_publicly_visible (bool): Indicates whether the feedback is visible to the public.
|
||||
comment (str): User-provided comments about their experience with the product.
|
||||
order_product (OrderProduct): Reference to the specific product in an order that this
|
||||
feedback is about.
|
||||
rating (float): User-assigned rating for the product, validated to be within the range
|
||||
of 0 to 10.
|
||||
"""
|
||||
__doc__ = _( # type: ignore
|
||||
"Manages user feedback for products. "
|
||||
"This class is designed to capture and store user feedback for specific products "
|
||||
"that they have purchased. It contains attributes to store user comments, "
|
||||
"a reference to the related product in the order, and a user-assigned rating. The "
|
||||
"class uses database fields to effectively model and manage feedback data."
|
||||
)
|
||||
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
|
||||
"POT-Creation-Date: 2025-10-04 01:50+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue