Features: 3.1.0
This commit is contained in:
parent
e0b2f183ce
commit
72a96edda1
262 changed files with 4744 additions and 4468 deletions
|
|
@ -34,7 +34,7 @@ class PostAdmin(SummernoteModelAdminMixin, FieldsetsMixin, ActivationActionsMixi
|
||||||
|
|
||||||
|
|
||||||
@register(PostTag)
|
@register(PostTag)
|
||||||
class PostTagAdmin(ModelAdmin): # type: ignore [misc, type-arg]
|
class PostTagAdmin(ModelAdmin): # type: ignore [type-arg]
|
||||||
list_display = ("tag_name", "name")
|
list_display = ("tag_name", "name")
|
||||||
search_fields = ("tag_name", "name")
|
search_fields = ("tag_name", "name")
|
||||||
ordering = ("tag_name",)
|
ordering = ("tag_name",)
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,6 @@ class BlogConfig(AppConfig):
|
||||||
hide = False
|
hide = False
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
def ready(self):
|
def ready(self) -> None:
|
||||||
import blog.elasticsearch.documents
|
import blog.elasticsearch.documents
|
||||||
import blog.signals # noqa: F401
|
import blog.signals # noqa: F401
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_f
|
||||||
from core.elasticsearch.documents import BaseDocument
|
from core.elasticsearch.documents import BaseDocument
|
||||||
|
|
||||||
|
|
||||||
class PostDocument(ActiveOnlyMixin, BaseDocument):
|
class PostDocument(ActiveOnlyMixin, BaseDocument): # type: ignore [misc]
|
||||||
title = fields.TextField(
|
title = fields.TextField(
|
||||||
attr="title",
|
attr="title",
|
||||||
analyzer="standard",
|
analyzer="standard",
|
||||||
|
|
@ -30,7 +30,7 @@ class PostDocument(ActiveOnlyMixin, BaseDocument):
|
||||||
model = Post
|
model = Post
|
||||||
fields = ["uuid"]
|
fields = ["uuid"]
|
||||||
|
|
||||||
def prepare_title(self, instance):
|
def prepare_title(self, instance: Post) -> str:
|
||||||
return getattr(instance, "title", "") or ""
|
return getattr(instance, "title", "") or ""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from blog.models import Post
|
||||||
from core.filters import CaseInsensitiveListFilter
|
from core.filters import CaseInsensitiveListFilter
|
||||||
|
|
||||||
|
|
||||||
class PostFilter(FilterSet):
|
class PostFilter(FilterSet): # type: ignore [misc]
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||||
slug = CharFilter(field_name="slug", lookup_expr="exact")
|
slug = CharFilter(field_name="slug", lookup_expr="exact")
|
||||||
author = UUIDFilter(field_name="author__uuid", lookup_expr="exact")
|
author = UUIDFilter(field_name="author__uuid", lookup_expr="exact")
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from blog.serializers import PostSerializer
|
||||||
from core.permissions import EvibesPermission
|
from core.permissions import EvibesPermission
|
||||||
|
|
||||||
|
|
||||||
class PostViewSet(ReadOnlyModelViewSet):
|
class PostViewSet(ReadOnlyModelViewSet): # type: ignore [type-arg]
|
||||||
"""
|
"""
|
||||||
Encapsulates operations for managing and retrieving Post entities in a read-only model view set.
|
Encapsulates operations for managing and retrieving Post entities in a read-only model view set.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.forms.renderers import BaseRenderer
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7,7 +10,10 @@ class MarkdownEditorWidget(forms.Textarea):
|
||||||
css = {"all": ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.css",)}
|
css = {"all": ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.css",)}
|
||||||
js = ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.js",)
|
js = ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.js",)
|
||||||
|
|
||||||
def render(self, name, value, attrs=None, renderer=None):
|
def render(self, name: str, value: str, attrs: dict[Any, Any] | None = None, renderer: BaseRenderer | None = None):
|
||||||
|
if not attrs:
|
||||||
|
attrs = {}
|
||||||
|
attrs["class"] = "markdown-editor"
|
||||||
textarea_html = super().render(name, value, attrs, renderer)
|
textarea_html = super().render(name, value, attrs, renderer)
|
||||||
textarea_id = attrs.get("id", f"id_{name}")
|
textarea_id = attrs.get("id", f"id_{name}")
|
||||||
init_js = f"""
|
init_js = f"""
|
||||||
|
|
|
||||||
|
|
@ -20,16 +20,16 @@ class NiceModel(Model):
|
||||||
verbose_name=_("is active"),
|
verbose_name=_("is active"),
|
||||||
help_text=_("if set to false, this object can't be seen by users without needed permission"),
|
help_text=_("if set to false, this object can't be seen by users without needed permission"),
|
||||||
)
|
)
|
||||||
created = CreationDateTimeField(_("created"), help_text=_("when the object first appeared on the database"))
|
created = CreationDateTimeField(_("created"), help_text=_("when the object first appeared on the database")) # type: ignore [no-untyped-call]
|
||||||
modified = ModificationDateTimeField(_("modified"), help_text=_("when the object was last modified"))
|
modified = ModificationDateTimeField(_("modified"), help_text=_("when the object was last modified")) # type: ignore [no-untyped-call]
|
||||||
|
|
||||||
def save(
|
def save( # type: ignore [override]
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
force_insert: bool = False,
|
force_insert: bool = False,
|
||||||
force_update: bool = False,
|
force_update: bool = False,
|
||||||
using: str | None = None,
|
using: str | None = None,
|
||||||
update_fields: Collection | None = None,
|
update_fields: Collection[str] | None = None,
|
||||||
update_modified: bool = True,
|
update_modified: bool = True,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.update_modified = update_modified
|
self.update_modified = update_modified
|
||||||
|
|
|
||||||
100
core/admin.py
100
core/admin.py
|
|
@ -1,13 +1,16 @@
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from typing import ClassVar, Type
|
from typing import Any, ClassVar, Type
|
||||||
|
|
||||||
from constance.admin import Config
|
from constance.admin import Config
|
||||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||||
from django.apps import apps
|
from django.apps import AppConfig, apps
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
|
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
|
||||||
from django.contrib.gis.admin import GISModelAdmin
|
from django.contrib.gis.admin import GISModelAdmin
|
||||||
from django.contrib.messages import constants as messages
|
from django.contrib.messages import constants as messages
|
||||||
from django.db.models import Model
|
from django.db.models import Model
|
||||||
|
from django.db.models.query import QuerySet
|
||||||
|
from django.http import HttpRequest
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from modeltranslation.translator import NotRegistered, translator
|
from modeltranslation.translator import NotRegistered, translator
|
||||||
from modeltranslation.utils import get_translation_fields
|
from modeltranslation.utils import get_translation_fields
|
||||||
|
|
@ -36,16 +39,15 @@ from core.models import (
|
||||||
Vendor,
|
Vendor,
|
||||||
Wishlist,
|
Wishlist,
|
||||||
)
|
)
|
||||||
from evibes.settings import CONSTANCE_CONFIG
|
|
||||||
|
|
||||||
|
|
||||||
class FieldsetsMixin:
|
class FieldsetsMixin:
|
||||||
general_fields: list = []
|
general_fields: list[str] | None = []
|
||||||
relation_fields: list = []
|
relation_fields: list[str] | None = []
|
||||||
additional_fields: list = []
|
additional_fields: list[str] | None = []
|
||||||
model: ClassVar[Type[Model]]
|
model: ClassVar[Type[Model]]
|
||||||
|
|
||||||
def get_fieldsets(self, request, obj=None):
|
def get_fieldsets(self, request: HttpRequest, obj: Any = None) -> list[tuple[str, dict[str, list[str]]]]:
|
||||||
if request:
|
if request:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
@ -54,14 +56,16 @@ class FieldsetsMixin:
|
||||||
|
|
||||||
fieldsets = []
|
fieldsets = []
|
||||||
|
|
||||||
def add_translations_fieldset(fss):
|
def add_translations_fieldset(
|
||||||
|
fss: list[tuple[str, dict[str, list[str]]]],
|
||||||
|
) -> list[tuple[str, dict[str, list[str]]]]:
|
||||||
with suppress(NotRegistered):
|
with suppress(NotRegistered):
|
||||||
transoptions = translator.get_options_for_model(self.model)
|
transoptions = translator.get_options_for_model(self.model)
|
||||||
translation_fields = []
|
translation_fields = []
|
||||||
for orig in transoptions.local_fields:
|
for orig in transoptions.local_fields:
|
||||||
translation_fields += get_translation_fields(orig)
|
translation_fields += get_translation_fields(orig)
|
||||||
if translation_fields:
|
if translation_fields:
|
||||||
fss = list(fss) + [(_("translations"), {"fields": translation_fields})]
|
fss = list(fss) + [(_("translations"), {"fields": translation_fields})] # type: ignore [list-item]
|
||||||
return fss
|
return fss
|
||||||
|
|
||||||
if self.general_fields:
|
if self.general_fields:
|
||||||
|
|
@ -95,8 +99,8 @@ class FieldsetsMixin:
|
||||||
ts.append(name)
|
ts.append(name)
|
||||||
if ts:
|
if ts:
|
||||||
fieldsets.append((_("timestamps"), {"fields": ts, "classes": ["collapse"]}))
|
fieldsets.append((_("timestamps"), {"fields": ts, "classes": ["collapse"]}))
|
||||||
fieldsets = add_translations_fieldset(fieldsets)
|
fieldsets = add_translations_fieldset(fieldsets) # type: ignore [arg-type, assignment]
|
||||||
return fieldsets
|
return fieldsets # type: ignore [return-value]
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
|
|
@ -110,29 +114,29 @@ class ActivationActionsMixin:
|
||||||
]
|
]
|
||||||
|
|
||||||
@action(description=_("activate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
@action(description=_("activate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
||||||
def activate_selected(self, request, queryset):
|
def activate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
|
||||||
try:
|
try:
|
||||||
queryset.update(is_active=True)
|
queryset.update(is_active=True)
|
||||||
self.message_user(
|
self.message_user( # type: ignore [attr-defined]
|
||||||
request=request, message=_("selected items have been activated.").lower(), level=messages.SUCCESS
|
request=request, message=_("selected items have been activated.").lower(), level=messages.SUCCESS
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.message_user(request=request, message=str(e), level=messages.ERROR)
|
self.message_user(request=request, message=str(e), level=messages.ERROR) # type: ignore [attr-defined]
|
||||||
|
|
||||||
@action(description=_("deactivate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
@action(description=_("deactivate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
||||||
def deactivate_selected(self, request, queryset):
|
def deactivate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
|
||||||
try:
|
try:
|
||||||
queryset.update(is_active=False)
|
queryset.update(is_active=False)
|
||||||
self.message_user(
|
self.message_user( # type: ignore [attr-defined]
|
||||||
request=request, message=_("selected items have been deactivated.").lower(), level=messages.SUCCESS
|
request=request, message=_("selected items have been deactivated.").lower(), level=messages.SUCCESS
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.message_user(request=request, message=str(e), level=messages.ERROR)
|
self.message_user(request=request, message=str(e), level=messages.ERROR) # type: ignore [attr-defined]
|
||||||
|
|
||||||
|
|
||||||
class AttributeValueInline(TabularInline):
|
class AttributeValueInline(TabularInline): # type: ignore [type-arg]
|
||||||
model = AttributeValue
|
model = AttributeValue
|
||||||
extra = 0
|
extra = 0
|
||||||
autocomplete_fields = ["attribute"]
|
autocomplete_fields = ["attribute"]
|
||||||
|
|
@ -142,7 +146,7 @@ class AttributeValueInline(TabularInline):
|
||||||
icon = "fa-solid fa-list-ul"
|
icon = "fa-solid fa-list-ul"
|
||||||
|
|
||||||
|
|
||||||
class ProductImageInline(TabularInline):
|
class ProductImageInline(TabularInline): # type: ignore [type-arg]
|
||||||
model = ProductImage
|
model = ProductImage
|
||||||
extra = 0
|
extra = 0
|
||||||
is_navtab = True
|
is_navtab = True
|
||||||
|
|
@ -151,7 +155,7 @@ class ProductImageInline(TabularInline):
|
||||||
icon = "fa-regular fa-images"
|
icon = "fa-regular fa-images"
|
||||||
|
|
||||||
|
|
||||||
class StockInline(TabularInline):
|
class StockInline(TabularInline): # type: ignore [type-arg]
|
||||||
model = Stock
|
model = Stock
|
||||||
extra = 0
|
extra = 0
|
||||||
is_navtab = True
|
is_navtab = True
|
||||||
|
|
@ -160,7 +164,7 @@ class StockInline(TabularInline):
|
||||||
icon = "fa-solid fa-boxes-stacked"
|
icon = "fa-solid fa-boxes-stacked"
|
||||||
|
|
||||||
|
|
||||||
class OrderProductInline(TabularInline):
|
class OrderProductInline(TabularInline): # type: ignore [type-arg]
|
||||||
model = OrderProduct
|
model = OrderProduct
|
||||||
extra = 0
|
extra = 0
|
||||||
readonly_fields = ("product", "quantity", "buy_price")
|
readonly_fields = ("product", "quantity", "buy_price")
|
||||||
|
|
@ -174,7 +178,7 @@ class OrderProductInline(TabularInline):
|
||||||
return super().get_queryset(request).select_related("product").only("product__name")
|
return super().get_queryset(request).select_related("product").only("product__name")
|
||||||
|
|
||||||
|
|
||||||
class CategoryChildrenInline(TabularInline):
|
class CategoryChildrenInline(TabularInline): # type: ignore [type-arg]
|
||||||
model = Category
|
model = Category
|
||||||
fk_name = "parent"
|
fk_name = "parent"
|
||||||
extra = 0
|
extra = 0
|
||||||
|
|
@ -186,7 +190,7 @@ class CategoryChildrenInline(TabularInline):
|
||||||
|
|
||||||
|
|
||||||
@register(AttributeGroup)
|
@register(AttributeGroup)
|
||||||
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = AttributeGroup # type: ignore [misc]
|
model = AttributeGroup # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -210,7 +214,7 @@ class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
@register(Attribute)
|
@register(Attribute)
|
||||||
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Attribute # type: ignore [misc]
|
model = Attribute # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -251,7 +255,7 @@ class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ
|
||||||
|
|
||||||
|
|
||||||
@register(AttributeValue)
|
@register(AttributeValue)
|
||||||
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = AttributeValue # type: ignore [misc]
|
model = AttributeValue # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -336,7 +340,7 @@ class CategoryAdmin(FieldsetsMixin, ActivationActionsMixin, DraggableMPTTAdmin):
|
||||||
|
|
||||||
|
|
||||||
@register(Brand)
|
@register(Brand)
|
||||||
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Brand # type: ignore [misc]
|
model = Brand # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -373,7 +377,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
|
||||||
|
|
||||||
|
|
||||||
@register(Product)
|
@register(Product)
|
||||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Product # type: ignore [misc]
|
model = Product # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -436,7 +440,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type:
|
||||||
|
|
||||||
|
|
||||||
@register(ProductTag)
|
@register(ProductTag)
|
||||||
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = ProductTag # type: ignore [misc]
|
model = ProductTag # type: ignore [misc]
|
||||||
list_display = ("tag_name",)
|
list_display = ("tag_name",)
|
||||||
|
|
@ -454,7 +458,7 @@ class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # ty
|
||||||
|
|
||||||
|
|
||||||
@register(CategoryTag)
|
@register(CategoryTag)
|
||||||
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = CategoryTag # type: ignore [misc]
|
model = CategoryTag # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -480,7 +484,7 @@ class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # t
|
||||||
|
|
||||||
|
|
||||||
@register(Vendor)
|
@register(Vendor)
|
||||||
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Vendor # type: ignore [misc]
|
model = Vendor # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -518,7 +522,7 @@ class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type:
|
||||||
|
|
||||||
|
|
||||||
@register(Feedback)
|
@register(Feedback)
|
||||||
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Feedback # type: ignore [misc]
|
model = Feedback # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -551,7 +555,7 @@ class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type
|
||||||
|
|
||||||
|
|
||||||
@register(Order)
|
@register(Order)
|
||||||
class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Order # type: ignore [misc]
|
model = Order # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -602,7 +606,7 @@ class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
|
||||||
|
|
||||||
|
|
||||||
@register(OrderProduct)
|
@register(OrderProduct)
|
||||||
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = OrderProduct # type: ignore [misc]
|
model = OrderProduct # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -640,7 +644,7 @@ class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): #
|
||||||
|
|
||||||
|
|
||||||
@register(PromoCode)
|
@register(PromoCode)
|
||||||
class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = PromoCode # type: ignore [misc]
|
model = PromoCode # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -684,7 +688,7 @@ class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ
|
||||||
|
|
||||||
|
|
||||||
@register(Promotion)
|
@register(Promotion)
|
||||||
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Promotion # type: ignore [misc]
|
model = Promotion # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -711,7 +715,7 @@ class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ
|
||||||
|
|
||||||
|
|
||||||
@register(Stock)
|
@register(Stock)
|
||||||
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Stock # type: ignore [misc]
|
model = Stock # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -755,7 +759,7 @@ class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
|
||||||
|
|
||||||
|
|
||||||
@register(Wishlist)
|
@register(Wishlist)
|
||||||
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Wishlist # type: ignore [misc]
|
model = Wishlist # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -781,7 +785,7 @@ class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type
|
||||||
|
|
||||||
|
|
||||||
@register(ProductImage)
|
@register(ProductImage)
|
||||||
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
|
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = ProductImage # type: ignore [misc]
|
model = ProductImage # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -817,7 +821,7 @@ class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): #
|
||||||
|
|
||||||
|
|
||||||
@register(Address)
|
@register(Address)
|
||||||
class AddressAdmin(FieldsetsMixin, GISModelAdmin):
|
class AddressAdmin(FieldsetsMixin, GISModelAdmin): # type: ignore [misc]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = Address # type: ignore [misc]
|
model = Address # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -867,7 +871,7 @@ class AddressAdmin(FieldsetsMixin, GISModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
@register(CustomerRelationshipManagementProvider)
|
@register(CustomerRelationshipManagementProvider)
|
||||||
class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin):
|
class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = CustomerRelationshipManagementProvider # type: ignore [misc]
|
model = CustomerRelationshipManagementProvider # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -896,7 +900,7 @@ class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
@register(OrderCrmLink)
|
@register(OrderCrmLink)
|
||||||
class OrderCrmLinkAdmin(FieldsetsMixin, ModelAdmin):
|
class OrderCrmLinkAdmin(FieldsetsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||||
# noinspection PyClassVar
|
# noinspection PyClassVar
|
||||||
model = OrderCrmLink # type: ignore [misc]
|
model = OrderCrmLink # type: ignore [misc]
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -938,22 +942,22 @@ class ConstanceConfig:
|
||||||
swapped = False
|
swapped = False
|
||||||
is_composite_pk = False
|
is_composite_pk = False
|
||||||
|
|
||||||
def get_change_permission(self):
|
def get_change_permission(self) -> str:
|
||||||
return f"change_{self.model_name}"
|
return f"change_{self.model_name}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def app_config(self):
|
def app_config(self) -> AppConfig:
|
||||||
return apps.get_app_config(self.app_label)
|
return apps.get_app_config(self.app_label)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def label(self):
|
def label(self) -> str:
|
||||||
return f"{self.app_label}.{self.object_name}"
|
return f"{self.app_label}.{self.object_name}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def label_lower(self):
|
def label_lower(self) -> str:
|
||||||
return f"{self.app_label}.{self.model_name}"
|
return f"{self.app_label}.{self.model_name}"
|
||||||
|
|
||||||
def get_ordered_objects(self):
|
def get_ordered_objects(self) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
_meta = Meta()
|
_meta = Meta()
|
||||||
|
|
@ -963,6 +967,6 @@ class ConstanceConfig:
|
||||||
site.unregister([Config])
|
site.unregister([Config])
|
||||||
# noinspection PyTypeChecker
|
# noinspection PyTypeChecker
|
||||||
site.register([ConstanceConfig], BaseConstanceAdmin) # type: ignore [list-item]
|
site.register([ConstanceConfig], BaseConstanceAdmin) # type: ignore [list-item]
|
||||||
site.site_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore [assignment]
|
site.site_title = settings.CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore [assignment]
|
||||||
site.site_header = "eVibes"
|
site.site_header = "eVibes"
|
||||||
site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore [assignment]
|
site.index_title = settings.CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore [assignment]
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,6 @@ class CoreConfig(AppConfig):
|
||||||
hide = False
|
hide = False
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
def ready(self):
|
def ready(self) -> None:
|
||||||
import core.elasticsearch.documents
|
import core.elasticsearch.documents
|
||||||
import core.signals # noqa: F401
|
import core.signals # noqa: F401
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ def process_query(
|
||||||
request: Request | None = None,
|
request: Request | None = None,
|
||||||
indexes: tuple[str, ...] = ("categories", "brands", "products"),
|
indexes: tuple[str, ...] = ("categories", "brands", "products"),
|
||||||
use_transliteration: bool = True,
|
use_transliteration: bool = True,
|
||||||
) -> dict[str, list[dict]] | None:
|
) -> dict[str, list[dict[str, Any]]] | None:
|
||||||
if not query:
|
if not query:
|
||||||
raise ValueError(_("no search term provided."))
|
raise ValueError(_("no search term provided."))
|
||||||
|
|
||||||
|
|
@ -235,7 +235,7 @@ def process_query(
|
||||||
):
|
):
|
||||||
hit_cache.append(h)
|
hit_cache.append(h)
|
||||||
if getattr(h, "uuid", None):
|
if getattr(h, "uuid", None):
|
||||||
uuids_by_index.setdefault(h.meta.index, []).append(str(h.uuid))
|
uuids_by_index.setdefault(h.meta.index, []).append({"uuid": str(h.uuid)})
|
||||||
|
|
||||||
products_by_uuid = {}
|
products_by_uuid = {}
|
||||||
brands_by_uuid = {}
|
brands_by_uuid = {}
|
||||||
|
|
@ -329,9 +329,9 @@ def _lang_analyzer(lang_code: str) -> str:
|
||||||
|
|
||||||
class ActiveOnlyMixin:
|
class ActiveOnlyMixin:
|
||||||
def get_queryset(self) -> QuerySet[Any]:
|
def get_queryset(self) -> QuerySet[Any]:
|
||||||
return super().get_queryset().filter(is_active=True)
|
return super().get_queryset().filter(is_active=True) # type: ignore [no-any-return, misc]
|
||||||
|
|
||||||
def should_index_object(self, obj) -> bool:
|
def should_index_object(self, obj) -> bool: # type: ignore [no-untyped-def]
|
||||||
return getattr(obj, "is_active", False)
|
return getattr(obj, "is_active", False)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -436,7 +436,7 @@ COMMON_ANALYSIS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def add_multilang_fields(cls) -> None:
|
def add_multilang_fields(cls: Any) -> None:
|
||||||
for code, _lang in settings.LANGUAGES:
|
for code, _lang in settings.LANGUAGES:
|
||||||
lc = code.replace("-", "_").lower()
|
lc = code.replace("-", "_").lower()
|
||||||
name_field = f"name_{lc}"
|
name_field = f"name_{lc}"
|
||||||
|
|
@ -480,10 +480,11 @@ def add_multilang_fields(cls) -> None:
|
||||||
setattr(cls, f"prepare_{desc_field}", make_prepare(desc_field))
|
setattr(cls, f"prepare_{desc_field}", make_prepare(desc_field))
|
||||||
|
|
||||||
|
|
||||||
def populate_index():
|
def populate_index() -> None:
|
||||||
for doc in registry.get_documents(set(registry.get_models())):
|
for doc in registry.get_documents(set(registry.get_models())):
|
||||||
qs = doc().get_indexing_queryset()
|
qs = doc().get_indexing_queryset()
|
||||||
doc().update(qs, parallel=True, refresh=True)
|
doc().update(qs, parallel=True, refresh=True)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def process_system_query(
|
def process_system_query(
|
||||||
|
|
@ -493,7 +494,7 @@ def process_system_query(
|
||||||
size_per_index: int = 25,
|
size_per_index: int = 25,
|
||||||
language_code: str | None = None,
|
language_code: str | None = None,
|
||||||
use_transliteration: bool = True,
|
use_transliteration: bool = True,
|
||||||
) -> dict[str, list[dict]]:
|
) -> dict[str, list[dict[str, Any]]]:
|
||||||
if not query:
|
if not query:
|
||||||
raise ValueError(_("no search term provided."))
|
raise ValueError(_("no search term provided."))
|
||||||
|
|
||||||
|
|
@ -526,7 +527,7 @@ def process_system_query(
|
||||||
**({"fuzziness": fuzzy} if fuzzy else {}),
|
**({"fuzziness": fuzzy} if fuzzy else {}),
|
||||||
)
|
)
|
||||||
|
|
||||||
results: dict[str, list[dict]] = {idx: [] for idx in indexes}
|
results: dict[str, list[dict[str, Any]]] = {idx: [] for idx in indexes}
|
||||||
|
|
||||||
for idx in indexes:
|
for idx in indexes:
|
||||||
s = Search(index=[idx]).query(mm).extra(size=size_per_index, track_total_hits=False)
|
s = Search(index=[idx]).query(mm).extra(size=size_per_index, track_total_hits=False)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from django.db.models import Model, QuerySet
|
||||||
from django_elasticsearch_dsl import Document, fields
|
from django_elasticsearch_dsl import Document, fields
|
||||||
from django_elasticsearch_dsl.registries import registry
|
from django_elasticsearch_dsl.registries import registry
|
||||||
from health_check.db.models import TestModel
|
from health_check.db.models import TestModel
|
||||||
|
|
@ -6,7 +9,7 @@ from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_f
|
||||||
from core.models import Brand, Category, Product
|
from core.models import Brand, Category, Product
|
||||||
|
|
||||||
|
|
||||||
class BaseDocument(Document):
|
class BaseDocument(Document): # type: ignore [misc]
|
||||||
name = fields.TextField(
|
name = fields.TextField(
|
||||||
attr="name",
|
attr="name",
|
||||||
analyzer="standard",
|
analyzer="standard",
|
||||||
|
|
@ -39,10 +42,10 @@ class BaseDocument(Document):
|
||||||
"index": {"max_ngram_diff": 20},
|
"index": {"max_ngram_diff": 20},
|
||||||
}
|
}
|
||||||
|
|
||||||
def prepare_name(self, instance):
|
def prepare_name(self, instance: Model) -> str:
|
||||||
return getattr(instance, "name", "") or ""
|
return getattr(instance, "name", "") or ""
|
||||||
|
|
||||||
def prepare_description(self, instance):
|
def prepare_description(self, instance: Model) -> str:
|
||||||
return getattr(instance, "description", "") or ""
|
return getattr(instance, "description", "") or ""
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -103,7 +106,7 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self) -> QuerySet[Product]:
|
||||||
return (
|
return (
|
||||||
super()
|
super()
|
||||||
.get_queryset()
|
.get_queryset()
|
||||||
|
|
@ -156,7 +159,7 @@ add_multilang_fields(BrandDocument)
|
||||||
registry.register_document(BrandDocument)
|
registry.register_document(BrandDocument)
|
||||||
|
|
||||||
|
|
||||||
class TestModelDocument(Document):
|
class TestModelDocument(Document): # type: ignore [misc]
|
||||||
class Index:
|
class Index:
|
||||||
name = "testmodels"
|
name = "testmodels"
|
||||||
|
|
||||||
|
|
@ -164,7 +167,7 @@ class TestModelDocument(Document):
|
||||||
model = TestModel
|
model = TestModel
|
||||||
fields = ["title"]
|
fields = ["title"]
|
||||||
ignore_signals = True
|
ignore_signals = True
|
||||||
related_models: list = []
|
related_models: list[Any] = []
|
||||||
auto_refresh = False
|
auto_refresh = False
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.exceptions import BadRequest
|
from django.core.exceptions import BadRequest
|
||||||
from django.db.models import (
|
from django.db.models import (
|
||||||
|
|
@ -19,6 +20,7 @@ from django.db.models import (
|
||||||
When,
|
When,
|
||||||
)
|
)
|
||||||
from django.db.models.functions import Coalesce
|
from django.db.models.functions import Coalesce
|
||||||
|
from django.http import HttpRequest
|
||||||
from django.utils.http import urlsafe_base64_decode
|
from django.utils.http import urlsafe_base64_decode
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django_filters import (
|
from django_filters import (
|
||||||
|
|
@ -31,6 +33,8 @@ from django_filters import (
|
||||||
OrderingFilter,
|
OrderingFilter,
|
||||||
UUIDFilter,
|
UUIDFilter,
|
||||||
)
|
)
|
||||||
|
from graphene import Context
|
||||||
|
from rest_framework.request import Request
|
||||||
|
|
||||||
from core.elasticsearch import process_query
|
from core.elasticsearch import process_query
|
||||||
from core.models import Address, Brand, Category, Feedback, Order, Product, Stock, Wishlist
|
from core.models import Address, Brand, Category, Feedback, Order, Product, Stock, Wishlist
|
||||||
|
|
@ -38,8 +42,8 @@ from core.models import Address, Brand, Category, Feedback, Order, Product, Stoc
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
|
class CaseInsensitiveListFilter(BaseInFilter, CharFilter): # type: ignore [misc]
|
||||||
def filter(self, qs, value):
|
def filter(self, qs: QuerySet[Any], value: Any) -> QuerySet[Any]:
|
||||||
if not value:
|
if not value:
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
|
@ -61,7 +65,7 @@ class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyUnusedLocal
|
# noinspection PyUnusedLocal
|
||||||
class ProductFilter(FilterSet):
|
class ProductFilter(FilterSet): # type: ignore [misc]
|
||||||
search = CharFilter(field_name="name", method="search_products", label=_("Search"))
|
search = CharFilter(field_name="name", method="search_products", label=_("Search"))
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||||
|
|
@ -121,7 +125,15 @@ class ProductFilter(FilterSet):
|
||||||
"order_by",
|
"order_by",
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
|
# noinspection PyTypeHints
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
data: dict[Any, Any] | None = None,
|
||||||
|
queryset: QuerySet[Product] | None = None,
|
||||||
|
*,
|
||||||
|
request: HttpRequest | Request | Context = None,
|
||||||
|
prefix: str | None = None,
|
||||||
|
) -> None:
|
||||||
super().__init__(data=data, queryset=queryset, request=request, prefix=prefix)
|
super().__init__(data=data, queryset=queryset, request=request, prefix=prefix)
|
||||||
ordering_param = self.data.get("order_by", "")
|
ordering_param = self.data.get("order_by", "")
|
||||||
if ordering_param:
|
if ordering_param:
|
||||||
|
|
@ -133,7 +145,7 @@ class ProductFilter(FilterSet):
|
||||||
.annotate(avg_rating=Avg("rating"))
|
.annotate(avg_rating=Avg("rating"))
|
||||||
.values("avg_rating")
|
.values("avg_rating")
|
||||||
)
|
)
|
||||||
self.queryset = self.queryset.annotate(
|
self.queryset: QuerySet[Product] = self.queryset.annotate(
|
||||||
rating=Coalesce(
|
rating=Coalesce(
|
||||||
Subquery(feedback_qs, output_field=FloatField()),
|
Subquery(feedback_qs, output_field=FloatField()),
|
||||||
Value(0, output_field=FloatField()),
|
Value(0, output_field=FloatField()),
|
||||||
|
|
@ -148,7 +160,7 @@ class ProductFilter(FilterSet):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def search_products(self, queryset: QuerySet[Product], name, value):
|
def search_products(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -156,17 +168,17 @@ class ProductFilter(FilterSet):
|
||||||
|
|
||||||
return queryset.filter(uuid__in=uuids)
|
return queryset.filter(uuid__in=uuids)
|
||||||
|
|
||||||
def filter_include_flag(self, queryset, name, value):
|
def filter_include_flag(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||||
if not self.data.get("category_uuid"):
|
if not self.data.get("category_uuid"):
|
||||||
raise BadRequest(_("there must be a category_uuid to use include_subcategories flag"))
|
raise BadRequest(_("there must be a category_uuid to use include_subcategories flag"))
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_include_personal_ordered(self, queryset, name, value):
|
def filter_include_personal_ordered(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||||
if self.data.get("include_personal_ordered", False):
|
if self.data.get("include_personal_ordered", False):
|
||||||
queryset = queryset.filter(stocks__isnull=False, stocks__quantity__gt=0, stocks__price__gt=0)
|
queryset = queryset.filter(stocks__isnull=False, stocks__quantity__gt=0, stocks__price__gt=0)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_attributes(self, queryset, name, value):
|
def filter_attributes(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -228,7 +240,7 @@ class ProductFilter(FilterSet):
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_category(self, queryset, name, value):
|
def filter_category(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -247,7 +259,7 @@ class ProductFilter(FilterSet):
|
||||||
return queryset.filter(category__uuid=value)
|
return queryset.filter(category__uuid=value)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _infer_type(value):
|
def _infer_type(value: str) -> Any:
|
||||||
try:
|
try:
|
||||||
parsed_value = json.loads(value)
|
parsed_value = json.loads(value)
|
||||||
if isinstance(parsed_value, list | dict):
|
if isinstance(parsed_value, list | dict):
|
||||||
|
|
@ -271,7 +283,7 @@ class ProductFilter(FilterSet):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def qs(self):
|
def qs(self) -> QuerySet[Product]:
|
||||||
qs = super().qs
|
qs = super().qs
|
||||||
|
|
||||||
ordering_param = self.data.get("order_by", "")
|
ordering_param = self.data.get("order_by", "")
|
||||||
|
|
@ -320,7 +332,8 @@ class ProductFilter(FilterSet):
|
||||||
return qs.distinct()
|
return qs.distinct()
|
||||||
|
|
||||||
|
|
||||||
class OrderFilter(FilterSet):
|
# noinspection PyUnusedLocal
|
||||||
|
class OrderFilter(FilterSet): # type: ignore [misc]
|
||||||
search = CharFilter(
|
search = CharFilter(
|
||||||
method="filter_search",
|
method="filter_search",
|
||||||
label=_("Search (ID, product name or part number)"),
|
label=_("Search (ID, product name or part number)"),
|
||||||
|
|
@ -367,7 +380,7 @@ class OrderFilter(FilterSet):
|
||||||
"max_buy_time",
|
"max_buy_time",
|
||||||
]
|
]
|
||||||
|
|
||||||
def filter_search(self, queryset, _name, value):
|
def filter_search(self, queryset: QuerySet[Order], name: str, value: str):
|
||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
Q(human_readable_id__icontains=value)
|
Q(human_readable_id__icontains=value)
|
||||||
| Q(order_products__product__name__icontains=value)
|
| Q(order_products__product__name__icontains=value)
|
||||||
|
|
@ -375,7 +388,7 @@ class OrderFilter(FilterSet):
|
||||||
).distinct()
|
).distinct()
|
||||||
|
|
||||||
|
|
||||||
class WishlistFilter(FilterSet):
|
class WishlistFilter(FilterSet): # type: ignore [misc]
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||||
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||||
|
|
@ -395,7 +408,7 @@ class WishlistFilter(FilterSet):
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyUnusedLocal
|
# noinspection PyUnusedLocal
|
||||||
class CategoryFilter(FilterSet):
|
class CategoryFilter(FilterSet): # type: ignore [misc]
|
||||||
search = CharFilter(field_name="name", method="search_categories", label=_("Search"))
|
search = CharFilter(field_name="name", method="search_categories", label=_("Search"))
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||||
|
|
@ -424,7 +437,7 @@ class CategoryFilter(FilterSet):
|
||||||
"whole",
|
"whole",
|
||||||
]
|
]
|
||||||
|
|
||||||
def search_categories(self, queryset: QuerySet[Product], name, value):
|
def search_categories(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -432,7 +445,7 @@ class CategoryFilter(FilterSet):
|
||||||
|
|
||||||
return queryset.filter(uuid__in=uuids)
|
return queryset.filter(uuid__in=uuids)
|
||||||
|
|
||||||
def filter_order_by(self, queryset, _name, value):
|
def filter_order_by(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -456,7 +469,7 @@ class CategoryFilter(FilterSet):
|
||||||
|
|
||||||
qs = queryset.order_by(order_expression).prefetch_related(None)
|
qs = queryset.order_by(order_expression).prefetch_related(None)
|
||||||
|
|
||||||
def create_ordered_tree_prefetch(max_depth=10):
|
def create_ordered_tree_prefetch(max_depth=10) -> Prefetch | None:
|
||||||
if field == "?":
|
if field == "?":
|
||||||
|
|
||||||
def build_random_prefetch(depth):
|
def build_random_prefetch(depth):
|
||||||
|
|
@ -494,7 +507,7 @@ class CategoryFilter(FilterSet):
|
||||||
|
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
def filter_whole_categories(self, queryset, _name, value):
|
def filter_whole_categories(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||||
has_own_products = Exists(Product.objects.filter(category=OuterRef("pk")))
|
has_own_products = Exists(Product.objects.filter(category=OuterRef("pk")))
|
||||||
has_desc_products = Exists(
|
has_desc_products = Exists(
|
||||||
Product.objects.filter(
|
Product.objects.filter(
|
||||||
|
|
@ -509,7 +522,7 @@ class CategoryFilter(FilterSet):
|
||||||
return annotated.filter(has_products=True).distinct()
|
return annotated.filter(has_products=True).distinct()
|
||||||
return annotated.filter(has_products=False).distinct()
|
return annotated.filter(has_products=False).distinct()
|
||||||
|
|
||||||
def filter_parent_uuid(self, queryset, _name, value):
|
def filter_parent_uuid(self, queryset: QuerySet[Category], name: str, value: str):
|
||||||
if value in ("", "null", "None"):
|
if value in ("", "null", "None"):
|
||||||
return queryset.filter(parent=None)
|
return queryset.filter(parent=None)
|
||||||
|
|
||||||
|
|
@ -522,7 +535,7 @@ class CategoryFilter(FilterSet):
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyUnusedLocal
|
# noinspection PyUnusedLocal
|
||||||
class BrandFilter(FilterSet):
|
class BrandFilter(FilterSet): # type: ignore [misc]
|
||||||
search = CharFilter(field_name="name", method="search_brands", label=_("Search"))
|
search = CharFilter(field_name="name", method="search_brands", label=_("Search"))
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||||
|
|
@ -543,7 +556,7 @@ class BrandFilter(FilterSet):
|
||||||
model = Brand
|
model = Brand
|
||||||
fields = ["uuid", "name", "slug", "priority"]
|
fields = ["uuid", "name", "slug", "priority"]
|
||||||
|
|
||||||
def search_brands(self, queryset: QuerySet[Product], name, value):
|
def search_brands(self, queryset: QuerySet[Brand], name: str, value: str) -> QuerySet[Brand]:
|
||||||
if not value:
|
if not value:
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
@ -552,7 +565,7 @@ class BrandFilter(FilterSet):
|
||||||
return queryset.filter(uuid__in=uuids)
|
return queryset.filter(uuid__in=uuids)
|
||||||
|
|
||||||
|
|
||||||
class FeedbackFilter(FilterSet):
|
class FeedbackFilter(FilterSet): # type: ignore [misc]
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||||
product_uuid = UUIDFilter(
|
product_uuid = UUIDFilter(
|
||||||
field_name="order_product__product__uuid",
|
field_name="order_product__product__uuid",
|
||||||
|
|
@ -581,7 +594,7 @@ class FeedbackFilter(FilterSet):
|
||||||
fields = ["uuid", "product_uuid", "user_uuid", "order_by"]
|
fields = ["uuid", "product_uuid", "user_uuid", "order_by"]
|
||||||
|
|
||||||
|
|
||||||
class AddressFilter(FilterSet):
|
class AddressFilter(FilterSet): # type: ignore [misc]
|
||||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||||
user_uuid = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
user_uuid = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from graphene import Mutation
|
from graphene import Mutation
|
||||||
|
|
||||||
|
|
||||||
class BaseMutation(Mutation): # type: ignore [misc]
|
class BaseMutation(Mutation): # type: ignore [misc]
|
||||||
def __init__(self, *args, **kwargs) -> None:
|
def __init__(self, *args: list[Any], **kwargs: dict[Any, Any]) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(**kwargs) -> None:
|
def mutate(**kwargs: Any) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
|
|
@ -31,6 +32,7 @@ from payments.graphene.object_types import TransactionType
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class CacheOperator(BaseMutation):
|
class CacheOperator(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("cache I/O")
|
description = _("cache I/O")
|
||||||
|
|
@ -46,10 +48,11 @@ class CacheOperator(BaseMutation):
|
||||||
data = GenericScalar(description=_("cached data"))
|
data = GenericScalar(description=_("cached data"))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, key, data=None, timeout=None):
|
def mutate(parent, info, key, data=None, timeout=None) -> dict[Any, Any]: # type: ignore [override]
|
||||||
return camelize(web_cache(info.context, key, data, timeout))
|
return camelize(web_cache(info.context, key, data, timeout))
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class RequestCursedURL(BaseMutation):
|
class RequestCursedURL(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("request a CORSed URL")
|
description = _("request a CORSed URL")
|
||||||
|
|
@ -60,7 +63,7 @@ class RequestCursedURL(BaseMutation):
|
||||||
data = GenericScalar(description=_("camelized JSON data from the requested URL"))
|
data = GenericScalar(description=_("camelized JSON data from the requested URL"))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, url):
|
def mutate(parent, info, url) -> dict[str, Any]: # type: ignore [override]
|
||||||
if not is_url_safe(url):
|
if not is_url_safe(url):
|
||||||
raise BadRequest(_("only URLs starting with http(s):// are allowed"))
|
raise BadRequest(_("only URLs starting with http(s):// are allowed"))
|
||||||
try:
|
try:
|
||||||
|
|
@ -75,6 +78,7 @@ class RequestCursedURL(BaseMutation):
|
||||||
return {"data": {"error": str(e)}}
|
return {"data": {"error": str(e)}}
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class AddOrderProduct(BaseMutation):
|
class AddOrderProduct(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("add a product to the order")
|
description = _("add a product to the order")
|
||||||
|
|
@ -87,7 +91,7 @@ class AddOrderProduct(BaseMutation):
|
||||||
order = Field(OrderType)
|
order = Field(OrderType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, product_uuid, order_uuid, attributes=None):
|
def mutate(parent, info, product_uuid, order_uuid, attributes=None): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(uuid=order_uuid)
|
order = Order.objects.get(uuid=order_uuid)
|
||||||
|
|
@ -101,6 +105,7 @@ class AddOrderProduct(BaseMutation):
|
||||||
raise Http404(_(f"order {order_uuid} not found")) from dne
|
raise Http404(_(f"order {order_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class RemoveOrderProduct(BaseMutation):
|
class RemoveOrderProduct(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("remove a product from the order")
|
description = _("remove a product from the order")
|
||||||
|
|
@ -113,7 +118,7 @@ class RemoveOrderProduct(BaseMutation):
|
||||||
order = Field(OrderType)
|
order = Field(OrderType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, product_uuid, order_uuid, attributes=None):
|
def mutate(parent, info, product_uuid, order_uuid, attributes=None) -> AddOrderProduct | None: # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(uuid=order_uuid)
|
order = Order.objects.get(uuid=order_uuid)
|
||||||
|
|
@ -127,6 +132,7 @@ class RemoveOrderProduct(BaseMutation):
|
||||||
raise Http404(_(f"order {order_uuid} not found")) from dne
|
raise Http404(_(f"order {order_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class RemoveAllOrderProducts(BaseMutation):
|
class RemoveAllOrderProducts(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("remove all products from the order")
|
description = _("remove all products from the order")
|
||||||
|
|
@ -137,7 +143,7 @@ class RemoveAllOrderProducts(BaseMutation):
|
||||||
order = Field(OrderType)
|
order = Field(OrderType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, order_uuid):
|
def mutate(parent, info, order_uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
order = Order.objects.get(uuid=order_uuid)
|
order = Order.objects.get(uuid=order_uuid)
|
||||||
if not (user.has_perm("core.delete_orderproduct") or user == order.user):
|
if not (user.has_perm("core.delete_orderproduct") or user == order.user):
|
||||||
|
|
@ -148,6 +154,7 @@ class RemoveAllOrderProducts(BaseMutation):
|
||||||
return RemoveAllOrderProducts(order=order)
|
return RemoveAllOrderProducts(order=order)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class RemoveOrderProductsOfAKind(BaseMutation):
|
class RemoveOrderProductsOfAKind(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("remove a product from the order")
|
description = _("remove a product from the order")
|
||||||
|
|
@ -159,7 +166,7 @@ class RemoveOrderProductsOfAKind(BaseMutation):
|
||||||
order = Field(OrderType)
|
order = Field(OrderType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, product_uuid, order_uuid):
|
def mutate(parent, info, product_uuid, order_uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
order = Order.objects.get(uuid=order_uuid)
|
order = Order.objects.get(uuid=order_uuid)
|
||||||
if not (user.has_perm("core.delete_orderproduct") or user == order.user):
|
if not (user.has_perm("core.delete_orderproduct") or user == order.user):
|
||||||
|
|
@ -170,6 +177,7 @@ class RemoveOrderProductsOfAKind(BaseMutation):
|
||||||
return RemoveOrderProductsOfAKind(order=order)
|
return RemoveOrderProductsOfAKind(order=order)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class BuyOrder(BaseMutation):
|
class BuyOrder(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("buy an order")
|
description = _("buy an order")
|
||||||
|
|
@ -189,7 +197,7 @@ class BuyOrder(BaseMutation):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(
|
def mutate(
|
||||||
_parent,
|
parent,
|
||||||
info,
|
info,
|
||||||
order_uuid=None,
|
order_uuid=None,
|
||||||
order_hr_id=None,
|
order_hr_id=None,
|
||||||
|
|
@ -199,7 +207,7 @@ class BuyOrder(BaseMutation):
|
||||||
shipping_address=None,
|
shipping_address=None,
|
||||||
billing_address=None,
|
billing_address=None,
|
||||||
chosen_products=None,
|
chosen_products=None,
|
||||||
):
|
): # type: ignore [override]
|
||||||
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
||||||
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
|
|
@ -232,6 +240,7 @@ class BuyOrder(BaseMutation):
|
||||||
raise Http404(_(f"order {order_uuid} not found")) from dne
|
raise Http404(_(f"order {order_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class BulkOrderAction(BaseMutation):
|
class BulkOrderAction(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("perform an action on a list of products in the order")
|
description = _("perform an action on a list of products in the order")
|
||||||
|
|
@ -246,13 +255,13 @@ class BulkOrderAction(BaseMutation):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(
|
def mutate(
|
||||||
_parent,
|
parent,
|
||||||
info,
|
info,
|
||||||
action,
|
action,
|
||||||
products,
|
products,
|
||||||
order_uuid=None,
|
order_uuid=None,
|
||||||
order_hr_id=None,
|
order_hr_id=None,
|
||||||
):
|
): # type: ignore [override]
|
||||||
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
||||||
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
|
|
@ -279,6 +288,7 @@ class BulkOrderAction(BaseMutation):
|
||||||
raise Http404(_(f"order {order_uuid} not found")) from dne
|
raise Http404(_(f"order {order_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class BulkWishlistAction(BaseMutation):
|
class BulkWishlistAction(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("perform an action on a list of products in the wishlist")
|
description = _("perform an action on a list of products in the wishlist")
|
||||||
|
|
@ -292,12 +302,12 @@ class BulkWishlistAction(BaseMutation):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(
|
def mutate(
|
||||||
_parent,
|
parent,
|
||||||
info,
|
info,
|
||||||
action,
|
action,
|
||||||
products,
|
products,
|
||||||
wishlist_uuid=None,
|
wishlist_uuid=None,
|
||||||
):
|
): # type: ignore [override]
|
||||||
if not wishlist_uuid:
|
if not wishlist_uuid:
|
||||||
raise BadRequest(_("please provide wishlist_uuid value"))
|
raise BadRequest(_("please provide wishlist_uuid value"))
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
|
|
@ -319,6 +329,7 @@ class BulkWishlistAction(BaseMutation):
|
||||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class BuyUnregisteredOrder(BaseMutation):
|
class BuyUnregisteredOrder(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("purchase an order without account creation")
|
description = _("purchase an order without account creation")
|
||||||
|
|
@ -338,7 +349,7 @@ class BuyUnregisteredOrder(BaseMutation):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(
|
def mutate(
|
||||||
_parent,
|
parent,
|
||||||
info,
|
info,
|
||||||
products,
|
products,
|
||||||
customer_name,
|
customer_name,
|
||||||
|
|
@ -349,7 +360,7 @@ class BuyUnregisteredOrder(BaseMutation):
|
||||||
customer_shipping_address=None,
|
customer_shipping_address=None,
|
||||||
promocode_uuid=None,
|
promocode_uuid=None,
|
||||||
is_business=False,
|
is_business=False,
|
||||||
):
|
): # type: ignore [override]
|
||||||
order = Order.objects.create(status="MOMENTAL")
|
order = Order.objects.create(status="MOMENTAL")
|
||||||
transaction = order.buy_without_registration(
|
transaction = order.buy_without_registration(
|
||||||
products=products,
|
products=products,
|
||||||
|
|
@ -362,9 +373,11 @@ class BuyUnregisteredOrder(BaseMutation):
|
||||||
payment_method=payment_method,
|
payment_method=payment_method,
|
||||||
is_business=is_business,
|
is_business=is_business,
|
||||||
)
|
)
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return BuyUnregisteredOrder(transaction=transaction)
|
return BuyUnregisteredOrder(transaction=transaction)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class AddWishlistProduct(BaseMutation):
|
class AddWishlistProduct(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("add a product to the wishlist")
|
description = _("add a product to the wishlist")
|
||||||
|
|
@ -376,7 +389,7 @@ class AddWishlistProduct(BaseMutation):
|
||||||
wishlist = Field(WishlistType)
|
wishlist = Field(WishlistType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, product_uuid, wishlist_uuid):
|
def mutate(parent, info, product_uuid, wishlist_uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
||||||
|
|
@ -392,6 +405,7 @@ class AddWishlistProduct(BaseMutation):
|
||||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class RemoveWishlistProduct(BaseMutation):
|
class RemoveWishlistProduct(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("remove a product from the wishlist")
|
description = _("remove a product from the wishlist")
|
||||||
|
|
@ -403,7 +417,7 @@ class RemoveWishlistProduct(BaseMutation):
|
||||||
wishlist = Field(WishlistType)
|
wishlist = Field(WishlistType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, product_uuid, wishlist_uuid):
|
def mutate(parent, info, product_uuid, wishlist_uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
||||||
|
|
@ -419,6 +433,7 @@ class RemoveWishlistProduct(BaseMutation):
|
||||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class RemoveAllWishlistProducts(BaseMutation):
|
class RemoveAllWishlistProducts(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("remove all products from the wishlist")
|
description = _("remove all products from the wishlist")
|
||||||
|
|
@ -429,7 +444,7 @@ class RemoveAllWishlistProducts(BaseMutation):
|
||||||
wishlist = Field(WishlistType)
|
wishlist = Field(WishlistType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, wishlist_uuid):
|
def mutate(parent, info, wishlist_uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
||||||
|
|
@ -446,6 +461,7 @@ class RemoveAllWishlistProducts(BaseMutation):
|
||||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class BuyWishlist(BaseMutation):
|
class BuyWishlist(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("buy all products from the wishlist")
|
description = _("buy all products from the wishlist")
|
||||||
|
|
@ -459,7 +475,7 @@ class BuyWishlist(BaseMutation):
|
||||||
transaction = Field(TransactionType, required=False)
|
transaction = Field(TransactionType, required=False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, wishlist_uuid, force_balance=False, force_payment=False):
|
def mutate(parent, info, wishlist_uuid, force_balance=False, force_payment=False): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
wishlist = Wishlist.objects.get(uuid=wishlist_uuid)
|
||||||
|
|
@ -489,6 +505,7 @@ class BuyWishlist(BaseMutation):
|
||||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class BuyProduct(BaseMutation):
|
class BuyProduct(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("buy a product")
|
description = _("buy a product")
|
||||||
|
|
@ -507,13 +524,13 @@ class BuyProduct(BaseMutation):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(
|
def mutate(
|
||||||
_parent,
|
parent,
|
||||||
info,
|
info,
|
||||||
product_uuid,
|
product_uuid,
|
||||||
attributes=None,
|
attributes=None,
|
||||||
force_balance=False,
|
force_balance=False,
|
||||||
force_payment=False,
|
force_payment=False,
|
||||||
):
|
): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
order = Order.objects.create(user=user, status="MOMENTAL")
|
order = Order.objects.create(user=user, status="MOMENTAL")
|
||||||
order.add_product(product_uuid=product_uuid, attributes=format_attributes(attributes))
|
order.add_product(product_uuid=product_uuid, attributes=format_attributes(attributes))
|
||||||
|
|
@ -527,6 +544,7 @@ class BuyProduct(BaseMutation):
|
||||||
raise TypeError(_(f"wrong type came from order.buy() method: {type(instance)!s}"))
|
raise TypeError(_(f"wrong type came from order.buy() method: {type(instance)!s}"))
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class FeedbackProductAction(BaseMutation):
|
class FeedbackProductAction(BaseMutation):
|
||||||
class Meta:
|
class Meta:
|
||||||
description = _("add or delete a feedback for orderproduct")
|
description = _("add or delete a feedback for orderproduct")
|
||||||
|
|
@ -540,7 +558,7 @@ class FeedbackProductAction(BaseMutation):
|
||||||
feedback = Field(FeedbackType, required=False)
|
feedback = Field(FeedbackType, required=False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, order_product_uuid, action, comment=None, rating=None):
|
def mutate(parent, info, order_product_uuid, action, comment=None, rating=None): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
try:
|
try:
|
||||||
order_product = OrderProduct.objects.get(uuid=order_product_uuid)
|
order_product = OrderProduct.objects.get(uuid=order_product_uuid)
|
||||||
|
|
@ -559,6 +577,7 @@ class FeedbackProductAction(BaseMutation):
|
||||||
raise Http404(_(f"order product {order_product_uuid} not found")) from dne
|
raise Http404(_(f"order product {order_product_uuid} not found")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class CreateProduct(BaseMutation):
|
class CreateProduct(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
name = String(required=True)
|
name = String(required=True)
|
||||||
|
|
@ -568,7 +587,7 @@ class CreateProduct(BaseMutation):
|
||||||
product = Field(ProductType)
|
product = Field(ProductType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, name, category_uuid, description=None):
|
def mutate(parent, info, name, category_uuid, description=None): # type: ignore [override]
|
||||||
if not info.context.user.has_perm("core.add_product"):
|
if not info.context.user.has_perm("core.add_product"):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
category = Category.objects.get(uuid=category_uuid)
|
category = Category.objects.get(uuid=category_uuid)
|
||||||
|
|
@ -576,6 +595,7 @@ class CreateProduct(BaseMutation):
|
||||||
return CreateProduct(product=product)
|
return CreateProduct(product=product)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class UpdateProduct(BaseMutation):
|
class UpdateProduct(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
uuid = UUID(required=True)
|
uuid = UUID(required=True)
|
||||||
|
|
@ -586,7 +606,7 @@ class UpdateProduct(BaseMutation):
|
||||||
product = Field(ProductType)
|
product = Field(ProductType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, uuid, name=None, description=None, category_uuid=None):
|
def mutate(parent, info, uuid, name=None, description=None, category_uuid=None): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
if not user.has_perm("core.change_product"):
|
if not user.has_perm("core.change_product"):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
@ -601,6 +621,7 @@ class UpdateProduct(BaseMutation):
|
||||||
return UpdateProduct(product=product)
|
return UpdateProduct(product=product)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class DeleteProduct(BaseMutation):
|
class DeleteProduct(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
uuid = UUID(required=True)
|
uuid = UUID(required=True)
|
||||||
|
|
@ -608,7 +629,7 @@ class DeleteProduct(BaseMutation):
|
||||||
ok = Boolean()
|
ok = Boolean()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, uuid):
|
def mutate(parent, info, uuid): # type: ignore [override]
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
if not user.has_perm("core.delete_product"):
|
if not user.has_perm("core.delete_product"):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
@ -617,6 +638,7 @@ class DeleteProduct(BaseMutation):
|
||||||
return DeleteProduct(ok=True)
|
return DeleteProduct(ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal,PyTypeChecker
|
||||||
class CreateAddress(BaseMutation):
|
class CreateAddress(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
raw_data = String(required=True, description=_("original address string provided by the user"))
|
raw_data = String(required=True, description=_("original address string provided by the user"))
|
||||||
|
|
@ -624,13 +646,14 @@ class CreateAddress(BaseMutation):
|
||||||
address = Field(AddressType)
|
address = Field(AddressType)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, raw_data):
|
def mutate(parent, info, raw_data): # type: ignore [override]
|
||||||
user = info.context.user if info.context.user.is_authenticated else None
|
user = info.context.user if info.context.user.is_authenticated else None
|
||||||
|
|
||||||
address = Address.objects.create(raw_data=raw_data, user=user)
|
address = Address.objects.create(raw_data=raw_data, user=user)
|
||||||
return CreateAddress(address=address)
|
return CreateAddress(address=address)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class DeleteAddress(BaseMutation):
|
class DeleteAddress(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
uuid = UUID(required=True)
|
uuid = UUID(required=True)
|
||||||
|
|
@ -638,7 +661,7 @@ class DeleteAddress(BaseMutation):
|
||||||
success = Boolean()
|
success = Boolean()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, uuid):
|
def mutate(parent, info, uuid): # type: ignore [override]
|
||||||
try:
|
try:
|
||||||
address = Address.objects.get(uuid=uuid)
|
address = Address.objects.get(uuid=uuid)
|
||||||
if (
|
if (
|
||||||
|
|
@ -647,6 +670,7 @@ class DeleteAddress(BaseMutation):
|
||||||
or info.context.user == address.user
|
or info.context.user == address.user
|
||||||
):
|
):
|
||||||
address.delete()
|
address.delete()
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return DeleteAddress(success=True)
|
return DeleteAddress(success=True)
|
||||||
|
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
@ -656,6 +680,7 @@ class DeleteAddress(BaseMutation):
|
||||||
raise Http404(_(f"{name} does not exist: {uuid}")) from dne
|
raise Http404(_(f"{name} does not exist: {uuid}")) from dne
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class AutocompleteAddress(BaseMutation):
|
class AutocompleteAddress(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
q = String()
|
q = String()
|
||||||
|
|
@ -664,7 +689,7 @@ class AutocompleteAddress(BaseMutation):
|
||||||
suggestions = GenericScalar()
|
suggestions = GenericScalar()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, q, limit):
|
def mutate(parent, info, q, limit): # type: ignore [override]
|
||||||
if 1 > limit > 10:
|
if 1 > limit > 10:
|
||||||
raise BadRequest(_("limit must be between 1 and 10"))
|
raise BadRequest(_("limit must be between 1 and 10"))
|
||||||
try:
|
try:
|
||||||
|
|
@ -672,9 +697,11 @@ class AutocompleteAddress(BaseMutation):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise BadRequest(f"geocoding error: {e!s}") from e
|
raise BadRequest(f"geocoding error: {e!s}") from e
|
||||||
|
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return AutocompleteAddress(suggestions=suggestions)
|
return AutocompleteAddress(suggestions=suggestions)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
class ContactUs(BaseMutation):
|
class ContactUs(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
email = String(required=True)
|
email = String(required=True)
|
||||||
|
|
@ -687,7 +714,7 @@ class ContactUs(BaseMutation):
|
||||||
error = String()
|
error = String()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, email, name, subject, message, phone_number=None):
|
def mutate(parent, info, email, name, subject, message, phone_number=None): # type: ignore [override]
|
||||||
try:
|
try:
|
||||||
contact_us_email.delay(
|
contact_us_email.delay(
|
||||||
{
|
{
|
||||||
|
|
@ -698,12 +725,14 @@ class ContactUs(BaseMutation):
|
||||||
"message": message,
|
"message": message,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return ContactUs(received=True)
|
return ContactUs(received=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return ContactUs(received=False, error=str(e))
|
return ContactUs(received=False, error=str(e))
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyArgumentList
|
# noinspection PyArgumentList PyUnusedLocal
|
||||||
class Search(BaseMutation):
|
class Search(BaseMutation):
|
||||||
class Arguments:
|
class Arguments:
|
||||||
query = String(required=True)
|
query = String(required=True)
|
||||||
|
|
@ -714,9 +743,10 @@ class Search(BaseMutation):
|
||||||
description = _("elasticsearch - works like a charm")
|
description = _("elasticsearch - works like a charm")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def mutate(_parent, info, query):
|
def mutate(parent, info, query): # type: ignore [override]
|
||||||
data = process_query(query=query, request=info.context)
|
data = process_query(query=query, request=info.context)
|
||||||
|
|
||||||
|
# noinspection PyTypeChecker
|
||||||
return Search(
|
return Search(
|
||||||
results=SearchResultsType(
|
results=SearchResultsType(
|
||||||
products=data["products"],
|
products=data["products"],
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from typing import Any
|
||||||
|
|
||||||
from constance import config
|
from constance import config
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db.models import Max, Min
|
from django.db.models import Max, Min, QuerySet
|
||||||
from django.db.models.functions import Length
|
from django.db.models.functions import Length
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from graphene import (
|
from graphene import (
|
||||||
|
|
@ -60,7 +60,7 @@ from payments.graphene.object_types import TransactionType
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
class SEOMetaType(ObjectType):
|
class SEOMetaType(ObjectType): # type: ignore [misc]
|
||||||
title = String()
|
title = String()
|
||||||
description = String()
|
description = String()
|
||||||
canonical = String()
|
canonical = String()
|
||||||
|
|
@ -71,7 +71,7 @@ class SEOMetaType(ObjectType):
|
||||||
hreflang = String()
|
hreflang = String()
|
||||||
|
|
||||||
|
|
||||||
class AttributeType(DjangoObjectType):
|
class AttributeType(DjangoObjectType): # type: ignore [misc]
|
||||||
values = List(lambda: AttributeValueType, description=_("attribute values"))
|
values = List(lambda: AttributeValueType, description=_("attribute values"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -81,7 +81,7 @@ class AttributeType(DjangoObjectType):
|
||||||
filter_fields = ["uuid"]
|
filter_fields = ["uuid"]
|
||||||
description = _("attributes")
|
description = _("attributes")
|
||||||
|
|
||||||
def resolve_values(self, info):
|
def resolve_values(self, info) -> QuerySet[AttributeValue]:
|
||||||
base_qs = AttributeValue.objects.filter(attribute=self)
|
base_qs = AttributeValue.objects.filter(attribute=self)
|
||||||
product_uuid = getattr(info.context, "_product_uuid", None)
|
product_uuid = getattr(info.context, "_product_uuid", None)
|
||||||
|
|
||||||
|
|
@ -91,7 +91,7 @@ class AttributeType(DjangoObjectType):
|
||||||
return base_qs
|
return base_qs
|
||||||
|
|
||||||
|
|
||||||
class AttributeGroupType(DjangoObjectType):
|
class AttributeGroupType(DjangoObjectType): # type: ignore [misc]
|
||||||
attributes = List(lambda: AttributeType, description=_("grouped attributes"))
|
attributes = List(lambda: AttributeType, description=_("grouped attributes"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -101,7 +101,7 @@ class AttributeGroupType(DjangoObjectType):
|
||||||
filter_fields = ["uuid"]
|
filter_fields = ["uuid"]
|
||||||
description = _("groups of attributes")
|
description = _("groups of attributes")
|
||||||
|
|
||||||
def resolve_attributes(self: AttributeGroup, info):
|
def resolve_attributes(self: AttributeGroup, info) -> QuerySet[Attribute]:
|
||||||
product_uuid = getattr(info.context, "_product_uuid", None)
|
product_uuid = getattr(info.context, "_product_uuid", None)
|
||||||
|
|
||||||
qs = self.attributes.all()
|
qs = self.attributes.all()
|
||||||
|
|
@ -112,7 +112,7 @@ class AttributeGroupType(DjangoObjectType):
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
|
||||||
class BrandType(DjangoObjectType):
|
class BrandType(DjangoObjectType): # type: ignore [misc]
|
||||||
categories = List(lambda: CategoryType, description=_("categories"))
|
categories = List(lambda: CategoryType, description=_("categories"))
|
||||||
seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot"))
|
seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot"))
|
||||||
|
|
||||||
|
|
@ -123,18 +123,18 @@ class BrandType(DjangoObjectType):
|
||||||
filter_fields = ["uuid", "name"]
|
filter_fields = ["uuid", "name"]
|
||||||
description = _("brands")
|
description = _("brands")
|
||||||
|
|
||||||
def resolve_categories(self: Brand, info):
|
def resolve_categories(self: Brand, info) -> QuerySet[Category]:
|
||||||
if info.context.user.has_perm("core.view_category"):
|
if info.context.user.has_perm("core.view_category"):
|
||||||
return self.categories.all()
|
return self.categories.all()
|
||||||
return self.categories.filter(is_active=True)
|
return self.categories.filter(is_active=True)
|
||||||
|
|
||||||
def resolve_big_logo(self: Brand, info):
|
def resolve_big_logo(self: Brand, info) -> str | None:
|
||||||
return info.context.build_absolute_uri(self.big_logo.url) if self.big_logo else ""
|
return info.context.build_absolute_uri(self.big_logo.url) if self.big_logo else ""
|
||||||
|
|
||||||
def resolve_small_logo(self: Brand, info):
|
def resolve_small_logo(self: Brand, info) -> str | None:
|
||||||
return info.context.build_absolute_uri(self.small_logo.url) if self.small_logo else ""
|
return info.context.build_absolute_uri(self.small_logo.url) if self.small_logo else ""
|
||||||
|
|
||||||
def resolve_seo_meta(self: Brand, info):
|
def resolve_seo_meta(self: Brand, info) -> dict[str, str | list[Any] | dict[str, str] | None]:
|
||||||
lang = graphene_current_lang()
|
lang = graphene_current_lang()
|
||||||
base = f"https://{config.BASE_DOMAIN}"
|
base = f"https://{config.BASE_DOMAIN}"
|
||||||
canonical = f"{base}/{lang}/brand/{self.slug}"
|
canonical = f"{base}/{lang}/brand/{self.slug}"
|
||||||
|
|
@ -177,17 +177,17 @@ class BrandType(DjangoObjectType):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class FilterableAttributeType(ObjectType):
|
class FilterableAttributeType(ObjectType): # type: ignore [misc]
|
||||||
attribute_name = String(required=True)
|
attribute_name = String(required=True)
|
||||||
possible_values = List(String, required=True)
|
possible_values = List(String, required=True)
|
||||||
|
|
||||||
|
|
||||||
class MinMaxPriceType(ObjectType):
|
class MinMaxPriceType(ObjectType): # type: ignore [misc]
|
||||||
min_price = Float()
|
min_price = Float()
|
||||||
max_price = Float()
|
max_price = Float()
|
||||||
|
|
||||||
|
|
||||||
class CategoryType(DjangoObjectType):
|
class CategoryType(DjangoObjectType): # type: ignore [misc]
|
||||||
children = List(
|
children = List(
|
||||||
lambda: CategoryType,
|
lambda: CategoryType,
|
||||||
description=_("categories"),
|
description=_("categories"),
|
||||||
|
|
@ -340,7 +340,7 @@ class CategoryType(DjangoObjectType):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class VendorType(DjangoObjectType):
|
class VendorType(DjangoObjectType): # type: ignore [misc]
|
||||||
markup_percent = Float(description=_("markup percentage"))
|
markup_percent = Float(description=_("markup percentage"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -351,7 +351,7 @@ class VendorType(DjangoObjectType):
|
||||||
description = _("vendors")
|
description = _("vendors")
|
||||||
|
|
||||||
|
|
||||||
class AddressType(DjangoObjectType):
|
class AddressType(DjangoObjectType): # type: ignore [misc]
|
||||||
latitude = Float(description=_("Latitude (Y coordinate)"))
|
latitude = Float(description=_("Latitude (Y coordinate)"))
|
||||||
longitude = Float(description=_("Longitude (X coordinate)"))
|
longitude = Float(description=_("Longitude (X coordinate)"))
|
||||||
|
|
||||||
|
|
@ -381,7 +381,7 @@ class AddressType(DjangoObjectType):
|
||||||
return self.location.y if self.location else None
|
return self.location.y if self.location else None
|
||||||
|
|
||||||
|
|
||||||
class FeedbackType(DjangoObjectType):
|
class FeedbackType(DjangoObjectType): # type: ignore [misc]
|
||||||
comment = String(description=_("comment"))
|
comment = String(description=_("comment"))
|
||||||
rating = Int(description=_("rating value from 1 to 10, inclusive, or 0 if not set."))
|
rating = Int(description=_("rating value from 1 to 10, inclusive, or 0 if not set."))
|
||||||
|
|
||||||
|
|
@ -393,7 +393,7 @@ class FeedbackType(DjangoObjectType):
|
||||||
description = _("represents feedback from a user.")
|
description = _("represents feedback from a user.")
|
||||||
|
|
||||||
|
|
||||||
class OrderProductType(DjangoObjectType):
|
class OrderProductType(DjangoObjectType): # type: ignore [misc]
|
||||||
attributes = GenericScalar(description=_("attributes"))
|
attributes = GenericScalar(description=_("attributes"))
|
||||||
notifications = GenericScalar(description=_("notifications"))
|
notifications = GenericScalar(description=_("notifications"))
|
||||||
download_url = String(description=_("download url for this order product if applicable"))
|
download_url = String(description=_("download url for this order product if applicable"))
|
||||||
|
|
@ -429,7 +429,7 @@ class OrderProductType(DjangoObjectType):
|
||||||
return self.download_url
|
return self.download_url
|
||||||
|
|
||||||
|
|
||||||
class OrderType(DjangoObjectType):
|
class OrderType(DjangoObjectType): # type: ignore [misc]
|
||||||
order_products = DjangoFilterConnectionField(
|
order_products = DjangoFilterConnectionField(
|
||||||
OrderProductType, description=_("a list of order products in this order")
|
OrderProductType, description=_("a list of order products in this order")
|
||||||
)
|
)
|
||||||
|
|
@ -482,7 +482,7 @@ class OrderType(DjangoObjectType):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class ProductImageType(DjangoObjectType):
|
class ProductImageType(DjangoObjectType): # type: ignore [misc]
|
||||||
image = String(description=_("image url"))
|
image = String(description=_("image url"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -496,7 +496,7 @@ class ProductImageType(DjangoObjectType):
|
||||||
return info.context.build_absolute_uri(self.image.url) if self.image else ""
|
return info.context.build_absolute_uri(self.image.url) if self.image else ""
|
||||||
|
|
||||||
|
|
||||||
class ProductType(DjangoObjectType):
|
class ProductType(DjangoObjectType): # type: ignore [misc]
|
||||||
category = Field(CategoryType, description=_("category"))
|
category = Field(CategoryType, description=_("category"))
|
||||||
images = DjangoFilterConnectionField(ProductImageType, description=_("images"))
|
images = DjangoFilterConnectionField(ProductImageType, description=_("images"))
|
||||||
feedbacks = DjangoFilterConnectionField(FeedbackType, description=_("feedbacks"))
|
feedbacks = DjangoFilterConnectionField(FeedbackType, description=_("feedbacks"))
|
||||||
|
|
@ -605,7 +605,7 @@ class ProductType(DjangoObjectType):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AttributeValueType(DjangoObjectType):
|
class AttributeValueType(DjangoObjectType): # type: ignore [misc]
|
||||||
value = String(description=_("attribute value"))
|
value = String(description=_("attribute value"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -616,7 +616,7 @@ class AttributeValueType(DjangoObjectType):
|
||||||
description = _("attribute value")
|
description = _("attribute value")
|
||||||
|
|
||||||
|
|
||||||
class PromoCodeType(DjangoObjectType):
|
class PromoCodeType(DjangoObjectType): # type: ignore [misc]
|
||||||
discount = Float()
|
discount = Float()
|
||||||
discount_type = String()
|
discount_type = String()
|
||||||
|
|
||||||
|
|
@ -640,7 +640,7 @@ class PromoCodeType(DjangoObjectType):
|
||||||
return "percent" if self.discount_percent else "amount"
|
return "percent" if self.discount_percent else "amount"
|
||||||
|
|
||||||
|
|
||||||
class PromotionType(DjangoObjectType):
|
class PromotionType(DjangoObjectType): # type: ignore [misc]
|
||||||
products = DjangoFilterConnectionField(ProductType, description=_("products on sale"))
|
products = DjangoFilterConnectionField(ProductType, description=_("products on sale"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -651,7 +651,7 @@ class PromotionType(DjangoObjectType):
|
||||||
description = _("promotions")
|
description = _("promotions")
|
||||||
|
|
||||||
|
|
||||||
class StockType(DjangoObjectType):
|
class StockType(DjangoObjectType): # type: ignore [misc]
|
||||||
vendor = Field(VendorType, description=_("vendor"))
|
vendor = Field(VendorType, description=_("vendor"))
|
||||||
product = Field(ProductType, description=_("product"))
|
product = Field(ProductType, description=_("product"))
|
||||||
|
|
||||||
|
|
@ -663,7 +663,7 @@ class StockType(DjangoObjectType):
|
||||||
description = _("stocks")
|
description = _("stocks")
|
||||||
|
|
||||||
|
|
||||||
class WishlistType(DjangoObjectType):
|
class WishlistType(DjangoObjectType): # type: ignore [misc]
|
||||||
products = DjangoFilterConnectionField(ProductType, description=_("wishlisted products"))
|
products = DjangoFilterConnectionField(ProductType, description=_("wishlisted products"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -673,7 +673,7 @@ class WishlistType(DjangoObjectType):
|
||||||
description = _("wishlists")
|
description = _("wishlists")
|
||||||
|
|
||||||
|
|
||||||
class ProductTagType(DjangoObjectType):
|
class ProductTagType(DjangoObjectType): # type: ignore [misc]
|
||||||
product_set = DjangoFilterConnectionField(ProductType, description=_("tagged products"))
|
product_set = DjangoFilterConnectionField(ProductType, description=_("tagged products"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -684,7 +684,7 @@ class ProductTagType(DjangoObjectType):
|
||||||
description = _("product tags")
|
description = _("product tags")
|
||||||
|
|
||||||
|
|
||||||
class CategoryTagType(DjangoObjectType):
|
class CategoryTagType(DjangoObjectType): # type: ignore [misc]
|
||||||
category_set = DjangoFilterConnectionField(CategoryType, description=_("tagged categories"))
|
category_set = DjangoFilterConnectionField(CategoryType, description=_("tagged categories"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -695,7 +695,7 @@ class CategoryTagType(DjangoObjectType):
|
||||||
description = _("categories tags")
|
description = _("categories tags")
|
||||||
|
|
||||||
|
|
||||||
class ConfigType(ObjectType):
|
class ConfigType(ObjectType): # type: ignore [misc]
|
||||||
project_name = String(description=_("project name"))
|
project_name = String(description=_("project name"))
|
||||||
base_domain = String(description=_("company email"))
|
base_domain = String(description=_("company email"))
|
||||||
company_name = String(description=_("company name"))
|
company_name = String(description=_("company name"))
|
||||||
|
|
@ -712,7 +712,7 @@ class ConfigType(ObjectType):
|
||||||
description = _("company configuration")
|
description = _("company configuration")
|
||||||
|
|
||||||
|
|
||||||
class LanguageType(ObjectType):
|
class LanguageType(ObjectType): # type: ignore [misc]
|
||||||
code = String(description=_("language code"))
|
code = String(description=_("language code"))
|
||||||
name = String(description=_("language name"))
|
name = String(description=_("language name"))
|
||||||
flag = String(description=_("language flag, if exists :)"))
|
flag = String(description=_("language flag, if exists :)"))
|
||||||
|
|
@ -721,40 +721,40 @@ class LanguageType(ObjectType):
|
||||||
description = _("supported languages")
|
description = _("supported languages")
|
||||||
|
|
||||||
|
|
||||||
class SearchProductsResultsType(ObjectType):
|
class SearchProductsResultsType(ObjectType): # type: ignore [misc]
|
||||||
uuid = UUID()
|
uuid = UUID()
|
||||||
name = String()
|
name = String()
|
||||||
slug = String()
|
slug = String()
|
||||||
image = String()
|
image = String()
|
||||||
|
|
||||||
|
|
||||||
class SearchCategoriesResultsType(ObjectType):
|
class SearchCategoriesResultsType(ObjectType): # type: ignore [misc]
|
||||||
uuid = UUID()
|
uuid = UUID()
|
||||||
name = String()
|
name = String()
|
||||||
slug = String()
|
slug = String()
|
||||||
image = String()
|
image = String()
|
||||||
|
|
||||||
|
|
||||||
class SearchBrandsResultsType(ObjectType):
|
class SearchBrandsResultsType(ObjectType): # type: ignore [misc]
|
||||||
uuid = UUID()
|
uuid = UUID()
|
||||||
name = String()
|
name = String()
|
||||||
slug = String()
|
slug = String()
|
||||||
image = String()
|
image = String()
|
||||||
|
|
||||||
|
|
||||||
class SearchPostsResultsType(ObjectType):
|
class SearchPostsResultsType(ObjectType): # type: ignore [misc]
|
||||||
uuid = UUID()
|
uuid = UUID()
|
||||||
name = String()
|
name = String()
|
||||||
slug = String()
|
slug = String()
|
||||||
|
|
||||||
|
|
||||||
class SearchResultsType(ObjectType):
|
class SearchResultsType(ObjectType): # type: ignore [misc]
|
||||||
products = List(description=_("products search results"), of_type=SearchProductsResultsType)
|
products = List(description=_("products search results"), of_type=SearchProductsResultsType)
|
||||||
categories = List(description=_("products search results"), of_type=SearchCategoriesResultsType)
|
categories = List(description=_("products search results"), of_type=SearchCategoriesResultsType)
|
||||||
brands = List(description=_("products search results"), of_type=SearchBrandsResultsType)
|
brands = List(description=_("products search results"), of_type=SearchBrandsResultsType)
|
||||||
posts = List(description=_("posts search results"), of_type=SearchPostsResultsType)
|
posts = List(description=_("posts search results"), of_type=SearchPostsResultsType)
|
||||||
|
|
||||||
|
|
||||||
class BulkProductInput(InputObjectType):
|
class BulkProductInput(InputObjectType): # type: ignore [misc]
|
||||||
uuid = UUID(required=True)
|
uuid = UUID(required=True)
|
||||||
attributes = GenericScalar(required=False)
|
attributes = GenericScalar(required=False)
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -48,82 +48,86 @@ msgstr "تم التعديل"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "متى تم تحرير الكائن آخر مرة"
|
msgstr "متى تم تحرير الكائن آخر مرة"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "الترجمات"
|
msgstr "الترجمات"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "جنرال لواء"
|
msgstr "جنرال لواء"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "العلاقات"
|
msgstr "العلاقات"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "معلومات إضافية"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "البيانات الوصفية"
|
msgstr "البيانات الوصفية"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "الطوابع الزمنية"
|
msgstr "الطوابع الزمنية"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "تنشيط المحدد _PH_0__%(verbose_name_plural)s"
|
msgstr "تنشيط المحدد _PH_0__%(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "تم تفعيل العناصر المختارة!"
|
msgstr "تم تفعيل العناصر المختارة!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "إلغاء التنشيط المحدد _PH_0_%(verbose_name_plural)s"
|
msgstr "إلغاء التنشيط المحدد _PH_0_%(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "تم إلغاء تنشيط العناصر المحددة!"
|
msgstr "تم إلغاء تنشيط العناصر المحددة!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "قيمة السمة"
|
msgstr "قيمة السمة"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "قيم السمات"
|
msgstr "قيم السمات"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "الصورة"
|
msgstr "الصورة"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "الصور"
|
msgstr "الصور"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "المخزون"
|
msgstr "المخزون"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "الأسهم"
|
msgstr "الأسهم"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "طلب المنتج"
|
msgstr "طلب المنتج"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "اطلب المنتجات"
|
msgstr "اطلب المنتجات"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "الأطفال"
|
msgstr "الأطفال"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "التكوين"
|
msgstr "التكوين"
|
||||||
|
|
||||||
|
|
@ -707,7 +711,7 @@ msgstr "حذف علاقة الطلب-المنتج"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "إضافة أو إزالة الملاحظات على العلاقة بين الطلب والمنتج"
|
msgstr "إضافة أو إزالة الملاحظات على العلاقة بين الطلب والمنتج"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "لم يتم توفير مصطلح بحث."
|
msgstr "لم يتم توفير مصطلح بحث."
|
||||||
|
|
||||||
|
|
@ -881,7 +885,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!"
|
msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}"
|
msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -957,7 +961,7 @@ msgstr "سلسلة العنوان الأصلي المقدمة من المستخ
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} غير موجود: {uuid}!"
|
msgstr "{name} غير موجود: {uuid}!"
|
||||||
|
|
@ -2611,22 +2615,22 @@ msgstr "كل من البيانات والمهلة مطلوبة"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "قيمة المهلة غير صالحة، يجب أن تكون بين 0 و216000 ثانية"
|
msgstr "قيمة المهلة غير صالحة، يجب أن تكون بين 0 و216000 ثانية"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | بادر بالاتصال بنا"
|
msgstr "{config.PROJECT_NAME} | بادر بالاتصال بنا"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | تأكيد الطلب"
|
msgstr "{config.PROJECT_NAME} | تأكيد الطلب"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | طلبية تم تسليمها"
|
msgstr "{config.PROJECT_NAME} | طلبية تم تسليمها"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | الرمز الترويجي الممنوح"
|
msgstr "{config.PROJECT_NAME} | الرمز الترويجي الممنوح"
|
||||||
|
|
@ -2862,7 +2866,7 @@ msgstr ""
|
||||||
" \"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن"
|
" \"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن"
|
||||||
" البيانات."
|
" البيانات."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2879,7 +2883,7 @@ msgstr ""
|
||||||
"عليه. يستخدم ViewSet العديد من المتسلسلات بناءً على الإجراء المحدد الذي يتم "
|
"عليه. يستخدم ViewSet العديد من المتسلسلات بناءً على الإجراء المحدد الذي يتم "
|
||||||
"تنفيذه ويفرض الأذونات وفقًا لذلك أثناء التفاعل مع بيانات الطلبات."
|
"تنفيذه ويفرض الأذونات وفقًا لذلك أثناء التفاعل مع بيانات الطلبات."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2892,11 +2896,11 @@ msgstr ""
|
||||||
"من الأذونات، وتبديل المتسلسل بناءً على الإجراء المطلوب. بالإضافة إلى ذلك، "
|
"من الأذونات، وتبديل المتسلسل بناءً على الإجراء المطلوب. بالإضافة إلى ذلك، "
|
||||||
"توفر إجراءً مفصلاً للتعامل مع الملاحظات على مثيلات OrderProduct"
|
"توفر إجراءً مفصلاً للتعامل مع الملاحظات على مثيلات OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "يدير العمليات المتعلقة بصور المنتج في التطبيق."
|
msgstr "يدير العمليات المتعلقة بصور المنتج في التطبيق."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -2904,15 +2908,15 @@ msgstr ""
|
||||||
"يدير استرداد مثيلات PromoCode ومعالجتها من خلال إجراءات واجهة برمجة "
|
"يدير استرداد مثيلات PromoCode ومعالجتها من خلال إجراءات واجهة برمجة "
|
||||||
"التطبيقات المختلفة."
|
"التطبيقات المختلفة."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "يمثل مجموعة عرض لإدارة الترقيات."
|
msgstr "يمثل مجموعة عرض لإدارة الترقيات."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "يتعامل مع العمليات المتعلقة ببيانات المخزون في النظام."
|
msgstr "يتعامل مع العمليات المتعلقة ببيانات المخزون في النظام."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2929,7 +2933,7 @@ msgstr ""
|
||||||
"الأذونات للتأكد من أن المستخدمين يمكنهم فقط إدارة قوائم الرغبات الخاصة بهم "
|
"الأذونات للتأكد من أن المستخدمين يمكنهم فقط إدارة قوائم الرغبات الخاصة بهم "
|
||||||
"ما لم يتم منح أذونات صريحة."
|
"ما لم يتم منح أذونات صريحة."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2942,12 +2946,12 @@ msgstr ""
|
||||||
"العناوين. وتتضمن سلوكيات متخصصة لطرق HTTP المختلفة، وتجاوزات المتسلسل، "
|
"العناوين. وتتضمن سلوكيات متخصصة لطرق HTTP المختلفة، وتجاوزات المتسلسل، "
|
||||||
"ومعالجة الأذونات بناءً على سياق الطلب."
|
"ومعالجة الأذونات بناءً على سياق الطلب."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "خطأ في الترميز الجغرافي: {e}"
|
msgstr "خطأ في الترميز الجغرافي: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -50,82 +50,86 @@ msgstr "Upraveno"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Kdy byl objekt naposledy upraven"
|
msgstr "Kdy byl objekt naposledy upraven"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Překlady"
|
msgstr "Překlady"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Obecné"
|
msgstr "Obecné"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Vztahy"
|
msgstr "Vztahy"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "další informace"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Časová razítka"
|
msgstr "Časová razítka"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktivace vybraného %(verbose_name_plural)s"
|
msgstr "Aktivace vybraného %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Vybrané položky byly aktivovány!"
|
msgstr "Vybrané položky byly aktivovány!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deaktivace vybraných %(verbose_name_plural)s"
|
msgstr "Deaktivace vybraných %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Vybrané položky byly deaktivovány!"
|
msgstr "Vybrané položky byly deaktivovány!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Hodnota atributu"
|
msgstr "Hodnota atributu"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Hodnoty atributů"
|
msgstr "Hodnoty atributů"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Obrázek"
|
msgstr "Obrázek"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Obrázky"
|
msgstr "Obrázky"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Zásoby"
|
msgstr "Zásoby"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Objednat produkt"
|
msgstr "Objednat produkt"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Objednat produkty"
|
msgstr "Objednat produkty"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Děti"
|
msgstr "Děti"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfigurace"
|
msgstr "Konfigurace"
|
||||||
|
|
||||||
|
|
@ -732,7 +736,7 @@ msgstr "odstranit vztah objednávka-produkt"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt."
|
msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt."
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Nebyl zadán žádný vyhledávací termín."
|
msgstr "Nebyl zadán žádný vyhledávací termín."
|
||||||
|
|
||||||
|
|
@ -906,7 +910,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!"
|
msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}"
|
msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -984,7 +988,7 @@ msgstr "Původní řetězec adresy zadaný uživatelem"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} neexistuje: {uuid}!"
|
msgstr "{name} neexistuje: {uuid}!"
|
||||||
|
|
@ -2672,22 +2676,22 @@ msgstr "Jsou vyžadována data i časový limit"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Nesprávná hodnota timeoutu, musí být v rozmezí 0 až 216000 sekund."
|
msgstr "Nesprávná hodnota timeoutu, musí být v rozmezí 0 až 216000 sekund."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | kontaktujte nás inicioval"
|
msgstr "{config.PROJECT_NAME} | kontaktujte nás inicioval"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Potvrzení objednávky"
|
msgstr "{config.PROJECT_NAME} | Potvrzení objednávky"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Objednávka doručena"
|
msgstr "{config.PROJECT_NAME} | Objednávka doručena"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode uděleno"
|
msgstr "{config.PROJECT_NAME} | promocode uděleno"
|
||||||
|
|
@ -2932,7 +2936,7 @@ msgstr ""
|
||||||
"objekty Zpětné vazby na základě oprávnění. Rozšiřuje základní třídu "
|
"objekty Zpětné vazby na základě oprávnění. Rozšiřuje základní třídu "
|
||||||
"`EvibesViewSet` a využívá systém filtrování Djanga pro dotazování na data."
|
"`EvibesViewSet` a využívá systém filtrování Djanga pro dotazování na data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2950,7 +2954,7 @@ msgstr ""
|
||||||
" Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a"
|
" Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a"
|
||||||
" podle toho vynucuje oprávnění při interakci s daty objednávek."
|
" podle toho vynucuje oprávnění při interakci s daty objednávek."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2964,11 +2968,11 @@ msgstr ""
|
||||||
" požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné "
|
" požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné "
|
||||||
"vazby na instance OrderProduct"
|
"vazby na instance OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Spravuje operace související s obrázky produktů v aplikaci."
|
msgstr "Spravuje operace související s obrázky produktů v aplikaci."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -2976,15 +2980,15 @@ msgstr ""
|
||||||
"Spravuje načítání a zpracování instancí PromoCode prostřednictvím různých "
|
"Spravuje načítání a zpracování instancí PromoCode prostřednictvím různých "
|
||||||
"akcí API."
|
"akcí API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Představuje sadu zobrazení pro správu povýšení."
|
msgstr "Představuje sadu zobrazení pro správu povýšení."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Zpracovává operace související s údaji o zásobách v systému."
|
msgstr "Zpracovává operace související s údaji o zásobách v systému."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3002,7 +3006,7 @@ msgstr ""
|
||||||
"uživatelé mohou spravovat pouze své vlastní seznamy přání, pokud jim nejsou "
|
"uživatelé mohou spravovat pouze své vlastní seznamy přání, pokud jim nejsou "
|
||||||
"udělena výslovná oprávnění."
|
"udělena výslovná oprávnění."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3016,12 +3020,12 @@ msgstr ""
|
||||||
"přepisování serializátoru a zpracování oprávnění na základě kontextu "
|
"přepisování serializátoru a zpracování oprávnění na základě kontextu "
|
||||||
"požadavku."
|
"požadavku."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Chyba v zeměpisném kódování: {e}"
|
msgstr "Chyba v zeměpisném kódování: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr "Modificeret"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Hvornår objektet sidst blev redigeret"
|
msgstr "Hvornår objektet sidst blev redigeret"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Oversættelser"
|
msgstr "Oversættelser"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Generelt"
|
msgstr "Generelt"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relationer"
|
msgstr "Relationer"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "Yderligere info"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Tidsstempler"
|
msgstr "Tidsstempler"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktivér valgt %(verbose_name_plural)s."
|
msgstr "Aktivér valgt %(verbose_name_plural)s."
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Udvalgte varer er blevet aktiveret!"
|
msgstr "Udvalgte varer er blevet aktiveret!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deaktiver valgte %(verbose_name_plural)s."
|
msgstr "Deaktiver valgte %(verbose_name_plural)s."
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Udvalgte varer er blevet deaktiveret!"
|
msgstr "Udvalgte varer er blevet deaktiveret!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attributværdi"
|
msgstr "Attributværdi"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attributværdier"
|
msgstr "Attributværdier"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Billede"
|
msgstr "Billede"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Billeder"
|
msgstr "Billeder"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Lager"
|
msgstr "Lager"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Aktier"
|
msgstr "Aktier"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Bestil produkt"
|
msgstr "Bestil produkt"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Bestil produkter"
|
msgstr "Bestil produkter"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Børn"
|
msgstr "Børn"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfig"
|
msgstr "Konfig"
|
||||||
|
|
||||||
|
|
@ -734,7 +738,7 @@ msgstr "slette en ordre-produkt-relation"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation"
|
msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Der er ikke angivet noget søgeord."
|
msgstr "Der er ikke angivet noget søgeord."
|
||||||
|
|
||||||
|
|
@ -908,7 +912,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!"
|
msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}"
|
msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -986,7 +990,7 @@ msgstr "Original adressestreng leveret af brugeren"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} findes ikke: {uuid}!"
|
msgstr "{name} findes ikke: {uuid}!"
|
||||||
|
|
@ -2694,22 +2698,22 @@ msgstr "Både data og timeout er påkrævet"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Ugyldig timeout-værdi, den skal være mellem 0 og 216000 sekunder"
|
msgstr "Ugyldig timeout-værdi, den skal være mellem 0 og 216000 sekunder"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | kontakt os påbegyndt"
|
msgstr "{config.PROJECT_NAME} | kontakt os påbegyndt"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Ordrebekræftelse"
|
msgstr "{config.PROJECT_NAME} | Ordrebekræftelse"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promokode givet"
|
msgstr "{config.PROJECT_NAME} | promokode givet"
|
||||||
|
|
@ -2958,7 +2962,7 @@ msgstr ""
|
||||||
" basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at "
|
" basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at "
|
||||||
"forespørge på data."
|
"forespørge på data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2977,7 +2981,7 @@ msgstr ""
|
||||||
"baseret på den specifikke handling, der udføres, og håndhæver tilladelser i "
|
"baseret på den specifikke handling, der udføres, og håndhæver tilladelser i "
|
||||||
"overensstemmelse hermed, mens der interageres med ordredata."
|
"overensstemmelse hermed, mens der interageres med ordredata."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2992,11 +2996,11 @@ msgstr ""
|
||||||
"Derudover indeholder det en detaljeret handling til håndtering af feedback "
|
"Derudover indeholder det en detaljeret handling til håndtering af feedback "
|
||||||
"på OrderProduct-instanser."
|
"på OrderProduct-instanser."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Håndterer operationer relateret til produktbilleder i applikationen."
|
msgstr "Håndterer operationer relateret til produktbilleder i applikationen."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3004,15 +3008,15 @@ msgstr ""
|
||||||
"Administrerer hentning og håndtering af PromoCode-instanser gennem "
|
"Administrerer hentning og håndtering af PromoCode-instanser gennem "
|
||||||
"forskellige API-handlinger."
|
"forskellige API-handlinger."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Repræsenterer et visningssæt til håndtering af kampagner."
|
msgstr "Repræsenterer et visningssæt til håndtering af kampagner."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Håndterer operationer relateret til lagerdata i systemet."
|
msgstr "Håndterer operationer relateret til lagerdata i systemet."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3030,7 +3034,7 @@ msgstr ""
|
||||||
"integreret for at sikre, at brugere kun kan administrere deres egne "
|
"integreret for at sikre, at brugere kun kan administrere deres egne "
|
||||||
"ønskelister, medmindre der er givet eksplicitte tilladelser."
|
"ønskelister, medmindre der er givet eksplicitte tilladelser."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3044,12 +3048,12 @@ msgstr ""
|
||||||
"omfatter specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse "
|
"omfatter specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse "
|
||||||
"af serializer og håndtering af tilladelser baseret på anmodningskonteksten."
|
"af serializer og håndtering af tilladelser baseret på anmodningskonteksten."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Fejl i geokodning: {e}"
|
msgstr "Fejl i geokodning: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Geändert"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Wann das Objekt zuletzt bearbeitet wurde"
|
msgstr "Wann das Objekt zuletzt bearbeitet wurde"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Übersetzungen"
|
msgstr "Übersetzungen"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Allgemein"
|
msgstr "Allgemein"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Beziehungen"
|
msgstr "Beziehungen"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "Zusatzinfo"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadaten"
|
msgstr "Metadaten"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Zeitstempel"
|
msgstr "Zeitstempel"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Ausgewählte %(verbose_name_plural)s aktivieren"
|
msgstr "Ausgewählte %(verbose_name_plural)s aktivieren"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Ausgewählte Artikel wurden aktiviert!"
|
msgstr "Ausgewählte Artikel wurden aktiviert!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren"
|
msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Ausgewählte Artikel wurden deaktiviert!"
|
msgstr "Ausgewählte Artikel wurden deaktiviert!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attribut Wert"
|
msgstr "Attribut Wert"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attribut Werte"
|
msgstr "Attribut Werte"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Bild"
|
msgstr "Bild"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Bilder"
|
msgstr "Bilder"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Lagerbestand"
|
msgstr "Lagerbestand"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Bestände"
|
msgstr "Bestände"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Produkt bestellen"
|
msgstr "Produkt bestellen"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Produkte bestellen"
|
msgstr "Produkte bestellen"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Kinder"
|
msgstr "Kinder"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfigurieren Sie"
|
msgstr "Konfigurieren Sie"
|
||||||
|
|
||||||
|
|
@ -760,7 +764,7 @@ msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen"
|
"Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Kein Suchbegriff angegeben."
|
msgstr "Kein Suchbegriff angegeben."
|
||||||
|
|
||||||
|
|
@ -937,7 +941,7 @@ msgstr ""
|
||||||
"sich gegenseitig aus!"
|
"sich gegenseitig aus!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}"
|
msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -1016,7 +1020,7 @@ msgstr "Vom Benutzer angegebene Originaladresse"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} existiert nicht: {uuid}!"
|
msgstr "{name} existiert nicht: {uuid}!"
|
||||||
|
|
@ -2757,22 +2761,22 @@ msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen"
|
"Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | Kontakt eingeleitet"
|
msgstr "{config.PROJECT_NAME} | Kontakt eingeleitet"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Auftragsbestätigung"
|
msgstr "{config.PROJECT_NAME} | Auftragsbestätigung"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Bestellung ausgeliefert"
|
msgstr "{config.PROJECT_NAME} | Bestellung ausgeliefert"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | Promocode gewährt"
|
msgstr "{config.PROJECT_NAME} | Promocode gewährt"
|
||||||
|
|
@ -3029,7 +3033,7 @@ msgstr ""
|
||||||
"implementieren. Es erweitert das Basis `EvibesViewSet` und nutzt das "
|
"implementieren. Es erweitert das Basis `EvibesViewSet` und nutzt das "
|
||||||
"Filtersystem von Django zur Abfrage von Daten."
|
"Filtersystem von Django zur Abfrage von Daten."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -3049,7 +3053,7 @@ msgstr ""
|
||||||
"basieren, die durchgeführt wird, und erzwingt die entsprechenden "
|
"basieren, die durchgeführt wird, und erzwingt die entsprechenden "
|
||||||
"Berechtigungen, während es mit den Bestelldaten interagiert."
|
"Berechtigungen, während es mit den Bestelldaten interagiert."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3064,12 +3068,12 @@ msgstr ""
|
||||||
"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback"
|
"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback"
|
||||||
" zu OrderProduct-Instanzen"
|
" zu OrderProduct-Instanzen"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Verwaltet Vorgänge im Zusammenhang mit Produktbildern in der Anwendung."
|
"Verwaltet Vorgänge im Zusammenhang mit Produktbildern in der Anwendung."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3077,15 +3081,15 @@ msgstr ""
|
||||||
"Verwaltet den Abruf und die Handhabung von PromoCode-Instanzen durch "
|
"Verwaltet den Abruf und die Handhabung von PromoCode-Instanzen durch "
|
||||||
"verschiedene API-Aktionen."
|
"verschiedene API-Aktionen."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Stellt ein Ansichtsset für die Verwaltung von Werbeaktionen dar."
|
msgstr "Stellt ein Ansichtsset für die Verwaltung von Werbeaktionen dar."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Erledigt Vorgänge im Zusammenhang mit Bestandsdaten im System."
|
msgstr "Erledigt Vorgänge im Zusammenhang mit Bestandsdaten im System."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3104,7 +3108,7 @@ msgstr ""
|
||||||
"nur ihre eigenen Wunschlisten verwalten können, sofern keine expliziten "
|
"nur ihre eigenen Wunschlisten verwalten können, sofern keine expliziten "
|
||||||
"Berechtigungen erteilt wurden."
|
"Berechtigungen erteilt wurden."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3119,12 +3123,12 @@ msgstr ""
|
||||||
"HTTP-Methoden, Serialisierungsüberschreibungen und die Behandlung von "
|
"HTTP-Methoden, Serialisierungsüberschreibungen und die Behandlung von "
|
||||||
"Berechtigungen auf der Grundlage des Anfragekontexts."
|
"Berechtigungen auf der Grundlage des Anfragekontexts."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Geocodierungsfehler: {e}"
|
msgstr "Geocodierungsfehler: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -53,82 +53,86 @@ msgstr "Modified"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "When the object was last edited"
|
msgstr "When the object was last edited"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Translations"
|
msgstr "Translations"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relations"
|
msgstr "Relations"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "additional info"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Timestamps"
|
msgstr "Timestamps"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activate selected %(verbose_name_plural)s"
|
msgstr "Activate selected %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Selected items have been activated!"
|
msgstr "Selected items have been activated!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deactivate selected %(verbose_name_plural)s"
|
msgstr "Deactivate selected %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Selected items have been deactivated!"
|
msgstr "Selected items have been deactivated!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attribute Value"
|
msgstr "Attribute Value"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attribute Values"
|
msgstr "Attribute Values"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Image"
|
msgstr "Image"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Images"
|
msgstr "Images"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stocks"
|
msgstr "Stocks"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Order Product"
|
msgstr "Order Product"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Order Products"
|
msgstr "Order Products"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Children"
|
msgstr "Children"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Config"
|
msgstr "Config"
|
||||||
|
|
||||||
|
|
@ -712,7 +716,7 @@ msgstr "delete an order–product relation"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "add or remove feedback on an order–product relation"
|
msgstr "add or remove feedback on an order–product relation"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "No search term provided."
|
msgstr "No search term provided."
|
||||||
|
|
||||||
|
|
@ -885,7 +889,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!"
|
msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Wrong type came from order.buy() method: {type(instance)!s}"
|
msgstr "Wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -963,7 +967,7 @@ msgstr "Original address string provided by the user"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} does not exist: {uuid}!"
|
msgstr "{name} does not exist: {uuid}!"
|
||||||
|
|
@ -2644,22 +2648,22 @@ msgstr "Both data and timeout are required"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Invalid timeout value, it must be between 0 and 216000 seconds"
|
msgstr "Invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | contact us initiated"
|
msgstr "{config.PROJECT_NAME} | contact us initiated"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Order Confirmation"
|
msgstr "{config.PROJECT_NAME} | Order Confirmation"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode granted"
|
msgstr "{config.PROJECT_NAME} | promocode granted"
|
||||||
|
|
@ -2904,7 +2908,7 @@ msgstr ""
|
||||||
" accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
|
" accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2922,7 +2926,7 @@ msgstr ""
|
||||||
" uses multiple serializers based on the specific action being performed and "
|
" uses multiple serializers based on the specific action being performed and "
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2936,11 +2940,11 @@ msgstr ""
|
||||||
" requested action. Additionally, it provides a detailed action for handling "
|
" requested action. Additionally, it provides a detailed action for handling "
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Manages operations related to Product images in the application."
|
msgstr "Manages operations related to Product images in the application."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -2948,15 +2952,15 @@ msgstr ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Represents a view set for managing promotions."
|
msgstr "Represents a view set for managing promotions."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Handles operations related to Stock data in the system."
|
msgstr "Handles operations related to Stock data in the system."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2974,7 +2978,7 @@ msgstr ""
|
||||||
"that users can only manage their own wishlists unless explicit permissions "
|
"that users can only manage their own wishlists unless explicit permissions "
|
||||||
"are granted."
|
"are granted."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2988,12 +2992,12 @@ msgstr ""
|
||||||
"different HTTP methods, serializer overrides, and permission handling based "
|
"different HTTP methods, serializer overrides, and permission handling based "
|
||||||
"on the request context."
|
"on the request context."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Geocoding error: {e}"
|
msgstr "Geocoding error: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr "Modified"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "When the object was last edited"
|
msgstr "When the object was last edited"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Translations"
|
msgstr "Translations"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relations"
|
msgstr "Relations"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "additional info"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Timestamps"
|
msgstr "Timestamps"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activate selected %(verbose_name_plural)s"
|
msgstr "Activate selected %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Selected items have been activated!"
|
msgstr "Selected items have been activated!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deactivate selected %(verbose_name_plural)s"
|
msgstr "Deactivate selected %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Selected items have been deactivated!"
|
msgstr "Selected items have been deactivated!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attribute Value"
|
msgstr "Attribute Value"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attribute Values"
|
msgstr "Attribute Values"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Image"
|
msgstr "Image"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Images"
|
msgstr "Images"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stocks"
|
msgstr "Stocks"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Order Product"
|
msgstr "Order Product"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Order Products"
|
msgstr "Order Products"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Children"
|
msgstr "Children"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Config"
|
msgstr "Config"
|
||||||
|
|
||||||
|
|
@ -708,7 +712,7 @@ msgstr "delete an order–product relation"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "add or remove feedback on an order–product relation"
|
msgstr "add or remove feedback on an order–product relation"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "No search term provided."
|
msgstr "No search term provided."
|
||||||
|
|
||||||
|
|
@ -881,7 +885,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!"
|
msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Wrong type came from order.buy() method: {type(instance)!s}"
|
msgstr "Wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -959,7 +963,7 @@ msgstr "Original address string provided by the user"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} does not exist: {uuid}!"
|
msgstr "{name} does not exist: {uuid}!"
|
||||||
|
|
@ -2640,22 +2644,22 @@ msgstr "Both data and timeout are required"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Invalid timeout value, it must be between 0 and 216000 seconds"
|
msgstr "Invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | contact us initiated"
|
msgstr "{config.PROJECT_NAME} | contact us initiated"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Order Confirmation"
|
msgstr "{config.PROJECT_NAME} | Order Confirmation"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
msgstr "{config.PROJECT_NAME} | Order Delivered"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode granted"
|
msgstr "{config.PROJECT_NAME} | promocode granted"
|
||||||
|
|
@ -2900,7 +2904,7 @@ msgstr ""
|
||||||
" accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
|
" accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2918,7 +2922,7 @@ msgstr ""
|
||||||
" uses multiple serializers based on the specific action being performed and "
|
" uses multiple serializers based on the specific action being performed and "
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2932,11 +2936,11 @@ msgstr ""
|
||||||
" requested action. Additionally, it provides a detailed action for handling "
|
" requested action. Additionally, it provides a detailed action for handling "
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Manages operations related to Product images in the application."
|
msgstr "Manages operations related to Product images in the application."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -2944,15 +2948,15 @@ msgstr ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Represents a view set for managing promotions."
|
msgstr "Represents a view set for managing promotions."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Handles operations related to Stock data in the system."
|
msgstr "Handles operations related to Stock data in the system."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2970,7 +2974,7 @@ msgstr ""
|
||||||
"that users can only manage their own wishlists unless explicit permissions "
|
"that users can only manage their own wishlists unless explicit permissions "
|
||||||
"are granted."
|
"are granted."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2984,12 +2988,12 @@ msgstr ""
|
||||||
"different HTTP methods, serializer overrides, and permission handling based "
|
"different HTTP methods, serializer overrides, and permission handling based "
|
||||||
"on the request context."
|
"on the request context."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Geocoding error: {e}"
|
msgstr "Geocoding error: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Modificado"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Cuándo se editó el objeto por última vez"
|
msgstr "Cuándo se editó el objeto por última vez"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Traducciones"
|
msgstr "Traducciones"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "General"
|
msgstr "General"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relaciones"
|
msgstr "Relaciones"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "información adicional"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadatos"
|
msgstr "Metadatos"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Marcas de tiempo"
|
msgstr "Marcas de tiempo"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activar %(verbose_name_plural)s seleccionado"
|
msgstr "Activar %(verbose_name_plural)s seleccionado"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Los artículos seleccionados se han activado."
|
msgstr "Los artículos seleccionados se han activado."
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Desactivar %(verbose_name_plural)s seleccionado"
|
msgstr "Desactivar %(verbose_name_plural)s seleccionado"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Los artículos seleccionados se han desactivado."
|
msgstr "Los artículos seleccionados se han desactivado."
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Atributo Valor"
|
msgstr "Atributo Valor"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Valores de los atributos"
|
msgstr "Valores de los atributos"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Imagen"
|
msgstr "Imagen"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Imágenes"
|
msgstr "Imágenes"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Acciones"
|
msgstr "Acciones"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Pedir un producto"
|
msgstr "Pedir un producto"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Pedir productos"
|
msgstr "Pedir productos"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Niños"
|
msgstr "Niños"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Configurar"
|
msgstr "Configurar"
|
||||||
|
|
||||||
|
|
@ -742,7 +746,7 @@ msgstr "suprimir una relación pedido-producto"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "añadir o eliminar comentarios en una relación pedido-producto"
|
msgstr "añadir o eliminar comentarios en una relación pedido-producto"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "No se proporciona ningún término de búsqueda."
|
msgstr "No se proporciona ningún término de búsqueda."
|
||||||
|
|
||||||
|
|
@ -916,7 +920,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!"
|
msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}"
|
"Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}"
|
||||||
|
|
@ -995,7 +999,7 @@ msgstr "Cadena de dirección original proporcionada por el usuario"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} no existe: ¡{uuid}!"
|
msgstr "{name} no existe: ¡{uuid}!"
|
||||||
|
|
@ -2711,22 +2715,22 @@ msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Valor de tiempo de espera no válido, debe estar entre 0 y 216000 segundos."
|
"Valor de tiempo de espera no válido, debe estar entre 0 y 216000 segundos."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | contacto iniciado"
|
msgstr "{config.PROJECT_NAME} | contacto iniciado"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Confirmación de pedido"
|
msgstr "{config.PROJECT_NAME} | Confirmación de pedido"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Pedido entregado"
|
msgstr "{config.PROJECT_NAME} | Pedido entregado"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode granted"
|
msgstr "{config.PROJECT_NAME} | promocode granted"
|
||||||
|
|
@ -2980,7 +2984,7 @@ msgstr ""
|
||||||
"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del"
|
"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del"
|
||||||
" sistema de filtrado de Django para la consulta de datos."
|
" sistema de filtrado de Django para la consulta de datos."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2999,7 +3003,7 @@ msgstr ""
|
||||||
"acción específica que se esté realizando y aplica los permisos "
|
"acción específica que se esté realizando y aplica los permisos "
|
||||||
"correspondientes al interactuar con los datos del pedido."
|
"correspondientes al interactuar con los datos del pedido."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3014,13 +3018,13 @@ msgstr ""
|
||||||
"Además, proporciona una acción detallada para gestionar los comentarios "
|
"Además, proporciona una acción detallada para gestionar los comentarios "
|
||||||
"sobre las instancias de OrderProduct."
|
"sobre las instancias de OrderProduct."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestiona las operaciones relacionadas con las imágenes de productos en la "
|
"Gestiona las operaciones relacionadas con las imágenes de productos en la "
|
||||||
"aplicación."
|
"aplicación."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3028,16 +3032,16 @@ msgstr ""
|
||||||
"Gestiona la recuperación y el manejo de instancias de PromoCode a través de "
|
"Gestiona la recuperación y el manejo de instancias de PromoCode a través de "
|
||||||
"varias acciones de la API."
|
"varias acciones de la API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Representa un conjunto de vistas para gestionar promociones."
|
msgstr "Representa un conjunto de vistas para gestionar promociones."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestiona las operaciones relacionadas con los datos de Stock en el sistema."
|
"Gestiona las operaciones relacionadas con los datos de Stock en el sistema."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3056,7 +3060,7 @@ msgstr ""
|
||||||
"integrados para garantizar que los usuarios sólo puedan gestionar sus "
|
"integrados para garantizar que los usuarios sólo puedan gestionar sus "
|
||||||
"propias listas de deseos a menos que se concedan permisos explícitos."
|
"propias listas de deseos a menos que se concedan permisos explícitos."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3070,12 +3074,12 @@ msgstr ""
|
||||||
"comportamientos especializados para diferentes métodos HTTP, anulaciones del"
|
"comportamientos especializados para diferentes métodos HTTP, anulaciones del"
|
||||||
" serializador y gestión de permisos basada en el contexto de la solicitud."
|
" serializador y gestión de permisos basada en el contexto de la solicitud."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Error de geocodificación: {e}"
|
msgstr "Error de geocodificación: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr ""
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
msgid "metadata"
|
msgid "additional info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:94
|
||||||
|
msgid "metadata"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -678,7 +682,7 @@ msgstr ""
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -851,7 +855,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2459,22 +2463,22 @@ msgstr ""
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2656,7 +2660,7 @@ msgid ""
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2667,7 +2671,7 @@ msgid ""
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2676,25 +2680,25 @@ msgid ""
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2705,7 +2709,7 @@ msgid ""
|
||||||
"are granted."
|
"are granted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2714,12 +2718,12 @@ msgid ""
|
||||||
"on the request context."
|
"on the request context."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Modifié"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Date de la dernière modification de l'objet"
|
msgstr "Date de la dernière modification de l'objet"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Traductions"
|
msgstr "Traductions"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Général"
|
msgstr "Général"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relations"
|
msgstr "Relations"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "Informations complémentaires"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Métadonnées"
|
msgstr "Métadonnées"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Horodatage"
|
msgstr "Horodatage"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activer la %(verbose_name_plural)s sélectionnée"
|
msgstr "Activer la %(verbose_name_plural)s sélectionnée"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Les articles sélectionnés ont été activés !"
|
msgstr "Les articles sélectionnés ont été activés !"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Désactiver la %(verbose_name_plural)s sélectionnée"
|
msgstr "Désactiver la %(verbose_name_plural)s sélectionnée"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Les articles sélectionnés ont été désactivés !"
|
msgstr "Les articles sélectionnés ont été désactivés !"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Valeur de l'attribut"
|
msgstr "Valeur de l'attribut"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Valeurs des attributs"
|
msgstr "Valeurs des attributs"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Image"
|
msgstr "Image"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Images"
|
msgstr "Images"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stocks"
|
msgstr "Stocks"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Commander un produit"
|
msgstr "Commander un produit"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Commander des produits"
|
msgstr "Commander des produits"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Les enfants"
|
msgstr "Les enfants"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Config"
|
msgstr "Config"
|
||||||
|
|
||||||
|
|
@ -754,7 +758,7 @@ msgstr ""
|
||||||
"ajouter ou supprimer un retour d'information sur une relation commande-"
|
"ajouter ou supprimer un retour d'information sur une relation commande-"
|
||||||
"produit"
|
"produit"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Aucun terme de recherche n'est fourni."
|
msgstr "Aucun terme de recherche n'est fourni."
|
||||||
|
|
||||||
|
|
@ -931,7 +935,7 @@ msgstr ""
|
||||||
"mutuellement !"
|
"mutuellement !"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Le mauvais type provient de la méthode order.buy() : {type(instance)!s}"
|
"Le mauvais type provient de la méthode order.buy() : {type(instance)!s}"
|
||||||
|
|
@ -1013,7 +1017,7 @@ msgstr "Chaîne d'adresse originale fournie par l'utilisateur"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} n'existe pas : {uuid} !"
|
msgstr "{name} n'existe pas : {uuid} !"
|
||||||
|
|
@ -2758,22 +2762,22 @@ msgstr ""
|
||||||
"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre"
|
"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre"
|
||||||
" 0 et 216000 secondes."
|
" 0 et 216000 secondes."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | nous contacter initié"
|
msgstr "{config.PROJECT_NAME} | nous contacter initié"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Confirmation de commande"
|
msgstr "{config.PROJECT_NAME} | Confirmation de commande"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Commande livrée"
|
msgstr "{config.PROJECT_NAME} | Commande livrée"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode accordé"
|
msgstr "{config.PROJECT_NAME} | promocode accordé"
|
||||||
|
|
@ -3030,7 +3034,7 @@ msgstr ""
|
||||||
"la classe de base `EvibesViewSet` et utilise le système de filtrage de "
|
"la classe de base `EvibesViewSet` et utilise le système de filtrage de "
|
||||||
"Django pour l'interrogation des données."
|
"Django pour l'interrogation des données."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -3050,7 +3054,7 @@ msgstr ""
|
||||||
"autorisations en conséquence lors de l'interaction avec les données de la "
|
"autorisations en conséquence lors de l'interaction avec les données de la "
|
||||||
"commande."
|
"commande."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3065,11 +3069,11 @@ msgstr ""
|
||||||
" En outre, il fournit une action détaillée pour gérer le retour "
|
" En outre, il fournit une action détaillée pour gérer le retour "
|
||||||
"d'informations sur les instances OrderProduct."
|
"d'informations sur les instances OrderProduct."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Gère les opérations liées aux images des produits dans l'application."
|
msgstr "Gère les opérations liées aux images des produits dans l'application."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3077,15 +3081,15 @@ msgstr ""
|
||||||
"Gère la récupération et le traitement des instances de PromoCode par le "
|
"Gère la récupération et le traitement des instances de PromoCode par le "
|
||||||
"biais de diverses actions API."
|
"biais de diverses actions API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Représente un jeu de vues pour la gestion des promotions."
|
msgstr "Représente un jeu de vues pour la gestion des promotions."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Gère les opérations liées aux données de stock dans le système."
|
msgstr "Gère les opérations liées aux données de stock dans le système."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3105,7 +3109,7 @@ msgstr ""
|
||||||
"ne peuvent gérer que leur propre liste de souhaits, sauf si des permissions "
|
"ne peuvent gérer que leur propre liste de souhaits, sauf si des permissions "
|
||||||
"explicites sont accordées."
|
"explicites sont accordées."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3120,12 +3124,12 @@ msgstr ""
|
||||||
" HTTP, des dérogations au sérialiseur et une gestion des autorisations basée"
|
" HTTP, des dérogations au sérialiseur et une gestion des autorisations basée"
|
||||||
" sur le contexte de la demande."
|
" sur le contexte de la demande."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Erreur de géocodage : {e}"
|
msgstr "Erreur de géocodage : {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -47,82 +47,86 @@ msgstr "משונה"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "מתי האובייקט נערך לאחרונה"
|
msgstr "מתי האובייקט נערך לאחרונה"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "תרגומים"
|
msgstr "תרגומים"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "כללי"
|
msgstr "כללי"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "יחסים"
|
msgstr "יחסים"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "מידע נוסף"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "מטא-נתונים"
|
msgstr "מטא-נתונים"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "חותמות זמן"
|
msgstr "חותמות זמן"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "הפעל את %(verbose_name_plural)s שנבחר"
|
msgstr "הפעל את %(verbose_name_plural)s שנבחר"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "הפריטים שנבחרו הופעלו!"
|
msgstr "הפריטים שנבחרו הופעלו!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "השבת את %(verbose_name_plural)s שנבחר"
|
msgstr "השבת את %(verbose_name_plural)s שנבחר"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "פריטים נבחרים הושבתו!"
|
msgstr "פריטים נבחרים הושבתו!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "ערך התכונה"
|
msgstr "ערך התכונה"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "ערכי תכונות"
|
msgstr "ערכי תכונות"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "תמונה"
|
msgstr "תמונה"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "תמונות"
|
msgstr "תמונות"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "מלאי"
|
msgstr "מלאי"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "מניות"
|
msgstr "מניות"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "הזמן מוצר"
|
msgstr "הזמן מוצר"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "הזמנת מוצרים"
|
msgstr "הזמנת מוצרים"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "ילדים"
|
msgstr "ילדים"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "תצורה"
|
msgstr "תצורה"
|
||||||
|
|
||||||
|
|
@ -693,7 +697,7 @@ msgstr "מחיקת קשר בין הזמנה למוצר"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "הוספה או הסרה של משוב על קשר בין הזמנה למוצר"
|
msgstr "הוספה או הסרה של משוב על קשר בין הזמנה למוצר"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "לא צויין מונח חיפוש."
|
msgstr "לא צויין מונח חיפוש."
|
||||||
|
|
||||||
|
|
@ -866,7 +870,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "אנא ספק את order_uuid או order_hr_id - אחד מהם בלבד!"
|
msgstr "אנא ספק את order_uuid או order_hr_id - אחד מהם בלבד!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "סוג שגוי הגיע משיטת order.buy(): {type(instance)!s}"
|
msgstr "סוג שגוי הגיע משיטת order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -942,7 +946,7 @@ msgstr "מחרוזת הכתובת המקורית שסופקה על ידי המש
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} אינו קיים: {uuid}!"
|
msgstr "{name} אינו קיים: {uuid}!"
|
||||||
|
|
@ -2572,22 +2576,22 @@ msgstr "נדרשים הן הנתונים והן זמן ההמתנה"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "ערך זמן המתנה לא חוקי, הוא חייב להיות בין 0 ל-216000 שניות"
|
msgstr "ערך זמן המתנה לא חוקי, הוא חייב להיות בין 0 ל-216000 שניות"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | צור קשר יוזם"
|
msgstr "{config.PROJECT_NAME} | צור קשר יוזם"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | אישור הזמנה"
|
msgstr "{config.PROJECT_NAME} | אישור הזמנה"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | הזמנה נמסרה"
|
msgstr "{config.PROJECT_NAME} | הזמנה נמסרה"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | קוד קידום מכירות מוענק"
|
msgstr "{config.PROJECT_NAME} | קוד קידום מכירות מוענק"
|
||||||
|
|
@ -2817,7 +2821,7 @@ msgstr ""
|
||||||
" היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django "
|
" היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django "
|
||||||
"לשאילתת נתונים."
|
"לשאילתת נתונים."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2834,7 +2838,7 @@ msgstr ""
|
||||||
"בהתאם לפעולה הספציפית המתבצעת ומאכוף הרשאות בהתאם בעת אינטראקציה עם נתוני "
|
"בהתאם לפעולה הספציפית המתבצעת ומאכוף הרשאות בהתאם בעת אינטראקציה עם נתוני "
|
||||||
"הזמנה."
|
"הזמנה."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2847,25 +2851,25 @@ msgstr ""
|
||||||
"הרשאות והחלפת סריאלייזר בהתאם לפעולה המבוקשת. בנוסף, הוא מספק פעולה מפורטת "
|
"הרשאות והחלפת סריאלייזר בהתאם לפעולה המבוקשת. בנוסף, הוא מספק פעולה מפורטת "
|
||||||
"לטיפול במשוב על מופעים של OrderProduct."
|
"לטיפול במשוב על מופעים של OrderProduct."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "מנהל פעולות הקשורות לתמונות מוצרים ביישום."
|
msgstr "מנהל פעולות הקשורות לתמונות מוצרים ביישום."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr "מנהל את אחזור וטיפול במקרי PromoCode באמצעות פעולות API שונות."
|
msgstr "מנהל את אחזור וטיפול במקרי PromoCode באמצעות פעולות API שונות."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "מייצג קבוצת תצוגות לניהול מבצעים."
|
msgstr "מייצג קבוצת תצוגות לניהול מבצעים."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "מטפל בפעולות הקשורות לנתוני המלאי במערכת."
|
msgstr "מטפל בפעולות הקשורות לנתוני המלאי במערכת."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2882,7 +2886,7 @@ msgstr ""
|
||||||
"שמשתמשים יוכלו לנהל רק את רשימות המשאלות שלהם, אלא אם כן ניתנו הרשאות "
|
"שמשתמשים יוכלו לנהל רק את רשימות המשאלות שלהם, אלא אם כן ניתנו הרשאות "
|
||||||
"מפורשות."
|
"מפורשות."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2895,12 +2899,12 @@ msgstr ""
|
||||||
"לישויות כתובת. היא כוללת התנהגויות מיוחדות עבור שיטות HTTP שונות, עקיפת "
|
"לישויות כתובת. היא כוללת התנהגויות מיוחדות עבור שיטות HTTP שונות, עקיפת "
|
||||||
"סריאלייזר וטיפול בהרשאות בהתבסס על הקשר הבקשה."
|
"סריאלייזר וטיפול בהרשאות בהתבסס על הקשר הבקשה."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "שגיאת קידוד גיאוגרפי: {e}"
|
msgstr "שגיאת קידוד גיאוגרפי: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr ""
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
msgid "metadata"
|
msgid "additional info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:94
|
||||||
|
msgid "metadata"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -678,7 +682,7 @@ msgstr ""
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -851,7 +855,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2459,22 +2463,22 @@ msgstr ""
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2656,7 +2660,7 @@ msgid ""
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2667,7 +2671,7 @@ msgid ""
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2676,25 +2680,25 @@ msgid ""
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2705,7 +2709,7 @@ msgid ""
|
||||||
"are granted."
|
"are granted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2714,12 +2718,12 @@ msgid ""
|
||||||
"on the request context."
|
"on the request context."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr ""
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
msgid "metadata"
|
msgid "additional info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:94
|
||||||
|
msgid "metadata"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -678,7 +682,7 @@ msgstr ""
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -851,7 +855,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2459,22 +2463,22 @@ msgstr ""
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2656,7 +2660,7 @@ msgid ""
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2667,7 +2671,7 @@ msgid ""
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2676,25 +2680,25 @@ msgid ""
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2705,7 +2709,7 @@ msgid ""
|
||||||
"are granted."
|
"are granted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2714,12 +2718,12 @@ msgid ""
|
||||||
"on the request context."
|
"on the request context."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -50,82 +50,86 @@ msgstr "Dimodifikasi"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Kapan objek terakhir kali diedit"
|
msgstr "Kapan objek terakhir kali diedit"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Terjemahan"
|
msgstr "Terjemahan"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Umum"
|
msgstr "Umum"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Hubungan"
|
msgstr "Hubungan"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "info tambahan"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Stempel waktu"
|
msgstr "Stempel waktu"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktifkan %(verbose_name_plural)s yang dipilih"
|
msgstr "Aktifkan %(verbose_name_plural)s yang dipilih"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Item yang dipilih telah diaktifkan!"
|
msgstr "Item yang dipilih telah diaktifkan!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Menonaktifkan %(verbose_name_plural)s yang dipilih"
|
msgstr "Menonaktifkan %(verbose_name_plural)s yang dipilih"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Item yang dipilih telah dinonaktifkan!"
|
msgstr "Item yang dipilih telah dinonaktifkan!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Nilai Atribut"
|
msgstr "Nilai Atribut"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Nilai Atribut"
|
msgstr "Nilai Atribut"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Gambar"
|
msgstr "Gambar"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Gambar"
|
msgstr "Gambar"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stok"
|
msgstr "Stok"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Saham"
|
msgstr "Saham"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Pesan Produk"
|
msgstr "Pesan Produk"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Pesan Produk"
|
msgstr "Pesan Produk"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Anak-anak"
|
msgstr "Anak-anak"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfigurasi"
|
msgstr "Konfigurasi"
|
||||||
|
|
||||||
|
|
@ -753,7 +757,7 @@ msgstr "menghapus relasi pesanan-produk"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "menambah atau menghapus umpan balik pada relasi pesanan-produk"
|
msgstr "menambah atau menghapus umpan balik pada relasi pesanan-produk"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Tidak ada istilah pencarian yang disediakan."
|
msgstr "Tidak ada istilah pencarian yang disediakan."
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
"Harap berikan order_uuid atau order_hr_id - tidak boleh lebih dari satu!"
|
"Harap berikan order_uuid atau order_hr_id - tidak boleh lebih dari satu!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Tipe yang salah berasal dari metode order.buy(): {type(instance)!s}"
|
msgstr "Tipe yang salah berasal dari metode order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -1004,7 +1008,7 @@ msgstr "String alamat asli yang diberikan oleh pengguna"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} tidak ada: {uuid}!"
|
msgstr "{name} tidak ada: {uuid}!"
|
||||||
|
|
@ -2715,22 +2719,22 @@ msgstr "Data dan batas waktu diperlukan"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Nilai batas waktu tidak valid, harus antara 0 dan 216000 detik"
|
msgstr "Nilai batas waktu tidak valid, harus antara 0 dan 216000 detik"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | hubungi kami dimulai"
|
msgstr "{config.PROJECT_NAME} | hubungi kami dimulai"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Konfirmasi Pesanan"
|
msgstr "{config.PROJECT_NAME} | Konfirmasi Pesanan"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Pesanan Dikirim"
|
msgstr "{config.PROJECT_NAME} | Pesanan Dikirim"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | kode promo diberikan"
|
msgstr "{config.PROJECT_NAME} | kode promo diberikan"
|
||||||
|
|
@ -2977,7 +2981,7 @@ msgstr ""
|
||||||
"yang dapat diakses. Kelas ini memperluas `EvibesViewSet` dasar dan "
|
"yang dapat diakses. Kelas ini memperluas `EvibesViewSet` dasar dan "
|
||||||
"menggunakan sistem penyaringan Django untuk meminta data."
|
"menggunakan sistem penyaringan Django untuk meminta data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2996,7 +3000,7 @@ msgstr ""
|
||||||
"beberapa serializer berdasarkan tindakan spesifik yang dilakukan dan "
|
"beberapa serializer berdasarkan tindakan spesifik yang dilakukan dan "
|
||||||
"memberlakukan izin yang sesuai saat berinteraksi dengan data pesanan."
|
"memberlakukan izin yang sesuai saat berinteraksi dengan data pesanan."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3010,11 +3014,11 @@ msgstr ""
|
||||||
"serializer berdasarkan tindakan yang diminta. Selain itu, ini menyediakan "
|
"serializer berdasarkan tindakan yang diminta. Selain itu, ini menyediakan "
|
||||||
"tindakan terperinci untuk menangani umpan balik pada instance OrderProduct"
|
"tindakan terperinci untuk menangani umpan balik pada instance OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Mengelola operasi yang terkait dengan gambar Produk dalam aplikasi."
|
msgstr "Mengelola operasi yang terkait dengan gambar Produk dalam aplikasi."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3022,15 +3026,15 @@ msgstr ""
|
||||||
"Mengelola pengambilan dan penanganan contoh PromoCode melalui berbagai "
|
"Mengelola pengambilan dan penanganan contoh PromoCode melalui berbagai "
|
||||||
"tindakan API."
|
"tindakan API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Merupakan set tampilan untuk mengelola promosi."
|
msgstr "Merupakan set tampilan untuk mengelola promosi."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Menangani operasi yang terkait dengan data Stok di dalam sistem."
|
msgstr "Menangani operasi yang terkait dengan data Stok di dalam sistem."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3048,7 +3052,7 @@ msgstr ""
|
||||||
"diintegrasikan untuk memastikan bahwa pengguna hanya dapat mengelola daftar "
|
"diintegrasikan untuk memastikan bahwa pengguna hanya dapat mengelola daftar "
|
||||||
"keinginan mereka sendiri kecuali jika izin eksplisit diberikan."
|
"keinginan mereka sendiri kecuali jika izin eksplisit diberikan."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3062,12 +3066,12 @@ msgstr ""
|
||||||
"khusus untuk metode HTTP yang berbeda, penggantian serializer, dan "
|
"khusus untuk metode HTTP yang berbeda, penggantian serializer, dan "
|
||||||
"penanganan izin berdasarkan konteks permintaan."
|
"penanganan izin berdasarkan konteks permintaan."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Kesalahan pengodean geografis: {e}"
|
msgstr "Kesalahan pengodean geografis: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Modificato"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Quando l'oggetto è stato modificato per l'ultima volta"
|
msgstr "Quando l'oggetto è stato modificato per l'ultima volta"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Traduzioni"
|
msgstr "Traduzioni"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Generale"
|
msgstr "Generale"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relazioni"
|
msgstr "Relazioni"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "informazioni aggiuntive"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadati"
|
msgstr "Metadati"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Timestamp"
|
msgstr "Timestamp"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Attivare il %(verbose_name_plural)s selezionato"
|
msgstr "Attivare il %(verbose_name_plural)s selezionato"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Gli articoli selezionati sono stati attivati!"
|
msgstr "Gli articoli selezionati sono stati attivati!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Disattivare il %(verbose_name_plural)s selezionato"
|
msgstr "Disattivare il %(verbose_name_plural)s selezionato"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Gli articoli selezionati sono stati disattivati!"
|
msgstr "Gli articoli selezionati sono stati disattivati!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Valore dell'attributo"
|
msgstr "Valore dell'attributo"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Valori degli attributi"
|
msgstr "Valori degli attributi"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Immagine"
|
msgstr "Immagine"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Immagini"
|
msgstr "Immagini"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Le scorte"
|
msgstr "Le scorte"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Ordina il prodotto"
|
msgstr "Ordina il prodotto"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Ordinare i prodotti"
|
msgstr "Ordinare i prodotti"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "I bambini"
|
msgstr "I bambini"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Configurazione"
|
msgstr "Configurazione"
|
||||||
|
|
||||||
|
|
@ -752,7 +756,7 @@ msgstr "eliminare una relazione ordine-prodotto"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto"
|
msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Non è stato fornito alcun termine di ricerca."
|
msgstr "Non è stato fornito alcun termine di ricerca."
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
"Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!"
|
"Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}"
|
"Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}"
|
||||||
|
|
@ -1006,7 +1010,7 @@ msgstr "Stringa di indirizzo originale fornita dall'utente"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} non esiste: {uuid}!"
|
msgstr "{name} non esiste: {uuid}!"
|
||||||
|
|
@ -2725,22 +2729,22 @@ msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Valore di timeout non valido, deve essere compreso tra 0 e 216000 secondi."
|
"Valore di timeout non valido, deve essere compreso tra 0 e 216000 secondi."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | contattaci iniziato"
|
msgstr "{config.PROJECT_NAME} | contattaci iniziato"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Conferma d'ordine"
|
msgstr "{config.PROJECT_NAME} | Conferma d'ordine"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Ordine consegnato"
|
msgstr "{config.PROJECT_NAME} | Ordine consegnato"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode granted"
|
msgstr "{config.PROJECT_NAME} | promocode granted"
|
||||||
|
|
@ -2992,7 +2996,7 @@ msgstr ""
|
||||||
"accessibili. Estende l'insieme di base `EvibesViewSet` e fa uso del sistema "
|
"accessibili. Estende l'insieme di base `EvibesViewSet` e fa uso del sistema "
|
||||||
"di filtraggio di Django per interrogare i dati."
|
"di filtraggio di Django per interrogare i dati."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -3011,7 +3015,7 @@ msgstr ""
|
||||||
"serializzatori in base all'azione specifica da eseguire e applica le "
|
"serializzatori in base all'azione specifica da eseguire e applica le "
|
||||||
"autorizzazioni di conseguenza durante l'interazione con i dati degli ordini."
|
"autorizzazioni di conseguenza durante l'interazione con i dati degli ordini."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3026,13 +3030,13 @@ msgstr ""
|
||||||
"richiesta. Inoltre, fornisce un'azione dettagliata per gestire il feedback "
|
"richiesta. Inoltre, fornisce un'azione dettagliata per gestire il feedback "
|
||||||
"sulle istanze di OrderProduct."
|
"sulle istanze di OrderProduct."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestisce le operazioni relative alle immagini dei prodotti "
|
"Gestisce le operazioni relative alle immagini dei prodotti "
|
||||||
"nell'applicazione."
|
"nell'applicazione."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3040,15 +3044,15 @@ msgstr ""
|
||||||
"Gestisce il recupero e la gestione delle istanze di PromoCode attraverso "
|
"Gestisce il recupero e la gestione delle istanze di PromoCode attraverso "
|
||||||
"varie azioni API."
|
"varie azioni API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Rappresenta un insieme di viste per la gestione delle promozioni."
|
msgstr "Rappresenta un insieme di viste per la gestione delle promozioni."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Gestisce le operazioni relative ai dati delle scorte nel sistema."
|
msgstr "Gestisce le operazioni relative ai dati delle scorte nel sistema."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3068,7 +3072,7 @@ msgstr ""
|
||||||
"solo la propria lista dei desideri, a meno che non vengano concessi permessi"
|
"solo la propria lista dei desideri, a meno che non vengano concessi permessi"
|
||||||
" espliciti."
|
" espliciti."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3082,12 +3086,12 @@ msgstr ""
|
||||||
"specializzati per diversi metodi HTTP, override del serializzatore e "
|
"specializzati per diversi metodi HTTP, override del serializzatore e "
|
||||||
"gestione dei permessi in base al contesto della richiesta."
|
"gestione dei permessi in base al contesto della richiesta."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Errore di geocodifica: {e}"
|
msgstr "Errore di geocodifica: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -47,82 +47,86 @@ msgstr "変形"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "オブジェクトの最終編集日時"
|
msgstr "オブジェクトの最終編集日時"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "翻訳"
|
msgstr "翻訳"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "一般"
|
msgstr "一般"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "関係"
|
msgstr "関係"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "追加情報"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "メタデータ"
|
msgstr "メタデータ"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "タイムスタンプ"
|
msgstr "タイムスタンプ"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "選択した%(verbose_name_plural)sをアクティブにする"
|
msgstr "選択した%(verbose_name_plural)sをアクティブにする"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "選択した項目がアクティブになりました!"
|
msgstr "選択した項目がアクティブになりました!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "選択された%(verbose_name_plural)sを非アクティブにする"
|
msgstr "選択された%(verbose_name_plural)sを非アクティブにする"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "選択されたアイテムは無効化されました!"
|
msgstr "選択されたアイテムは無効化されました!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "属性値"
|
msgstr "属性値"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "属性値"
|
msgstr "属性値"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "画像"
|
msgstr "画像"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "画像"
|
msgstr "画像"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "在庫"
|
msgstr "在庫"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "株式"
|
msgstr "株式"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "商品のご注文"
|
msgstr "商品のご注文"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "商品のご注文"
|
msgstr "商品のご注文"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "子供たち"
|
msgstr "子供たち"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "コンフィグ"
|
msgstr "コンフィグ"
|
||||||
|
|
||||||
|
|
@ -692,7 +696,7 @@ msgstr "注文と商品の関係を削除する"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "注文と商品の関係に関するフィードバックを追加または削除する。"
|
msgstr "注文と商品の関係に関するフィードバックを追加または削除する。"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "検索語はありません。"
|
msgstr "検索語はありません。"
|
||||||
|
|
||||||
|
|
@ -865,7 +869,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "order_uuidまたはorder_hr_idを入力してください!"
|
msgstr "order_uuidまたはorder_hr_idを入力してください!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。"
|
msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。"
|
||||||
|
|
||||||
|
|
@ -941,7 +945,7 @@ msgstr "ユーザーが提供したオリジナルのアドレス文字列"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name}は存在しません:{uuid}が存在しません!"
|
msgstr "{name}は存在しません:{uuid}が存在しません!"
|
||||||
|
|
@ -2513,22 +2517,22 @@ msgstr "データとタイムアウトの両方が必要"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "無効なタイムアウト値です。"
|
msgstr "無効なタイムアウト値です。"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME}|コンタクト開始| お問い合わせはこちらから"
|
msgstr "{config.PROJECT_NAME}|コンタクト開始| お問い合わせはこちらから"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME}|注文確認| ご注文の確認"
|
msgstr "{config.PROJECT_NAME}|注文確認| ご注文の確認"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME}|ご注文は配送されますか?"
|
msgstr "{config.PROJECT_NAME}|ご注文は配送されますか?"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME}|プロモコード付与"
|
msgstr "{config.PROJECT_NAME}|プロモコード付与"
|
||||||
|
|
@ -2745,7 +2749,7 @@ msgstr ""
|
||||||
"オブジェクトのパーミッションベースの処理を実装することです。ベースとなる `EvibesViewSet` を拡張し、Django "
|
"オブジェクトのパーミッションベースの処理を実装することです。ベースとなる `EvibesViewSet` を拡張し、Django "
|
||||||
"のフィルタリングシステムを利用してデータを取得します。"
|
"のフィルタリングシステムを利用してデータを取得します。"
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2758,7 +2762,7 @@ msgstr ""
|
||||||
"注文と関連する操作を管理するための "
|
"注文と関連する操作を管理するための "
|
||||||
"ViewSet。このクラスは、注文オブジェクトを取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアクションに基づいて複数のシリアライザを使用し、注文データを操作している間、それに応じてパーミッションを強制します。"
|
"ViewSet。このクラスは、注文オブジェクトを取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアクションに基づいて複数のシリアライザを使用し、注文データを操作している間、それに応じてパーミッションを強制します。"
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2770,25 +2774,25 @@ msgstr ""
|
||||||
"操作とカスタムアクションを可能にします。これは、要求されたアクションに基づくフィルタリング、パーミッションチェック、シリアライザーの切り替えを含みます。さらに、OrderProduct"
|
"操作とカスタムアクションを可能にします。これは、要求されたアクションに基づくフィルタリング、パーミッションチェック、シリアライザーの切り替えを含みます。さらに、OrderProduct"
|
||||||
" インスタンスに関するフィードバックを処理するための詳細なアクションを提供します。"
|
" インスタンスに関するフィードバックを処理するための詳細なアクションを提供します。"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "アプリケーション内の商品画像に関する操作を管理します。"
|
msgstr "アプリケーション内の商品画像に関する操作を管理します。"
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr "様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。"
|
msgstr "様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。"
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "プロモーションを管理するためのビューセットを表します。"
|
msgstr "プロモーションを管理するためのビューセットを表します。"
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "システム内のストックデータに関する操作を行う。"
|
msgstr "システム内のストックデータに関する操作を行う。"
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2800,7 +2804,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーのウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理できるよう、パーミッションチェックが統合されています。"
|
"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーのウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理できるよう、パーミッションチェックが統合されています。"
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2812,12 +2816,12 @@ msgstr ""
|
||||||
"クラスは、住所エンティティに関連する CRUD 操作、フィルタリング、カスタムアクションを可能にします。異なる HTTP "
|
"クラスは、住所エンティティに関連する CRUD 操作、フィルタリング、カスタムアクションを可能にします。異なる HTTP "
|
||||||
"メソッドに特化した振る舞いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッション処理などを含みます。"
|
"メソッドに特化した振る舞いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッション処理などを含みます。"
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "ジオコーディングエラー:{e}"
|
msgstr "ジオコーディングエラー:{e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr ""
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
msgid "metadata"
|
msgid "additional info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:94
|
||||||
|
msgid "metadata"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -678,7 +682,7 @@ msgstr ""
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -851,7 +855,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgstr ""
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2459,22 +2463,22 @@ msgstr ""
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2656,7 +2660,7 @@ msgid ""
|
||||||
"use of Django's filtering system for querying data."
|
"use of Django's filtering system for querying data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2667,7 +2671,7 @@ msgid ""
|
||||||
"enforces permissions accordingly while interacting with order data."
|
"enforces permissions accordingly while interacting with order data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2676,25 +2680,25 @@ msgid ""
|
||||||
"feedback on OrderProduct instances"
|
"feedback on OrderProduct instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2705,7 +2709,7 @@ msgid ""
|
||||||
"are granted."
|
"are granted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2714,12 +2718,12 @@ msgid ""
|
||||||
"on the request context."
|
"on the request context."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -47,82 +47,86 @@ msgstr "수정됨"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "개체가 마지막으로 편집된 시기"
|
msgstr "개체가 마지막으로 편집된 시기"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "번역"
|
msgstr "번역"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "일반"
|
msgstr "일반"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "관계"
|
msgstr "관계"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "추가 정보"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "메타데이터"
|
msgstr "메타데이터"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "타임스탬프"
|
msgstr "타임스탬프"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "선택한 %(verbose_name_plural)s 활성화"
|
msgstr "선택한 %(verbose_name_plural)s 활성화"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "선택한 아이템이 활성화되었습니다!"
|
msgstr "선택한 아이템이 활성화되었습니다!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "선택한 %(verbose_name_plural)s 비활성화하기"
|
msgstr "선택한 %(verbose_name_plural)s 비활성화하기"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "선택한 아이템이 비활성화되었습니다!"
|
msgstr "선택한 아이템이 비활성화되었습니다!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "속성 값"
|
msgstr "속성 값"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "속성 값"
|
msgstr "속성 값"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "이미지"
|
msgstr "이미지"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "이미지"
|
msgstr "이미지"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "재고"
|
msgstr "재고"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "주식"
|
msgstr "주식"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "제품 주문"
|
msgstr "제품 주문"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "제품 주문"
|
msgstr "제품 주문"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "어린이"
|
msgstr "어린이"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "구성"
|
msgstr "구성"
|
||||||
|
|
||||||
|
|
@ -689,7 +693,7 @@ msgstr "주문-제품 관계 삭제"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "주문-제품 관계에 대한 피드백 추가 또는 제거"
|
msgstr "주문-제품 관계에 대한 피드백 추가 또는 제거"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "검색어가 입력되지 않았습니다."
|
msgstr "검색어가 입력되지 않았습니다."
|
||||||
|
|
||||||
|
|
@ -862,7 +866,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "주문_uuid 또는 주문_hr_id 중 하나를 입력하세요 - 상호 배타적입니다!"
|
msgstr "주문_uuid 또는 주문_hr_id 중 하나를 입력하세요 - 상호 배타적입니다!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "order.buy() 메서드에서 잘못된 유형이 발생했습니다: {type(instance)!s}"
|
msgstr "order.buy() 메서드에서 잘못된 유형이 발생했습니다: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -938,7 +942,7 @@ msgstr "사용자가 제공한 원본 주소 문자열"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name}가 존재하지 않습니다: {uuid}!"
|
msgstr "{name}가 존재하지 않습니다: {uuid}!"
|
||||||
|
|
@ -2538,22 +2542,22 @@ msgstr "데이터와 시간 초과가 모두 필요합니다."
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "잘못된 시간 초과 값, 0~216000초 사이여야 합니다."
|
msgstr "잘못된 시간 초과 값, 0~216000초 사이여야 합니다."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | 문의 시작됨"
|
msgstr "{config.PROJECT_NAME} | 문의 시작됨"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | 주문 확인"
|
msgstr "{config.PROJECT_NAME} | 주문 확인"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | 주문 배송됨"
|
msgstr "{config.PROJECT_NAME} | 주문 배송됨"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | 프로모코드 부여됨"
|
msgstr "{config.PROJECT_NAME} | 프로모코드 부여됨"
|
||||||
|
|
@ -2769,7 +2773,7 @@ msgstr ""
|
||||||
"구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 "
|
"구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 "
|
||||||
"사용합니다."
|
"사용합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2784,7 +2788,7 @@ msgstr ""
|
||||||
"엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그에 따라 "
|
"엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그에 따라 "
|
||||||
"권한을 적용합니다."
|
"권한을 적용합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2796,25 +2800,25 @@ msgstr ""
|
||||||
"수행할 수 있습니다. 여기에는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또한 주문 제품 인스턴스에 대한"
|
"수행할 수 있습니다. 여기에는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또한 주문 제품 인스턴스에 대한"
|
||||||
" 피드백 처리를 위한 세부 작업도 제공합니다."
|
" 피드백 처리를 위한 세부 작업도 제공합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "애플리케이션에서 제품 이미지와 관련된 작업을 관리합니다."
|
msgstr "애플리케이션에서 제품 이미지와 관련된 작업을 관리합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr "다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다."
|
msgstr "다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "프로모션을 관리하기 위한 보기 세트를 나타냅니다."
|
msgstr "프로모션을 관리하기 위한 보기 세트를 나타냅니다."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "시스템에서 주식 데이터와 관련된 작업을 처리합니다."
|
msgstr "시스템에서 주식 데이터와 관련된 작업을 처리합니다."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2828,7 +2832,7 @@ msgstr ""
|
||||||
"내의 제품을 검색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 추가, 제거 및 대량 작업과 같은 기능을"
|
"내의 제품을 검색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 추가, 제거 및 대량 작업과 같은 기능을"
|
||||||
" 용이하게 합니다. 명시적인 권한이 부여되지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되어 있습니다."
|
" 용이하게 합니다. 명시적인 권한이 부여되지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되어 있습니다."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2840,12 +2844,12 @@ msgstr ""
|
||||||
"사용자 정의 작업을 가능하게 합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권한 처리를 위한 특수 "
|
"사용자 정의 작업을 가능하게 합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권한 처리를 위한 특수 "
|
||||||
"동작이 포함되어 있습니다."
|
"동작이 포함되어 있습니다."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "지오코딩 오류입니다: {e}"
|
msgstr "지오코딩 오류입니다: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr "Gewijzigd"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Wanneer het object voor het laatst bewerkt is"
|
msgstr "Wanneer het object voor het laatst bewerkt is"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Vertalingen"
|
msgstr "Vertalingen"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Algemeen"
|
msgstr "Algemeen"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relaties"
|
msgstr "Relaties"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "extra informatie"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metagegevens"
|
msgstr "Metagegevens"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Tijdstempels"
|
msgstr "Tijdstempels"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activeer geselecteerde %(verbose_name_plural)s"
|
msgstr "Activeer geselecteerde %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Geselecteerde items zijn geactiveerd!"
|
msgstr "Geselecteerde items zijn geactiveerd!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deactiveer geselecteerd %(verbose_name_plural)s"
|
msgstr "Deactiveer geselecteerd %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Geselecteerde items zijn gedeactiveerd!"
|
msgstr "Geselecteerde items zijn gedeactiveerd!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attribuut Waarde"
|
msgstr "Attribuut Waarde"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attribuutwaarden"
|
msgstr "Attribuutwaarden"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Afbeelding"
|
msgstr "Afbeelding"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Afbeeldingen"
|
msgstr "Afbeeldingen"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Voorraad"
|
msgstr "Voorraad"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Aandelen"
|
msgstr "Aandelen"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Product bestellen"
|
msgstr "Product bestellen"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Producten bestellen"
|
msgstr "Producten bestellen"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Kinderen"
|
msgstr "Kinderen"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Config"
|
msgstr "Config"
|
||||||
|
|
||||||
|
|
@ -753,7 +757,7 @@ msgstr "een order-productrelatie verwijderen"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "feedback toevoegen of verwijderen op een order-productrelatie"
|
msgstr "feedback toevoegen of verwijderen op een order-productrelatie"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Geen zoekterm opgegeven."
|
msgstr "Geen zoekterm opgegeven."
|
||||||
|
|
||||||
|
|
@ -927,7 +931,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!"
|
msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}"
|
msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -1004,7 +1008,7 @@ msgstr "Originele adresstring geleverd door de gebruiker"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} bestaat niet: {uuid}!"
|
msgstr "{name} bestaat niet: {uuid}!"
|
||||||
|
|
@ -2734,22 +2738,22 @@ msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen"
|
"Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | neem contact met ons op"
|
msgstr "{config.PROJECT_NAME} | neem contact met ons op"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Orderbevestiging"
|
msgstr "{config.PROJECT_NAME} | Orderbevestiging"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Bestelling afgeleverd"
|
msgstr "{config.PROJECT_NAME} | Bestelling afgeleverd"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode toegekend"
|
msgstr "{config.PROJECT_NAME} | promocode toegekend"
|
||||||
|
|
@ -3003,7 +3007,7 @@ msgstr ""
|
||||||
"implementeren. Het breidt de basis `EvibesViewSet` uit en maakt gebruik van "
|
"implementeren. Het breidt de basis `EvibesViewSet` uit en maakt gebruik van "
|
||||||
"Django's filtersysteem voor het opvragen van gegevens."
|
"Django's filtersysteem voor het opvragen van gegevens."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -3023,7 +3027,7 @@ msgstr ""
|
||||||
"gebaseerd op de specifieke actie die wordt uitgevoerd en dwingt "
|
"gebaseerd op de specifieke actie die wordt uitgevoerd en dwingt "
|
||||||
"dienovereenkomstig permissies af tijdens de interactie met ordergegevens."
|
"dienovereenkomstig permissies af tijdens de interactie met ordergegevens."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3038,12 +3042,12 @@ msgstr ""
|
||||||
" een gedetailleerde actie voor het afhandelen van feedback op OrderProduct "
|
" een gedetailleerde actie voor het afhandelen van feedback op OrderProduct "
|
||||||
"instanties"
|
"instanties"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Beheert bewerkingen met betrekking tot productafbeeldingen in de applicatie."
|
"Beheert bewerkingen met betrekking tot productafbeeldingen in de applicatie."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3051,16 +3055,16 @@ msgstr ""
|
||||||
"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende"
|
"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende"
|
||||||
" API-acties."
|
" API-acties."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Vertegenwoordigt een view set voor het beheren van promoties."
|
msgstr "Vertegenwoordigt een view set voor het beheren van promoties."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Verwerkt bewerkingen met betrekking tot voorraadgegevens in het systeem."
|
"Verwerkt bewerkingen met betrekking tot voorraadgegevens in het systeem."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3079,7 +3083,7 @@ msgstr ""
|
||||||
"verlanglijstjes kunnen beheren, tenzij er expliciete toestemmingen zijn "
|
"verlanglijstjes kunnen beheren, tenzij er expliciete toestemmingen zijn "
|
||||||
"verleend."
|
"verleend."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3093,12 +3097,12 @@ msgstr ""
|
||||||
"gespecialiseerde gedragingen voor verschillende HTTP methoden, serializer "
|
"gespecialiseerde gedragingen voor verschillende HTTP methoden, serializer "
|
||||||
"omzeilingen en toestemmingsafhandeling gebaseerd op de verzoekcontext."
|
"omzeilingen en toestemmingsafhandeling gebaseerd op de verzoekcontext."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Fout bij geocodering: {e}"
|
msgstr "Fout bij geocodering: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -50,82 +50,86 @@ msgstr "Modifisert"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Når objektet sist ble redigert"
|
msgstr "Når objektet sist ble redigert"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Oversettelser"
|
msgstr "Oversettelser"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Generelt"
|
msgstr "Generelt"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relasjoner"
|
msgstr "Relasjoner"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "ytterligere informasjon"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Tidsstempler"
|
msgstr "Tidsstempler"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktiver valgt %(verbose_name_plural)s"
|
msgstr "Aktiver valgt %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Utvalgte elementer har blitt aktivert!"
|
msgstr "Utvalgte elementer har blitt aktivert!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Deaktiver valgt %(verbose_name_plural)s"
|
msgstr "Deaktiver valgt %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Utvalgte elementer har blitt deaktivert!"
|
msgstr "Utvalgte elementer har blitt deaktivert!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attributtverdi"
|
msgstr "Attributtverdi"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attributtverdier"
|
msgstr "Attributtverdier"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Bilde"
|
msgstr "Bilde"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Bilder"
|
msgstr "Bilder"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Lager"
|
msgstr "Lager"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Aksjer"
|
msgstr "Aksjer"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Bestill produkt"
|
msgstr "Bestill produkt"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Bestill produkter"
|
msgstr "Bestill produkter"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Barn"
|
msgstr "Barn"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfigurer"
|
msgstr "Konfigurer"
|
||||||
|
|
||||||
|
|
@ -739,7 +743,7 @@ msgstr "slette en ordre-produkt-relasjon"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "legge til eller fjerne tilbakemeldinger på en ordre-produkt-relasjon"
|
msgstr "legge til eller fjerne tilbakemeldinger på en ordre-produkt-relasjon"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Ingen søkeord oppgitt."
|
msgstr "Ingen søkeord oppgitt."
|
||||||
|
|
||||||
|
|
@ -914,7 +918,7 @@ msgstr ""
|
||||||
"Vennligst oppgi enten order_uuid eller order_hr_id - gjensidig utelukkende!"
|
"Vennligst oppgi enten order_uuid eller order_hr_id - gjensidig utelukkende!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Feil type kom fra order.buy()-metoden: {type(instance)!s}"
|
msgstr "Feil type kom fra order.buy()-metoden: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -991,7 +995,7 @@ msgstr "Opprinnelig adressestreng oppgitt av brukeren"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} eksisterer ikke: {uuid}!"
|
msgstr "{name} eksisterer ikke: {uuid}!"
|
||||||
|
|
@ -2700,22 +2704,22 @@ msgstr "Både data og tidsavbrudd er påkrevd"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Ugyldig tidsavbruddsverdi, den må være mellom 0 og 216000 sekunder"
|
msgstr "Ugyldig tidsavbruddsverdi, den må være mellom 0 og 216000 sekunder"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | kontakt oss initiert"
|
msgstr "{config.PROJECT_NAME} | kontakt oss initiert"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Ordrebekreftelse"
|
msgstr "{config.PROJECT_NAME} | Ordrebekreftelse"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Bestilling levert"
|
msgstr "{config.PROJECT_NAME} | Bestilling levert"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promokode gitt"
|
msgstr "{config.PROJECT_NAME} | promokode gitt"
|
||||||
|
|
@ -2963,7 +2967,7 @@ msgstr ""
|
||||||
"tilbakemeldingsobjekter. Den utvider basisklassen `EvibesViewSet` og bruker "
|
"tilbakemeldingsobjekter. Den utvider basisklassen `EvibesViewSet` og bruker "
|
||||||
"Djangos filtreringssystem for å spørre etter data."
|
"Djangos filtreringssystem for å spørre etter data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2982,7 +2986,7 @@ msgstr ""
|
||||||
"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever"
|
"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever"
|
||||||
" tillatelser i samsvar med dette under samhandling med ordredata."
|
" tillatelser i samsvar med dette under samhandling med ordredata."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2997,11 +3001,11 @@ msgstr ""
|
||||||
" tillegg inneholder det en detaljert handling for håndtering av "
|
" tillegg inneholder det en detaljert handling for håndtering av "
|
||||||
"tilbakemeldinger på OrderProduct-instanser"
|
"tilbakemeldinger på OrderProduct-instanser"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Administrerer operasjoner knyttet til produktbilder i applikasjonen."
|
msgstr "Administrerer operasjoner knyttet til produktbilder i applikasjonen."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3009,15 +3013,15 @@ msgstr ""
|
||||||
"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike "
|
"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike "
|
||||||
"API-handlinger."
|
"API-handlinger."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Representerer et visningssett for håndtering av kampanjer."
|
msgstr "Representerer et visningssett for håndtering av kampanjer."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Håndterer operasjoner knyttet til lagerdata i systemet."
|
msgstr "Håndterer operasjoner knyttet til lagerdata i systemet."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3035,7 +3039,7 @@ msgstr ""
|
||||||
"integrert for å sikre at brukere bare kan administrere sine egne ønskelister"
|
"integrert for å sikre at brukere bare kan administrere sine egne ønskelister"
|
||||||
" med mindre eksplisitte tillatelser er gitt."
|
" med mindre eksplisitte tillatelser er gitt."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3049,12 +3053,12 @@ msgstr ""
|
||||||
"inkluderer spesialisert atferd for ulike HTTP-metoder, overstyring av "
|
"inkluderer spesialisert atferd for ulike HTTP-metoder, overstyring av "
|
||||||
"serializer og håndtering av tillatelser basert på forespørselskonteksten."
|
"serializer og håndtering av tillatelser basert på forespørselskonteksten."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Feil i geokoding: {e}"
|
msgstr "Feil i geokoding: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Zmodyfikowany"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Kiedy obiekt był ostatnio edytowany"
|
msgstr "Kiedy obiekt był ostatnio edytowany"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Tłumaczenia"
|
msgstr "Tłumaczenia"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Ogólne"
|
msgstr "Ogólne"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relacje"
|
msgstr "Relacje"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "dodatkowe informacje"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadane"
|
msgstr "Metadane"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Znaczniki czasu"
|
msgstr "Znaczniki czasu"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktywuj wybrane %(verbose_name_plural)s"
|
msgstr "Aktywuj wybrane %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Wybrane elementy zostały aktywowane!"
|
msgstr "Wybrane elementy zostały aktywowane!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Dezaktywacja wybranego %(verbose_name_plural)s"
|
msgstr "Dezaktywacja wybranego %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Wybrane elementy zostały dezaktywowane!"
|
msgstr "Wybrane elementy zostały dezaktywowane!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Wartość atrybutu"
|
msgstr "Wartość atrybutu"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Wartości atrybutów"
|
msgstr "Wartości atrybutów"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Obraz"
|
msgstr "Obraz"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Obrazy"
|
msgstr "Obrazy"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stan magazynowy"
|
msgstr "Stan magazynowy"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Akcje"
|
msgstr "Akcje"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Zamów produkt"
|
msgstr "Zamów produkt"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Zamawianie produktów"
|
msgstr "Zamawianie produktów"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Dzieci"
|
msgstr "Dzieci"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfiguracja"
|
msgstr "Konfiguracja"
|
||||||
|
|
||||||
|
|
@ -746,7 +750,7 @@ msgstr "usunąć relację zamówienie-produkt"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt"
|
msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Nie podano wyszukiwanego hasła."
|
msgstr "Nie podano wyszukiwanego hasła."
|
||||||
|
|
||||||
|
|
@ -919,7 +923,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!"
|
msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}"
|
msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -997,7 +1001,7 @@ msgstr "Oryginalny ciąg adresu podany przez użytkownika"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} nie istnieje: {uuid}!"
|
msgstr "{name} nie istnieje: {uuid}!"
|
||||||
|
|
@ -2713,22 +2717,22 @@ msgstr ""
|
||||||
"Nieprawidłowa wartość limitu czasu, musi zawierać się w przedziale od 0 do "
|
"Nieprawidłowa wartość limitu czasu, musi zawierać się w przedziale od 0 do "
|
||||||
"216000 sekund."
|
"216000 sekund."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | zainicjowany kontakt"
|
msgstr "{config.PROJECT_NAME} | zainicjowany kontakt"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Potwierdzenie zamówienia"
|
msgstr "{config.PROJECT_NAME} | Potwierdzenie zamówienia"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Zamówienie dostarczone"
|
msgstr "{config.PROJECT_NAME} | Zamówienie dostarczone"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | przyznany kod promocyjny"
|
msgstr "{config.PROJECT_NAME} | przyznany kod promocyjny"
|
||||||
|
|
@ -2974,7 +2978,7 @@ msgstr ""
|
||||||
"bazowy `EvibesViewSet` i wykorzystuje system filtrowania Django do "
|
"bazowy `EvibesViewSet` i wykorzystuje system filtrowania Django do "
|
||||||
"odpytywania danych."
|
"odpytywania danych."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2993,7 +2997,7 @@ msgstr ""
|
||||||
"wykorzystuje wiele serializatorów w oparciu o konkretną wykonywaną akcję i "
|
"wykorzystuje wiele serializatorów w oparciu o konkretną wykonywaną akcję i "
|
||||||
"odpowiednio egzekwuje uprawnienia podczas interakcji z danymi zamówienia."
|
"odpowiednio egzekwuje uprawnienia podczas interakcji z danymi zamówienia."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3008,26 +3012,26 @@ msgstr ""
|
||||||
"szczegółową akcję do obsługi informacji zwrotnych na temat instancji "
|
"szczegółową akcję do obsługi informacji zwrotnych na temat instancji "
|
||||||
"OrderProduct"
|
"OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Zarządza operacjami związanymi z obrazami produktów w aplikacji."
|
msgstr "Zarządza operacjami związanymi z obrazami produktów w aplikacji."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Zarządza pobieraniem i obsługą instancji PromoCode poprzez różne akcje API."
|
"Zarządza pobieraniem i obsługą instancji PromoCode poprzez różne akcje API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Reprezentuje zestaw widoków do zarządzania promocjami."
|
msgstr "Reprezentuje zestaw widoków do zarządzania promocjami."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Obsługuje operacje związane z danymi Stock w systemie."
|
msgstr "Obsługuje operacje związane z danymi Stock w systemie."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3045,7 +3049,7 @@ msgstr ""
|
||||||
"że użytkownicy mogą zarządzać tylko własnymi listami życzeń, chyba że "
|
"że użytkownicy mogą zarządzać tylko własnymi listami życzeń, chyba że "
|
||||||
"zostaną przyznane wyraźne uprawnienia."
|
"zostaną przyznane wyraźne uprawnienia."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3059,12 +3063,12 @@ msgstr ""
|
||||||
"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera"
|
"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera"
|
||||||
" i obsługę uprawnień w oparciu o kontekst żądania."
|
" i obsługę uprawnień w oparciu o kontekst żądania."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Błąd geokodowania: {e}"
|
msgstr "Błąd geokodowania: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Modificado"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Quando o objeto foi editado pela última vez"
|
msgstr "Quando o objeto foi editado pela última vez"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Traduções"
|
msgstr "Traduções"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Geral"
|
msgstr "Geral"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relações"
|
msgstr "Relações"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "informações adicionais"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadados"
|
msgstr "Metadados"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Carimbos de data/hora"
|
msgstr "Carimbos de data/hora"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Ativar o %(verbose_name_plural)s selecionado"
|
msgstr "Ativar o %(verbose_name_plural)s selecionado"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Os itens selecionados foram ativados!"
|
msgstr "Os itens selecionados foram ativados!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Desativar o %(verbose_name_plural)s selecionado"
|
msgstr "Desativar o %(verbose_name_plural)s selecionado"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Os itens selecionados foram desativados!"
|
msgstr "Os itens selecionados foram desativados!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Valor do atributo"
|
msgstr "Valor do atributo"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Valores de atributos"
|
msgstr "Valores de atributos"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Imagem"
|
msgstr "Imagem"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Imagens"
|
msgstr "Imagens"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Estoque"
|
msgstr "Estoque"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Ações"
|
msgstr "Ações"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Pedido de produto"
|
msgstr "Pedido de produto"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Solicitar produtos"
|
msgstr "Solicitar produtos"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Crianças"
|
msgstr "Crianças"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Configuração"
|
msgstr "Configuração"
|
||||||
|
|
||||||
|
|
@ -736,7 +740,7 @@ msgstr "excluir uma relação pedido-produto"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "adicionar ou remover feedback em uma relação pedido-produto"
|
msgstr "adicionar ou remover feedback em uma relação pedido-produto"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Nenhum termo de pesquisa foi fornecido."
|
msgstr "Nenhum termo de pesquisa foi fornecido."
|
||||||
|
|
||||||
|
|
@ -910,7 +914,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!"
|
msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}"
|
msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -987,7 +991,7 @@ msgstr "Cadeia de endereços original fornecida pelo usuário"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} não existe: {uuid}!"
|
msgstr "{name} não existe: {uuid}!"
|
||||||
|
|
@ -2696,22 +2700,22 @@ msgstr "São necessários dados e tempo limite"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Valor de tempo limite inválido, deve estar entre 0 e 216000 segundos"
|
msgstr "Valor de tempo limite inválido, deve estar entre 0 e 216000 segundos"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | entre em contato conosco iniciado"
|
msgstr "{config.PROJECT_NAME} | entre em contato conosco iniciado"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Confirmação do pedido"
|
msgstr "{config.PROJECT_NAME} | Confirmação do pedido"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Pedido entregue"
|
msgstr "{config.PROJECT_NAME} | Pedido entregue"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode granted"
|
msgstr "{config.PROJECT_NAME} | promocode granted"
|
||||||
|
|
@ -2962,7 +2966,7 @@ msgstr ""
|
||||||
"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema"
|
"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema"
|
||||||
" de filtragem do Django para consultar dados."
|
" de filtragem do Django para consultar dados."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2981,7 +2985,7 @@ msgstr ""
|
||||||
"específica que está sendo executada e impõe as permissões de acordo com a "
|
"específica que está sendo executada e impõe as permissões de acordo com a "
|
||||||
"interação com os dados do pedido."
|
"interação com os dados do pedido."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2996,11 +3000,11 @@ msgstr ""
|
||||||
"fornece uma ação detalhada para lidar com feedback sobre instâncias de "
|
"fornece uma ação detalhada para lidar com feedback sobre instâncias de "
|
||||||
"OrderProduct"
|
"OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Gerencia operações relacionadas a imagens de produtos no aplicativo."
|
msgstr "Gerencia operações relacionadas a imagens de produtos no aplicativo."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3008,15 +3012,15 @@ msgstr ""
|
||||||
"Gerencia a recuperação e o manuseio de instâncias de PromoCode por meio de "
|
"Gerencia a recuperação e o manuseio de instâncias de PromoCode por meio de "
|
||||||
"várias ações de API."
|
"várias ações de API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Representa um conjunto de visualizações para gerenciar promoções."
|
msgstr "Representa um conjunto de visualizações para gerenciar promoções."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Trata de operações relacionadas a dados de estoque no sistema."
|
msgstr "Trata de operações relacionadas a dados de estoque no sistema."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3035,7 +3039,7 @@ msgstr ""
|
||||||
"possam gerenciar suas próprias listas de desejos, a menos que sejam "
|
"possam gerenciar suas próprias listas de desejos, a menos que sejam "
|
||||||
"concedidas permissões explícitas."
|
"concedidas permissões explícitas."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3050,12 +3054,12 @@ msgstr ""
|
||||||
"substituições de serializadores e tratamento de permissões com base no "
|
"substituições de serializadores e tratamento de permissões com base no "
|
||||||
"contexto da solicitação."
|
"contexto da solicitação."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Erro de geocodificação: {e}"
|
msgstr "Erro de geocodificação: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Modificat"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Când a fost editat obiectul ultima dată"
|
msgstr "Când a fost editat obiectul ultima dată"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Traduceri"
|
msgstr "Traduceri"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Generalități"
|
msgstr "Generalități"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relații"
|
msgstr "Relații"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "informații suplimentare"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadate"
|
msgstr "Metadate"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Timestamps"
|
msgstr "Timestamps"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Activați %(verbose_name_plural)s selectat"
|
msgstr "Activați %(verbose_name_plural)s selectat"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Articolele selectate au fost activate!"
|
msgstr "Articolele selectate au fost activate!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Dezactivați %(verbose_name_plural)s selectat"
|
msgstr "Dezactivați %(verbose_name_plural)s selectat"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Articolele selectate au fost dezactivate!"
|
msgstr "Articolele selectate au fost dezactivate!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Atribut Valoare"
|
msgstr "Atribut Valoare"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Valori ale atributului"
|
msgstr "Valori ale atributului"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Imagine"
|
msgstr "Imagine"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Imagini"
|
msgstr "Imagini"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stoc"
|
msgstr "Stoc"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stocuri"
|
msgstr "Stocuri"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Comanda Produs"
|
msgstr "Comanda Produs"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Comandați produse"
|
msgstr "Comandați produse"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Copii"
|
msgstr "Copii"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Configurare"
|
msgstr "Configurare"
|
||||||
|
|
||||||
|
|
@ -747,7 +751,7 @@ msgstr "ștergeți o relație comandă-produs"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs"
|
msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Nu a fost furnizat niciun termen de căutare."
|
msgstr "Nu a fost furnizat niciun termen de căutare."
|
||||||
|
|
||||||
|
|
@ -923,7 +927,7 @@ msgstr ""
|
||||||
"Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!"
|
"Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}"
|
msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -1001,7 +1005,7 @@ msgstr "Șirul de adrese original furnizat de utilizator"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} nu există: {uuid}!"
|
msgstr "{name} nu există: {uuid}!"
|
||||||
|
|
@ -2722,22 +2726,22 @@ msgstr "Sunt necesare atât datele, cât și timpul de așteptare"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Valoare timeout invalidă, trebuie să fie între 0 și 216000 secunde"
|
msgstr "Valoare timeout invalidă, trebuie să fie între 0 și 216000 secunde"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | contactați-ne inițiat"
|
msgstr "{config.PROJECT_NAME} | contactați-ne inițiat"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Confirmarea comenzii"
|
msgstr "{config.PROJECT_NAME} | Confirmarea comenzii"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Livrarea comenzii"
|
msgstr "{config.PROJECT_NAME} | Livrarea comenzii"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode acordat"
|
msgstr "{config.PROJECT_NAME} | promocode acordat"
|
||||||
|
|
@ -2989,7 +2993,7 @@ msgstr ""
|
||||||
"Feedback accesibile. Aceasta extinde clasa de bază `EvibesViewSet` și "
|
"Feedback accesibile. Aceasta extinde clasa de bază `EvibesViewSet` și "
|
||||||
"utilizează sistemul de filtrare Django pentru interogarea datelor."
|
"utilizează sistemul de filtrare Django pentru interogarea datelor."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -3009,7 +3013,7 @@ msgstr ""
|
||||||
"de acțiunea specifică efectuată și aplică permisiunile corespunzătoare în "
|
"de acțiunea specifică efectuată și aplică permisiunile corespunzătoare în "
|
||||||
"timpul interacțiunii cu datele comenzii."
|
"timpul interacțiunii cu datele comenzii."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3024,12 +3028,12 @@ msgstr ""
|
||||||
"solicitată. În plus, oferă o acțiune detaliată pentru gestionarea feedback-"
|
"solicitată. În plus, oferă o acțiune detaliată pentru gestionarea feedback-"
|
||||||
"ului privind instanțele OrderProduct"
|
"ului privind instanțele OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestionează operațiunile legate de imaginile produselor din aplicație."
|
"Gestionează operațiunile legate de imaginile produselor din aplicație."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3037,16 +3041,16 @@ msgstr ""
|
||||||
"Gestionează recuperarea și gestionarea instanțelor PromoCode prin diverse "
|
"Gestionează recuperarea și gestionarea instanțelor PromoCode prin diverse "
|
||||||
"acțiuni API."
|
"acțiuni API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Reprezintă un set de vizualizări pentru gestionarea promoțiilor."
|
msgstr "Reprezintă un set de vizualizări pentru gestionarea promoțiilor."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestionează operațiunile legate de datele privind stocurile din sistem."
|
"Gestionează operațiunile legate de datele privind stocurile din sistem."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3065,7 +3069,7 @@ msgstr ""
|
||||||
"utilizatorii își pot gestiona doar propriile liste de dorințe, cu excepția "
|
"utilizatorii își pot gestiona doar propriile liste de dorințe, cu excepția "
|
||||||
"cazului în care sunt acordate permisiuni explicite."
|
"cazului în care sunt acordate permisiuni explicite."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3080,12 +3084,12 @@ msgstr ""
|
||||||
"serializatorului și gestionarea permisiunilor în funcție de contextul "
|
"serializatorului și gestionarea permisiunilor în funcție de contextul "
|
||||||
"cererii."
|
"cererii."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Eroare de geocodare: {e}"
|
msgstr "Eroare de geocodare: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Модифицированный"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Когда объект был отредактирован в последний раз"
|
msgstr "Когда объект был отредактирован в последний раз"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Переводы"
|
msgstr "Переводы"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Общие сведения"
|
msgstr "Общие сведения"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Отношения"
|
msgstr "Отношения"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "дополнительная информация"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Метаданные"
|
msgstr "Метаданные"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Временные метки"
|
msgstr "Временные метки"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Активировать выбранный %(verbose_name_plural)s"
|
msgstr "Активировать выбранный %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Выбранные сущности активированы!"
|
msgstr "Выбранные сущности активированы!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Деактивировать выбранный %(verbose_name_plural)s"
|
msgstr "Деактивировать выбранный %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Выбранные сущности были деактивированы!"
|
msgstr "Выбранные сущности были деактивированы!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Значение атрибута"
|
msgstr "Значение атрибута"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Значения атрибутов"
|
msgstr "Значения атрибутов"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Изображение"
|
msgstr "Изображение"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Изображения"
|
msgstr "Изображения"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Наличие"
|
msgstr "Наличие"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Наличия"
|
msgstr "Наличия"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Заказанный товар"
|
msgstr "Заказанный товар"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Заказанные товары"
|
msgstr "Заказанные товары"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Дети"
|
msgstr "Дети"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Конфигурация"
|
msgstr "Конфигурация"
|
||||||
|
|
||||||
|
|
@ -746,7 +750,7 @@ msgstr "удалить отношение \"заказ-продукт"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "добавлять или удалять отзывы о связи заказ-продукт"
|
msgstr "добавлять или удалять отзывы о связи заказ-продукт"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Поисковый запрос не предоставлен."
|
msgstr "Поисковый запрос не предоставлен."
|
||||||
|
|
||||||
|
|
@ -923,7 +927,7 @@ msgstr ""
|
||||||
"варианты!"
|
"варианты!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}"
|
msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -1001,7 +1005,7 @@ msgstr "Оригинальная строка адреса, предоставл
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} не существует: {uuid}!"
|
msgstr "{name} не существует: {uuid}!"
|
||||||
|
|
@ -2711,22 +2715,22 @@ msgstr ""
|
||||||
"Неверное значение тайм-аута, оно должно находиться в диапазоне от 0 до "
|
"Неверное значение тайм-аута, оно должно находиться в диапазоне от 0 до "
|
||||||
"216000 секунд"
|
"216000 секунд"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | свяжитесь с нами по инициативе"
|
msgstr "{config.PROJECT_NAME} | свяжитесь с нами по инициативе"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Подтверждение заказа"
|
msgstr "{config.PROJECT_NAME} | Подтверждение заказа"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Заказ доставлен"
|
msgstr "{config.PROJECT_NAME} | Заказ доставлен"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | Промокод предоставлен"
|
msgstr "{config.PROJECT_NAME} | Промокод предоставлен"
|
||||||
|
|
@ -2977,7 +2981,7 @@ msgstr ""
|
||||||
"доступа. Он расширяет базовый `EvibesViewSet` и использует систему "
|
"доступа. Он расширяет базовый `EvibesViewSet` и использует систему "
|
||||||
"фильтрации Django для запроса данных."
|
"фильтрации Django для запроса данных."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2998,7 +3002,7 @@ msgstr ""
|
||||||
"соответствующим образом устанавливает разрешения при взаимодействии с "
|
"соответствующим образом устанавливает разрешения при взаимодействии с "
|
||||||
"данными заказа."
|
"данными заказа."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3013,12 +3017,12 @@ msgstr ""
|
||||||
" от запрашиваемого действия. Кроме того, он предоставляет подробное действие"
|
" от запрашиваемого действия. Кроме того, он предоставляет подробное действие"
|
||||||
" для обработки отзывов об экземплярах OrderProduct"
|
" для обработки отзывов об экземплярах OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Управляет операциями, связанными с изображениями продуктов в приложении."
|
"Управляет операциями, связанными с изображениями продуктов в приложении."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3026,16 +3030,16 @@ msgstr ""
|
||||||
"Управляет получением и обработкой экземпляров PromoCode с помощью различных "
|
"Управляет получением и обработкой экземпляров PromoCode с помощью различных "
|
||||||
"действий API."
|
"действий API."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Представляет собой набор представлений для управления рекламными акциями."
|
"Представляет собой набор представлений для управления рекламными акциями."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Выполняет операции, связанные с данными о запасах в системе."
|
msgstr "Выполняет операции, связанные с данными о запасах в системе."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3053,7 +3057,7 @@ msgstr ""
|
||||||
"проверка прав доступа гарантирует, что пользователи смогут управлять только "
|
"проверка прав доступа гарантирует, что пользователи смогут управлять только "
|
||||||
"своими списками желаний, если не предоставлены явные права."
|
"своими списками желаний, если не предоставлены явные права."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3068,12 +3072,12 @@ msgstr ""
|
||||||
"методов HTTP, переопределение сериализатора и обработку разрешений в "
|
"методов HTTP, переопределение сериализатора и обработку разрешений в "
|
||||||
"зависимости от контекста запроса."
|
"зависимости от контекста запроса."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Ошибка геокодирования: {e}"
|
msgstr "Ошибка геокодирования: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr "Modifierad"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "När objektet senast redigerades"
|
msgstr "När objektet senast redigerades"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Översättningar"
|
msgstr "Översättningar"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Allmänt"
|
msgstr "Allmänt"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Relationer"
|
msgstr "Relationer"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "Ytterligare information"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Tidsstämplar"
|
msgstr "Tidsstämplar"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Aktivera vald %(verbose_name_plural)s."
|
msgstr "Aktivera vald %(verbose_name_plural)s."
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Valda artiklar har aktiverats!"
|
msgstr "Valda artiklar har aktiverats!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Avaktivera vald %(verbose_name_plural)s."
|
msgstr "Avaktivera vald %(verbose_name_plural)s."
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Valda objekt har avaktiverats!"
|
msgstr "Valda objekt har avaktiverats!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Attributvärde"
|
msgstr "Attributvärde"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Attributets värden"
|
msgstr "Attributets värden"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Bild"
|
msgstr "Bild"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Bilder"
|
msgstr "Bilder"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stock"
|
msgstr "Stock"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stocks"
|
msgstr "Stocks"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Beställ produkt"
|
msgstr "Beställ produkt"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Beställ produkter"
|
msgstr "Beställ produkter"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Barn och ungdomar"
|
msgstr "Barn och ungdomar"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfig"
|
msgstr "Konfig"
|
||||||
|
|
||||||
|
|
@ -728,7 +732,7 @@ msgstr "ta bort en order-produktrelation"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "lägga till eller ta bort feedback om en order-produktrelation"
|
msgstr "lägga till eller ta bort feedback om en order-produktrelation"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Ingen sökterm angavs."
|
msgstr "Ingen sökterm angavs."
|
||||||
|
|
||||||
|
|
@ -905,7 +909,7 @@ msgstr ""
|
||||||
"uteslutande!"
|
"uteslutande!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "Fel typ kom från order.buy()-metoden: {type(instance)!s}"
|
msgstr "Fel typ kom från order.buy()-metoden: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -982,7 +986,7 @@ msgstr "Originaladresssträng som tillhandahålls av användaren"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} existerar inte: {uuid}!"
|
msgstr "{name} existerar inte: {uuid}!"
|
||||||
|
|
@ -2684,22 +2688,22 @@ msgstr "Både data och timeout krävs"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Ogiltigt timeout-värde, det måste vara mellan 0 och 216000 sekunder"
|
msgstr "Ogiltigt timeout-värde, det måste vara mellan 0 och 216000 sekunder"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | kontakta oss initierad"
|
msgstr "{config.PROJECT_NAME} | kontakta oss initierad"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Orderbekräftelse"
|
msgstr "{config.PROJECT_NAME} | Orderbekräftelse"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Beställning levererad"
|
msgstr "{config.PROJECT_NAME} | Beställning levererad"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | promocode beviljad"
|
msgstr "{config.PROJECT_NAME} | promocode beviljad"
|
||||||
|
|
@ -2944,7 +2948,7 @@ msgstr ""
|
||||||
"basen `EvibesViewSet` och använder Djangos filtreringssystem för att fråga "
|
"basen `EvibesViewSet` och använder Djangos filtreringssystem för att fråga "
|
||||||
"data."
|
"data."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2963,7 +2967,7 @@ msgstr ""
|
||||||
"åtgärd som utförs och verkställer behörigheter i enlighet med detta vid "
|
"åtgärd som utförs och verkställer behörigheter i enlighet med detta vid "
|
||||||
"interaktion med orderdata."
|
"interaktion med orderdata."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2978,11 +2982,11 @@ msgstr ""
|
||||||
"åtgärden. Dessutom innehåller den en detaljerad åtgärd för att hantera "
|
"åtgärden. Dessutom innehåller den en detaljerad åtgärd för att hantera "
|
||||||
"feedback på OrderProduct-instanser"
|
"feedback på OrderProduct-instanser"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Hanterar åtgärder relaterade till produktbilder i applikationen."
|
msgstr "Hanterar åtgärder relaterade till produktbilder i applikationen."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -2990,15 +2994,15 @@ msgstr ""
|
||||||
"Hanterar hämtning och hantering av PromoCode-instanser genom olika API-"
|
"Hanterar hämtning och hantering av PromoCode-instanser genom olika API-"
|
||||||
"åtgärder."
|
"åtgärder."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Representerar en vyuppsättning för hantering av kampanjer."
|
msgstr "Representerar en vyuppsättning för hantering av kampanjer."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Hanterar åtgärder relaterade till lagerdata i systemet."
|
msgstr "Hanterar åtgärder relaterade till lagerdata i systemet."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3016,7 +3020,7 @@ msgstr ""
|
||||||
"integrerade för att säkerställa att användare endast kan hantera sina egna "
|
"integrerade för att säkerställa att användare endast kan hantera sina egna "
|
||||||
"önskelistor om inte uttryckliga behörigheter beviljas."
|
"önskelistor om inte uttryckliga behörigheter beviljas."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3030,12 +3034,12 @@ msgstr ""
|
||||||
"innehåller specialiserade beteenden för olika HTTP-metoder, serializer-"
|
"innehåller specialiserade beteenden för olika HTTP-metoder, serializer-"
|
||||||
"överskrivningar och behörighetshantering baserat på förfrågningskontexten."
|
"överskrivningar och behörighetshantering baserat på förfrågningskontexten."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Fel i geokodningen: {e}"
|
msgstr "Fel i geokodningen: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -49,82 +49,86 @@ msgstr "แก้ไขแล้ว"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "เมื่อครั้งล่าสุดที่มีการแก้ไขวัตถุ"
|
msgstr "เมื่อครั้งล่าสุดที่มีการแก้ไขวัตถุ"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "การแปล"
|
msgstr "การแปล"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "ทั่วไป"
|
msgstr "ทั่วไป"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "ความสัมพันธ์"
|
msgstr "ความสัมพันธ์"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "ข้อมูลเพิ่มเติม"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "เมตาดาตา"
|
msgstr "เมตาดาตา"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "เวลาที่บันทึก"
|
msgstr "เวลาที่บันทึก"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "เปิดใช้งานที่เลือกไว้ %(verbose_name_plural)s"
|
msgstr "เปิดใช้งานที่เลือกไว้ %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "รายการที่เลือกไว้ได้รับการเปิดใช้งานแล้ว!"
|
msgstr "รายการที่เลือกไว้ได้รับการเปิดใช้งานแล้ว!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "ยกเลิกการใช้งานที่เลือกไว้ %(verbose_name_plural)s"
|
msgstr "ยกเลิกการใช้งานที่เลือกไว้ %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "รายการที่เลือกถูกยกเลิกการใช้งานแล้ว!"
|
msgstr "รายการที่เลือกถูกยกเลิกการใช้งานแล้ว!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "ค่าคุณสมบัติ"
|
msgstr "ค่าคุณสมบัติ"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "ค่าของแอตทริบิวต์"
|
msgstr "ค่าของแอตทริบิวต์"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "ภาพ"
|
msgstr "ภาพ"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "รูปภาพ"
|
msgstr "รูปภาพ"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "สต็อก"
|
msgstr "สต็อก"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "หุ้น"
|
msgstr "หุ้น"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "สั่งซื้อสินค้า"
|
msgstr "สั่งซื้อสินค้า"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "สั่งซื้อสินค้า"
|
msgstr "สั่งซื้อสินค้า"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "เด็ก"
|
msgstr "เด็ก"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "การกำหนดค่า"
|
msgstr "การกำหนดค่า"
|
||||||
|
|
||||||
|
|
@ -723,7 +727,7 @@ msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์"
|
"เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "ไม่พบคำค้นหา"
|
msgstr "ไม่พบคำค้นหา"
|
||||||
|
|
||||||
|
|
@ -897,7 +901,7 @@ msgstr ""
|
||||||
"กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!"
|
"กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "ประเภทไม่ถูกต้องมาจากเมธอด order.buy(): {type(instance)!s}"
|
msgstr "ประเภทไม่ถูกต้องมาจากเมธอด order.buy(): {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -974,7 +978,7 @@ msgstr "สตริงที่อยู่ต้นฉบับที่ผู
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} ไม่พบ: {uuid}!"
|
msgstr "{name} ไม่พบ: {uuid}!"
|
||||||
|
|
@ -2647,22 +2651,22 @@ msgstr "จำเป็นต้องมีทั้งข้อมูลแล
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "ค่าหมดเวลาไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 216000 วินาที"
|
msgstr "ค่าหมดเวลาไม่ถูกต้อง ต้องอยู่ระหว่าง 0 ถึง 216000 วินาที"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | ติดต่อเรา เริ่มต้น"
|
msgstr "{config.PROJECT_NAME} | ติดต่อเรา เริ่มต้น"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | ยืนยันการสั่งซื้อ"
|
msgstr "{config.PROJECT_NAME} | ยืนยันการสั่งซื้อ"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | จัดส่งเรียบร้อย"
|
msgstr "{config.PROJECT_NAME} | จัดส่งเรียบร้อย"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | รหัสโปรโมชั่นได้รับแล้ว"
|
msgstr "{config.PROJECT_NAME} | รหัสโปรโมชั่นได้รับแล้ว"
|
||||||
|
|
@ -2907,7 +2911,7 @@ msgstr ""
|
||||||
" และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน "
|
" และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน "
|
||||||
"`EvibesViewSet` และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล"
|
"`EvibesViewSet` และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล"
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2925,7 +2929,7 @@ msgstr ""
|
||||||
"และการดึงคำสั่งซื้อที่รอดำเนินการของผู้ใช้ที่เข้าสู่ระบบปัจจุบัน ViewSet "
|
"และการดึงคำสั่งซื้อที่รอดำเนินการของผู้ใช้ที่เข้าสู่ระบบปัจจุบัน ViewSet "
|
||||||
"ใช้ตัวแปลงข้อมูลหลายแบบตามการกระทำที่เฉพาะเจาะจงและบังคับใช้สิทธิ์การเข้าถึงอย่างเหมาะสมขณะโต้ตอบกับข้อมูลคำสั่งซื้อ"
|
"ใช้ตัวแปลงข้อมูลหลายแบบตามการกระทำที่เฉพาะเจาะจงและบังคับใช้สิทธิ์การเข้าถึงอย่างเหมาะสมขณะโต้ตอบกับข้อมูลคำสั่งซื้อ"
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2940,26 +2944,26 @@ msgstr ""
|
||||||
"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ"
|
"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ"
|
||||||
" OrderProduct"
|
" OrderProduct"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "จัดการการดำเนินงานที่เกี่ยวข้องกับภาพผลิตภัณฑ์ในแอปพลิเคชัน"
|
msgstr "จัดการการดำเนินงานที่เกี่ยวข้องกับภาพผลิตภัณฑ์ในแอปพลิเคชัน"
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ"
|
"จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ"
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "แสดงมุมมองที่ตั้งค่าไว้สำหรับการจัดการโปรโมชั่น"
|
msgstr "แสดงมุมมองที่ตั้งค่าไว้สำหรับการจัดการโปรโมชั่น"
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "จัดการการดำเนินงานที่เกี่ยวข้องกับข้อมูลสต็อกในระบบ"
|
msgstr "จัดการการดำเนินงานที่เกี่ยวข้องกับข้อมูลสต็อกในระบบ"
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2977,7 +2981,7 @@ msgstr ""
|
||||||
"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น"
|
"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น"
|
||||||
" เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน"
|
" เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน"
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2991,12 +2995,12 @@ msgstr ""
|
||||||
"รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล "
|
"รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล "
|
||||||
"และการจัดการสิทธิ์ตามบริบทของคำขอ"
|
"และการจัดการสิทธิ์ตามบริบทของคำขอ"
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "ข้อผิดพลาดในการแปลงพิกัดภูมิศาสตร์: {e}"
|
msgstr "ข้อผิดพลาดในการแปลงพิกัดภูมิศาสตร์: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Değiştirilmiş"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Nesne en son ne zaman düzenlendi"
|
msgstr "Nesne en son ne zaman düzenlendi"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Çeviriler"
|
msgstr "Çeviriler"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Genel"
|
msgstr "Genel"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "İlişkiler"
|
msgstr "İlişkiler"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "EK BİLGİ"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Metadata"
|
msgstr "Metadata"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Zaman Damgaları"
|
msgstr "Zaman Damgaları"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Seçili %(verbose_name_plural)s'ı etkinleştirin"
|
msgstr "Seçili %(verbose_name_plural)s'ı etkinleştirin"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Seçilen öğeler etkinleştirildi!"
|
msgstr "Seçilen öğeler etkinleştirildi!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Seçili %(verbose_name_plural)s'ı devre dışı bırak"
|
msgstr "Seçili %(verbose_name_plural)s'ı devre dışı bırak"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Seçilen öğeler devre dışı bırakıldı!"
|
msgstr "Seçilen öğeler devre dışı bırakıldı!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Öznitelik Değeri"
|
msgstr "Öznitelik Değeri"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Öznitelik Değerleri"
|
msgstr "Öznitelik Değerleri"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Resim"
|
msgstr "Resim"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Görüntüler"
|
msgstr "Görüntüler"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Stok"
|
msgstr "Stok"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Stoklar"
|
msgstr "Stoklar"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Ürün Siparişi"
|
msgstr "Ürün Siparişi"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Sipariş Ürünleri"
|
msgstr "Sipariş Ürünleri"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Çocuklar"
|
msgstr "Çocuklar"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Konfigürasyon"
|
msgstr "Konfigürasyon"
|
||||||
|
|
||||||
|
|
@ -743,7 +747,7 @@ msgstr "sipariş-ürün ilişkisini silme"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "sipariş-ürün ilişkisine geri bildirim ekleme veya kaldırma"
|
msgstr "sipariş-ürün ilişkisine geri bildirim ekleme veya kaldırma"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Arama terimi belirtilmemiştir."
|
msgstr "Arama terimi belirtilmemiştir."
|
||||||
|
|
||||||
|
|
@ -919,7 +923,7 @@ msgstr ""
|
||||||
" dışlayan bilgiler!"
|
" dışlayan bilgiler!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "order.buy() metodundan yanlış tip geldi: {type(instance)!s}"
|
msgstr "order.buy() metodundan yanlış tip geldi: {type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -997,7 +1001,7 @@ msgstr "Kullanıcı tarafından sağlanan orijinal adres dizesi"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} mevcut değil: {uuid}!"
|
msgstr "{name} mevcut değil: {uuid}!"
|
||||||
|
|
@ -2695,22 +2699,22 @@ msgstr "Hem veri hem de zaman aşımı gereklidir"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "Geçersiz zaman aşımı değeri, 0 ile 216000 saniye arasında olmalıdır"
|
msgstr "Geçersiz zaman aşımı değeri, 0 ile 216000 saniye arasında olmalıdır"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | bi̇zi̇mle i̇leti̇şi̇me geçi̇n"
|
msgstr "{config.PROJECT_NAME} | bi̇zi̇mle i̇leti̇şi̇me geçi̇n"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Sipariş Onayı"
|
msgstr "{config.PROJECT_NAME} | Sipariş Onayı"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Sipariş Teslim Edildi"
|
msgstr "{config.PROJECT_NAME} | Sipariş Teslim Edildi"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | verilen promosyon kodu"
|
msgstr "{config.PROJECT_NAME} | verilen promosyon kodu"
|
||||||
|
|
@ -2960,7 +2964,7 @@ msgstr ""
|
||||||
"genişletir ve verileri sorgulamak için Django'nun filtreleme sistemini "
|
"genişletir ve verileri sorgulamak için Django'nun filtreleme sistemini "
|
||||||
"kullanır."
|
"kullanır."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2979,7 +2983,7 @@ msgstr ""
|
||||||
"birden fazla serileştirici kullanır ve sipariş verileriyle etkileşime "
|
"birden fazla serileştirici kullanır ve sipariş verileriyle etkileşime "
|
||||||
"girerken izinleri buna göre zorlar."
|
"girerken izinleri buna göre zorlar."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2993,11 +2997,11 @@ msgstr ""
|
||||||
" serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili "
|
" serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili "
|
||||||
"geri bildirimleri işlemek için ayrıntılı bir eylem sağlar"
|
"geri bildirimleri işlemek için ayrıntılı bir eylem sağlar"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Uygulamadaki Ürün görselleri ile ilgili işlemleri yönetir."
|
msgstr "Uygulamadaki Ürün görselleri ile ilgili işlemleri yönetir."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3005,15 +3009,15 @@ msgstr ""
|
||||||
"Çeşitli API eylemleri aracılığıyla PromoCode örneklerinin alınmasını ve "
|
"Çeşitli API eylemleri aracılığıyla PromoCode örneklerinin alınmasını ve "
|
||||||
"işlenmesini yönetir."
|
"işlenmesini yönetir."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Promosyonları yönetmek için bir görünüm kümesini temsil eder."
|
msgstr "Promosyonları yönetmek için bir görünüm kümesini temsil eder."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Sistemdeki Stok verileri ile ilgili işlemleri yürütür."
|
msgstr "Sistemdeki Stok verileri ile ilgili işlemleri yürütür."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3031,7 +3035,7 @@ msgstr ""
|
||||||
"verilmediği sürece kullanıcıların yalnızca kendi istek listelerini "
|
"verilmediği sürece kullanıcıların yalnızca kendi istek listelerini "
|
||||||
"yönetebilmelerini sağlamak için entegre edilmiştir."
|
"yönetebilmelerini sağlamak için entegre edilmiştir."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3045,12 +3049,12 @@ msgstr ""
|
||||||
"serileştirici geçersiz kılmaları ve istek bağlamına dayalı izin işleme için "
|
"serileştirici geçersiz kılmaları ve istek bağlamına dayalı izin işleme için "
|
||||||
"özel davranışlar içerir."
|
"özel davranışlar içerir."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Coğrafi kodlama hatası: {e}"
|
msgstr "Coğrafi kodlama hatası: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -51,82 +51,86 @@ msgstr "Đã sửa đổi"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "Khi đối tượng được chỉnh sửa lần cuối"
|
msgstr "Khi đối tượng được chỉnh sửa lần cuối"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "Dịch thuật"
|
msgstr "Dịch thuật"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "Tổng quát"
|
msgstr "Tổng quát"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "Quan hệ"
|
msgstr "Quan hệ"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "Thông tin bổ sung"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "Siêu dữ liệu"
|
msgstr "Siêu dữ liệu"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "Dấu thời gian"
|
msgstr "Dấu thời gian"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "Kích hoạt %(verbose_name_plural)s đã chọn"
|
msgstr "Kích hoạt %(verbose_name_plural)s đã chọn"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "Các mục đã được chọn đã được kích hoạt!"
|
msgstr "Các mục đã được chọn đã được kích hoạt!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "Vô hiệu hóa các mục đã chọn %(verbose_name_plural)s"
|
msgstr "Vô hiệu hóa các mục đã chọn %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "Các mục đã chọn đã bị vô hiệu hóa!"
|
msgstr "Các mục đã chọn đã bị vô hiệu hóa!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "Giá trị thuộc tính"
|
msgstr "Giá trị thuộc tính"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "Giá trị thuộc tính"
|
msgstr "Giá trị thuộc tính"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "Hình ảnh"
|
msgstr "Hình ảnh"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "Hình ảnh"
|
msgstr "Hình ảnh"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "Cổ phiếu"
|
msgstr "Cổ phiếu"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "Cổ phiếu"
|
msgstr "Cổ phiếu"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "Đặt hàng sản phẩm"
|
msgstr "Đặt hàng sản phẩm"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "Đặt hàng sản phẩm"
|
msgstr "Đặt hàng sản phẩm"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "Trẻ em"
|
msgstr "Trẻ em"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "Cấu hình"
|
msgstr "Cấu hình"
|
||||||
|
|
||||||
|
|
@ -749,7 +753,7 @@ msgstr "Xóa mối quan hệ giữa đơn hàng và sản phẩm"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "Thêm hoặc xóa phản hồi về mối quan hệ giữa đơn hàng và sản phẩm"
|
msgstr "Thêm hoặc xóa phản hồi về mối quan hệ giữa đơn hàng và sản phẩm"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "Không có từ khóa tìm kiếm được cung cấp."
|
msgstr "Không có từ khóa tìm kiếm được cung cấp."
|
||||||
|
|
||||||
|
|
@ -925,7 +929,7 @@ msgstr ""
|
||||||
"trường này là tương hỗ!"
|
"trường này là tương hỗ!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}"
|
"Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}"
|
||||||
|
|
@ -1005,7 +1009,7 @@ msgstr "Dòng địa chỉ gốc do người dùng cung cấp"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} không tồn tại: {uuid}!"
|
msgstr "{name} không tồn tại: {uuid}!"
|
||||||
|
|
@ -2708,22 +2712,22 @@ msgstr ""
|
||||||
"Giá trị thời gian chờ không hợp lệ, nó phải nằm trong khoảng từ 0 đến "
|
"Giá trị thời gian chờ không hợp lệ, nó phải nằm trong khoảng từ 0 đến "
|
||||||
"216.000 giây."
|
"216.000 giây."
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME} | Liên hệ với chúng tôi đã được khởi tạo"
|
msgstr "{config.PROJECT_NAME} | Liên hệ với chúng tôi đã được khởi tạo"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME} | Xác nhận đơn hàng"
|
msgstr "{config.PROJECT_NAME} | Xác nhận đơn hàng"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | Đơn hàng đã được giao"
|
msgstr "{config.PROJECT_NAME} | Đơn hàng đã được giao"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | mã khuyến mãi được cấp"
|
msgstr "{config.PROJECT_NAME} | mã khuyến mãi được cấp"
|
||||||
|
|
@ -2975,7 +2979,7 @@ msgstr ""
|
||||||
"với các đối tượng Feedback có thể truy cập. Nó kế thừa từ lớp cơ sở "
|
"với các đối tượng Feedback có thể truy cập. Nó kế thừa từ lớp cơ sở "
|
||||||
"`EvibesViewSet` và sử dụng hệ thống lọc của Django để truy vấn dữ liệu."
|
"`EvibesViewSet` và sử dụng hệ thống lọc của Django để truy vấn dữ liệu."
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2994,7 +2998,7 @@ msgstr ""
|
||||||
"serializer khác nhau tùy thuộc vào hành động cụ thể đang được thực hiện và "
|
"serializer khác nhau tùy thuộc vào hành động cụ thể đang được thực hiện và "
|
||||||
"áp dụng quyền truy cập tương ứng khi tương tác với dữ liệu đơn hàng."
|
"áp dụng quyền truy cập tương ứng khi tương tác với dữ liệu đơn hàng."
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -3009,11 +3013,11 @@ msgstr ""
|
||||||
"hành động được yêu cầu. Ngoài ra, nó cung cấp một hành động chi tiết để xử "
|
"hành động được yêu cầu. Ngoài ra, nó cung cấp một hành động chi tiết để xử "
|
||||||
"lý phản hồi cho các thực thể OrderProduct."
|
"lý phản hồi cho các thực thể OrderProduct."
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "Quản lý các hoạt động liên quan đến hình ảnh sản phẩm trong ứng dụng."
|
msgstr "Quản lý các hoạt động liên quan đến hình ảnh sản phẩm trong ứng dụng."
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
|
|
@ -3021,15 +3025,15 @@ msgstr ""
|
||||||
"Quản lý việc truy xuất và xử lý các thực thể PromoCode thông qua các hành "
|
"Quản lý việc truy xuất và xử lý các thực thể PromoCode thông qua các hành "
|
||||||
"động API khác nhau."
|
"động API khác nhau."
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "Đại diện cho một bộ xem để quản lý các chương trình khuyến mãi."
|
msgstr "Đại diện cho một bộ xem để quản lý các chương trình khuyến mãi."
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "Quản lý các hoạt động liên quan đến dữ liệu kho trong hệ thống."
|
msgstr "Quản lý các hoạt động liên quan đến dữ liệu kho trong hệ thống."
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -3048,7 +3052,7 @@ msgstr ""
|
||||||
" bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình "
|
" bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình "
|
||||||
"trừ khi được cấp quyền rõ ràng."
|
"trừ khi được cấp quyền rõ ràng."
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -3062,12 +3066,12 @@ msgstr ""
|
||||||
"chuyên biệt cho các phương thức HTTP khác nhau, các tùy chỉnh serializer và "
|
"chuyên biệt cho các phương thức HTTP khác nhau, các tùy chỉnh serializer và "
|
||||||
"xử lý quyền truy cập dựa trên bối cảnh yêu cầu."
|
"xử lý quyền truy cập dựa trên bối cảnh yêu cầu."
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "Lỗi địa chỉ địa lý: {e}"
|
msgstr "Lỗi địa chỉ địa lý: {e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -47,82 +47,86 @@ msgstr "改装"
|
||||||
msgid "when the object was last modified"
|
msgid "when the object was last modified"
|
||||||
msgstr "对象最后一次编辑的时间"
|
msgstr "对象最后一次编辑的时间"
|
||||||
|
|
||||||
#: core/admin.py:63
|
#: core/admin.py:68
|
||||||
msgid "translations"
|
msgid "translations"
|
||||||
msgstr "翻译"
|
msgstr "翻译"
|
||||||
|
|
||||||
#: core/admin.py:67
|
#: core/admin.py:72
|
||||||
msgid "general"
|
msgid "general"
|
||||||
msgstr "一般情况"
|
msgstr "一般情况"
|
||||||
|
|
||||||
#: core/admin.py:69
|
#: core/admin.py:74
|
||||||
msgid "relations"
|
msgid "relations"
|
||||||
msgstr "关系"
|
msgstr "关系"
|
||||||
|
|
||||||
#: core/admin.py:87
|
#: core/admin.py:76
|
||||||
|
msgid "additional info"
|
||||||
|
msgstr "其他信息"
|
||||||
|
|
||||||
|
#: core/admin.py:94
|
||||||
msgid "metadata"
|
msgid "metadata"
|
||||||
msgstr "元数据"
|
msgstr "元数据"
|
||||||
|
|
||||||
#: core/admin.py:94
|
#: core/admin.py:101
|
||||||
msgid "timestamps"
|
msgid "timestamps"
|
||||||
msgstr "时间戳"
|
msgstr "时间戳"
|
||||||
|
|
||||||
#: core/admin.py:109
|
#: core/admin.py:116
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "activate selected %(verbose_name_plural)s"
|
msgid "activate selected %(verbose_name_plural)s"
|
||||||
msgstr "激活选定的 %(verbose_name_plural)s"
|
msgstr "激活选定的 %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:114
|
#: core/admin.py:121
|
||||||
msgid "selected items have been activated."
|
msgid "selected items have been activated."
|
||||||
msgstr "所选项目已激活!"
|
msgstr "所选项目已激活!"
|
||||||
|
|
||||||
#: core/admin.py:120
|
#: core/admin.py:127
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "deactivate selected %(verbose_name_plural)s"
|
msgid "deactivate selected %(verbose_name_plural)s"
|
||||||
msgstr "停用选定的 %(verbose_name_plural)s"
|
msgstr "停用选定的 %(verbose_name_plural)s"
|
||||||
|
|
||||||
#: core/admin.py:125
|
#: core/admin.py:132
|
||||||
msgid "selected items have been deactivated."
|
msgid "selected items have been deactivated."
|
||||||
msgstr "选定项目已停用!"
|
msgstr "选定项目已停用!"
|
||||||
|
|
||||||
#: core/admin.py:137 core/graphene/object_types.py:609
|
#: core/admin.py:144 core/graphene/object_types.py:609
|
||||||
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
#: core/graphene/object_types.py:616 core/models.py:709 core/models.py:717
|
||||||
msgid "attribute value"
|
msgid "attribute value"
|
||||||
msgstr "属性值"
|
msgstr "属性值"
|
||||||
|
|
||||||
#: core/admin.py:138 core/graphene/object_types.py:75 core/models.py:718
|
#: core/admin.py:145 core/graphene/object_types.py:75 core/models.py:718
|
||||||
msgid "attribute values"
|
msgid "attribute values"
|
||||||
msgstr "属性值"
|
msgstr "属性值"
|
||||||
|
|
||||||
#: core/admin.py:146
|
#: core/admin.py:153
|
||||||
msgid "image"
|
msgid "image"
|
||||||
msgstr "图片"
|
msgstr "图片"
|
||||||
|
|
||||||
#: core/admin.py:147 core/graphene/object_types.py:501
|
#: core/admin.py:154 core/graphene/object_types.py:501
|
||||||
msgid "images"
|
msgid "images"
|
||||||
msgstr "图片"
|
msgstr "图片"
|
||||||
|
|
||||||
#: core/admin.py:155 core/models.py:467
|
#: core/admin.py:162 core/models.py:467
|
||||||
msgid "stock"
|
msgid "stock"
|
||||||
msgstr "库存"
|
msgstr "库存"
|
||||||
|
|
||||||
#: core/admin.py:156 core/graphene/object_types.py:663
|
#: core/admin.py:163 core/graphene/object_types.py:663
|
||||||
msgid "stocks"
|
msgid "stocks"
|
||||||
msgstr "股票"
|
msgstr "股票"
|
||||||
|
|
||||||
#: core/admin.py:166 core/models.py:1675
|
#: core/admin.py:173 core/models.py:1675
|
||||||
msgid "order product"
|
msgid "order product"
|
||||||
msgstr "订购产品"
|
msgstr "订购产品"
|
||||||
|
|
||||||
#: core/admin.py:167 core/graphene/object_types.py:416 core/models.py:1676
|
#: core/admin.py:174 core/graphene/object_types.py:416 core/models.py:1676
|
||||||
msgid "order products"
|
msgid "order products"
|
||||||
msgstr "订购产品"
|
msgstr "订购产品"
|
||||||
|
|
||||||
#: core/admin.py:180 core/admin.py:181
|
#: core/admin.py:187 core/admin.py:188
|
||||||
msgid "children"
|
msgid "children"
|
||||||
msgstr "儿童"
|
msgstr "儿童"
|
||||||
|
|
||||||
#: core/admin.py:566
|
#: core/admin.py:940
|
||||||
msgid "Config"
|
msgid "Config"
|
||||||
msgstr "配置"
|
msgstr "配置"
|
||||||
|
|
||||||
|
|
@ -687,7 +691,7 @@ msgstr "删除订单-产品关系"
|
||||||
msgid "add or remove feedback on an order–product relation"
|
msgid "add or remove feedback on an order–product relation"
|
||||||
msgstr "添加或删除订单与产品关系中的反馈信息"
|
msgstr "添加或删除订单与产品关系中的反馈信息"
|
||||||
|
|
||||||
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:498
|
#: core/elasticsearch/__init__.py:118 core/elasticsearch/__init__.py:499
|
||||||
msgid "no search term provided."
|
msgid "no search term provided."
|
||||||
msgstr "未提供搜索条件。"
|
msgstr "未提供搜索条件。"
|
||||||
|
|
||||||
|
|
@ -860,7 +864,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||||
msgstr "请提供 order_uuid 或 order_hr_id(互斥)!"
|
msgstr "请提供 order_uuid 或 order_hr_id(互斥)!"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
#: core/graphene/mutations.py:229 core/graphene/mutations.py:486
|
||||||
#: core/graphene/mutations.py:527 core/viewsets.py:679
|
#: core/graphene/mutations.py:527 core/viewsets.py:680
|
||||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||||
msgstr "order.buy() 方法中的类型有误:{type(instance)!s}"
|
msgstr "order.buy() 方法中的类型有误:{type(instance)!s}"
|
||||||
|
|
||||||
|
|
@ -936,7 +940,7 @@ msgstr "用户提供的原始地址字符串"
|
||||||
|
|
||||||
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
#: core/graphene/mutations.py:656 core/models.py:857 core/models.py:870
|
||||||
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
#: core/models.py:1289 core/models.py:1318 core/models.py:1343
|
||||||
#: core/viewsets.py:682
|
#: core/viewsets.py:683
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{name} does not exist: {uuid}"
|
msgid "{name} does not exist: {uuid}"
|
||||||
msgstr "{name} 不存在:{uuid}!"
|
msgstr "{name} 不存在:{uuid}!"
|
||||||
|
|
@ -2502,22 +2506,22 @@ msgstr "需要数据和超时"
|
||||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||||
msgstr "超时值无效,必须介于 0 和 216000 秒之间"
|
msgstr "超时值无效,必须介于 0 和 216000 秒之间"
|
||||||
|
|
||||||
#: core/utils/emailing.py:25
|
#: core/utils/emailing.py:27
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | contact us initiated"
|
msgid "{config.PROJECT_NAME} | contact us initiated"
|
||||||
msgstr "{config.PROJECT_NAME}| 联系我们"
|
msgstr "{config.PROJECT_NAME}| 联系我们"
|
||||||
|
|
||||||
#: core/utils/emailing.py:74
|
#: core/utils/emailing.py:73
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order confirmation"
|
msgid "{config.PROJECT_NAME} | order confirmation"
|
||||||
msgstr "{config.PROJECT_NAME}| 订单确认"
|
msgstr "{config.PROJECT_NAME}| 订单确认"
|
||||||
|
|
||||||
#: core/utils/emailing.py:109
|
#: core/utils/emailing.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | order delivered"
|
msgid "{config.PROJECT_NAME} | order delivered"
|
||||||
msgstr "{config.PROJECT_NAME} | 订单已送达"
|
msgstr "{config.PROJECT_NAME} | 订单已送达"
|
||||||
|
|
||||||
#: core/utils/emailing.py:197
|
#: core/utils/emailing.py:188
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "{config.PROJECT_NAME} | promocode granted"
|
msgid "{config.PROJECT_NAME} | promocode granted"
|
||||||
msgstr "{config.PROJECT_NAME} | 授予的促销代码"
|
msgstr "{config.PROJECT_NAME} | 授予的促销代码"
|
||||||
|
|
@ -2721,7 +2725,7 @@ msgstr ""
|
||||||
"处理反馈对象的视图集的表示。该类管理与反馈对象相关的操作,包括列出、筛选和检索详细信息。该视图集的目的是为不同的操作提供不同的序列化器,并对可访问的反馈对象实施基于权限的处理。它扩展了基本的"
|
"处理反馈对象的视图集的表示。该类管理与反馈对象相关的操作,包括列出、筛选和检索详细信息。该视图集的目的是为不同的操作提供不同的序列化器,并对可访问的反馈对象实施基于权限的处理。它扩展了基本的"
|
||||||
" `EvibesViewSet` 并使用 Django 的过滤系统来查询数据。"
|
" `EvibesViewSet` 并使用 Django 的过滤系统来查询数据。"
|
||||||
|
|
||||||
#: core/viewsets.py:593
|
#: core/viewsets.py:594
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing orders and related operations. This class provides "
|
"ViewSet for managing orders and related operations. This class provides "
|
||||||
"functionality to retrieve, modify, and manage order objects. It includes "
|
"functionality to retrieve, modify, and manage order objects. It includes "
|
||||||
|
|
@ -2735,7 +2739,7 @@ msgstr ""
|
||||||
"ViewSet。该类提供了检索、修改和管理订单对象的功能。它包括用于处理订单操作的各种端点,如添加或删除产品、为注册用户和未注册用户执行购买操作,以及检索当前已验证用户的待处理订单。ViewSet"
|
"ViewSet。该类提供了检索、修改和管理订单对象的功能。它包括用于处理订单操作的各种端点,如添加或删除产品、为注册用户和未注册用户执行购买操作,以及检索当前已验证用户的待处理订单。ViewSet"
|
||||||
" 根据正在执行的特定操作使用多个序列化器,并在与订单数据交互时执行相应的权限。"
|
" 根据正在执行的特定操作使用多个序列化器,并在与订单数据交互时执行相应的权限。"
|
||||||
|
|
||||||
#: core/viewsets.py:782
|
#: core/viewsets.py:784
|
||||||
msgid ""
|
msgid ""
|
||||||
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
"Provides a viewset for managing OrderProduct entities. This viewset enables "
|
||||||
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
"CRUD operations and custom actions specific to the OrderProduct model. It "
|
||||||
|
|
@ -2747,25 +2751,25 @@ msgstr ""
|
||||||
"模型的自定义操作。它包括过滤、权限检查和根据请求的操作切换序列化器。此外,它还提供了一个详细的操作,用于处理有关 OrderProduct "
|
"模型的自定义操作。它包括过滤、权限检查和根据请求的操作切换序列化器。此外,它还提供了一个详细的操作,用于处理有关 OrderProduct "
|
||||||
"实例的反馈信息"
|
"实例的反馈信息"
|
||||||
|
|
||||||
#: core/viewsets.py:833
|
#: core/viewsets.py:835
|
||||||
msgid "Manages operations related to Product images in the application. "
|
msgid "Manages operations related to Product images in the application. "
|
||||||
msgstr "管理应用程序中与产品图像相关的操作。"
|
msgstr "管理应用程序中与产品图像相关的操作。"
|
||||||
|
|
||||||
#: core/viewsets.py:845
|
#: core/viewsets.py:847
|
||||||
msgid ""
|
msgid ""
|
||||||
"Manages the retrieval and handling of PromoCode instances through various "
|
"Manages the retrieval and handling of PromoCode instances through various "
|
||||||
"API actions."
|
"API actions."
|
||||||
msgstr "通过各种 API 操作管理 PromoCode 实例的检索和处理。"
|
msgstr "通过各种 API 操作管理 PromoCode 实例的检索和处理。"
|
||||||
|
|
||||||
#: core/viewsets.py:866
|
#: core/viewsets.py:868
|
||||||
msgid "Represents a view set for managing promotions. "
|
msgid "Represents a view set for managing promotions. "
|
||||||
msgstr "代表用于管理促销活动的视图集。"
|
msgstr "代表用于管理促销活动的视图集。"
|
||||||
|
|
||||||
#: core/viewsets.py:878
|
#: core/viewsets.py:880
|
||||||
msgid "Handles operations related to Stock data in the system."
|
msgid "Handles operations related to Stock data in the system."
|
||||||
msgstr "处理系统中与库存数据有关的操作。"
|
msgstr "处理系统中与库存数据有关的操作。"
|
||||||
|
|
||||||
#: core/viewsets.py:892
|
#: core/viewsets.py:894
|
||||||
msgid ""
|
msgid ""
|
||||||
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
"ViewSet for managing Wishlist operations. The WishlistViewSet provides "
|
||||||
"endpoints for interacting with a user's wish list, allowing for the "
|
"endpoints for interacting with a user's wish list, allowing for the "
|
||||||
|
|
@ -2778,7 +2782,7 @@ msgstr ""
|
||||||
"用于管理愿望清单操作的 ViewSet。WishlistViewSet 提供了与用户愿望清单交互的端点,允许检索、修改和定制愿望清单中的产品。该 "
|
"用于管理愿望清单操作的 ViewSet。WishlistViewSet 提供了与用户愿望清单交互的端点,允许检索、修改和定制愿望清单中的产品。该 "
|
||||||
"ViewSet 支持添加、删除和批量操作愿望清单产品等功能。此外,还集成了权限检查功能,以确保用户只能管理自己的愿望清单,除非获得明确的权限。"
|
"ViewSet 支持添加、删除和批量操作愿望清单产品等功能。此外,还集成了权限检查功能,以确保用户只能管理自己的愿望清单,除非获得明确的权限。"
|
||||||
|
|
||||||
#: core/viewsets.py:1007
|
#: core/viewsets.py:1009
|
||||||
msgid ""
|
msgid ""
|
||||||
"This class provides viewset functionality for managing `Address` objects. "
|
"This class provides viewset functionality for managing `Address` objects. "
|
||||||
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
"The AddressViewSet class enables CRUD operations, filtering, and custom "
|
||||||
|
|
@ -2789,12 +2793,12 @@ msgstr ""
|
||||||
"该类为管理 \"地址 \"对象提供了视图集功能。AddressViewSet 类支持与地址实体相关的 CRUD 操作、过滤和自定义操作。它包括针对不同 "
|
"该类为管理 \"地址 \"对象提供了视图集功能。AddressViewSet 类支持与地址实体相关的 CRUD 操作、过滤和自定义操作。它包括针对不同 "
|
||||||
"HTTP 方法的专门行为、序列化器重载以及基于请求上下文的权限处理。"
|
"HTTP 方法的专门行为、序列化器重载以及基于请求上下文的权限处理。"
|
||||||
|
|
||||||
#: core/viewsets.py:1074
|
#: core/viewsets.py:1076
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Geocoding error: {e}"
|
msgid "Geocoding error: {e}"
|
||||||
msgstr "地理编码错误:{e}"
|
msgstr "地理编码错误:{e}"
|
||||||
|
|
||||||
#: core/viewsets.py:1081
|
#: core/viewsets.py:1083
|
||||||
msgid ""
|
msgid ""
|
||||||
"Handles operations related to Product Tags within the application. This "
|
"Handles operations related to Product Tags within the application. This "
|
||||||
"class provides functionality for retrieving, filtering, and serializing "
|
"class provides functionality for retrieving, filtering, and serializing "
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import redis
|
import redis
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
@ -11,10 +12,10 @@ from redis.exceptions import ConnectionError # noqa: A004
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
self.stdout.write("Waiting for services...")
|
self.stdout.write("Waiting for services...")
|
||||||
|
|
||||||
def wait_for_db():
|
def wait_for_db() -> None:
|
||||||
db_up = False
|
db_up = False
|
||||||
while not db_up:
|
while not db_up:
|
||||||
try:
|
try:
|
||||||
|
|
@ -31,7 +32,7 @@ class Command(BaseCommand):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
self.stdout.write(self.style.SUCCESS("Database available!"))
|
self.stdout.write(self.style.SUCCESS("Database available!"))
|
||||||
|
|
||||||
def wait_for_redis():
|
def wait_for_redis() -> None:
|
||||||
redis_up = False
|
redis_up = False
|
||||||
while not redis_up:
|
while not redis_up:
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
import contextlib
|
import contextlib
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from argparse import ArgumentParser
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import polib
|
import polib
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
|
@ -64,7 +66,7 @@ def load_po_sanitized(path: str) -> polib.POFile:
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Scan target-language .po files and report any placeholder mismatches, grouped by app."
|
help = "Scan target-language .po files and report any placeholder mismatches, grouped by app."
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-l",
|
"-l",
|
||||||
"--language",
|
"--language",
|
||||||
|
|
@ -92,14 +94,14 @@ class Command(BaseCommand):
|
||||||
help="Root path prefix to adjust file links",
|
help="Root path prefix to adjust file links",
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **options) -> None:
|
def handle(self, *args: list[Any], **options: dict[str, str | list[str]]) -> None:
|
||||||
langs: list[str] = options["target_languages"]
|
langs: list[str] = options.get("target_languages", []) # type: ignore [assignment]
|
||||||
if "ALL" in langs:
|
if "ALL" in langs:
|
||||||
langs = list(dict(settings.LANGUAGES).keys())
|
langs = list(dict(settings.LANGUAGES).keys())
|
||||||
apps_to_scan: set[str] = set(options["target_apps"])
|
apps_to_scan: set[str] = set(options["target_apps"])
|
||||||
if "ALL" in apps_to_scan:
|
if "ALL" in apps_to_scan:
|
||||||
apps_to_scan = set(TRANSLATABLE_APPS)
|
apps_to_scan = set(TRANSLATABLE_APPS)
|
||||||
root_path: str = options.get("root_path") or "/app/"
|
root_path: str = options.get("root_path") or "/app/" # type: ignore [assignment]
|
||||||
|
|
||||||
configs = list(apps.get_app_configs())
|
configs = list(apps.get_app_configs())
|
||||||
# noinspection PyTypeChecker
|
# noinspection PyTypeChecker
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
|
@ -6,17 +7,16 @@ from core.models import Category, Product, Stock
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
self.stdout.write(self.style.SUCCESS("Starting clearing unwanted data..."))
|
self.stdout.write(self.style.SUCCESS("Starting clearing unwanted data..."))
|
||||||
|
|
||||||
# 1. Clean up duplicate Stock entries per product and vendor:
|
# 1. Clean up duplicate Stock entries per product and vendor:
|
||||||
# Group stocks by (product, vendor)
|
# Group stocks by (product, vendor)
|
||||||
stocks_by_group = defaultdict(list)
|
stocks_by_group = defaultdict(list)
|
||||||
for stock in Stock.objects.all().order_by("modified"):
|
for stock in Stock.objects.all().order_by("modified"):
|
||||||
key = (stock.product_id, stock.vendor)
|
stocks_by_group[stock.product_pk].append(stock)
|
||||||
stocks_by_group[key].append(stock)
|
|
||||||
|
|
||||||
stock_deletions = []
|
stock_deletions: list[str] = []
|
||||||
for group in stocks_by_group.values():
|
for group in stocks_by_group.values():
|
||||||
if len(group) <= 1:
|
if len(group) <= 1:
|
||||||
continue
|
continue
|
||||||
|
|
@ -32,20 +32,20 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
# Mark all stocks (except the designated one) for deletion.
|
# Mark all stocks (except the designated one) for deletion.
|
||||||
for s in group:
|
for s in group:
|
||||||
if s.id != record_to_keep.id:
|
if s.uuid != record_to_keep.uuid:
|
||||||
stock_deletions.append(s.id)
|
stock_deletions.append(str(s.uuid))
|
||||||
|
|
||||||
if stock_deletions:
|
if stock_deletions:
|
||||||
Stock.objects.filter(id__in=stock_deletions).delete()
|
Stock.objects.filter(uuid__in=stock_deletions).delete()
|
||||||
self.stdout.write(self.style.SUCCESS(f"Deleted {len(stock_deletions)} duplicate stock entries."))
|
self.stdout.write(self.style.SUCCESS(f"Deleted {len(stock_deletions)} duplicate stock entries."))
|
||||||
|
|
||||||
# 2. Clean up duplicate Category entries based on name (case-insensitive)
|
# 2. Clean up duplicate Category entries based on name (case-insensitive)
|
||||||
category_groups = defaultdict(list)
|
category_groups = defaultdict(list)
|
||||||
for cat in Category.objects.all().order_by("modified"):
|
for cat in Category.objects.all().order_by("modified"):
|
||||||
key = cat.name.lower()
|
key: str = cat.name.lower()
|
||||||
category_groups[key].append(cat)
|
category_groups[key].append(cat)
|
||||||
|
|
||||||
categories_to_delete = []
|
categories_to_delete: list[str] = []
|
||||||
total_product_updates = 0
|
total_product_updates = 0
|
||||||
for cat_list in category_groups.values():
|
for cat_list in category_groups.values():
|
||||||
if len(cat_list) <= 1:
|
if len(cat_list) <= 1:
|
||||||
|
|
@ -59,13 +59,13 @@ class Command(BaseCommand):
|
||||||
keep_category = max(cat_list, key=lambda c: c.modified)
|
keep_category = max(cat_list, key=lambda c: c.modified)
|
||||||
|
|
||||||
for duplicate in cat_list:
|
for duplicate in cat_list:
|
||||||
if duplicate.id == keep_category.id:
|
if duplicate.uuid == keep_category.uuid:
|
||||||
continue
|
continue
|
||||||
total_product_updates += Product.objects.filter(category=duplicate).update(category=keep_category)
|
total_product_updates += Product.objects.filter(category=duplicate).update(category=keep_category)
|
||||||
categories_to_delete.append(duplicate.id)
|
categories_to_delete.append(str(duplicate.uuid))
|
||||||
|
|
||||||
if categories_to_delete:
|
if categories_to_delete:
|
||||||
Category.objects.filter(id__in=categories_to_delete).delete()
|
Category.objects.filter(uuid__in=categories_to_delete).delete()
|
||||||
self.stdout.write(
|
self.stdout.write(
|
||||||
self.style.SUCCESS(
|
self.style.SUCCESS(
|
||||||
f"Replaced category for {total_product_updates} product(s) "
|
f"Replaced category for {total_product_updates} product(s) "
|
||||||
|
|
@ -74,7 +74,7 @@ class Command(BaseCommand):
|
||||||
)
|
)
|
||||||
|
|
||||||
# 3. For Products without stocks: set is_active = False.
|
# 3. For Products without stocks: set is_active = False.
|
||||||
inactive_products = Product.objects.filter(stock__isnull=True)
|
inactive_products = Product.objects.filter(stocks__isnull=True)
|
||||||
count_inactive = inactive_products.count()
|
count_inactive = inactive_products.count()
|
||||||
if count_inactive:
|
if count_inactive:
|
||||||
inactive_products.update(is_active=False)
|
inactive_products.update(is_active=False)
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,15 @@
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from argparse import ArgumentParser
|
||||||
from tempfile import NamedTemporaryFile
|
from tempfile import NamedTemporaryFile
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import polib
|
import polib
|
||||||
import requests
|
import requests
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
|
||||||
from core.management.commands import RootDirectory, DEEPL_TARGET_LANGUAGES_MAPPING, TRANSLATABLE_APPS
|
from core.management.commands import DEEPL_TARGET_LANGUAGES_MAPPING, TRANSLATABLE_APPS, RootDirectory
|
||||||
|
|
||||||
# Patterns to identify placeholders
|
# Patterns to identify placeholders
|
||||||
PLACEHOLDER_REGEXES = [
|
PLACEHOLDER_REGEXES = [
|
||||||
|
|
@ -23,7 +25,7 @@ def placeholderize(text: str) -> tuple[str, list[str]]:
|
||||||
"""
|
"""
|
||||||
placeholders: list[str] = []
|
placeholders: list[str] = []
|
||||||
|
|
||||||
def _repl(match: re.Match) -> str:
|
def _repl(match: re.Match) -> str: # type: ignore [type-arg]
|
||||||
idx = len(placeholders)
|
idx = len(placeholders)
|
||||||
placeholders.append(match.group(0))
|
placeholders.append(match.group(0))
|
||||||
return f"__PH_{idx}__"
|
return f"__PH_{idx}__"
|
||||||
|
|
@ -77,7 +79,7 @@ def load_po_sanitized(path: str) -> polib.POFile | None:
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Merge msgid/msgstr from en_GB PO into target-language POs via DeepL, preserving placeholders."
|
help = "Merge msgid/msgstr from en_GB PO into target-language POs via DeepL, preserving placeholders."
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-l",
|
"-l",
|
||||||
"--language",
|
"--language",
|
||||||
|
|
@ -97,10 +99,10 @@ class Command(BaseCommand):
|
||||||
help="App label for translation, e.g. core, payments. Use ALL to translate all apps.",
|
help="App label for translation, e.g. core, payments. Use ALL to translate all apps.",
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **options) -> None:
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
target_langs = options["target_languages"]
|
target_langs: list[str] = options["target_languages"] # type: ignore [assignment]
|
||||||
if "ALL" in target_langs:
|
if "ALL" in target_langs:
|
||||||
target_langs = DEEPL_TARGET_LANGUAGES_MAPPING.keys()
|
target_langs = DEEPL_TARGET_LANGUAGES_MAPPING.keys() # type: ignore [assignment]
|
||||||
target_apps = set(options["target_apps"])
|
target_apps = set(options["target_apps"])
|
||||||
if "ALL" in target_apps:
|
if "ALL" in target_apps:
|
||||||
target_apps = {
|
target_apps = {
|
||||||
|
|
@ -152,9 +154,9 @@ class Command(BaseCommand):
|
||||||
default = e.msgid
|
default = e.msgid
|
||||||
if readline:
|
if readline:
|
||||||
|
|
||||||
def hook():
|
def hook() -> None:
|
||||||
readline.insert_text(default) # noqa: B023
|
readline.insert_text(default) # type: ignore [attr-defined] # noqa: B023
|
||||||
readline.redisplay()
|
readline.redisplay() # type: ignore [attr-defined]
|
||||||
|
|
||||||
readline.set_pre_input_hook(hook) # type: ignore [attr-defined]
|
readline.set_pre_input_hook(hook) # type: ignore [attr-defined]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
from core.models import AttributeValue, Product, ProductImage
|
from core.models import AttributeValue, Product, ProductImage
|
||||||
|
|
@ -6,7 +9,7 @@ from core.models import AttributeValue, Product, ProductImage
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Delete Product rows with no OrderProduct, in batches"
|
help = "Delete Product rows with no OrderProduct, in batches"
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser: ArgumentParser):
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-s",
|
"-s",
|
||||||
"--size",
|
"--size",
|
||||||
|
|
@ -15,8 +18,8 @@ class Command(BaseCommand):
|
||||||
help="Chunk size to delete",
|
help="Chunk size to delete",
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
size = options["size"]
|
size: int = options["size"] # type: ignore [assignment]
|
||||||
while True:
|
while True:
|
||||||
batch_ids = list(Product.objects.filter(orderproduct__isnull=True).values_list("pk", flat=True)[:size])
|
batch_ids = list(Product.objects.filter(orderproduct__isnull=True).values_list("pk", flat=True)[:size])
|
||||||
if not batch_ids:
|
if not batch_ids:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
from core.models import AttributeValue, Product, ProductImage
|
from core.models import AttributeValue, Product, ProductImage
|
||||||
|
|
@ -6,7 +9,7 @@ from core.models import AttributeValue, Product, ProductImage
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Delete Product rows with special description, in batches"
|
help = "Delete Product rows with special description, in batches"
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-s",
|
"-s",
|
||||||
"--size",
|
"--size",
|
||||||
|
|
@ -15,8 +18,8 @@ class Command(BaseCommand):
|
||||||
help="Chunk size to delete",
|
help="Chunk size to delete",
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
size = options["size"]
|
size: int = options["size"] # type: ignore [assignment]
|
||||||
while True:
|
while True:
|
||||||
batch_ids = list(
|
batch_ids = list(
|
||||||
Product.objects.filter(description__iexact="EVIBES_DELETED_PRODUCT").values_list("pk", flat=True)[:size]
|
Product.objects.filter(description__iexact="EVIBES_DELETED_PRODUCT").values_list("pk", flat=True)[:size]
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
from core.tasks import update_products_task
|
from core.tasks import update_products_task
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
self.stdout.write(self.style.SUCCESS("Starting fetching products task in worker container..."))
|
self.stdout.write(self.style.SUCCESS("Starting fetching products task in worker container..."))
|
||||||
|
|
||||||
update_products_task.delay()
|
update_products_task.delay() # type: ignore [attr-defined]
|
||||||
|
|
||||||
self.stdout.write(self.style.SUCCESS("Started fetching products task in worker container without errors!"))
|
self.stdout.write(self.style.SUCCESS("Started fetching products task in worker container without errors!"))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
|
@ -9,7 +10,7 @@ logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
self.stdout.write(self.style.SUCCESS("Starting fixing stocks' prices..."))
|
self.stdout.write(self.style.SUCCESS("Starting fixing stocks' prices..."))
|
||||||
|
|
||||||
for product in Product.objects.filter(stocks__isnull=False):
|
for product in Product.objects.filter(stocks__isnull=False):
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
from django.db.models import QuerySet
|
||||||
from django.utils.crypto import get_random_string
|
from django.utils.crypto import get_random_string
|
||||||
|
|
||||||
from core.models import Brand, Category, Product
|
from core.models import Brand, Category, Product
|
||||||
|
|
@ -9,7 +12,7 @@ from core.models import Brand, Category, Product
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Rebuild slug field for all slugified instances"
|
help = "Rebuild slug field for all slugified instances"
|
||||||
|
|
||||||
def reset_em(self, queryset):
|
def reset_em(self, queryset: QuerySet[Any]) -> None:
|
||||||
total = queryset.count()
|
total = queryset.count()
|
||||||
self.stdout.write(f"Starting slug rebuilding for {total} {queryset.model._meta.verbose_name_plural}")
|
self.stdout.write(f"Starting slug rebuilding for {total} {queryset.model._meta.verbose_name_plural}")
|
||||||
for idx, instance in enumerate(queryset.iterator(), start=1):
|
for idx, instance in enumerate(queryset.iterator(), start=1):
|
||||||
|
|
@ -35,7 +38,7 @@ class Command(BaseCommand):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
for queryset in [
|
for queryset in [
|
||||||
Brand.objects.all(),
|
Brand.objects.all(),
|
||||||
Category.objects.all(),
|
Category.objects.all(),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
from core.utils.caching import set_default_cache
|
from core.utils.caching import set_default_cache
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
|
||||||
self.stdout.write(self.style.SUCCESS("Started setting default cache values..."))
|
self.stdout.write(self.style.SUCCESS("Started setting default cache values..."))
|
||||||
|
|
||||||
set_default_cache()
|
set_default_cache()
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ from payments.models import Transaction
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a group of attributes, which can be hierarchical."
|
"Represents a group of attributes, which can be hierarchical."
|
||||||
" This class is used to manage and organize attribute groups."
|
" This class is used to manage and organize attribute groups."
|
||||||
|
|
@ -94,7 +94,7 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel):
|
||||||
unique=True,
|
unique=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self) -> str:
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -102,7 +102,7 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel):
|
||||||
verbose_name_plural = _("attribute groups")
|
verbose_name_plural = _("attribute groups")
|
||||||
|
|
||||||
|
|
||||||
class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a vendor entity capable of storing information about external vendors and their interaction requirements."
|
"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."
|
" The Vendor class is used to define and manage information related to an external vendor."
|
||||||
|
|
@ -147,13 +147,13 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def save(
|
def save( # type: ignore [override]
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
force_insert=False,
|
force_insert: bool = False,
|
||||||
force_update=False,
|
force_update: bool = False,
|
||||||
using=None,
|
using: str | None = None,
|
||||||
update_fields=None,
|
update_fields: list[str] | tuple[str, ...] | None = None,
|
||||||
update_modified: bool = True,
|
update_modified: bool = True,
|
||||||
) -> None:
|
) -> None:
|
||||||
users = self.users.filter(is_active=True)
|
users = self.users.filter(is_active=True)
|
||||||
|
|
@ -180,7 +180,7 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): # type: ignore [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a product tag used for classifying or identifying products."
|
"Represents a product tag used for classifying or identifying products."
|
||||||
" The ProductTag class is designed to uniquely identify and classify products through a combination"
|
" The ProductTag class is designed to uniquely identify and classify products through a combination"
|
||||||
|
|
@ -212,7 +212,7 @@ class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): # type:
|
||||||
verbose_name_plural = _("product tags")
|
verbose_name_plural = _("product tags")
|
||||||
|
|
||||||
|
|
||||||
class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a category tag used for products."
|
"Represents a category tag used for products."
|
||||||
" This class models a category tag that can be used to associate and classify products."
|
" This class models a category tag that can be used to associate and classify products."
|
||||||
|
|
@ -335,7 +335,7 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): #
|
||||||
ordering = ["tree_id", "lft"]
|
ordering = ["tree_id", "lft"]
|
||||||
|
|
||||||
|
|
||||||
class Brand(ExportModelOperationsMixin("brand"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Brand(ExportModelOperationsMixin("brand"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a Brand object in the system. "
|
"Represents a Brand object in the system. "
|
||||||
"This class handles information and attributes related to a brand, including its name, logos, "
|
"This class handles information and attributes related to a brand, including its name, logos, "
|
||||||
|
|
@ -405,7 +405,7 @@ class Brand(ExportModelOperationsMixin("brand"), NiceModel): # type: ignore [mi
|
||||||
verbose_name_plural = _("brands")
|
verbose_name_plural = _("brands")
|
||||||
|
|
||||||
|
|
||||||
class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents the stock of a product managed in the system."
|
"Represents the stock of a product managed in the system."
|
||||||
" This class provides details about the relationship between vendors, products, and their stock information, "
|
" This class provides details about the relationship between vendors, products, and their stock information, "
|
||||||
|
|
@ -468,7 +468,7 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [mi
|
||||||
verbose_name_plural = _("stock entries")
|
verbose_name_plural = _("stock entries")
|
||||||
|
|
||||||
|
|
||||||
class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a product with attributes such as category, brand, tags, digital status, name, description, part number, and slug."
|
"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."
|
" Provides related utility properties to retrieve ratings, feedback counts, price, quantity, and total orders."
|
||||||
|
|
@ -561,21 +561,21 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def rating(self):
|
def rating(self) -> float:
|
||||||
cache_key = f"product_rating_{self.pk}"
|
cache_key = f"product_rating_{self.pk}"
|
||||||
rating = cache.get(cache_key)
|
rating = cache.get(cache_key)
|
||||||
if rating is None:
|
if rating is None:
|
||||||
feedbacks = Feedback.objects.filter(order_product__product_id=self.pk)
|
feedbacks = Feedback.objects.filter(order_product__product_id=self.pk)
|
||||||
rating = feedbacks.aggregate(Avg("rating"))["rating__avg"] or 0
|
rating = feedbacks.aggregate(Avg("rating"))["rating__avg"] or 0
|
||||||
cache.set(cache_key, rating, 86400)
|
cache.set(cache_key, rating, 86400)
|
||||||
return round(rating, 2)
|
return float(round(rating, 2))
|
||||||
|
|
||||||
@rating.setter
|
@rating.setter
|
||||||
def rating(self, value):
|
def rating(self, value: float):
|
||||||
self.__dict__["rating"] = value
|
self.__dict__["rating"] = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feedbacks_count(self):
|
def feedbacks_count(self) -> int:
|
||||||
cache_key = f"product_feedbacks_count_{self.pk}"
|
cache_key = f"product_feedbacks_count_{self.pk}"
|
||||||
feedbacks_count = cache.get(cache_key)
|
feedbacks_count = cache.get(cache_key)
|
||||||
if feedbacks_count is None:
|
if feedbacks_count is None:
|
||||||
|
|
@ -616,7 +616,7 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): # type: ignore
|
||||||
self.__dict__["personal_orders_only"] = value
|
self.__dict__["personal_orders_only"] = value
|
||||||
|
|
||||||
|
|
||||||
class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents an attribute in the system."
|
"Represents an attribute in the system."
|
||||||
" This class is used to define and manage attributes,"
|
" This class is used to define and manage attributes,"
|
||||||
|
|
@ -680,7 +680,7 @@ class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): # type: ig
|
||||||
verbose_name_plural = _("attributes")
|
verbose_name_plural = _("attributes")
|
||||||
|
|
||||||
|
|
||||||
class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a specific value for an attribute that is linked to a product. "
|
"Represents a specific value for an attribute that is linked to a product. "
|
||||||
"It links the 'attribute' to a unique 'value', allowing "
|
"It links the 'attribute' to a unique 'value', allowing "
|
||||||
|
|
@ -718,7 +718,7 @@ class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel):
|
||||||
verbose_name_plural = _("attribute values")
|
verbose_name_plural = _("attribute values")
|
||||||
|
|
||||||
|
|
||||||
class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a product image associated with a product in the system. "
|
"Represents a product image associated with a product in the system. "
|
||||||
"This class is designed to manage images for products, including functionality "
|
"This class is designed to manage images for products, including functionality "
|
||||||
|
|
@ -765,7 +765,7 @@ class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): # t
|
||||||
verbose_name_plural = _("product images")
|
verbose_name_plural = _("product images")
|
||||||
|
|
||||||
|
|
||||||
class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a promotional campaign for products with a discount. "
|
"Represents a promotional campaign for products with a discount. "
|
||||||
"This class is used to define and manage promotional campaigns that offer a "
|
"This class is used to define and manage promotional campaigns that offer a "
|
||||||
|
|
@ -811,7 +811,7 @@ class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): # type: ig
|
||||||
return str(self.id)
|
return str(self.id)
|
||||||
|
|
||||||
|
|
||||||
class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a user's wishlist for storing and managing desired products. "
|
"Represents a user's wishlist for storing and managing desired products. "
|
||||||
"The class provides functionality to manage a collection of products, "
|
"The class provides functionality to manage a collection of products, "
|
||||||
|
|
@ -882,7 +882,7 @@ class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): # type: igno
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a documentary record tied to a product. "
|
"Represents a documentary record tied to a product. "
|
||||||
"This class is used to store information about documentaries related to specific "
|
"This class is used to store information about documentaries related to specific "
|
||||||
|
|
@ -911,7 +911,7 @@ class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): #
|
||||||
return self.document.name.split(".")[-1] or _("unresolved")
|
return self.document.name.split(".")[-1] or _("unresolved")
|
||||||
|
|
||||||
|
|
||||||
class Address(ExportModelOperationsMixin("address"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Address(ExportModelOperationsMixin("address"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents an address entity that includes location details and associations with a user. "
|
"Represents an address entity that includes location details and associations with a user. "
|
||||||
"Provides functionality for geographic and address data storage, as well "
|
"Provides functionality for geographic and address data storage, as well "
|
||||||
|
|
@ -970,7 +970,7 @@ class Address(ExportModelOperationsMixin("address"), NiceModel): # type: ignore
|
||||||
return f"{base} for {self.user.email}" if self.user else base
|
return f"{base} for {self.user.email}" if self.user else base
|
||||||
|
|
||||||
|
|
||||||
class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents a promotional code that can be used for discounts, managing its validity, "
|
"Represents a promotional code that can be used for discounts, managing its validity, "
|
||||||
"type of discount, and application. "
|
"type of discount, and application. "
|
||||||
|
|
@ -1093,7 +1093,7 @@ class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): # type: ig
|
||||||
return promo_amount
|
return promo_amount
|
||||||
|
|
||||||
|
|
||||||
class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents an order placed by a user."
|
"Represents an order placed by a user."
|
||||||
" This class models an order within the application,"
|
" This class models an order within the application,"
|
||||||
|
|
@ -1594,7 +1594,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents products associated with orders and their attributes. "
|
"Represents products associated with orders and their attributes. "
|
||||||
"The OrderProduct model maintains information about a product that is part of an order, "
|
"The OrderProduct model maintains information about a product that is part of an order, "
|
||||||
|
|
@ -1745,7 +1745,7 @@ class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): # t
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class CustomerRelationshipManagementProvider(ExportModelOperationsMixin("crm_provider"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class CustomerRelationshipManagementProvider(ExportModelOperationsMixin("crm_provider"), NiceModel): # type: ignore [misc]
|
||||||
name = CharField(max_length=128, unique=True, verbose_name=_("name"))
|
name = CharField(max_length=128, unique=True, verbose_name=_("name"))
|
||||||
integration_url = URLField(blank=True, null=True, help_text=_("URL of the integration"))
|
integration_url = URLField(blank=True, null=True, help_text=_("URL of the integration"))
|
||||||
authentication = JSONField(blank=True, null=True, help_text=_("authentication credentials"))
|
authentication = JSONField(blank=True, null=True, help_text=_("authentication credentials"))
|
||||||
|
|
@ -1797,7 +1797,7 @@ class OrderCrmLink(ExportModelOperationsMixin("order_crm_link"), NiceModel): #
|
||||||
verbose_name_plural = _("orders CRM links")
|
verbose_name_plural = _("orders CRM links")
|
||||||
|
|
||||||
|
|
||||||
class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Represents the downloading functionality for digital assets associated with orders. "
|
"Represents the downloading functionality for digital assets associated with orders. "
|
||||||
"The DigitalAssetDownload class provides the ability to manage and access "
|
"The DigitalAssetDownload class provides the ability to manage and access "
|
||||||
|
|
@ -1826,7 +1826,7 @@ class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceMo
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): # type: ignore [misc, django-manager-missing]
|
class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): # type: ignore [misc]
|
||||||
__doc__ = _( # type: ignore
|
__doc__ = _( # type: ignore
|
||||||
"Manages user feedback for products. "
|
"Manages user feedback for products. "
|
||||||
"This class is designed to capture and store user feedback for specific products "
|
"This class is designed to capture and store user feedback for specific products "
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ from core.models import (
|
||||||
from core.serializers.utility import AddressSerializer
|
from core.serializers.utility import AddressSerializer
|
||||||
|
|
||||||
|
|
||||||
class AttributeGroupSimpleSerializer(ModelSerializer):
|
class AttributeGroupSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
parent = PrimaryKeyRelatedField(read_only=True) # type: ignore [assignment, var-annotated]
|
parent = PrimaryKeyRelatedField(read_only=True) # type: ignore [assignment, var-annotated]
|
||||||
children = PrimaryKeyRelatedField(many=True, read_only=True) # type: ignore [assignment, var-annotated]
|
children = PrimaryKeyRelatedField(many=True, read_only=True) # type: ignore [assignment, var-annotated]
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@ class AttributeGroupSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class CategorySimpleSerializer(ModelSerializer):
|
class CategorySimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
children = SerializerMethodField()
|
children = SerializerMethodField()
|
||||||
image = SerializerMethodField()
|
image = SerializerMethodField()
|
||||||
|
|
||||||
|
|
@ -56,10 +56,10 @@ class CategorySimpleSerializer(ModelSerializer):
|
||||||
|
|
||||||
def get_image(self, obj: Category) -> str | None:
|
def get_image(self, obj: Category) -> str | None:
|
||||||
with suppress(ValueError):
|
with suppress(ValueError):
|
||||||
return obj.image.url
|
return str(obj.image.url)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_children(self, obj) -> Collection[Any]:
|
def get_children(self, obj: Category) -> Collection[Any]:
|
||||||
request = self.context.get("request")
|
request = self.context.get("request")
|
||||||
if request is not None and request.user.has_perm("view_category"):
|
if request is not None and request.user.has_perm("view_category"):
|
||||||
children = obj.children.all()
|
children = obj.children.all()
|
||||||
|
|
@ -69,7 +69,7 @@ class CategorySimpleSerializer(ModelSerializer):
|
||||||
return CategorySimpleSerializer(children, many=True, context=self.context).data if obj.children.exists() else []
|
return CategorySimpleSerializer(children, many=True, context=self.context).data if obj.children.exists() else []
|
||||||
|
|
||||||
|
|
||||||
class BrandSimpleSerializer(ModelSerializer):
|
class BrandSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
small_logo = SerializerMethodField()
|
small_logo = SerializerMethodField()
|
||||||
big_logo = SerializerMethodField()
|
big_logo = SerializerMethodField()
|
||||||
|
|
||||||
|
|
@ -84,16 +84,16 @@ class BrandSimpleSerializer(ModelSerializer):
|
||||||
|
|
||||||
def get_small_logo(self, obj: Brand) -> str | None:
|
def get_small_logo(self, obj: Brand) -> str | None:
|
||||||
with suppress(ValueError):
|
with suppress(ValueError):
|
||||||
return obj.small_logo.url
|
return str(obj.small_logo.url)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_big_logo(self, obj: Brand) -> str | None:
|
def get_big_logo(self, obj: Brand) -> str | None:
|
||||||
with suppress(ValueError):
|
with suppress(ValueError):
|
||||||
return obj.big_logo.url
|
return str(obj.big_logo.url)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class ProductTagSimpleSerializer(ModelSerializer):
|
class ProductTagSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProductTag
|
model = ProductTag
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -103,8 +103,8 @@ class ProductTagSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class ProductImageSimpleSerializer(ModelSerializer):
|
class ProductImageSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True)
|
product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) # type: ignore [type-arg]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProductImage
|
model = ProductImage
|
||||||
|
|
@ -117,7 +117,7 @@ class ProductImageSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class AttributeSimpleSerializer(ModelSerializer):
|
class AttributeSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
group = AttributeGroupSimpleSerializer(read_only=True)
|
group = AttributeGroupSimpleSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -130,9 +130,9 @@ class AttributeSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class AttributeValueSimpleSerializer(ModelSerializer):
|
class AttributeValueSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
attribute = AttributeSimpleSerializer(read_only=True)
|
attribute = AttributeSimpleSerializer(read_only=True)
|
||||||
product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True)
|
product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) # type: ignore [type-arg]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AttributeValue
|
model = AttributeValue
|
||||||
|
|
@ -144,7 +144,7 @@ class AttributeValueSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class ProductSimpleSerializer(ModelSerializer):
|
class ProductSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
brand = BrandSimpleSerializer(read_only=True)
|
brand = BrandSimpleSerializer(read_only=True)
|
||||||
category = CategorySimpleSerializer(read_only=True)
|
category = CategorySimpleSerializer(read_only=True)
|
||||||
tags = ProductTagSimpleSerializer(many=True, read_only=True)
|
tags = ProductTagSimpleSerializer(many=True, read_only=True)
|
||||||
|
|
@ -196,7 +196,7 @@ class ProductSimpleSerializer(ModelSerializer):
|
||||||
return obj.personal_orders_only
|
return obj.personal_orders_only
|
||||||
|
|
||||||
|
|
||||||
class VendorSimpleSerializer(ModelSerializer):
|
class VendorSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Vendor
|
model = Vendor
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -205,7 +205,7 @@ class VendorSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class StockSimpleSerializer(ModelSerializer):
|
class StockSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
vendor = VendorSimpleSerializer(read_only=True)
|
vendor = VendorSimpleSerializer(read_only=True)
|
||||||
product = ProductSimpleSerializer(read_only=True)
|
product = ProductSimpleSerializer(read_only=True)
|
||||||
|
|
||||||
|
|
@ -222,7 +222,7 @@ class StockSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class PromoCodeSimpleSerializer(ModelSerializer):
|
class PromoCodeSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PromoCode
|
model = PromoCode
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -231,7 +231,7 @@ class PromoCodeSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class PromotionSimpleSerializer(ModelSerializer):
|
class PromotionSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
products = ProductSimpleSerializer(many=True, read_only=True)
|
products = ProductSimpleSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -244,8 +244,8 @@ class PromotionSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class WishlistSimpleSerializer(ModelSerializer):
|
class WishlistSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True)
|
user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) # type: ignore [type-arg]
|
||||||
products = ProductSimpleSerializer(many=True, read_only=True)
|
products = ProductSimpleSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -257,8 +257,8 @@ class WishlistSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class FeedbackSimpleSerializer(ModelSerializer):
|
class FeedbackSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
order_product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True)
|
order_product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) # type: ignore [type-arg]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Feedback
|
model = Feedback
|
||||||
|
|
@ -269,7 +269,7 @@ class FeedbackSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class OrderProductSimpleSerializer(ModelSerializer):
|
class OrderProductSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
product = ProductSimpleSerializer(read_only=True)
|
product = ProductSimpleSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -283,8 +283,8 @@ class OrderProductSimpleSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class OrderSimpleSerializer(ModelSerializer):
|
class OrderSimpleSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True)
|
user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) # type: ignore [type-arg]
|
||||||
promo_code = PromoCodeSimpleSerializer(read_only=True)
|
promo_code = PromoCodeSimpleSerializer(read_only=True)
|
||||||
order_products = OrderProductSimpleSerializer(many=True, read_only=True)
|
order_products = OrderProductSimpleSerializer(many=True, read_only=True)
|
||||||
billing_address = AddressSerializer(read_only=True, required=False)
|
billing_address = AddressSerializer(read_only=True, required=False)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework.exceptions import ValidationError
|
from rest_framework.exceptions import ValidationError
|
||||||
from rest_framework.fields import (
|
from rest_framework.fields import (
|
||||||
|
|
@ -16,19 +18,19 @@ from rest_framework.serializers import ListSerializer, ModelSerializer, Serializ
|
||||||
from core.models import Address
|
from core.models import Address
|
||||||
|
|
||||||
|
|
||||||
class AddressAutocompleteInputSerializer(Serializer):
|
class AddressAutocompleteInputSerializer(Serializer): # type: ignore [type-arg]
|
||||||
q = CharField(required=True)
|
q = CharField(required=True)
|
||||||
limit = IntegerField(required=False, min_value=1, max_value=10, default=5)
|
limit = IntegerField(required=False, min_value=1, max_value=10, default=5)
|
||||||
|
|
||||||
|
|
||||||
class AddressSuggestionSerializer(Serializer):
|
class AddressSuggestionSerializer(Serializer): # type: ignore [type-arg]
|
||||||
display_name = CharField()
|
display_name = CharField()
|
||||||
lat = FloatField()
|
lat = FloatField()
|
||||||
lon = FloatField()
|
lon = FloatField()
|
||||||
address = DictField(child=CharField())
|
address = DictField(child=CharField())
|
||||||
|
|
||||||
|
|
||||||
class AddressSerializer(ModelSerializer):
|
class AddressSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
latitude = FloatField(source="location.y", read_only=True)
|
latitude = FloatField(source="location.y", read_only=True)
|
||||||
longitude = FloatField(source="location.x", read_only=True)
|
longitude = FloatField(source="location.x", read_only=True)
|
||||||
|
|
||||||
|
|
@ -57,7 +59,7 @@ class AddressSerializer(ModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class AddressCreateSerializer(ModelSerializer):
|
class AddressCreateSerializer(ModelSerializer): # type: ignore [type-arg]
|
||||||
raw_data = CharField(
|
raw_data = CharField(
|
||||||
write_only=True,
|
write_only=True,
|
||||||
max_length=512,
|
max_length=512,
|
||||||
|
|
@ -69,31 +71,32 @@ class AddressCreateSerializer(ModelSerializer):
|
||||||
model = Address
|
model = Address
|
||||||
fields = ["raw_data", "address_line_1", "address_line_2"]
|
fields = ["raw_data", "address_line_1", "address_line_2"]
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data: dict[str, Any]) -> Address:
|
||||||
raw = validated_data.pop("raw_data")
|
raw = validated_data.pop("raw_data")
|
||||||
user = None
|
user = None
|
||||||
if self.context["request"].user.is_authenticated:
|
if self.context["request"].user.is_authenticated:
|
||||||
user = self.context["request"].user
|
user = self.context["request"].user
|
||||||
return Address.objects.create(raw_data=raw, user=user, **validated_data)
|
return Address.objects.create(raw_data=raw, user=user, **validated_data) # type: ignore [no-untyped-call]
|
||||||
|
|
||||||
|
|
||||||
class DoFeedbackSerializer(Serializer):
|
class DoFeedbackSerializer(Serializer): # type: ignore [type-arg]
|
||||||
comment = CharField(required=True)
|
comment = CharField(required=True)
|
||||||
rating = IntegerField(min_value=1, max_value=10, default=10)
|
rating = IntegerField(min_value=1, max_value=10, default=10)
|
||||||
action = CharField(default="add")
|
action = CharField(default="add")
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data: dict[str, Any]) -> dict[str, Any]:
|
||||||
if data["action"] == "add" and not all([data["comment"], data["rating"]]):
|
if data["action"] == "add" and not all([data["comment"], data["rating"]]):
|
||||||
raise ValidationError(_("you must provide a comment, rating, and order product uuid to add feedback."))
|
raise ValidationError(_("you must provide a comment, rating, and order product uuid to add feedback."))
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class CacheOperatorSerializer(Serializer):
|
class CacheOperatorSerializer(Serializer): # type: ignore [type-arg]
|
||||||
key = CharField(required=True)
|
key = CharField(required=True)
|
||||||
data = JSONField(required=False) # type: ignore [assignment]
|
data = JSONField(required=False) # type: ignore [assignment]
|
||||||
timeout = IntegerField(required=False)
|
timeout = IntegerField(required=False)
|
||||||
|
|
||||||
|
|
||||||
class ContactUsSerializer(Serializer):
|
class ContactUsSerializer(Serializer): # type: ignore [type-arg]
|
||||||
email = CharField(required=True)
|
email = CharField(required=True)
|
||||||
name = CharField(required=True)
|
name = CharField(required=True)
|
||||||
subject = CharField(required=True)
|
subject = CharField(required=True)
|
||||||
|
|
@ -101,14 +104,14 @@ class ContactUsSerializer(Serializer):
|
||||||
message = CharField(required=True)
|
message = CharField(required=True)
|
||||||
|
|
||||||
|
|
||||||
class LanguageSerializer(Serializer):
|
class LanguageSerializer(Serializer): # type: ignore [type-arg]
|
||||||
code = CharField(required=True)
|
code = CharField(required=True)
|
||||||
name = CharField(required=True)
|
name = CharField(required=True)
|
||||||
flag = CharField()
|
flag = CharField()
|
||||||
|
|
||||||
|
|
||||||
class RecursiveField(Field):
|
class RecursiveField(Field): # type: ignore [type-arg]
|
||||||
def to_representation(self, value):
|
def to_representation(self, value: Any) -> Any:
|
||||||
parent = self.parent
|
parent = self.parent
|
||||||
if isinstance(parent, ListSerializer):
|
if isinstance(parent, ListSerializer):
|
||||||
parent = parent.parent
|
parent = parent.parent
|
||||||
|
|
@ -116,45 +119,45 @@ class RecursiveField(Field):
|
||||||
serializer_class = parent.__class__
|
serializer_class = parent.__class__
|
||||||
return serializer_class(value, context=self.context).data
|
return serializer_class(value, context=self.context).data
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data: Any) -> Any:
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
class AddOrderProductSerializer(Serializer):
|
class AddOrderProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuid = CharField(required=True)
|
product_uuid = CharField(required=True)
|
||||||
attributes = ListField(required=False, child=DictField(), default=list)
|
attributes = ListField(required=False, child=DictField(), default=list)
|
||||||
|
|
||||||
|
|
||||||
class BulkAddOrderProductsSerializer(Serializer):
|
class BulkAddOrderProductsSerializer(Serializer): # type: ignore [type-arg]
|
||||||
products = ListField(child=AddOrderProductSerializer(), required=True)
|
products = ListField(child=AddOrderProductSerializer(), required=True)
|
||||||
|
|
||||||
|
|
||||||
class RemoveOrderProductSerializer(Serializer):
|
class RemoveOrderProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuid = CharField(required=True)
|
product_uuid = CharField(required=True)
|
||||||
attributes = JSONField(required=False, default=dict)
|
attributes = JSONField(required=False, default=dict)
|
||||||
|
|
||||||
|
|
||||||
class BulkRemoveOrderProductsSerializer(Serializer):
|
class BulkRemoveOrderProductsSerializer(Serializer): # type: ignore [type-arg]
|
||||||
products = ListField(child=RemoveOrderProductSerializer(), required=True)
|
products = ListField(child=RemoveOrderProductSerializer(), required=True)
|
||||||
|
|
||||||
|
|
||||||
class AddWishlistProductSerializer(Serializer):
|
class AddWishlistProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuid = CharField(required=True)
|
product_uuid = CharField(required=True)
|
||||||
|
|
||||||
|
|
||||||
class RemoveWishlistProductSerializer(Serializer):
|
class RemoveWishlistProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuid = CharField(required=True)
|
product_uuid = CharField(required=True)
|
||||||
|
|
||||||
|
|
||||||
class BulkAddWishlistProductSerializer(Serializer):
|
class BulkAddWishlistProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64)
|
product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64)
|
||||||
|
|
||||||
|
|
||||||
class BulkRemoveWishlistProductSerializer(Serializer):
|
class BulkRemoveWishlistProductSerializer(Serializer): # type: ignore [type-arg]
|
||||||
product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64)
|
product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64)
|
||||||
|
|
||||||
|
|
||||||
class BuyOrderSerializer(Serializer):
|
class BuyOrderSerializer(Serializer): # type: ignore [type-arg]
|
||||||
force_balance = BooleanField(required=False, default=False)
|
force_balance = BooleanField(required=False, default=False)
|
||||||
force_payment = BooleanField(required=False, default=False)
|
force_payment = BooleanField(required=False, default=False)
|
||||||
promocode_uuid = CharField(required=False)
|
promocode_uuid = CharField(required=False)
|
||||||
|
|
@ -163,7 +166,7 @@ class BuyOrderSerializer(Serializer):
|
||||||
chosen_products = AddOrderProductSerializer(many=True, required=False)
|
chosen_products = AddOrderProductSerializer(many=True, required=False)
|
||||||
|
|
||||||
|
|
||||||
class BuyUnregisteredOrderSerializer(Serializer):
|
class BuyUnregisteredOrderSerializer(Serializer): # type: ignore [type-arg]
|
||||||
products = AddOrderProductSerializer(many=True, required=True)
|
products = AddOrderProductSerializer(many=True, required=True)
|
||||||
promocode_uuid = UUIDField(required=False)
|
promocode_uuid = UUIDField(required=False)
|
||||||
customer_name = CharField(required=True)
|
customer_name = CharField(required=True)
|
||||||
|
|
@ -174,7 +177,7 @@ class BuyUnregisteredOrderSerializer(Serializer):
|
||||||
payment_method = CharField(required=True)
|
payment_method = CharField(required=True)
|
||||||
|
|
||||||
|
|
||||||
class BuyAsBusinessOrderSerializer(Serializer):
|
class BuyAsBusinessOrderSerializer(Serializer): # type: ignore [type-arg]
|
||||||
products = AddOrderProductSerializer(many=True, required=True)
|
products = AddOrderProductSerializer(many=True, required=True)
|
||||||
business_identificator = CharField(required=True)
|
business_identificator = CharField(required=True)
|
||||||
promocode_uuid = UUIDField(required=False)
|
promocode_uuid = UUIDField(required=False)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
|
|
@ -13,7 +14,7 @@ from sentry_sdk import capture_exception
|
||||||
|
|
||||||
from core.crm import any_crm_integrations
|
from core.crm import any_crm_integrations
|
||||||
from core.crm.exceptions import CRMException
|
from core.crm.exceptions import CRMException
|
||||||
from core.models import Category, Order, Product, PromoCode, Wishlist, DigitalAssetDownload
|
from core.models import Category, DigitalAssetDownload, Order, Product, PromoCode, Wishlist
|
||||||
from core.utils import (
|
from core.utils import (
|
||||||
generate_human_readable_id,
|
generate_human_readable_id,
|
||||||
resolve_translations_for_elasticsearch,
|
resolve_translations_for_elasticsearch,
|
||||||
|
|
@ -25,8 +26,9 @@ from vibes_auth.models import User
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=User)
|
@receiver(post_save, sender=User)
|
||||||
def create_order_on_user_creation_signal(instance, created, **_kwargs):
|
def create_order_on_user_creation_signal(instance: User, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
if created:
|
if created:
|
||||||
try:
|
try:
|
||||||
Order.objects.create(user=instance, status="PENDING")
|
Order.objects.create(user=instance, status="PENDING")
|
||||||
|
|
@ -40,17 +42,23 @@ def create_order_on_user_creation_signal(instance, created, **_kwargs):
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=User)
|
@receiver(post_save, sender=User)
|
||||||
def create_wishlist_on_user_creation_signal(instance, created, **_kwargs):
|
def create_wishlist_on_user_creation_signal(instance: User, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
if created:
|
if created:
|
||||||
Wishlist.objects.create(user=instance)
|
Wishlist.objects.create(user=instance)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=User)
|
@receiver(post_save, sender=User)
|
||||||
def create_promocode_on_user_referring(instance, created, **_kwargs):
|
def create_promocode_on_user_referring(instance: User, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
try:
|
try:
|
||||||
|
if not instance.attributes:
|
||||||
|
instance.attributes = {}
|
||||||
|
instance.save()
|
||||||
|
|
||||||
if created and instance.attributes.get("referrer", ""):
|
if created and instance.attributes.get("referrer", ""):
|
||||||
referrer_uuid = urlsafe_base64_decode(instance.attributes.get("referrer", ""))
|
referrer_uuid = urlsafe_base64_decode(instance.attributes.get("referrer", "")).decode()
|
||||||
referrer = User.objects.get(uuid=referrer_uuid)
|
referrer = User.objects.get(uuid=referrer_uuid)
|
||||||
code = f"WELCOME-{get_random_string(6)}"
|
code = f"WELCOME-{get_random_string(6)}"
|
||||||
PromoCode.objects.create(
|
PromoCode.objects.create(
|
||||||
|
|
@ -65,8 +73,9 @@ def create_promocode_on_user_referring(instance, created, **_kwargs):
|
||||||
logger.error(_(f"error during promocode creation: {e!s}"))
|
logger.error(_(f"error during promocode creation: {e!s}"))
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=Order)
|
@receiver(post_save, sender=Order)
|
||||||
def process_order_changes(instance, created, **_kwargs):
|
def process_order_changes(instance: Order, created: bool, **kwargs: dict[Any, Any]):
|
||||||
if type(instance.attributes) is not dict:
|
if type(instance.attributes) is not dict:
|
||||||
instance.attributes = {}
|
instance.attributes = {}
|
||||||
|
|
||||||
|
|
@ -99,9 +108,12 @@ def process_order_changes(instance, created, **_kwargs):
|
||||||
|
|
||||||
if instance.status in ["CREATED", "PAYMENT"]:
|
if instance.status in ["CREATED", "PAYMENT"]:
|
||||||
if not instance.is_whole_digital:
|
if not instance.is_whole_digital:
|
||||||
send_order_created_email.delay(instance.uuid)
|
send_order_created_email.delay(instance.uuid) # type: ignore [attr-defined]
|
||||||
|
|
||||||
for order_product in instance.order_products.filter(status="DELIVERING", product__is_digital=True):
|
for order_product in instance.order_products.filter(status="DELIVERING", product__is_digital=True):
|
||||||
|
if not order_product.product:
|
||||||
|
continue
|
||||||
|
|
||||||
stocks_qs = order_product.product.stocks.filter(digital_asset__isnull=False).exclude(digital_asset="")
|
stocks_qs = order_product.product.stocks.filter(digital_asset__isnull=False).exclude(digital_asset="")
|
||||||
|
|
||||||
stock = stocks_qs.first()
|
stock = stocks_qs.first()
|
||||||
|
|
@ -115,8 +127,8 @@ def process_order_changes(instance, created, **_kwargs):
|
||||||
order_product.status = "FINISHED"
|
order_product.status = "FINISHED"
|
||||||
if not order_product.download:
|
if not order_product.download:
|
||||||
DigitalAssetDownload.objects.create(order_product=order_product)
|
DigitalAssetDownload.objects.create(order_product=order_product)
|
||||||
order_product.order.user.payments_balance.amount -= order_product.buy_price
|
order_product.order.user.payments_balance.amount -= order_product.buy_price # type: ignore [union-attr, operator]
|
||||||
order_product.order.user.payments_balance.save()
|
order_product.order.user.payments_balance.save() # type: ignore [union-attr]
|
||||||
order_product.save()
|
order_product.save()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
@ -124,12 +136,12 @@ def process_order_changes(instance, created, **_kwargs):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
vendor_name = (
|
vendor_name = (
|
||||||
order_product.product.stocks.filter(price=order_product.buy_price).first().vendor.name.lower()
|
order_product.product.stocks.filter(price=order_product.buy_price).first().vendor.name.lower() # type: ignore [union-attr, attr-defined, misc]
|
||||||
)
|
)
|
||||||
|
|
||||||
vendor = create_object(f"core.vendors.{vendor_name}", f"{vendor_name.title()}Vendor")
|
vendor = create_object(f"core.vendors.{vendor_name}", f"{vendor_name.title()}Vendor")
|
||||||
|
|
||||||
vendor.buy_order_product(order_product)
|
vendor.buy_order_product(order_product) # type: ignore [attr-defined]
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
order_product.add_error(f"Failed to buy {order_product.uuid}. Reason: {e}...")
|
order_product.add_error(f"Failed to buy {order_product.uuid}. Reason: {e}...")
|
||||||
|
|
@ -144,26 +156,29 @@ def process_order_changes(instance, created, **_kwargs):
|
||||||
if instance.status == "FINISHED" and not instance.attributes.get("system_email_sent", False):
|
if instance.status == "FINISHED" and not instance.attributes.get("system_email_sent", False):
|
||||||
instance.attributes["system_email_sent"] = True
|
instance.attributes["system_email_sent"] = True
|
||||||
instance.save()
|
instance.save()
|
||||||
send_order_finished_email.delay(instance.uuid)
|
send_order_finished_email.delay(instance.uuid) # type: ignore [attr-defined]
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=Product)
|
@receiver(post_save, sender=Product)
|
||||||
def update_product_name_lang(instance, created, **_kwargs):
|
def update_product_name_lang(instance: Product, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
if created:
|
if created:
|
||||||
pass
|
pass
|
||||||
resolve_translations_for_elasticsearch(instance, "name")
|
resolve_translations_for_elasticsearch(instance, "name")
|
||||||
resolve_translations_for_elasticsearch(instance, "description")
|
resolve_translations_for_elasticsearch(instance, "description")
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=Category)
|
@receiver(post_save, sender=Category)
|
||||||
def update_category_name_lang(instance, created, **_kwargs):
|
def update_category_name_lang(instance: Category, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
if created:
|
if created:
|
||||||
pass
|
pass
|
||||||
resolve_translations_for_elasticsearch(instance, "name")
|
resolve_translations_for_elasticsearch(instance, "name")
|
||||||
resolve_translations_for_elasticsearch(instance, "description")
|
resolve_translations_for_elasticsearch(instance, "description")
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@receiver(post_save, sender=PromoCode)
|
@receiver(post_save, sender=PromoCode)
|
||||||
def send_promocode_creation_email(instance, created, **_kwargs):
|
def send_promocode_creation_email(instance: PromoCode, created: bool, **kwargs: dict[Any, Any]) -> None:
|
||||||
if created:
|
if created:
|
||||||
send_promocode_created_email.delay(instance.uuid)
|
send_promocode_created_email.delay(instance.uuid) # type: ignore [attr-defined]
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.sitemaps import Sitemap
|
from django.contrib.sitemaps import Sitemap
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from core.models import Brand, Category, Product
|
from core.models import Brand, Category, Product
|
||||||
from core.utils.seo_builders import any_non_digital
|
from core.utils.seo_builders import any_non_digital
|
||||||
from evibes.settings import LANGUAGE_CODE
|
from evibes.settings import LANGUAGE_CODE
|
||||||
|
|
||||||
|
|
||||||
class StaticPagesSitemap(Sitemap):
|
class StaticPagesSitemap(Sitemap): # type: ignore [type-arg]
|
||||||
protocol = "https"
|
protocol = "https"
|
||||||
changefreq = "monthly"
|
changefreq = "monthly"
|
||||||
priority = 0.8
|
priority = 0.8
|
||||||
|
|
@ -54,7 +55,7 @@ class StaticPagesSitemap(Sitemap):
|
||||||
return obj.get("lastmod")
|
return obj.get("lastmod")
|
||||||
|
|
||||||
|
|
||||||
# class FeaturedProductsSitemap(Sitemap):
|
# class FeaturedProductsSitemap(Sitemap): # type: ignore [type-arg]
|
||||||
# protocol = "https"
|
# protocol = "https"
|
||||||
# changefreq = "daily"
|
# changefreq = "daily"
|
||||||
# priority = 0.9
|
# priority = 0.9
|
||||||
|
|
@ -80,7 +81,7 @@ class StaticPagesSitemap(Sitemap):
|
||||||
# return f"/{LANGUAGE_CODE}/product/{obj.slug}"
|
# return f"/{LANGUAGE_CODE}/product/{obj.slug}"
|
||||||
|
|
||||||
|
|
||||||
class ProductSitemap(Sitemap):
|
class ProductSitemap(Sitemap): # type: ignore [type-arg]
|
||||||
protocol = "https"
|
protocol = "https"
|
||||||
changefreq = "daily"
|
changefreq = "daily"
|
||||||
priority = 0.9
|
priority = 0.9
|
||||||
|
|
@ -106,7 +107,7 @@ class ProductSitemap(Sitemap):
|
||||||
return f"/{LANGUAGE_CODE}/product/{obj.slug}"
|
return f"/{LANGUAGE_CODE}/product/{obj.slug}"
|
||||||
|
|
||||||
|
|
||||||
class CategorySitemap(Sitemap):
|
class CategorySitemap(Sitemap): # type: ignore [type-arg]
|
||||||
protocol = "https"
|
protocol = "https"
|
||||||
changefreq = "weekly"
|
changefreq = "weekly"
|
||||||
priority = 0.7
|
priority = 0.7
|
||||||
|
|
@ -122,7 +123,7 @@ class CategorySitemap(Sitemap):
|
||||||
return f"/{LANGUAGE_CODE}/catalog/{obj.slug}"
|
return f"/{LANGUAGE_CODE}/catalog/{obj.slug}"
|
||||||
|
|
||||||
|
|
||||||
class BrandSitemap(Sitemap):
|
class BrandSitemap(Sitemap): # type: ignore [type-arg]
|
||||||
protocol = "https"
|
protocol = "https"
|
||||||
changefreq = "weekly"
|
changefreq = "weekly"
|
||||||
priority = 0.6
|
priority = 0.6
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import shutil
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import date, timedelta
|
from datetime import date, timedelta
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from celery.app import shared_task
|
from celery.app import shared_task
|
||||||
|
|
@ -38,7 +39,7 @@ def update_products_task() -> tuple[bool, str]:
|
||||||
|
|
||||||
if not update_products_task_running:
|
if not update_products_task_running:
|
||||||
cache.set("update_products_task_running", True, 86400)
|
cache.set("update_products_task_running", True, 86400)
|
||||||
vendors_classes: list = []
|
vendors_classes: list[Any] = []
|
||||||
|
|
||||||
for vendor_class in vendors_classes:
|
for vendor_class in vendors_classes:
|
||||||
vendor = vendor_class()
|
vendor = vendor_class()
|
||||||
|
|
@ -69,7 +70,7 @@ def update_orderproducts_task() -> tuple[bool, str]:
|
||||||
message confirming the successful execution of the task.
|
message confirming the successful execution of the task.
|
||||||
:rtype: Tuple[bool, str]
|
:rtype: Tuple[bool, str]
|
||||||
"""
|
"""
|
||||||
vendors_classes: list = []
|
vendors_classes: list[Any] = []
|
||||||
|
|
||||||
for vendor_class in vendors_classes:
|
for vendor_class in vendors_classes:
|
||||||
vendor = vendor_class()
|
vendor = vendor_class()
|
||||||
|
|
@ -202,7 +203,7 @@ def process_promotions() -> tuple[bool, str]:
|
||||||
if eligible_products.count() < 48:
|
if eligible_products.count() < 48:
|
||||||
return False, "Not enough products to choose from [< 48]."
|
return False, "Not enough products to choose from [< 48]."
|
||||||
|
|
||||||
selected_products: list = []
|
selected_products: list[Any] = []
|
||||||
|
|
||||||
while len(selected_products) < 48:
|
while len(selected_products) < 48:
|
||||||
product = eligible_products.order_by("?").first()
|
product = eligible_products.order_by("?").first()
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def attributes_length(value, arg):
|
def attributes_length(value: Any, arg: int) -> bool:
|
||||||
"""Returns True if the value length is more than the argument."""
|
"""Returns True if the value length is more than the argument."""
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
count = 0
|
count = 0
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase # noqa: F401
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1 +1,3 @@
|
||||||
urlpatterns: list = []
|
from typing import Any
|
||||||
|
|
||||||
|
urlpatterns: list[Any] = []
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,18 @@ import logging
|
||||||
import re
|
import re
|
||||||
import secrets
|
import secrets
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
from typing import Any, Generator
|
||||||
|
|
||||||
from constance import config
|
from constance import config
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.core import mail
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
|
from django.core.mail.backends.smtp import EmailBackend
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils.crypto import get_random_string
|
from django.utils.crypto import get_random_string
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
|
from graphene import Context
|
||||||
|
from rest_framework.request import Request
|
||||||
|
|
||||||
from evibes.settings import DEBUG, EXPOSABLE_KEYS, LANGUAGE_CODE
|
from evibes.settings import DEBUG, EXPOSABLE_KEYS, LANGUAGE_CODE
|
||||||
|
|
||||||
|
|
@ -29,7 +34,7 @@ def graphene_current_lang() -> str:
|
||||||
return (get_language() or settings.LANGUAGE_CODE).lower()
|
return (get_language() or settings.LANGUAGE_CODE).lower()
|
||||||
|
|
||||||
|
|
||||||
def graphene_abs(request, path_or_url: str) -> str:
|
def graphene_abs(request: Request | Context, path_or_url: str) -> str:
|
||||||
"""
|
"""
|
||||||
Builds and returns an absolute URI for a given path or URL.
|
Builds and returns an absolute URI for a given path or URL.
|
||||||
|
|
||||||
|
|
@ -63,20 +68,20 @@ def get_random_code() -> str:
|
||||||
return get_random_string(20)
|
return get_random_string(20)
|
||||||
|
|
||||||
|
|
||||||
def get_product_uuid_as_path(instance, filename: str = "") -> str:
|
def get_product_uuid_as_path(instance, filename: str = "") -> str: # type: ignore [no-untyped-def]
|
||||||
return "products" + "/" + str(instance.product.uuid) + "/" + filename
|
return "products" + "/" + str(instance.product.uuid) + "/" + filename
|
||||||
|
|
||||||
|
|
||||||
def get_vendor_name_as_path(instance, filename: str = "") -> str:
|
def get_vendor_name_as_path(instance, filename: str = "") -> str: # type: ignore [no-untyped-def]
|
||||||
return "vendors_responses/" + str(instance.name) + "/" + filename
|
return "vendors_responses/" + str(instance.name) + "/" + filename
|
||||||
|
|
||||||
|
|
||||||
def get_brand_name_as_path(instance, filename: str = "") -> str:
|
def get_brand_name_as_path(instance, filename: str = "") -> str: # type: ignore [no-untyped-def]
|
||||||
return "brands/" + str(instance.name) + "/" + filename
|
return "brands/" + str(instance.name) + "/" + filename
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def atomic_if_not_debug():
|
def atomic_if_not_debug() -> Generator[None, None, None]:
|
||||||
"""
|
"""
|
||||||
Context manager to wrap a block of code in an atomic transaction if the DEBUG
|
Context manager to wrap a block of code in an atomic transaction if the DEBUG
|
||||||
setting is not enabled.
|
setting is not enabled.
|
||||||
|
|
@ -97,7 +102,7 @@ def is_url_safe(url: str) -> bool:
|
||||||
return bool(re.match(r"^https://", url, re.IGNORECASE))
|
return bool(re.match(r"^https://", url, re.IGNORECASE))
|
||||||
|
|
||||||
|
|
||||||
def format_attributes(attributes: str | None = None) -> dict:
|
def format_attributes(attributes: str | None = None) -> dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
Parses a string of attributes into a dictionary.
|
Parses a string of attributes into a dictionary.
|
||||||
|
|
||||||
|
|
@ -125,7 +130,7 @@ def format_attributes(attributes: str | None = None) -> dict:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def get_project_parameters() -> dict:
|
def get_project_parameters() -> Any:
|
||||||
"""
|
"""
|
||||||
Fetches project parameters from cache or configuration.
|
Fetches project parameters from cache or configuration.
|
||||||
|
|
||||||
|
|
@ -134,7 +139,7 @@ def get_project_parameters() -> dict:
|
||||||
configuration source, formats their keys to lowercase, and then stores
|
configuration source, formats their keys to lowercase, and then stores
|
||||||
them in the cache for a limited period.
|
them in the cache for a limited period.
|
||||||
"""
|
"""
|
||||||
parameters = cache.get("parameters", {})
|
parameters = cache.get("parameters")
|
||||||
|
|
||||||
if not parameters:
|
if not parameters:
|
||||||
for key in EXPOSABLE_KEYS:
|
for key in EXPOSABLE_KEYS:
|
||||||
|
|
@ -145,7 +150,7 @@ def get_project_parameters() -> dict:
|
||||||
return parameters
|
return parameters
|
||||||
|
|
||||||
|
|
||||||
def resolve_translations_for_elasticsearch(instance, field_name: str) -> None:
|
def resolve_translations_for_elasticsearch(instance, field_name: str) -> None: # type: ignore [no-untyped-def]
|
||||||
"""
|
"""
|
||||||
Resolves translations for a given field in an Elasticsearch-compatible
|
Resolves translations for a given field in an Elasticsearch-compatible
|
||||||
format. It checks if the localized version of the field contains data,
|
format. It checks if the localized version of the field contains data,
|
||||||
|
|
@ -199,3 +204,17 @@ def generate_human_readable_token() -> str:
|
||||||
|
|
||||||
def is_status_code_success(status_code: int) -> bool:
|
def is_status_code_success(status_code: int) -> bool:
|
||||||
return 200 <= status_code < 300
|
return 200 <= status_code < 300
|
||||||
|
|
||||||
|
|
||||||
|
def get_dynamic_email_connection() -> EmailBackend:
|
||||||
|
return mail.get_connection( # type: ignore [no-any-return]
|
||||||
|
host=config.EMAIL_HOST,
|
||||||
|
port=config.EMAIL_PORT,
|
||||||
|
username=config.EMAIL_HOST_USER,
|
||||||
|
password=config.EMAIL_HOST_PASSWORD,
|
||||||
|
use_tls=config.EMAIL_USE_TLS,
|
||||||
|
use_ssl=config.EMAIL_USE_SSL,
|
||||||
|
timeout=30,
|
||||||
|
fail_silently=False,
|
||||||
|
backend=config.EMAIL_BACKEND,
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any, Type
|
||||||
|
|
||||||
from django.contrib.auth.base_user import AbstractBaseUser
|
|
||||||
from django.contrib.auth.models import AnonymousUser
|
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.core.exceptions import BadRequest
|
from django.core.exceptions import BadRequest
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
@ -17,11 +15,11 @@ from vibes_auth.models import User
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
def is_safe_cache_key(key: str):
|
def is_safe_cache_key(key: str) -> bool:
|
||||||
return key not in UNSAFE_CACHE_KEYS
|
return key not in UNSAFE_CACHE_KEYS
|
||||||
|
|
||||||
|
|
||||||
def get_cached_value(user: User, key: str, default=None) -> None | object:
|
def get_cached_value(user: Type[User], key: str, default: Any = None) -> Any:
|
||||||
if user.is_staff or user.is_superuser:
|
if user.is_staff or user.is_superuser:
|
||||||
return cache.get(key, default)
|
return cache.get(key, default)
|
||||||
|
|
||||||
|
|
@ -31,9 +29,7 @@ def get_cached_value(user: User, key: str, default=None) -> None | object:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def set_cached_value(
|
def set_cached_value(user: Type[User], key: str, value: object, timeout: int = 3600) -> None | object:
|
||||||
user: User | AbstractBaseUser | AnonymousUser, key: str, value: object, timeout: int = 3600
|
|
||||||
) -> None | object:
|
|
||||||
if user.is_staff or user.is_superuser:
|
if user.is_staff or user.is_superuser:
|
||||||
cache.set(key, value, timeout)
|
cache.set(key, value, timeout)
|
||||||
return value
|
return value
|
||||||
|
|
@ -41,14 +37,14 @@ def set_cached_value(
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def web_cache(request: Request | Context, key: str, data: dict[str, Any], timeout: int):
|
def web_cache(request: Request | Context, key: str, data: dict[str, Any], timeout: int) -> dict[str, Any]:
|
||||||
if not data and not timeout:
|
if not data and not timeout:
|
||||||
return {"data": get_cached_value(request.user, key)}
|
return {"data": get_cached_value(request.user, key)} # type: ignore [assignment, arg-type]
|
||||||
if (data and not timeout) or (timeout and not data):
|
if (data and not timeout) or (timeout and not data):
|
||||||
raise BadRequest(_("both data and timeout are required"))
|
raise BadRequest(_("both data and timeout are required"))
|
||||||
if not 0 < int(timeout) < 216000:
|
if not 0 < int(timeout) < 216000:
|
||||||
raise BadRequest(_("invalid timeout value, it must be between 0 and 216000 seconds"))
|
raise BadRequest(_("invalid timeout value, it must be between 0 and 216000 seconds"))
|
||||||
return {"data": set_cached_value(request.user, key, data, timeout)}
|
return {"data": set_cached_value(request.user, key, data, timeout)} # type: ignore [assignment, arg-type]
|
||||||
|
|
||||||
|
|
||||||
def set_default_cache() -> None:
|
def set_default_cache() -> None:
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from constance import config
|
|
||||||
|
|
||||||
from evibes import settings
|
|
||||||
|
|
||||||
|
|
||||||
def set_email_settings():
|
|
||||||
settings.EMAIL_HOST = config.EMAIL_HOST
|
|
||||||
settings.EMAIL_PORT = config.EMAIL_PORT
|
|
||||||
settings.EMAIL_HOST_USER = config.EMAIL_HOST_USER
|
|
||||||
settings.EMAIL_HOST_PASSWORD = config.EMAIL_HOST_PASSWORD
|
|
||||||
settings.EMAIL_USE_TLS = config.EMAIL_USE_TLS
|
|
||||||
settings.EMAIL_USE_SSL = config.EMAIL_USE_SSL
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
|
from typing import Any, Callable
|
||||||
|
|
||||||
|
from django.db.models import Model
|
||||||
from django.db.models.constants import LOOKUP_SEP
|
from django.db.models.constants import LOOKUP_SEP
|
||||||
from django_extensions.db.fields import AutoSlugField
|
from django_extensions.db.fields import AutoSlugField
|
||||||
from slugify import slugify
|
from slugify import slugify
|
||||||
|
|
@ -7,7 +9,7 @@ from slugify import slugify
|
||||||
logger = logging.getLogger("django")
|
logger = logging.getLogger("django")
|
||||||
|
|
||||||
|
|
||||||
def unicode_slugify_function(content):
|
def unicode_slugify_function(content: Any) -> str:
|
||||||
return slugify(
|
return slugify(
|
||||||
text=str(content),
|
text=str(content),
|
||||||
allow_unicode=True,
|
allow_unicode=True,
|
||||||
|
|
@ -20,7 +22,7 @@ def unicode_slugify_function(content):
|
||||||
|
|
||||||
|
|
||||||
class TweakedAutoSlugField(AutoSlugField):
|
class TweakedAutoSlugField(AutoSlugField):
|
||||||
def get_slug_fields(self, model_instance, lookup_value):
|
def get_slug_fields(self, model_instance: Model, lookup_value: str | Callable[[Any], Any]) -> str | Model:
|
||||||
if callable(lookup_value):
|
if callable(lookup_value):
|
||||||
return f"{lookup_value(model_instance)}"
|
return f"{lookup_value(model_instance)}"
|
||||||
|
|
||||||
|
|
@ -29,9 +31,9 @@ class TweakedAutoSlugField(AutoSlugField):
|
||||||
|
|
||||||
for elem in lookup_value_path:
|
for elem in lookup_value_path:
|
||||||
try:
|
try:
|
||||||
attr = getattr(attr, elem)
|
attr: Any = getattr(attr, elem)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
attr = ""
|
attr: Any = ""
|
||||||
if callable(attr):
|
if callable(attr):
|
||||||
# noinspection PyCallingNonCallable
|
# noinspection PyCallingNonCallable
|
||||||
return f"{attr()}"
|
return f"{attr()}"
|
||||||
|
|
|
||||||
|
|
@ -4,22 +4,24 @@ from celery.app import shared_task
|
||||||
from celery.utils.log import get_task_logger
|
from celery.utils.log import get_task_logger
|
||||||
from constance import config
|
from constance import config
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import mail
|
|
||||||
from django.core.mail import EmailMessage
|
from django.core.mail import EmailMessage
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.translation import activate
|
from django.utils.translation import activate
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from core.models import Order, OrderProduct, PromoCode
|
from core.models import Order, OrderProduct, PromoCode
|
||||||
from core.utils.constance import set_email_settings
|
from core.utils import get_dynamic_email_connection
|
||||||
|
|
||||||
logger = get_task_logger(__name__)
|
logger = get_task_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@shared_task(queue="default")
|
@shared_task(queue="default")
|
||||||
def contact_us_email(contact_info):
|
def contact_us_email(contact_info) -> tuple[bool, str]:
|
||||||
set_email_settings()
|
logger.debug(
|
||||||
connection = mail.get_connection()
|
"Contact us email sent to %s with subject %s",
|
||||||
|
contact_info.get("email"),
|
||||||
|
contact_info.get("subject", "Without subject"),
|
||||||
|
)
|
||||||
|
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
_(f"{config.PROJECT_NAME} | contact us initiated"),
|
_(f"{config.PROJECT_NAME} | contact us initiated"),
|
||||||
|
|
@ -36,7 +38,7 @@ def contact_us_email(contact_info):
|
||||||
),
|
),
|
||||||
to=[config.EMAIL_FROM],
|
to=[config.EMAIL_FROM],
|
||||||
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
||||||
connection=connection,
|
connection=get_dynamic_email_connection(),
|
||||||
)
|
)
|
||||||
email.content_subtype = "html"
|
email.content_subtype = "html"
|
||||||
email.send()
|
email.send()
|
||||||
|
|
@ -66,9 +68,6 @@ def send_order_created_email(order_pk: str) -> tuple[bool, str]:
|
||||||
|
|
||||||
activate(language)
|
activate(language)
|
||||||
|
|
||||||
set_email_settings()
|
|
||||||
connection = mail.get_connection()
|
|
||||||
|
|
||||||
if not order.is_whole_digital:
|
if not order.is_whole_digital:
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
_(f"{config.PROJECT_NAME} | order confirmation"),
|
_(f"{config.PROJECT_NAME} | order confirmation"),
|
||||||
|
|
@ -83,7 +82,7 @@ def send_order_created_email(order_pk: str) -> tuple[bool, str]:
|
||||||
),
|
),
|
||||||
to=[recipient],
|
to=[recipient],
|
||||||
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
||||||
connection=connection,
|
connection=get_dynamic_email_connection(),
|
||||||
)
|
)
|
||||||
email.content_subtype = "html"
|
email.content_subtype = "html"
|
||||||
email.send()
|
email.send()
|
||||||
|
|
@ -93,7 +92,7 @@ def send_order_created_email(order_pk: str) -> tuple[bool, str]:
|
||||||
|
|
||||||
@shared_task(queue="default")
|
@shared_task(queue="default")
|
||||||
def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
|
def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
|
||||||
def send_digital_assets_email(ops: list[OrderProduct]):
|
def send_digital_assets_email(ops: list[OrderProduct]) -> None:
|
||||||
if len(ops) <= 0:
|
if len(ops) <= 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -102,9 +101,6 @@ def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
|
||||||
|
|
||||||
activate(order.user.language)
|
activate(order.user.language)
|
||||||
|
|
||||||
set_email_settings()
|
|
||||||
connection = mail.get_connection()
|
|
||||||
|
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
_(f"{config.PROJECT_NAME} | order delivered"),
|
_(f"{config.PROJECT_NAME} | order delivered"),
|
||||||
render_to_string(
|
render_to_string(
|
||||||
|
|
@ -122,21 +118,19 @@ def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
|
||||||
),
|
),
|
||||||
to=[order.user.email],
|
to=[order.user.email],
|
||||||
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
||||||
connection=connection,
|
connection=get_dynamic_email_connection(),
|
||||||
)
|
)
|
||||||
email.content_subtype = "html"
|
email.content_subtype = "html"
|
||||||
result = email.send()
|
result = email.send()
|
||||||
logger.debug("Order %s: Tried to send email to %s, resulted with %s", order.pk, order.user.email, result)
|
logger.debug("Order %s: Tried to send email to %s, resulted with %s", order.pk, order.user.email, result)
|
||||||
|
|
||||||
def send_thank_you_email(ops: list[OrderProduct]):
|
def send_thank_you_email(ops: list[OrderProduct]) -> None:
|
||||||
if ops:
|
if ops:
|
||||||
pass
|
pass
|
||||||
if not order.user:
|
if not order.user:
|
||||||
return
|
return
|
||||||
activate(order.user.language)
|
activate(order.user.language)
|
||||||
|
|
||||||
set_email_settings()
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -190,9 +184,6 @@ def send_promocode_created_email(promocode_pk: str) -> tuple[bool, str]:
|
||||||
|
|
||||||
activate(promocode.user.language)
|
activate(promocode.user.language)
|
||||||
|
|
||||||
set_email_settings()
|
|
||||||
connection = mail.get_connection()
|
|
||||||
|
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
_(f"{config.PROJECT_NAME} | promocode granted"),
|
_(f"{config.PROJECT_NAME} | promocode granted"),
|
||||||
render_to_string(
|
render_to_string(
|
||||||
|
|
@ -208,7 +199,7 @@ def send_promocode_created_email(promocode_pk: str) -> tuple[bool, str]:
|
||||||
),
|
),
|
||||||
to=[promocode.user.email],
|
to=[promocode.user.email],
|
||||||
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
from_email=f"{config.PROJECT_NAME} <{config.EMAIL_FROM}>",
|
||||||
connection=connection,
|
connection=get_dynamic_email_connection(),
|
||||||
)
|
)
|
||||||
email.content_subtype = "html"
|
email.content_subtype = "html"
|
||||||
result = email.send()
|
result = email.send()
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from constance import config
|
from constance import config
|
||||||
|
|
||||||
|
|
||||||
def get_flag_by_language(language):
|
def get_flag_by_language(language: str) -> str:
|
||||||
return f"https://api.{config.BASE_DOMAIN}/static/flags/{language}.png"
|
return f"https://api.{config.BASE_DOMAIN}/static/flags/{language}.png"
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@ from django.core.files.images import ImageFile, get_image_dimensions
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
def validate_category_image_dimensions(image: ImageFile) -> None:
|
def validate_category_image_dimensions(
|
||||||
max_width = 99999
|
image: ImageFile, max_width: int | None = None, max_height: int | None = None
|
||||||
max_height = 99999
|
) -> None:
|
||||||
|
max_width = max_width or 7680
|
||||||
|
max_height = max_height or 4320
|
||||||
|
|
||||||
if image:
|
if image:
|
||||||
width, height = get_image_dimensions(image.file)
|
width, height = get_image_dimensions(image.file) # type: ignore [arg-type]
|
||||||
|
|
||||||
if width > max_width or height > max_height:
|
if int(width) > max_width or int(height) > max_height: # type: ignore [arg-type]
|
||||||
raise ValidationError(_(f"image dimensions should not exceed w{max_width} x h{max_height} pixels"))
|
raise ValidationError(_(f"image dimensions should not exceed w{max_width} x h{max_height} pixels"))
|
||||||
|
|
|
||||||
14
core/vendors/__init__.py
vendored
14
core/vendors/__init__.py
vendored
|
|
@ -231,12 +231,12 @@ class AbstractVendor:
|
||||||
def resolve_price_with_currency(self, price: float | int | Decimal, provider: str, currency: str = "") -> float:
|
def resolve_price_with_currency(self, price: float | int | Decimal, provider: str, currency: str = "") -> float:
|
||||||
rates = get_rates(provider)
|
rates = get_rates(provider)
|
||||||
|
|
||||||
rate = rates.get(currency or self.currency)
|
rate = rates.get(currency or self.currency) if rates else 1
|
||||||
|
|
||||||
if not rate:
|
if not rate:
|
||||||
raise RatesError(f"No rate found for {currency or self.currency} in {rates} with probider {provider}...")
|
raise RatesError(f"No rate found for {currency or self.currency} in {rates} with probider {provider}...")
|
||||||
|
|
||||||
return float(round(price / rate, 2)) if rate else float(round(price, 2)) # type: ignore [arg-type]
|
return float(round(price / rate, 2)) if rate else float(round(price, 2)) # type: ignore [arg-type, operator]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def round_price_marketologically(price: float) -> float:
|
def round_price_marketologically(price: float) -> float:
|
||||||
|
|
@ -339,9 +339,9 @@ class AbstractVendor:
|
||||||
Product.objects.filter(pk__in=batch_ids).delete()
|
Product.objects.filter(pk__in=batch_ids).delete()
|
||||||
|
|
||||||
def delete_belongings(self) -> None:
|
def delete_belongings(self) -> None:
|
||||||
self.get_products_queryset().delete() # type: ignore [union-attr]
|
self.get_products_queryset().delete()
|
||||||
self.get_stocks_queryset().delete() # type: ignore [union-attr]
|
self.get_stocks_queryset().delete()
|
||||||
self.get_attribute_values_queryset().delete() # type: ignore [union-attr]
|
self.get_attribute_values_queryset().delete()
|
||||||
|
|
||||||
def get_or_create_attribute_safe(self, *, name: str, attr_group: AttributeGroup) -> Attribute:
|
def get_or_create_attribute_safe(self, *, name: str, attr_group: AttributeGroup) -> Attribute:
|
||||||
key = name[:255]
|
key = name[:255]
|
||||||
|
|
@ -393,11 +393,11 @@ class AbstractVendor:
|
||||||
attribute = Attribute.objects.filter(name=key, group=attr_group).order_by("uuid").first() # type: ignore [assignment]
|
attribute = Attribute.objects.filter(name=key, group=attr_group).order_by("uuid").first() # type: ignore [assignment]
|
||||||
attribute.is_active = True
|
attribute.is_active = True
|
||||||
attribute.value_type = attr_value_type
|
attribute.value_type = attr_value_type
|
||||||
attribute.save() # type: ignore [no-untyped-call]
|
attribute.save()
|
||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
return
|
return
|
||||||
|
|
||||||
attribute.save() # type: ignore [no-untyped-call]
|
attribute.save()
|
||||||
|
|
||||||
if not is_created:
|
if not is_created:
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from django.contrib.sitemaps.views import index as _sitemap_index_view
|
||||||
from django.contrib.sitemaps.views import sitemap as _sitemap_detail_view
|
from django.contrib.sitemaps.views import sitemap as _sitemap_detail_view
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.core.exceptions import BadRequest
|
from django.core.exceptions import BadRequest
|
||||||
from django.http import FileResponse, Http404, JsonResponse, HttpRequest, HttpResponseRedirect
|
from django.http import FileResponse, Http404, HttpRequest, HttpResponse, HttpResponseRedirect, JsonResponse
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.utils.http import urlsafe_base64_decode
|
from django.utils.http import urlsafe_base64_decode
|
||||||
|
|
@ -181,9 +181,9 @@ class CacheOperatorView(APIView):
|
||||||
return Response(
|
return Response(
|
||||||
data=web_cache(
|
data=web_cache(
|
||||||
request,
|
request,
|
||||||
request.data.get("key"),
|
request.data.get("key"), # type: ignore [arg-type]
|
||||||
request.data.get("data"),
|
request.data.get("data", {}),
|
||||||
request.data.get("timeout"),
|
request.data.get("timeout"), # type: ignore [arg-type]
|
||||||
),
|
),
|
||||||
status=status.HTTP_200_OK,
|
status=status.HTTP_200_OK,
|
||||||
)
|
)
|
||||||
|
|
@ -205,7 +205,7 @@ class ContactUsView(APIView):
|
||||||
def post(self, request: Request, *args, **kwargs) -> Response:
|
def post(self, request: Request, *args, **kwargs) -> Response:
|
||||||
serializer = self.serializer_class(data=request.data)
|
serializer = self.serializer_class(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
contact_us_email.delay(serializer.validated_data)
|
contact_us_email.delay(serializer.validated_data) # type: ignore [attr-defined]
|
||||||
|
|
||||||
return Response(data=serializer.data, status=status.HTTP_200_OK)
|
return Response(data=serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
@ -227,7 +227,7 @@ class RequestCursedURLView(APIView):
|
||||||
@method_decorator(ratelimit(key="ip", rate="10/h"))
|
@method_decorator(ratelimit(key="ip", rate="10/h"))
|
||||||
def post(self, request: Request, *args, **kwargs) -> Response:
|
def post(self, request: Request, *args, **kwargs) -> Response:
|
||||||
url = request.data.get("url")
|
url = request.data.get("url")
|
||||||
if not is_url_safe(url):
|
if not is_url_safe(str(url)):
|
||||||
return Response(
|
return Response(
|
||||||
data={"error": _("only URLs starting with http(s):// are allowed")},
|
data={"error": _("only URLs starting with http(s):// are allowed")},
|
||||||
status=status.HTTP_400_BAD_REQUEST,
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
|
@ -235,7 +235,7 @@ class RequestCursedURLView(APIView):
|
||||||
try:
|
try:
|
||||||
data = cache.get(url, None)
|
data = cache.get(url, None)
|
||||||
if not data:
|
if not data:
|
||||||
response = requests.get(url, headers={"content-type": "application/json"})
|
response = requests.get(str(url), headers={"content-type": "application/json"})
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
data = camelize(response.json())
|
data = camelize(response.json())
|
||||||
cache.set(url, data, 86400)
|
cache.set(url, data, 86400)
|
||||||
|
|
@ -317,7 +317,10 @@ def download_digital_asset_view(request: HttpRequest, *args, **kwargs) -> FileRe
|
||||||
download.num_downloads += 1
|
download.num_downloads += 1
|
||||||
download.save()
|
download.save()
|
||||||
|
|
||||||
file_path = download.order_product.product.stocks.first().digital_asset.path
|
if not download.order_product.product:
|
||||||
|
raise BadRequest(_("the order product does not have a product"))
|
||||||
|
|
||||||
|
file_path = download.order_product.product.stocks.first().digital_asset.path # type: ignore [union-attr]
|
||||||
|
|
||||||
content_type, encoding = mimetypes.guess_type(file_path)
|
content_type, encoding = mimetypes.guess_type(file_path)
|
||||||
if not content_type:
|
if not content_type:
|
||||||
|
|
@ -357,7 +360,7 @@ download_digital_asset_view.__doc__ = _( # type: ignore [assignment]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def favicon_view(request: HttpRequest, *args, **kwargs) -> FileResponse | Http404:
|
def favicon_view(request: HttpRequest, *args, **kwargs) -> HttpResponse | FileResponse:
|
||||||
try:
|
try:
|
||||||
favicon_path = os.path.join(settings.BASE_DIR, "static/favicon.png")
|
favicon_path = os.path.join(settings.BASE_DIR, "static/favicon.png")
|
||||||
return FileResponse(open(favicon_path, "rb"), content_type="image/x-icon")
|
return FileResponse(open(favicon_path, "rb"), content_type="image/x-icon")
|
||||||
|
|
@ -373,7 +376,7 @@ favicon_view.__doc__ = _( # type: ignore [assignment]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def index(request: HttpRequest, *args, **kwargs) -> HttpResponseRedirect:
|
def index(request: HttpRequest, *args, **kwargs) -> HttpResponse | HttpResponseRedirect:
|
||||||
return redirect("admin:index")
|
return redirect("admin:index")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
|
from typing import Type
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from constance import config
|
from constance import config
|
||||||
|
|
@ -20,6 +21,7 @@ from rest_framework.permissions import AllowAny
|
||||||
from rest_framework.renderers import MultiPartRenderer
|
from rest_framework.renderers import MultiPartRenderer
|
||||||
from rest_framework.request import Request
|
from rest_framework.request import Request
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
from rest_framework.serializers import Serializer
|
||||||
from rest_framework.viewsets import ModelViewSet
|
from rest_framework.viewsets import ModelViewSet
|
||||||
from rest_framework_xml.renderers import XMLRenderer
|
from rest_framework_xml.renderers import XMLRenderer
|
||||||
from rest_framework_yaml.renderers import YAMLRenderer
|
from rest_framework_yaml.renderers import YAMLRenderer
|
||||||
|
|
@ -132,13 +134,14 @@ class EvibesViewSet(ModelViewSet):
|
||||||
"permissions, and rendering formats."
|
"permissions, and rendering formats."
|
||||||
)
|
)
|
||||||
|
|
||||||
action_serializer_classes: dict = {}
|
action_serializer_classes: dict[str, Type[Serializer]] = {}
|
||||||
additional: dict = {}
|
additional: dict[str, str] = {}
|
||||||
permission_classes = [EvibesPermission]
|
permission_classes = [EvibesPermission]
|
||||||
renderer_classes = [CamelCaseJSONRenderer, MultiPartRenderer, XMLRenderer, YAMLRenderer]
|
renderer_classes = [CamelCaseJSONRenderer, MultiPartRenderer, XMLRenderer, YAMLRenderer]
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self) -> Type[Serializer]:
|
||||||
return self.action_serializer_classes.get(self.action, super().get_serializer_class())
|
# noinspection PyTypeChecker
|
||||||
|
return self.action_serializer_classes.get(self.action, super().get_serializer_class()) # type: ignore [arg-type]
|
||||||
|
|
||||||
|
|
||||||
@extend_schema_view(**ATTRIBUTE_GROUP_SCHEMA)
|
@extend_schema_view(**ATTRIBUTE_GROUP_SCHEMA)
|
||||||
|
|
@ -587,6 +590,7 @@ class FeedbackViewSet(EvibesViewSet):
|
||||||
return qs.filter(is_active=True)
|
return qs.filter(is_active=True)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@extend_schema_view(**ORDER_SCHEMA)
|
@extend_schema_view(**ORDER_SCHEMA)
|
||||||
class OrderViewSet(EvibesViewSet):
|
class OrderViewSet(EvibesViewSet):
|
||||||
__doc__ = _(
|
__doc__ = _(
|
||||||
|
|
@ -659,9 +663,12 @@ class OrderViewSet(EvibesViewSet):
|
||||||
def buy(self, request: Request, *args, **kwargs) -> Response:
|
def buy(self, request: Request, *args, **kwargs) -> Response:
|
||||||
serializer = BuyOrderSerializer(data=request.data)
|
serializer = BuyOrderSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
lookup_val = kwargs.get(self.lookup_field)
|
order = self.get_object()
|
||||||
|
if not request.user or request.user.is_anonymous:
|
||||||
|
return Response(
|
||||||
|
status=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(user=request.user, uuid=lookup_val)
|
|
||||||
instance = order.buy(
|
instance = order.buy(
|
||||||
force_balance=serializer.validated_data.get("force_balance"),
|
force_balance=serializer.validated_data.get("force_balance"),
|
||||||
force_payment=serializer.validated_data.get("force_payment"),
|
force_payment=serializer.validated_data.get("force_payment"),
|
||||||
|
|
@ -709,9 +716,8 @@ class OrderViewSet(EvibesViewSet):
|
||||||
def add_order_product(self, request: Request, *args, **kwargs) -> Response:
|
def add_order_product(self, request: Request, *args, **kwargs) -> Response:
|
||||||
serializer = AddOrderProductSerializer(data=request.data)
|
serializer = AddOrderProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
lookup_val = kwargs.get(self.lookup_field)
|
order = self.get_object()
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(uuid=lookup_val)
|
|
||||||
if not (request.user.has_perm("core.add_orderproduct") or request.user == order.user):
|
if not (request.user.has_perm("core.add_orderproduct") or request.user == order.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -727,9 +733,8 @@ class OrderViewSet(EvibesViewSet):
|
||||||
def remove_order_product(self, request: Request, *args, **kwargs) -> Response:
|
def remove_order_product(self, request: Request, *args, **kwargs) -> Response:
|
||||||
serializer = RemoveOrderProductSerializer(data=request.data)
|
serializer = RemoveOrderProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
lookup_val = kwargs.get(self.lookup_field)
|
order = self.get_object()
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(uuid=lookup_val)
|
|
||||||
if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user):
|
if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -762,9 +767,8 @@ class OrderViewSet(EvibesViewSet):
|
||||||
def bulk_remove_order_products(self, request: Request, *args, **kwargs) -> Response:
|
def bulk_remove_order_products(self, request: Request, *args, **kwargs) -> Response:
|
||||||
serializer = BulkRemoveOrderProductsSerializer(data=request.data)
|
serializer = BulkRemoveOrderProductsSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
lookup_val = kwargs.get(self.lookup_field)
|
order = self.get_object()
|
||||||
try:
|
try:
|
||||||
order = Order.objects.get(uuid=lookup_val)
|
|
||||||
if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user):
|
if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -776,6 +780,7 @@ class OrderViewSet(EvibesViewSet):
|
||||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyUnusedLocal
|
||||||
@extend_schema_view(**ORDER_PRODUCT_SCHEMA)
|
@extend_schema_view(**ORDER_PRODUCT_SCHEMA)
|
||||||
class OrderProductViewSet(EvibesViewSet):
|
class OrderProductViewSet(EvibesViewSet):
|
||||||
__doc__ = _(
|
__doc__ = _(
|
||||||
|
|
@ -810,7 +815,9 @@ class OrderProductViewSet(EvibesViewSet):
|
||||||
serializer = self.get_serializer(request.data)
|
serializer = self.get_serializer(request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
try:
|
try:
|
||||||
order_product = OrderProduct.objects.get(uuid=kwargs.get("pk"))
|
order_product = OrderProduct.objects.get(uuid=str(kwargs.get("pk")))
|
||||||
|
if not order_product.order:
|
||||||
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
if not (request.user.has_perm("core.change_orderproduct") or request.user == order_product.order.user):
|
if not (request.user.has_perm("core.change_orderproduct") or request.user == order_product.order.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
feedback = order_product.do_feedback(
|
feedback = order_product.do_feedback(
|
||||||
|
|
@ -934,7 +941,7 @@ class WishlistViewSet(EvibesViewSet):
|
||||||
serializer = AddWishlistProductSerializer(data=request.data)
|
serializer = AddWishlistProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=kwargs.get("pk"))
|
wishlist = self.get_object()
|
||||||
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -952,7 +959,7 @@ class WishlistViewSet(EvibesViewSet):
|
||||||
serializer = RemoveWishlistProductSerializer(data=request.data)
|
serializer = RemoveWishlistProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=kwargs.get("pk"))
|
wishlist = self.get_object()
|
||||||
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -970,7 +977,7 @@ class WishlistViewSet(EvibesViewSet):
|
||||||
serializer = BulkAddWishlistProductSerializer(data=request.data)
|
serializer = BulkAddWishlistProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=kwargs.get("pk"))
|
wishlist = self.get_object()
|
||||||
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -988,7 +995,7 @@ class WishlistViewSet(EvibesViewSet):
|
||||||
serializer = BulkRemoveWishlistProductSerializer(data=request.data)
|
serializer = BulkRemoveWishlistProductSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
try:
|
try:
|
||||||
wishlist = Wishlist.objects.get(uuid=kwargs.get("pk"))
|
wishlist = self.get_object()
|
||||||
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
if not (request.user.has_perm("core.change_wishlist") or request.user == wishlist.user):
|
||||||
raise PermissionDenied(permission_denied_message)
|
raise PermissionDenied(permission_denied_message)
|
||||||
|
|
||||||
|
|
@ -1035,7 +1042,7 @@ class AddressViewSet(EvibesViewSet):
|
||||||
|
|
||||||
def retrieve(self, request: Request, *args, **kwargs) -> Response:
|
def retrieve(self, request: Request, *args, **kwargs) -> Response:
|
||||||
try:
|
try:
|
||||||
address = Address.objects.get(uuid=kwargs.get("pk"))
|
address = Address.objects.get(uuid=str(kwargs.get("pk")))
|
||||||
return Response(status=status.HTTP_200_OK, data=self.get_serializer(address).data)
|
return Response(status=status.HTTP_200_OK, data=self.get_serializer(address).data)
|
||||||
except Address.DoesNotExist:
|
except Address.DoesNotExist:
|
||||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
@ -1064,9 +1071,9 @@ class AddressViewSet(EvibesViewSet):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
suggestions = fetch_address_suggestions(query=q, limit=limit)
|
suggestions = fetch_address_suggestions(query=q, limit=limit)
|
||||||
serializer = AddressSuggestionSerializer(suggestions, many=True)
|
suggestion_serializer = AddressSuggestionSerializer(suggestions, many=True)
|
||||||
return Response(
|
return Response(
|
||||||
serializer.data,
|
suggestion_serializer.data,
|
||||||
status=status.HTTP_200_OK,
|
status=status.HTTP_200_OK,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
import json
|
import json
|
||||||
from typing import Any
|
from typing import Any, Mapping
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.forms.renderers import DjangoTemplates
|
from django.core.files.uploadedfile import UploadedFile
|
||||||
|
from django.forms.renderers import BaseRenderer
|
||||||
|
from django.utils.datastructures import MultiValueDict
|
||||||
|
from django.utils.safestring import SafeString
|
||||||
|
|
||||||
|
|
||||||
class JSONTableWidget(forms.Widget):
|
class JSONTableWidget(forms.Widget):
|
||||||
template_name = "json_table_widget.html"
|
template_name = "json_table_widget.html"
|
||||||
|
|
||||||
def format_value(self, value: str | dict[str, Any]):
|
def format_value(self, value: str | dict[str, Any]) -> str | dict[str, Any]: # type: ignore [override]
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
return value
|
return value
|
||||||
try:
|
try:
|
||||||
|
|
@ -19,18 +22,23 @@ class JSONTableWidget(forms.Widget):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def render(
|
def render(
|
||||||
self, name: str, value: str | dict[str, Any], attrs: dict | None = None, renderer: DjangoTemplates | None = None
|
self,
|
||||||
):
|
name: str,
|
||||||
|
value: str | dict[str, Any],
|
||||||
|
attrs: dict[str, Any] | None = None,
|
||||||
|
renderer: BaseRenderer | None = None,
|
||||||
|
) -> SafeString:
|
||||||
value = self.format_value(value)
|
value = self.format_value(value)
|
||||||
return super().render(name, value, attrs, renderer)
|
return super().render(name, value, attrs, renderer)
|
||||||
|
|
||||||
# noinspection PyUnresolvedReferences
|
def value_from_datadict(
|
||||||
def value_from_datadict(self, data: dict[str, Any], files: list, name: str):
|
self, data: Mapping[str, Any], files: MultiValueDict[str, UploadedFile], name: str
|
||||||
|
) -> str | None:
|
||||||
json_data = {}
|
json_data = {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
keys = data.getlist(f"{name}_key")
|
keys = data.getlist(f"{name}_key") # type: ignore [attr-defined]
|
||||||
values = data.getlist(f"{name}_value")
|
values = data.getlist(f"{name}_value") # type: ignore [attr-defined]
|
||||||
for key, value in zip(keys, values, strict=True):
|
for key, value in zip(keys, values, strict=True):
|
||||||
if key.strip():
|
if key.strip():
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
from typing import Any
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from storages.backends.ftp import FTPStorage
|
from storages.backends.ftp import FTPStorage
|
||||||
|
|
@ -7,7 +8,7 @@ class AbsoluteFTPStorage(FTPStorage): # type: ignore
|
||||||
# noinspection PyProtectedMember
|
# noinspection PyProtectedMember
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
|
|
||||||
def _get_config(self):
|
def _get_config(self) -> Any:
|
||||||
cfg = super()._get_config()
|
cfg = super()._get_config()
|
||||||
url = urlparse(self.location)
|
url = urlparse(self.location)
|
||||||
cfg["path"] = url.path or cfg["path"]
|
cfg["path"] = url.path or cfg["path"]
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: EVIBES 3.0.0\n"
|
"Project-Id-Version: EVIBES 3.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-13 13:56+0300\n"
|
"POT-Creation-Date: 2025-10-13 18:49+0300\n"
|
||||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||||
|
|
@ -38,106 +38,110 @@ msgid "Phone number of the company"
|
||||||
msgstr "رقم هاتف الشركة"
|
msgstr "رقم هاتف الشركة"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:28
|
#: evibes/settings/constance.py:28
|
||||||
|
msgid "!!!DO NOT CHANGE"
|
||||||
|
msgstr "!!!لا تغير"
|
||||||
|
|
||||||
|
#: evibes/settings/constance.py:29
|
||||||
msgid "SMTP host"
|
msgid "SMTP host"
|
||||||
msgstr "مضيف SMTP"
|
msgstr "مضيف SMTP"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:29
|
#: evibes/settings/constance.py:30
|
||||||
msgid "SMTP port"
|
msgid "SMTP port"
|
||||||
msgstr "منفذ SMTP"
|
msgstr "منفذ SMTP"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:30
|
#: evibes/settings/constance.py:31
|
||||||
msgid "Use TLS (0=No, 1=Yes)"
|
msgid "Use TLS (0=No, 1=Yes)"
|
||||||
msgstr "استخدام TLS"
|
msgstr "استخدام TLS"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:31
|
#: evibes/settings/constance.py:32
|
||||||
msgid "Use SSL (0=No, 1=Yes)"
|
msgid "Use SSL (0=No, 1=Yes)"
|
||||||
msgstr "استخدام SSL"
|
msgstr "استخدام SSL"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:32
|
#: evibes/settings/constance.py:33
|
||||||
msgid "SMTP username"
|
msgid "SMTP username"
|
||||||
msgstr "اسم مستخدم SMTP"
|
msgstr "اسم مستخدم SMTP"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:33
|
#: evibes/settings/constance.py:34
|
||||||
msgid "SMTP password"
|
msgid "SMTP password"
|
||||||
msgstr "كلمة مرور SMTP"
|
msgstr "كلمة مرور SMTP"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:34
|
#: evibes/settings/constance.py:35
|
||||||
msgid "Mail from option"
|
msgid "Mail from option"
|
||||||
msgstr "عنوان مرسل البريد الإلكتروني"
|
msgstr "عنوان مرسل البريد الإلكتروني"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:35
|
#: evibes/settings/constance.py:36
|
||||||
msgid "Payment gateway URL"
|
msgid "Payment gateway URL"
|
||||||
msgstr "عنوان URL لبوابة الدفع"
|
msgstr "عنوان URL لبوابة الدفع"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:36
|
#: evibes/settings/constance.py:37
|
||||||
msgid "Payment gateway token"
|
msgid "Payment gateway token"
|
||||||
msgstr "الرمز المميز لبوابة الدفع"
|
msgstr "الرمز المميز لبوابة الدفع"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:37
|
#: evibes/settings/constance.py:38
|
||||||
msgid "Payment gateway minimum amount"
|
msgid "Payment gateway minimum amount"
|
||||||
msgstr "الحد الأدنى لمبلغ بوابة الدفع"
|
msgstr "الحد الأدنى لمبلغ بوابة الدفع"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:38
|
#: evibes/settings/constance.py:39
|
||||||
msgid "Payment gateway maximum amount"
|
msgid "Payment gateway maximum amount"
|
||||||
msgstr "الحد الأقصى لمبلغ بوابة الدفع"
|
msgstr "الحد الأقصى لمبلغ بوابة الدفع"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:39
|
#: evibes/settings/constance.py:40
|
||||||
msgid "Exchange rate API key"
|
msgid "Exchange rate API key"
|
||||||
msgstr "مفتاح API لسعر الصرف"
|
msgstr "مفتاح API لسعر الصرف"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:40
|
#: evibes/settings/constance.py:41
|
||||||
msgid "OpenStreetMap Nominatim API URL"
|
msgid "OpenStreetMap Nominatim API URL"
|
||||||
msgstr "عنوان URL لواجهة برمجة تطبيقات OpenStreetMap Nominatim"
|
msgstr "عنوان URL لواجهة برمجة تطبيقات OpenStreetMap Nominatim"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:41
|
#: evibes/settings/constance.py:42
|
||||||
msgid "OpenAI API Key"
|
msgid "OpenAI API Key"
|
||||||
msgstr "مفتاح واجهة برمجة تطبيقات OpenAI"
|
msgstr "مفتاح واجهة برمجة تطبيقات OpenAI"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:42
|
#: evibes/settings/constance.py:43
|
||||||
msgid "Abstract API Key"
|
msgid "Abstract API Key"
|
||||||
msgstr "مفتاح واجهة برمجة التطبيقات المجردة"
|
msgstr "مفتاح واجهة برمجة التطبيقات المجردة"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:43
|
#: evibes/settings/constance.py:44
|
||||||
msgid "HTTP Proxy"
|
msgid "HTTP Proxy"
|
||||||
msgstr "وكيل HTTP"
|
msgstr "وكيل HTTP"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:44
|
#: evibes/settings/constance.py:45
|
||||||
msgid "Disable buy functionality"
|
msgid "Disable buy functionality"
|
||||||
msgstr "تعطيل وظيفة الشراء"
|
msgstr "تعطيل وظيفة الشراء"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:45
|
#: evibes/settings/constance.py:46
|
||||||
msgid "An entity for storing advertisiment data"
|
msgid "An entity for storing advertisiment data"
|
||||||
msgstr "كيان لتخزين بيانات الإعلانات"
|
msgstr "كيان لتخزين بيانات الإعلانات"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:46
|
#: evibes/settings/constance.py:47
|
||||||
msgid "An entity for storing analytics data"
|
msgid "An entity for storing analytics data"
|
||||||
msgstr "كيان لتخزين بيانات التحليلات"
|
msgstr "كيان لتخزين بيانات التحليلات"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:47
|
#: evibes/settings/constance.py:48
|
||||||
msgid "Save responses from vendors' APIs"
|
msgid "Save responses from vendors' APIs"
|
||||||
msgstr "حفظ الاستجابات من واجهات برمجة تطبيقات البائعين"
|
msgstr "حفظ الاستجابات من واجهات برمجة تطبيقات البائعين"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:53
|
#: evibes/settings/constance.py:54
|
||||||
msgid "General Options"
|
msgid "General Options"
|
||||||
msgstr "الخيارات العامة"
|
msgstr "الخيارات العامة"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:61
|
#: evibes/settings/constance.py:62
|
||||||
msgid "Email Options"
|
msgid "Email Options"
|
||||||
msgstr "خيارات البريد الإلكتروني"
|
msgstr "خيارات البريد الإلكتروني"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:70
|
#: evibes/settings/constance.py:72
|
||||||
msgid "Payment Gateway Options"
|
msgid "Payment Gateway Options"
|
||||||
msgstr "خيارات بوابة الدفع"
|
msgstr "خيارات بوابة الدفع"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:77
|
#: evibes/settings/constance.py:79
|
||||||
msgid "Features Options"
|
msgid "Features Options"
|
||||||
msgstr "خيارات الميزات"
|
msgstr "خيارات الميزات"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:84
|
#: evibes/settings/constance.py:86
|
||||||
msgid "SEO Options"
|
msgid "SEO Options"
|
||||||
msgstr "خيارات تحسين محركات البحث"
|
msgstr "خيارات تحسين محركات البحث"
|
||||||
|
|
||||||
#: evibes/settings/constance.py:88
|
#: evibes/settings/constance.py:90
|
||||||
msgid "Debugging Options"
|
msgid "Debugging Options"
|
||||||
msgstr "خيارات التصحيح"
|
msgstr "خيارات التصحيح"
|
||||||
|
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue