Compare commits

..

No commits in common. "efb56cf09bb6b43176616863dfaf0e331ba4fdb2" and "8591cc93e771a574b3f7ee0d146d19a70a6c8bf0" have entirely different histories.

392 changed files with 2705 additions and 4458 deletions

220
.gitignore vendored
View file

@ -1,150 +1,137 @@
# ╔═══════════════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ ███████╗ ██████╗██╗ ██╗ ██████╗ ███╗ ██╗ ║
# ║ ██╔════╝██╔════╝██║ ██║██╔═══██╗████╗ ██║ ║
# ║ ███████╗██║ ███████║██║ ██║██╔██╗ ██║ ║
# ║ ╚════██║██║ ██╔══██║██║ ██║██║╚██╗██║ ║
# ║ ███████║╚██████╗██║ ██║╚██████╔╝██║ ╚████║ ║
# ║ ╚══════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ║
# ║ ║
# ╚═══════════════════════════════════════════════════════════════════════════╝
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Python │
# └───────────────────────────────────────────────────────────────────────────┘
# Bytecode & compiled
# ──────────────────────────────────────────────────────────────────────────
# Python bytecode, caches, and compiled artifacts
# ──────────────────────────────────────────────────────────────────────────
# Byte-compiled / optimized / DLL files
*.py[cod]
*$py.class
*.so
# Caches
# Cache directories
__pycache__/
.pytest_cache/
.hypothesis/
.mypy_cache/
.pyre/
.pytype/
.mypy_cache/
.dmypy.json
dmypy.json
cython_debug/
# Virtual environments
# Python environments
.Python
.venv/
venv/
env/
ENV/
env.bak/
ENV.bak/
venv/
venv.bak/
ENV/
.venv/
__pypackages__/
.python-version
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Django │
# └───────────────────────────────────────────────────────────────────────────┘
# Local Django settings and database
local_settings.py
db.sqlite3
db.sqlite3-journal
# Django backups and metadata
instance/
backups/
# Static & media (collected)
static/
media/
# Allow checked-in app static files
!engine/core/static/
!engine/payments/static/
!engine/vibes_auth/static/
!engine/blog/static/
# Celery
celerybeat-schedule
celerybeat.pid
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Testing & Coverage │
# └───────────────────────────────────────────────────────────────────────────┘
htmlcov/
.coverage
.coverage.*
# ──────────────────────────────────────────────────────────────────────────
# Logs and reports
# ──────────────────────────────────────────────────────────────────────────
logs/
*.log
debug.log
errors.log
test.json
coverage.xml
coverage.*
*.cover
*.py,cover
nosetests.xml
test.json
tmp
# Coverage / test reports
htmlcov/
.coverage
.coverage.*
# CI / tox / nox
.tox/
.nox/
.scrapy
.cover
.pybuilder/
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Logs │
# └───────────────────────────────────────────────────────────────────────────┘
logs/
*.log
debug.log
errors.log
tmp/
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Build & Distribution │
# └───────────────────────────────────────────────────────────────────────────┘
build/
dist/
dist-ssr/
sdist/
wheels/
*.egg
*.egg-info/
*.manifest
*.spec
.installed.cfg
MANIFEST
share/python-wheels/
pip-log.txt
pip-delete-this-directory.txt
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Node.js & Frontend │
# └───────────────────────────────────────────────────────────────────────────┘
node_modules/
# Storefronts
.nuxt/
.next/
next-env.d.ts
*.tsbuildinfo
.webassets-cache/
site/
# Debug logs
# Celery
celerybeat-schedule
celerybeat.pid
# ──────────────────────────────────────────────────────────────────────────
# Packaging and distribution
# ──────────────────────────────────────────────────────────────────────────
build/
dist/
dist-ssr/
*.egg
*.egg-info/
.installed.cfg
MANIFEST
*.manifest
*.spec
sdist/
wheels/
share/python-wheels/
pip-log.txt
pip-delete-this-directory.txt
desktop.ini
*.iml
# Node build artifacts
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
site/
# Cypress
# ──────────────────────────────────────────────────────────────────────────
# Static, media, and uploads
# ──────────────────────────────────────────────────────────────────────────
static/
media/
# Allow checked-in static from apps
!engine/core/static/
!engine/payments/static/
!engine/vibes_auth/static/
!engine/blog/static/
# Webassets
.webassets-cache/
# ──────────────────────────────────────────────────────────────────────────
# Node dependencies
# ──────────────────────────────────────────────────────────────────────────
node_modules/
# ──────────────────────────────────────────────────────────────────────────
# Cypress test artifacts
# ──────────────────────────────────────────────────────────────────────────
cypress/videos/
cypress/screenshots/
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ IDEs & Editors │
# └───────────────────────────────────────────────────────────────────────────┘
# VS Code
# ──────────────────────────────────────────────────────────────────────────
# IDEs and editors
# ──────────────────────────────────────────────────────────────────────────
# VSCode
.vscode/
!.vscode/extensions.json
@ -152,46 +139,33 @@ cypress/screenshots/
.idea/
!.idea/icon.svg
!.idea/externalDependencies.xml
!.idea/schon.iml
!.idea/evibes.iml
!.idea/evibes.ico
# Visual Studio
# Microsoft
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# Spyder & Rope
# Spyder / Rope
.spyderproject
.spyproject
.ropeproject
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ OS & System │
# └───────────────────────────────────────────────────────────────────────────┘
# macOS
.DS_Store
desktop.ini
*.iml
# TypeScript
*.tsbuildinfo
# ┌───────────────────────────────────────────────────────────────────────────┐
# │ Project-specific │
# └───────────────────────────────────────────────────────────────────────────┘
# Environment
# Environment file
.env
# Development
# Development stuff
test.ipynb
.scrapy
.cover
.pybuilder/
# Production
# Production stuff
.initialized
queries/
# AI assistants
.claude/
queries

51
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,51 @@
image: ghcr.io/astral-sh/uv:python3.12-bookworm
stages:
- lint
- typecheck
- test
variables:
UV_PYTHON: "3.12"
PIP_DISABLE_PIP_VERSION_CHECK: "1"
PYTHONDONTWRITEBYTECODE: "1"
before_script:
- uv sync --frozen --extra linting
lint:
stage: lint
script:
- uv run ruff format --check .
- uv run ruff check --force-exclude .
rules:
- changes:
- "**/*.py"
- "pyproject.toml"
- ".pre-commit-config.yaml"
when: on_success
- when: never
typecheck:
stage: typecheck
script:
- uv run ty check
rules:
- changes:
- "**/*.py"
- "pyproject.toml"
when: on_success
- when: never
test:
stage: test
script:
- uv run pytest -q
rules:
- changes:
- "**/*.py"
- "pyproject.toml"
- "pytest.ini"
- "pyproject.toml"
when: on_success
- when: never

BIN
.idea/evibes.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,35 +0,0 @@
# Changelog
All notable changes to Schon are documented in this file.
Version format follows [CalVer](https://calver.org/) as `YYYY.MAJOR`.
---
## [2026.1] - 2026-01-25
Initial CalVer release. Project renamed from eVibes to Schon.
### Highlights
- Complete rebrand from eVibes to Schon
- Native Linux deployment with systemd service files
- uv-based dependency management
- Interactive installer supporting Docker and native deployments
- Professional documentation and project structure
### Added
- systemd service files for production deployment (`schon-web`, `schon-worker`, `schon-beat`, `schon-stock-updater`)
- Native Linux installation script with automated setup
- CHANGELOG.md for tracking releases
### Changed
- Project name: eVibes to Schon
- Version scheme: SemVer to CalVer (YYYY.MAJOR)
- Installation: `make install` now prompts for Docker vs native deployment
### Removed
- Legacy eVibes branding and assets

View file

@ -26,7 +26,7 @@ uv.lock @fureunoir contact@fureunoir.com
blog/ @fureunoir contact@fureunoir.com
core/ @fureunoir contact@fureunoir.com
schon/ @fureunoir contact@fureunoir.com
evibes/ @fureunoir contact@fureunoir.com
payments/ @fureunoir contact@fureunoir.com
scripts/ @fureunoir contact@fureunoir.com
vibes_auth/ @fureunoir contact@fureunoir.com

View file

@ -38,10 +38,10 @@ RUN set -eux; \
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/schon-python
ENV VIRTUAL_ENV=/opt/schon-python
ENV UV_PROJECT_ENVIRONMENT=/opt/schon-python
ENV PATH="/opt/schon-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/evibes-python
ENV VIRTUAL_ENV=/opt/evibes-python
ENV UV_PROJECT_ENVIRONMENT=/opt/evibes-python
ENV PATH="/opt/evibes-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
COPY pyproject.toml pyproject.toml
COPY uv.lock uv.lock

View file

@ -37,10 +37,11 @@ RUN set -eux; \
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/schon-python
ENV VIRTUAL_ENV=/opt/schon-python
ENV UV_PROJECT_ENVIRONMENT=/opt/schon-python
ENV PATH="/opt/schon-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
ENV UV_PROJECT_ENVIRONMENT=/opt/evibes-python
ENV PATH="/opt/evibes-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/evibes-python
ENV VIRTUAL_ENV=/opt/evibes-python
COPY pyproject.toml pyproject.toml
COPY uv.lock uv.lock

View file

@ -37,10 +37,11 @@ RUN set -eux; \
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/schon-python
ENV VIRTUAL_ENV=/opt/schon-python
ENV UV_PROJECT_ENVIRONMENT=/opt/schon-python
ENV PATH="/opt/schon-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
ENV UV_PROJECT_ENVIRONMENT=/opt/evibes-python
ENV PATH="/opt/evibes-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/evibes-python
ENV VIRTUAL_ENV=/opt/evibes-python
COPY pyproject.toml pyproject.toml
COPY uv.lock uv.lock

View file

@ -2,10 +2,10 @@
FROM node:22-bookworm-slim AS build
WORKDIR /app
ARG schon_BASE_DOMAIN
ARG schon_PROJECT_NAME
ENV schon_BASE_DOMAIN=$schon_BASE_DOMAIN
ENV schon_PROJECT_NAME=$schon_PROJECT_NAME
ARG EVIBES_BASE_DOMAIN
ARG EVIBES_PROJECT_NAME
ENV EVIBES_BASE_DOMAIN=$EVIBES_BASE_DOMAIN
ENV EVIBES_PROJECT_NAME=$EVIBES_PROJECT_NAME
COPY ./supervisor/package.json ./supervisor/package-lock.json ./
RUN npm ci --include=optional

View file

@ -38,10 +38,10 @@ RUN set -eux; \
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/schon-python
ENV VIRTUAL_ENV=/opt/schon-python
ENV UV_PROJECT_ENVIRONMENT=/opt/schon-python
ENV PATH="/opt/schon-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
RUN uv venv /opt/evibes-python
ENV VIRTUAL_ENV=/opt/evibes-python
ENV UV_PROJECT_ENVIRONMENT=/opt/evibes-python
ENV PATH="/opt/evibes-python/bin:/root/.local/bin:/root/.cargo/bin:$PATH"
COPY pyproject.toml pyproject.toml
COPY uv.lock uv.lock

View file

@ -1,8 +1,8 @@
Schon License Version 2.0, April 29, 2025
eVibes License Version 2.0, April 29, 2025
Copyright (c) 2025 Egor “fureunoir” Gorbunov
Permission is hereby granted, free of charge, to any person obtaining a copy of the Schon software and associated documentation (the “Software”), to use, copy, modify, merge, publish, distribute, and sublicense the Software, subject to the terms and conditions below. Any distribution of the Software (in source or binary form) must include a copy of this License and preserve the above copyright notice. By using the Software, you indicate your acceptance of these terms. If you do not agree to these terms, you have no rights to use the Software.
Permission is hereby granted, free of charge, to any person obtaining a copy of the eVibes software and associated documentation (the “Software”), to use, copy, modify, merge, publish, distribute, and sublicense the Software, subject to the terms and conditions below. Any distribution of the Software (in source or binary form) must include a copy of this License and preserve the above copyright notice. By using the Software, you indicate your acceptance of these terms. If you do not agree to these terms, you have no rights to use the Software.
1. Non-Commercial Use
The Software is provided at no cost for personal, academic, or other non-commercial purposes. “Non-Commercial Use” means any use of the Software that does not generate income (directly or indirectly) and is not part of a for-profit or revenue-generating activity. For Non-Commercial Use, the Software is provided “AS IS” and without any warranty or liability. You may freely use and modify the Software for Non-Commercial purposes, and you may distribute it for non-commercial ends as long as this License is included and the same terms apply to all recipients.
@ -55,4 +55,4 @@ Egor “fureunoir” Gorbunov
Email: contact@fureunoir.com
Telegram: https://t.me/fureunoir
By using the Schon framework, you acknowledge that you have read and understood this License and agree to be bound by its terms.
By using the eVibes framework, you acknowledge that you have read and understood this License and agree to be bound by its terms.

100
Makefile
View file

@ -1,100 +0,0 @@
.PHONY: help install run restart test test-xml test-html uninstall backup \
generate-env export-env make-messages compile-messages \
format check typecheck precommit
# Detect OS and set script paths
ifeq ($(OS),Windows_NT)
SCRIPT_DIR := scripts/Windows
SCRIPT_EXT := .ps1
RUN_SCRIPT = pwsh -ExecutionPolicy Bypass -File ./$(SCRIPT_DIR)/$(1)$(SCRIPT_EXT)
else
SCRIPT_DIR := scripts/Unix
SCRIPT_EXT := .sh
RUN_SCRIPT = bash ./$(SCRIPT_DIR)/$(1)$(SCRIPT_EXT)
endif
help:
@echo "Schon Project Management"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@echo " install Pull and build Docker images"
@echo " run Start all services"
@echo " restart Restart all services"
@echo " test Run tests with coverage"
@echo " test-xml Generate XML coverage report"
@echo " test-html Generate HTML coverage report"
@echo " uninstall Remove containers, volumes, and generated files"
@echo " backup Create a backup"
@echo " generate-env Generate .env file from template"
@echo " export-env Export environment variables"
@echo " make-messages Extract translation strings"
@echo " compile-messages Compile translation files"
@echo " format Format code with ruff"
@echo " check Lint code with ruff"
@echo " typecheck Typecheck code with ty"
@echo " precommit Run format, check, and typecheck"
@echo ""
@echo "Detected OS: $(if $(filter Windows_NT,$(OS)),Windows,Unix)"
@echo "Scripts directory: $(SCRIPT_DIR)"
install:
@$(call RUN_SCRIPT,install)
run:
@$(call RUN_SCRIPT,run)
restart:
@$(call RUN_SCRIPT,restart)
test:
@$(call RUN_SCRIPT,test)
test-xml:
ifeq ($(OS),Windows_NT)
@pwsh -ExecutionPolicy Bypass -File ./$(SCRIPT_DIR)/test$(SCRIPT_EXT) -r xml
else
@bash ./$(SCRIPT_DIR)/test$(SCRIPT_EXT) --report xml
endif
test-html:
ifeq ($(OS),Windows_NT)
@pwsh -ExecutionPolicy Bypass -File ./$(SCRIPT_DIR)/test$(SCRIPT_EXT) -r html
else
@bash ./$(SCRIPT_DIR)/test$(SCRIPT_EXT) --report html
endif
uninstall:
@echo "This will remove all Docker containers, volumes, and generated files."
ifeq ($(OS),Windows_NT)
@pwsh -Command "$$confirm = Read-Host 'Continue? [y/N]'; if ($$confirm -eq 'y') { pwsh -ExecutionPolicy Bypass -File ./$(SCRIPT_DIR)/uninstall$(SCRIPT_EXT) } else { Write-Host 'Uninstall cancelled.' }"
else
@read -p "Continue? [y/N] " confirm && [ "$$confirm" = "y" ] && bash ./$(SCRIPT_DIR)/uninstall$(SCRIPT_EXT) || echo "Uninstall cancelled."
endif
backup:
@$(call RUN_SCRIPT,backup)
generate-env:
@$(call RUN_SCRIPT,generate-environment-file)
export-env:
@$(call RUN_SCRIPT,export-environment-file)
make-messages:
@$(call RUN_SCRIPT,make-messages)
compile-messages:
@$(call RUN_SCRIPT,compile-messages)
format:
@ruff format
check:
@ruff check
typecheck:
@ty check
precommit: format check typecheck

321
README.md
View file

@ -1,263 +1,132 @@
# Schon
# eVibes
![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)
![Django 5.2](https://img.shields.io/badge/django-5.2-green.svg)
![License](https://img.shields.io/badge/license-Custom-red.svg)
![Version](https://img.shields.io/badge/version-2026.1-purple.svg)
![LOGO](engine/core/docs/images/evibes-big.png)
<p align="center">
<img src="engine/core/static/logo.png" alt="Schon Logo" width="200"/>
</p>
eVibes — a lightweight, production-ready ecommerce backend. Storefront, product catalog, cart, and orders work out of the box. Minimal complexity, maximum flexibility — install, adjust to your needs, and start selling.
**Schon** is a production-ready e-commerce backend. Storefront, product catalog, cart, orders, and payments work out of the box. Minimal complexity, maximum flexibility.
- Public issues: https://plane.wiseless.xyz/spaces/issues/dd33cb0ab9b04ef08a10f7eefae6d90c/?board=kanban
---
## Table of Contents
## What is Schon?
Schon is a complete backend solution for online stores. Whether you're launching a small shop or scaling a marketplace, Schon provides the foundation:
- **Ready to use** - Clone, configure, deploy. No assembly required.
- **API-first** - REST and GraphQL endpoints for any frontend framework.
- **Multilingual** - 28 languages supported out of the box.
- **Extensible** - Modular Django apps, easy to customize.
---
- Features
- Quick Start
- Prerequisites
- Installation
- Configuration
- Dockerfile
- nginx
- .env
- Usage
- Contributing
- Contact
- License
## Features
| Category | Details |
|----------|---------|
| **Framework** | Django 5.2, Django REST Framework 3.16, Graphene-Django |
| **Database** | PostgreSQL with PostGIS, Redis caching, Elasticsearch search |
| **Tasks** | Celery workers with Redis broker, scheduled tasks with Beat |
| **Auth** | JWT authentication, rate limiting, custom user model (email-based) |
| **APIs** | REST + GraphQL, Swagger/ReDoc documentation |
| **i18n** | 28 languages, model translation support |
| **Deployment** | Docker Compose or native Linux with systemd |
---
- Modular backend, easy to extend and customize
- Dockerized deployment with Docker Compose
- Celery workers and beat for background tasks
- REST and GraphQL APIs
- Internationalization with modeltranslation
- Redis-based caching and queues
- JWT auth and rate limiting
## Quick Start
### Prerequisites
- Git
- Docker and Docker Compose **or** Linux with Python 3.12+, PostgreSQL, Redis, Elasticsearch
- Docker and Docker Compose
### Docker (Recommended for Development)
### Installation
```bash
# Clone the repository
git clone https://git.wiseless.xyz/fureunoir/schon
cd schon
1. Clone the repository
```bash
git clone https://gitlab.com/wiseless.xyz/eVibes.git
cd eVibes
```
# Generate environment file
make generate-env
2. Choose a storefront (optional). The `main` branch ships without a storefront. If you want one, pick a branch:
```bash
git checkout storefront-<nuxt|next|sk|qwik>
```
# Review and adjust .env as needed
nano .env
3. Generate your .env file and review its values
- Windows
```powershell
scripts\Windows\generate-environment-file.ps1
```
- Unix
```bash
scripts/Unix/generate-environment-file.sh
```
# Install (pull and build images)
make install
4. Install dependencies
- Windows
```powershell
scripts\Windows\install.ps1
```
- Unix
```bash
scripts/Unix/install.sh
```
# Start all services
make run
```
5. Run the stack
- Windows
```powershell
scripts\Windows\run.ps1
```
- Unix
```bash
scripts/Unix/run.sh
```
### Native Linux (Production)
```bash
# Clone to /opt/schon
sudo git clone https://git.wiseless.xyz/fureunoir/schon /opt/schon
cd /opt/schon
# Generate environment file
make generate-env
# Review and adjust .env
sudo nano .env
# Install (creates schon user, syncs dependencies, configures systemd)
sudo make install
# Select option 2: Native Linux
# Start services
sudo systemctl start schon-web schon-worker schon-beat schon-stock-updater
```
### Storefronts
The `main` branch ships backend-only. For a complete store with frontend:
```bash
git checkout storefront-<nuxt|next|sk|qwik>
```
---
6. Production checklist
- Include `nginx.conf` into your Nginx setup
- Issue TLS certs with Certbot (https://certbot.eff.org/)
## Configuration
### Environment Variables
After running `make generate-env`, review `.env`:
| Variable | Description |
|----------|-------------|
| `DEBUG` | Set to `0` for production |
| `SECRET_KEY` | Django secret key (auto-generated) |
| `JWT_SIGNING_KEY` | JWT token signing key (auto-generated) |
| `POSTGRES_*` | Database credentials |
| `REDIS_PASSWORD` | Redis authentication |
| `SCHON_PROJECT_NAME` | Your store name |
| `SCHON_BASE_DOMAIN` | Your domain (e.g., `example.com`) |
### Nginx
1. Copy the example config:
```bash
sudo cp nginx.example.conf /etc/nginx/sites-available/schon
```
2. Update domain names and paths in the config
3. Enable the site:
```bash
sudo ln -s /etc/nginx/sites-available/schon /etc/nginx/sites-enabled/
```
4. Obtain SSL certificates:
```bash
sudo certbot --nginx -d api.yourdomain.com -d yourdomain.com -d www.yourdomain.com
```
5. Reload Nginx:
```bash
sudo systemctl reload nginx
```
### DNS Records
Configure these DNS records pointing to your server:
- `yourdomain.com` (A record)
- `www.yourdomain.com` (A or CNAME)
- `api.yourdomain.com` (A or CNAME)
- `prometheus.yourdomain.com` (A or CNAME, optional)
---
## API Documentation
Once running, access the API documentation:
| Endpoint | Description |
|----------|-------------|
| `http://api.localhost:8000/` | API root / Admin redirect |
| `http://api.localhost:8000/docs/swagger/` | Swagger UI |
| `http://api.localhost:8000/docs/redoc/` | ReDoc |
| `http://api.localhost:8000/graphql/` | GraphQL Playground |
| `http://api.localhost:8000/admin/` | Django Admin |
| `http://api.localhost:8000/health/` | Health check endpoint |
Authentication header: `X-SCHON-AUTH: Bearer <token>`
---
## Development
### Commands
```bash
make run # Start services
make restart # Restart services
make test # Run tests with coverage
make format # Format code with Ruff
make check # Lint code with Ruff
make typecheck # Type check with ty
make precommit # Run format, check, typecheck
make make-messages # Extract translation strings
make compile-messages # Compile translations
make backup # Create database backup
### Dockerfile
If you rely on locale mirrors, adjust Debian sources before running installation scripts:
```
RUN sed -i 's|https://deb.debian.org/debian|https://ftp.<locale>.debian.org/debian|g' /etc/apt/sources.list.d/debian.sources
```
### Running Migrations
### nginx
- Comment out SSL-related lines
- Apply your domain-specific settings
- Run `certbot --cert-only --nginx`
- Uncomment SSL lines and reload Nginx
```bash
# Docker
docker compose exec app uv run python manage.py migrate
### .env
After generation, review and update secrets and credentials (API keys, DB password, Redis password, etc.).
# Native
cd /opt/schon && .venv/bin/python manage.py migrate
```
## Usage
### Creating a Superuser
- DNS records youll typically want:
1. @.your-domain.com
2. www.your-domain.com
3. api.your-domain.com
4. prometheus.your-domain.com
```bash
# Docker
docker compose exec app uv run python manage.py createsuperuser
- Once running, access:
- API root / Admin redirect: http://api.localhost:8000/
- REST docs: http://api.localhost:8000/docs/swagger or http://api.localhost:8000/docs/redoc
- GraphQL: http://api.localhost:8000/graphql/
# Native
cd /opt/schon && .venv/bin/python manage.py createsuperuser
```
## Contributing
---
## Project Structure
```
schon/
├── schon/ # Django project settings
│ ├── settings/ # Split settings (base, drf, celery, etc.)
│ ├── middleware.py # Custom middleware
│ └── urls.py # URL routing
├── engine/ # Django apps
│ ├── core/ # Products, orders, categories, vendors
│ ├── payments/ # Transactions, payment gateways
│ ├── vibes_auth/ # Custom User model, JWT auth
│ └── blog/ # Blog posts
├── Dockerfiles/ # Docker configurations
├── systemd/ # Systemd service files
├── scripts/ # Installation and utility scripts
└── nginx.example.conf # Nginx configuration template
```
---
## Feedback & Issues
We value your feedback. Please open issues for:
- Bug reports
- Feature suggestions
- Questions about usage
**Issue Tracker:** [Plane](https://plane.wiseless.xyz/spaces/issues/dd33cb0ab9b04ef08a10f7eefae6d90c/?board=kanban)
Due to licensing restrictions, we cannot accept pull requests. See the LICENSE file for details.
---
## License
Schon is released under a custom license. Key points:
- **Non-commercial use**: Free for personal, academic, and non-commercial purposes
- **Commercial use**: Requires written authorization or automatic 8% royalty
See the [LICENSE](LICENSE) file for complete terms.
---
- Track and report issues here: https://plane.wiseless.xyz/spaces/issues/dd33cb0ab9b04ef08a10f7eefae6d90c/?board=list
- Pull requests are welcome. Please keep changes minimal and focused.
## Contact
**Author:** Egor "fureunoir" Gorbunov
- Author: Egor "fureunoir" Gorbunov
- Email: contact@fureunoir.com
- Telegram: https://t.me/fureunoir
- Email: [contact@fureunoir.com](mailto:contact@fureunoir.com)
- Telegram: [@fureunoir](https://t.me/fureunoir)
## License
---
This project is licensed under the terms of the LICENSE file included in this repository.
<p align="center">
<sub>Built with care by the Wiseless Team</sub>
</p>
![FAVICON](engine/core/docs/images/evibes.png)

View file

@ -147,7 +147,7 @@ services:
condition: service_healthy
logging: *default-logging
healthcheck:
test: [ "CMD-SHELL", "celery -A schon status | grep -q 'OK'" ]
test: [ "CMD-SHELL", "celery -A evibes status | grep -q 'OK'" ]
interval: 30s
timeout: 10s
retries: 5
@ -175,7 +175,7 @@ services:
condition: service_healthy
logging: *default-logging
healthcheck:
test: [ "CMD-SHELL", "celery -A schon status | grep -q 'OK'" ]
test: [ "CMD-SHELL", "celery -A evibes status | grep -q 'OK'" ]
interval: 30s
timeout: 10s
retries: 5

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,11 +1,11 @@
# SCHON GETTEXT TRANSLATIONS
# EVIBES GETTEXT TRANSLATIONS
# Copyright (C) 2025 EGOR <FUREUNOIR> GORBUNOV
# This file is distributed under the same license as the SCHON package.
# This file is distributed under the same license as the EVIBES package.
# EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,11 +1,11 @@
# SCHON GETTEXT TRANSLATIONS
# EVIBES GETTEXT TRANSLATIONS
# Copyright (C) 2025 EGOR <FUREUNOIR> GORBUNOV
# This file is distributed under the same license as the SCHON package.
# This file is distributed under the same license as the EVIBES package.
# EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,11 +1,11 @@
# SCHON GETTEXT TRANSLATIONS
# EVIBES GETTEXT TRANSLATIONS
# Copyright (C) 2025 EGOR <FUREUNOIR> GORBUNOV
# This file is distributed under the same license as the SCHON package.
# This file is distributed under the same license as the EVIBES package.
# EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-21 00:38+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"

View file

@ -7,7 +7,7 @@ from engine.blog.docs.drf.viewsets import POST_SCHEMA
from engine.blog.filters import PostFilter
from engine.blog.models import Post
from engine.blog.serializers import PostSerializer
from engine.core.permissions import SchonPermission
from engine.core.permissions import EvibesPermission
@extend_schema_view(**POST_SCHEMA)
@ -20,7 +20,7 @@ class PostViewSet(ReadOnlyModelViewSet):
)
serializer_class = PostSerializer
permission_classes = (SchonPermission,)
permission_classes = (EvibesPermission,)
queryset = Post.objects.filter(is_active=True)
filter_backends = [DjangoFilterBackend]
filterset_class = PostFilter

View file

@ -155,7 +155,7 @@ class ActivationActionsMixin:
]
@action(
description=_("activate selected %(verbose_name_plural)s").lower().title(),
description=_("activate selected %(verbose_name_plural)s").lower(),
permissions=["change"],
)
def activate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
@ -163,7 +163,7 @@ class ActivationActionsMixin:
queryset.update(is_active=True)
self.message_user(
request=request,
message=_("selected items have been activated.").lower().title(),
message=_("selected items have been activated.").lower(),
level=messages.SUCCESS,
)
@ -171,7 +171,7 @@ class ActivationActionsMixin:
self.message_user(request=request, message=str(e), level=messages.ERROR)
@action(
description=_("deactivate selected %(verbose_name_plural)s").lower().title(),
description=_("deactivate selected %(verbose_name_plural)s").lower(),
permissions=["change"],
)
def deactivate_selected(
@ -181,7 +181,7 @@ class ActivationActionsMixin:
queryset.update(is_active=False)
self.message_user(
request=request,
message=_("selected items have been deactivated.").lower().title(),
message=_("selected items have been deactivated.").lower(),
level=messages.SUCCESS,
)
@ -458,8 +458,6 @@ class ProductAdmin(
"sku",
"name",
"is_active",
"export_to_marketplaces",
"has_images",
"category",
"brand",
"price",
@ -521,60 +519,6 @@ class ProductAdmin(
"is_updatable",
]
def has_images(self, obj: Product) -> bool:
return obj.has_images
has_images.boolean = True # ty:ignore[unresolved-attribute]
has_images.short_description = _("has images") # ty:ignore[unresolved-attribute]
@action(
description=_("export selected %(verbose_name_plural)s to marketplaces' feeds")
.lower()
.title(),
permissions=["change"],
)
def export_to_marketplaces(
self, request: HttpRequest, queryset: QuerySet[Any]
) -> None:
try:
queryset.update(export_to_marketplaces=True)
self.message_user(
request=request,
message=_(
"selected %(verbose_name_plural)s have been marked for export."
)
.lower()
.title(),
level=messages.SUCCESS,
)
except Exception as e:
self.message_user(request=request, message=str(e), level=messages.ERROR)
@action(
description=_("ban selected %(verbose_name_plural)s from marketplaces' feeds")
.lower()
.title(),
permissions=["change"],
)
def ban_from_marketplaces(
self, request: HttpRequest, queryset: QuerySet[Any]
) -> None:
try:
queryset.update(export_to_marketplaces=False)
self.message_user(
request=request,
message=_(
"selected %(verbose_name_plural)s have been banned from export."
)
.lower()
.title(),
level=messages.SUCCESS,
)
except Exception as e:
self.message_user(request=request, message=str(e), level=messages.ERROR)
def get_queryset(self, request):
return (
super()
@ -1146,7 +1090,7 @@ class ConstanceConfig:
site.unregister([Config]) # ty:ignore[invalid-argument-type]
site.register([ConstanceConfig], BaseConstanceAdmin) # ty:ignore[invalid-argument-type]
site.site_title = settings.PROJECT_NAME
site.site_header = "Schon"
site.site_header = "eVibes"
site.index_title = settings.PROJECT_NAME

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View file

@ -0,0 +1,25 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100.000000pt" height="100.000000pt" viewBox="0 0 100.000000 100.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,100.000000) scale(0.100000,-0.100000)"
fill="#7965D1" stroke="none">
<path d="M678 935 c-73 -50 -88 -121 -38 -175 29 -31 50 -35 57 -13 2 6 -5 14
-16 18 -30 9 -26 48 9 88 63 72 130 72 149 -1 18 -67 -6 -117 -89 -182 -97
-76 -142 -97 -235 -109 -121 -16 -324 -29 -380 -24 -48 5 -49 4 -33 -13 26
-26 108 -34 248 -23 308 23 362 40 480 147 l65 59 0 64 c0 79 -17 114 -72 152
-61 41 -100 44 -145 12z"/>
<path d="M327 912 c-10 -10 -17 -27 -17 -38 0 -24 35 -64 55 -64 18 0 19 12 3
28 -16 16 19 54 46 50 17 -2 22 -11 24 -45 4 -55 -38 -105 -105 -124 -50 -14
-179 -17 -225 -6 -34 9 -36 -3 -6 -23 55 -35 251 -29 327 10 95 48 92 168 -6
219 -33 17 -78 13 -96 -7z"/>
<path d="M475 435 c-60 -8 -171 -19 -245 -25 -74 -7 -137 -14 -139 -16 -2 -2
9 -9 25 -16 35 -15 179 -13 309 3 50 7 146 12 215 13 186 2 223 -22 185 -119
-20 -53 -49 -78 -115 -100 -37 -12 -54 -14 -69 -5 -41 21 -16 91 36 105 27 6
27 7 9 21 -31 22 -69 17 -99 -14 -15 -15 -27 -34 -27 -42 0 -23 52 -90 81
-106 43 -22 73 -17 144 22 73 40 93 64 102 118 21 131 -138 193 -412 161z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -25,7 +25,7 @@ from engine.core.utils.emailing import contact_us_email
from engine.core.utils.messages import permission_denied_message
from engine.core.utils.nominatim import fetch_address_suggestions
from engine.payments.graphene.object_types import TransactionType
from schon.utils.renderers import camelize
from evibes.utils.renderers import camelize
logger = logging.getLogger(__name__)

View file

@ -57,7 +57,7 @@ from engine.core.utils.seo_builders import (
website_schema,
)
from engine.payments.graphene.object_types import TransactionType
from schon.utils.renderers import camelize
from evibes.utils.renderers import camelize
logger = logging.getLogger(__name__)

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3157,8 +3157,8 @@ msgstr ""
"Django للتعامل مع إعادة توجيه HTTP."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "إرجاع الإصدار الحالي من Schon."
msgid "Returns current version of the eVibes. "
msgstr "إرجاع الإصدار الحالي من eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3171,15 +3171,15 @@ msgstr "إرجاع المتغيرات المخصصة للوحة التحكم."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب schon. يرث صنف SchonViewSet "
"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet "
"من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات "
"schon. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء الحالي، "
"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء الحالي، "
"والأذونات القابلة للتخصيص، وتنسيقات العرض."
#: engine/core/viewsets.py:160
@ -3252,14 +3252,14 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
msgstr ""
"يدير العمليات المتعلقة بنموذج \"المنتج\" في النظام. توفر هذه الفئة مجموعة "
"طرق عرض لإدارة المنتجات، بما في ذلك تصفيتها وتسلسلها وعملياتها على مثيلات "
"محددة. وهو يمتد من 'SchonViewSet' لاستخدام الوظائف الشائعة ويتكامل مع إطار "
"محددة. وهو يمتد من 'EvibesViewSet' لاستخدام الوظائف الشائعة ويتكامل مع إطار "
"عمل Django REST لعمليات RESTful API. يتضمن أساليب لاسترجاع تفاصيل المنتج، "
"وتطبيق الأذونات، والوصول إلى الملاحظات ذات الصلة بمنتج ما."
@ -3282,7 +3282,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"تمثيل مجموعة عرض تتعامل مع كائنات الملاحظات. تدير هذه الفئة العمليات "

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3226,8 +3226,8 @@ msgstr ""
"funkci `redirect` Djanga."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Vrací aktuální verzi systému Schon."
msgid "Returns current version of the eVibes. "
msgstr "Vrací aktuální verzi systému eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3240,15 +3240,15 @@ msgstr "Vrací vlastní proměnné pro Dashboard."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Definuje sadu pohledů pro správu operací souvisejících s schon. Třída "
"SchonViewSet dědí z ModelViewSet a poskytuje funkce pro zpracování akcí a "
"operací s entitami schon. Zahrnuje podporu dynamických tříd serializátorů "
"Definuje sadu pohledů pro správu operací souvisejících s Evibes. Třída "
"EvibesViewSet dědí z ModelViewSet a poskytuje funkce pro zpracování akcí a "
"operací s entitami Evibes. Zahrnuje podporu dynamických tříd serializátorů "
"na základě aktuální akce, přizpůsobitelných oprávnění a formátů vykreslování."
#: engine/core/viewsets.py:160
@ -3325,7 +3325,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3333,7 +3333,7 @@ msgstr ""
"Spravuje operace související s modelem `Product` v systému. Tato třída "
"poskytuje sadu pohledů pro správu produktů, včetně jejich filtrování, "
"serializace a operací s konkrétními instancemi. Rozšiřuje se z "
"`SchonViewSet`, aby využívala společné funkce, a integruje se s rámcem "
"`EvibesViewSet`, aby využívala společné funkce, a integruje se s rámcem "
"Django REST pro operace RESTful API. Obsahuje metody pro načítání "
"podrobností o produktu, uplatňování oprávnění a přístup k související zpětné "
"vazbě produktu."
@ -3358,7 +3358,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Reprezentace sady zobrazení, která zpracovává objekty zpětné vazby. Tato "
@ -3366,7 +3366,7 @@ msgstr ""
"filtrování a načítání podrobností. Účelem této sady zobrazení je poskytnout "
"různé serializátory pro různé akce a implementovat manipulaci s přístupnými "
"objekty Zpětné vazby na základě oprávnění. Rozšiřuje základní třídu "
"`SchonViewSet` 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."
#: engine/core/viewsets.py:652
msgid ""

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3250,8 +3250,8 @@ msgstr ""
"til at håndtere HTTP-omdirigeringen."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Returnerer den aktuelle version af Schon."
msgid "Returns current version of the eVibes. "
msgstr "Returnerer den aktuelle version af eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3264,15 +3264,15 @@ msgstr "Returnerer brugerdefinerede variabler til Dashboard."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Definerer et visningssæt til håndtering af schon-relaterede operationer. "
"SchonViewSet-klassen arver fra ModelViewSet og giver funktionalitet til "
"håndtering af handlinger og operationer på schon-enheder. Den omfatter "
"Definerer et visningssæt til håndtering af Evibes-relaterede operationer. "
"EvibesViewSet-klassen arver fra ModelViewSet og giver funktionalitet til "
"håndtering af handlinger og operationer på Evibes-enheder. Den omfatter "
"understøttelse af dynamiske serializer-klasser baseret på den aktuelle "
"handling, tilladelser, der kan tilpasses, og gengivelsesformater."
@ -3350,7 +3350,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3358,7 +3358,7 @@ msgstr ""
"Håndterer operationer relateret til `Product`-modellen i systemet. Denne "
"klasse giver et visningssæt til håndtering af produkter, herunder deres "
"filtrering, serialisering og operationer på specifikke forekomster. Den "
"udvider fra `SchonViewSet` for at bruge fælles funktionalitet og integrerer "
"udvider fra `EvibesViewSet` for at bruge fælles funktionalitet og integrerer "
"med Django REST-frameworket til RESTful API-operationer. Indeholder metoder "
"til at hente produktoplysninger, anvende tilladelser og få adgang til "
"relateret feedback om et produkt."
@ -3384,7 +3384,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Repræsentation af et visningssæt, der håndterer feedback-objekter. Denne "
@ -3392,7 +3392,7 @@ msgstr ""
"filtrering og hentning af detaljer. Formålet med dette visningssæt er at "
"levere forskellige serializers til forskellige handlinger og implementere "
"tilladelsesbaseret håndtering af tilgængelige feedback-objekter. Det udvider "
"basen `SchonViewSet` og gør brug af Djangos filtreringssystem til at "
"basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at "
"forespørge på data."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3337,8 +3337,8 @@ msgstr ""
"Django für die Bearbeitung der HTTP-Umleitung."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Gibt die aktuelle Version von Schon zurück."
msgid "Returns current version of the eVibes. "
msgstr "Gibt die aktuelle Version von eVibes zurück."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3351,15 +3351,15 @@ msgstr "Gibt benutzerdefinierte Variablen für das Dashboard zurück."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Definiert ein Viewset für die Verwaltung von schon-bezogenen Operationen. "
"Die Klasse SchonViewSet erbt von ModelViewSet und bietet Funktionalität für "
"die Handhabung von Aktionen und Operationen auf schon-Entitäten. Sie "
"Definiert ein Viewset für die Verwaltung von Evibes-bezogenen Operationen. "
"Die Klasse EvibesViewSet erbt von ModelViewSet und bietet Funktionalität für "
"die Handhabung von Aktionen und Operationen auf Evibes-Entitäten. Sie "
"enthält Unterstützung für dynamische Serialisiererklassen auf der Grundlage "
"der aktuellen Aktion, anpassbare Berechtigungen und Rendering-Formate."
@ -3440,7 +3440,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3448,7 +3448,7 @@ msgstr ""
"Verwaltet Vorgänge im Zusammenhang mit dem Modell \"Produkt\" im System. "
"Diese Klasse bietet ein Viewset für die Verwaltung von Produkten, "
"einschließlich ihrer Filterung, Serialisierung und Operationen für bestimmte "
"Instanzen. Sie ist eine Erweiterung von `SchonViewSet`, um gemeinsame "
"Instanzen. Sie ist eine Erweiterung von `EvibesViewSet`, um gemeinsame "
"Funktionen zu nutzen und integriert sich in das Django REST Framework für "
"RESTful API Operationen. Enthält Methoden zum Abrufen von Produktdetails, "
"zur Anwendung von Berechtigungen und zum Zugriff auf zugehörige "
@ -3475,7 +3475,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Darstellung eines View-Sets, das Feedback-Objekte behandelt. Diese Klasse "
@ -3483,7 +3483,7 @@ msgstr ""
"Auflistung, Filterung und Abruf von Details. Der Zweck dieses ViewSets ist "
"es, verschiedene Serialisierer für verschiedene Aktionen bereitzustellen und "
"eine erlaubnisbasierte Handhabung von zugänglichen Feedback-Objekten zu "
"implementieren. Es erweitert das Basis `SchonViewSet` und nutzt das "
"implementieren. Es erweitert das Basis `EvibesViewSet` und nutzt das "
"Filtersystem von Django zur Abfrage von Daten."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -1,11 +1,11 @@
# Schon Translations.
# eVibes Translations.
# Copyright (C) 2025 Egor "fureunoir" Gorbunov
# This file is distributed under the same license as the Schon package.
# This file is distributed under the same license as the eVibes package.
# EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>, 2025.
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3190,8 +3190,8 @@ msgstr ""
"It uses Django's `redirect` function for handling the HTTP redirection."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Returns current version of the Schon."
msgid "Returns current version of the eVibes. "
msgstr "Returns current version of the eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3204,15 +3204,15 @@ msgstr "Returns custom variables for Dashboard."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
@ -3289,7 +3289,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3297,7 +3297,7 @@ msgstr ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3322,14 +3322,14 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Representation of a view set handling Feedback objects. This class manages "
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3185,8 +3185,8 @@ msgstr ""
"It uses Django's `redirect` function for handling the HTTP redirection."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Returns current version of the Schon."
msgid "Returns current version of the eVibes. "
msgstr "Returns current version of the eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3199,15 +3199,15 @@ msgstr "Returns custom variables for Dashboard."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
@ -3284,7 +3284,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3292,7 +3292,7 @@ msgstr ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3317,14 +3317,14 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Representation of a view set handling Feedback objects. This class manages "
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3275,8 +3275,8 @@ msgstr ""
"Django para gestionar la redirección HTTP."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Devuelve la versión actual del Schon."
msgid "Returns current version of the eVibes. "
msgstr "Devuelve la versión actual del eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3289,15 +3289,15 @@ msgstr "Devuelve variables personalizadas para Dashboard."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Define un conjunto de vistas para gestionar operaciones relacionadas con "
"schon. La clase SchonViewSet hereda de ModelViewSet y proporciona "
"funcionalidad para manejar acciones y operaciones sobre entidades schon. "
"Evibes. La clase EvibesViewSet hereda de ModelViewSet y proporciona "
"funcionalidad para manejar acciones y operaciones sobre entidades Evibes. "
"Incluye soporte para clases serializadoras dinámicas basadas en la acción "
"actual, permisos personalizables y formatos de representación."
@ -3377,7 +3377,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3385,7 +3385,7 @@ msgstr ""
"Gestiona las operaciones relacionadas con el modelo `Producto` en el "
"sistema. Esta clase proporciona un conjunto de vistas para la gestión de "
"productos, incluyendo su filtrado, serialización y operaciones en instancias "
"específicas. Se extiende desde `SchonViewSet` para utilizar funcionalidades "
"específicas. Se extiende desde `EvibesViewSet` para utilizar funcionalidades "
"comunes y se integra con el framework Django REST para operaciones RESTful "
"API. Incluye métodos para recuperar detalles del producto, aplicar permisos "
"y acceder a comentarios relacionados de un producto."
@ -3411,7 +3411,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Representación de un conjunto de vistas que maneja objetos Feedback. Esta "
@ -3419,7 +3419,7 @@ msgstr ""
"incluyendo el listado, filtrado y recuperación de detalles. El propósito de "
"este conjunto de vistas es proporcionar diferentes serializadores para "
"diferentes acciones e implementar el manejo basado en permisos de los "
"objetos Feedback accesibles. Extiende la base `SchonViewSet` 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."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
@ -2975,7 +2975,7 @@ msgid ""
msgstr ""
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgid "Returns current version of the eVibes. "
msgstr ""
#: engine/core/views.py:674 engine/core/views.py:689
@ -2989,9 +2989,9 @@ msgstr ""
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The SchonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
@ -3045,7 +3045,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`SchonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3066,7 +3066,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `SchonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3330,8 +3330,8 @@ msgstr ""
"`redirect` de Django pour gérer la redirection HTTP."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "Renvoie la version actuelle d'Schon."
msgid "Returns current version of the eVibes. "
msgstr "Renvoie la version actuelle d'eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3344,15 +3344,15 @@ msgstr "Renvoie les variables personnalisées pour le tableau de bord."
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The schonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"Définit un jeu de vues pour la gestion des opérations liées à schon. La "
"classe schonViewSet hérite de ModelViewSet et fournit des fonctionnalités "
"permettant de gérer les actions et les opérations sur les entités schon. "
"Définit un jeu de vues pour la gestion des opérations liées à Evibes. La "
"classe EvibesViewSet hérite de ModelViewSet et fournit des fonctionnalités "
"permettant de gérer les actions et les opérations sur les entités Evibes. "
"Elle prend en charge les classes de sérialiseurs dynamiques en fonction de "
"l'action en cours, les autorisations personnalisables et les formats de "
"rendu."
@ -3434,7 +3434,7 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`schonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
@ -3442,7 +3442,7 @@ msgstr ""
"Gère les opérations liées au modèle `Product` dans le système. Cette classe "
"fournit un viewset pour gérer les produits, y compris leur filtrage, leur "
"sérialisation et les opérations sur des instances spécifiques. Elle s'étend "
"à partir de `schonViewSet` pour utiliser des fonctionnalités communes et "
"à partir de `EvibesViewSet` pour utiliser des fonctionnalités communes et "
"s'intègre au framework REST de Django pour les opérations API RESTful. Il "
"comprend des méthodes pour récupérer les détails d'un produit, appliquer des "
"permissions et accéder aux commentaires connexes d'un produit."
@ -3469,7 +3469,7 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `schonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"Représentation d'un ensemble de vues gérant des objets de retour "
@ -3478,7 +3478,7 @@ msgstr ""
"l'extraction de détails. L'objectif de ce jeu de vues est de fournir "
"différents sérialiseurs pour différentes actions et d'implémenter une "
"gestion basée sur les permissions des objets Feedback accessibles. Il étend "
"la classe de base `schonViewSet` 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."
#: engine/core/viewsets.py:652

Binary file not shown.

View file

@ -1,7 +1,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SCHON 2026.1\n"
"Project-Id-Version: EVIBES 2026.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-04 19:25+0300\n"
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
@ -3114,8 +3114,8 @@ msgstr ""
"Django לטיפול בהפניה HTTP."
#: engine/core/views.py:445
msgid "Returns current version of the Schon. "
msgstr "מחזיר את הגרסה הנוכחית של Schon."
msgid "Returns current version of the eVibes. "
msgstr "מחזיר את הגרסה הנוכחית של eVibes."
#: engine/core/views.py:674 engine/core/views.py:689
#, python-format
@ -3128,14 +3128,14 @@ msgstr "מחזיר משתנים מותאמים אישית עבור לוח המח
#: engine/core/viewsets.py:139
msgid ""
"Defines a viewset for managing schon-related operations. The schonViewSet "
"Defines a viewset for managing Evibes-related operations. The EvibesViewSet "
"class inherits from ModelViewSet and provides functionality for handling "
"actions and operations on schon entities. It includes support for dynamic "
"actions and operations on Evibes entities. It includes support for dynamic "
"serializer classes based on the current action, customizable permissions, "
"and rendering formats."
msgstr ""
"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-schon. מחלקת schonViewSet יורשת "
"מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות schon. "
"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת "
"מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות Evibes. "
"היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה הנוכחית, "
"הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד."
@ -3207,14 +3207,14 @@ msgid ""
"Manages operations related to the `Product` model in the system. This class "
"provides a viewset for managing products, including their filtering, "
"serialization, and operations on specific instances. It extends from "
"`schonViewSet` to use common functionality and integrates with the Django "
"`EvibesViewSet` to use common functionality and integrates with the Django "
"REST framework for RESTful API operations. Includes methods for retrieving "
"product details, applying permissions, and accessing related feedback of a "
"product."
msgstr ""
"מנהל פעולות הקשורות למודל `Product` במערכת. מחלקה זו מספקת מערך תצוגה לניהול "
"מוצרים, כולל סינון, סידור סדרתי ופעולות על מופעים ספציפיים. היא מרחיבה את "
"`schonViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST "
"`EvibesViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST "
"עבור פעולות RESTful API. כוללת שיטות לאחזור פרטי מוצר, החלת הרשאות וגישה "
"למשוב הקשור למוצר."
@ -3237,13 +3237,13 @@ msgid ""
"operations related to Feedback objects, including listing, filtering, and "
"retrieving details. The purpose of this view set is to provide different "
"serializers for different actions and implement permission-based handling of "
"accessible Feedback objects. It extends the base `schonViewSet` and makes "
"accessible Feedback objects. It extends the base `EvibesViewSet` and makes "
"use of Django's filtering system for querying data."
msgstr ""
"ייצוג של קבוצת תצוגה המטפלת באובייקטי משוב. מחלקה זו מנהלת פעולות הקשורות "
"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק "
"סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים. "
"היא מרחיבה את `schonViewSet` הבסיסי ומשתמשת במערכת הסינון של Django לשאילתת "
"היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django לשאילתת "
"נתונים."
#: engine/core/viewsets.py:652

Some files were not shown because too many files have changed in this diff Show more