mirror of
https://github.com/pretix/pretix.git
synced 2026-10-10 20:44:41 +00:00
Compare commits
83
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29893f94e6 | ||
|
|
5950a79afe | ||
|
|
69f1a1b660 | ||
|
|
1e3a3ec3af | ||
|
|
35655a4036 | ||
|
|
fdde93c8d3 | ||
|
|
e9926b9c5a | ||
|
|
45173e6b3a | ||
|
|
22158bdd59 | ||
|
|
91bc46c3db | ||
|
|
8d94ac74f8 | ||
|
|
60af7e5984 | ||
|
|
ce2704f6fd | ||
|
|
04cecedffb | ||
|
|
7faf6cfd80 | ||
|
|
cdeb3609f3 | ||
|
|
53d8aa5679 | ||
|
|
80601cc013 | ||
|
|
e2661f304d | ||
|
|
71f6ade5d6 | ||
|
|
e087dd39b8 | ||
|
|
f3a8ce39f1 | ||
|
|
54479f8f32 | ||
|
|
8142cc8b18 | ||
|
|
87c1232a38 | ||
|
|
f838e29400 | ||
|
|
bd1e583266 | ||
|
|
7a9640ddca | ||
|
|
a6c417eb2f | ||
|
|
5d449ea313 | ||
|
|
f700b57d57 | ||
|
|
9e2ae90b1e | ||
|
|
3ccd0f7cd5 | ||
|
|
51cdb437db | ||
|
|
215dc8b48b | ||
|
|
f88a560d5f | ||
|
|
4019f956a8 | ||
|
|
c75c847393 | ||
|
|
4e3d3b1f22 | ||
|
|
e2bf94ff9f | ||
|
|
a37e6c8270 | ||
|
|
dfe94e09cc | ||
|
|
d87f7b0072 | ||
|
|
393cd0235e | ||
|
|
7fdc7f3405 | ||
|
|
21d62c5078 | ||
|
|
988dc112ac | ||
|
|
2da8d250c8 | ||
|
|
02e0fed4a0 | ||
|
|
932b646fcc | ||
|
|
edf1bd08f8 | ||
|
|
09aff627bb | ||
|
|
da87c64ea0 | ||
|
|
5d87f9a26f | ||
|
|
4b5651862c | ||
|
|
26f3a92d09 | ||
|
|
d468e0a2b3 | ||
|
|
8de80d5867 | ||
|
|
ec3272dd7c | ||
|
|
72b14e04c0 | ||
|
|
93cb51c7de | ||
|
|
64b56afe44
|
||
|
|
8e16c18060
|
||
|
|
2d42c1f166 | ||
|
|
e4b8c5da25 | ||
|
|
c85b496187 | ||
|
|
b632fa620e | ||
|
|
04684ed93f | ||
|
|
466bf49941
|
||
|
|
e03ec73490 | ||
|
|
3fda118234
|
||
|
|
1cb98d0837 | ||
|
|
713e3a40aa | ||
|
|
be234edc0f | ||
|
|
34efc2d953
|
||
|
|
82366dd6c9 | ||
|
|
38abad0bf6 | ||
|
|
41817fe080 | ||
|
|
6cee467dbd | ||
|
|
931ba73f1d | ||
|
|
9179621e72 | ||
|
|
65c978558e | ||
|
|
f4f090506b |
@@ -0,0 +1,42 @@
|
||||
Führe den Upstream-Merge-Workflow für pretix_cgo durch.
|
||||
|
||||
## Normaler Ablauf
|
||||
|
||||
Das Script läuft im Terminal des Nutzers:
|
||||
|
||||
```bash
|
||||
bash /home/monsi/git_gemeinde/pretix_cgo/.claude/upstream-merge.sh
|
||||
```
|
||||
|
||||
Das Script ist weitgehend selbstständig:
|
||||
- Holt Upstream-Tags, erstellt Branch, mergt Master, pusht + gibt MR-Link aus
|
||||
- Prüft Gender-Muster → bei Befunden: öffnet automatisch eine Claude-Session zur Bereinigung
|
||||
- Hält mit `read -p` bei MR-Merge-Bestätigung und cgm72-Prüfung an
|
||||
- Pollt Build-Pipeline und Loginseiten selbst via `curl`
|
||||
|
||||
## Wenn ich von dem Script gerufen werde (Gender-Befunde)
|
||||
|
||||
Das Script hat gegenderte Sprache gefunden und startet mich mit den Befunden als Prompt.
|
||||
Ich bereinige die Dateien, committe, pushe – dann beende ich die Session.
|
||||
Das Script prüft danach nochmal und läuft automatisch weiter.
|
||||
|
||||
Bereinigungsregeln:
|
||||
- Binneni (`*`, `:`, `_`, `(in)`) → maskuline Grundform (`Teilnehmer*in` → `Teilnehmer`)
|
||||
- Partizip-Plural (`Teilnehmenden`, `Helfenden` …) → maskuline Grundform (`Teilnehmer`, `Helfer` …)
|
||||
- Immer den vollständigen `msgstr`-Block als Kontext lesen, mehrzeilige Strings beachten.
|
||||
|
||||
## Fehler-Exit-Codes
|
||||
|
||||
| Code | Bedeutung | Aktion |
|
||||
|------|--------------------------------------------|-----------------------------|
|
||||
| 1 | Gender-Befunde nach Claude-Fix noch offen | Manuell prüfen |
|
||||
| 2 | Build fehlgeschlagen oder Timeout | Nutzer informieren, stoppen |
|
||||
| 3 | Loginseite nach 5 Min. nicht erreichbar | Nutzer informieren, stoppen |
|
||||
|
||||
## Notfall-Resume
|
||||
|
||||
Falls das Script mitten im Lauf abgebrochen ist (nach dem Branch-Push):
|
||||
|
||||
```bash
|
||||
bash /home/monsi/git_gemeinde/pretix_cgo/.claude/upstream-merge.sh --resume
|
||||
```
|
||||
@@ -0,0 +1,39 @@
|
||||
# Bereinigungsregeln: Gegenderte Sprache in deutschen Übersetzungen
|
||||
|
||||
## Zu prüfende Dateien
|
||||
|
||||
- `src/pretix/locale/de/LC_MESSAGES/django.po`
|
||||
- `src/pretix/locale/de/LC_MESSAGES/djangojs.po`
|
||||
- `src/pretix/locale/de_Informal/LC_MESSAGES/django.po`
|
||||
- `src/pretix/locale/de_Informal/LC_MESSAGES/djangojs.po`
|
||||
|
||||
## Suchmuster
|
||||
|
||||
| Muster | Beispiele |
|
||||
|--------|-----------|
|
||||
| Binneni mit `*` | `Teilnehmer*in`, `Käufer*innen` |
|
||||
| Binneni mit `:` | `Teilnehmer:in`, `Käufer:innen` |
|
||||
| Binneni mit `_` | `Teilnehmer_in`, `Käufer_innen` |
|
||||
| Binneni mit `(in)` | `Teilnehmer(in)`, `Käufer(innen)` |
|
||||
| Partizip-Plural auf `-enden` | `Teilnehmenden`, `Helfenden`, `Organisierenden`, `Bestellenden`, `Buchenden`, `Zahlenden` |
|
||||
|
||||
## Ersetzungsregeln
|
||||
|
||||
- Binneni → maskuline Grundform des Nomens:
|
||||
- `Teilnehmer*in` → `Teilnehmer`
|
||||
- `Käufer:innen` → `Käufer`
|
||||
- `Besucher_in` → `Besucher`
|
||||
- Partizip-Plural → maskuline Grundform:
|
||||
- `Teilnehmenden` → `Teilnehmer`
|
||||
- `Helfenden` → `Helfer`
|
||||
- `Organisierenden` → `Organisator` (Kontext beachten, ggf. `Veranstalter`)
|
||||
- `Bestellenden` → `Besteller`
|
||||
- `Buchenden` → `Bucher` (oder `Käufer`, je nach Kontext)
|
||||
- `Zahlenden` → `Zahler`
|
||||
|
||||
## Vorgehen
|
||||
|
||||
1. Immer den **vollständigen `msgstr`-Block** lesen (kann mehrzeilig sein, z.B. `msgstr[0]`/`msgstr[1]` für Pluralformen).
|
||||
2. Die zugehörige `msgid` für Kontext heranziehen.
|
||||
3. Nur `msgstr`-Zeilen ändern, niemals `msgid`.
|
||||
4. Bei Unsicherheit über die beste Ersetzung: konservativste Variante wählen und in der Commit-Message notieren.
|
||||
Executable
+245
@@ -0,0 +1,245 @@
|
||||
#!/bin/bash
|
||||
# Upstream-Merge-Workflow für pretix_cgo
|
||||
# Aufruf: ./upstream-merge.sh – vollständiger Lauf
|
||||
# ./upstream-merge.sh --resume – nach Gender-Bereinigung fortsetzen
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
GITOPS_DIR="$(cd "$REPO_DIR/../OrtlerstrasseGitOps" && pwd)"
|
||||
STATE_FILE="$SCRIPT_DIR/.upstream-merge-state"
|
||||
|
||||
GITEA_API="https://git.ortlerstrasse.de/api/v1"
|
||||
GITEA_OWNER="CGM_Public"
|
||||
GITEA_REPO="pretix_cgo"
|
||||
|
||||
# GITEA_TOKEN aus interaktiver Shell laden falls nicht gesetzt
|
||||
if [[ -z "${GITEA_TOKEN:-}" ]] && [[ -f ~/.bashrc ]]; then
|
||||
GITEA_TOKEN=$(bash -i -c 'echo $GITEA_TOKEN' 2>/dev/null) || GITEA_TOKEN=""
|
||||
fi
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# --- Ausgabe-Utilities ---
|
||||
green() { echo -e "\033[0;32m[✓]\033[0m $*"; }
|
||||
yellow() { echo -e "\033[1;33m[→]\033[0m $*"; }
|
||||
red() { echo -e "\033[0;31m[✗]\033[0m $*" >&2; }
|
||||
pause() { echo ""; yellow "$1"; read -rp " [Enter zum Fortfahren] "; echo ""; }
|
||||
|
||||
# --- State speichern/laden ---
|
||||
save_state() {
|
||||
cat > "$STATE_FILE" <<EOF
|
||||
UPSTREAM_TAG=$UPSTREAM_TAG
|
||||
VERSION=$VERSION
|
||||
BRANCH=$BRANCH
|
||||
NEW_TAG=$NEW_TAG
|
||||
EOF
|
||||
}
|
||||
|
||||
load_state() {
|
||||
if [[ ! -f "$STATE_FILE" ]]; then
|
||||
red "Kein State-File gefunden ($STATE_FILE). Bitte ohne --resume starten."
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck source=/dev/null
|
||||
source "$STATE_FILE"
|
||||
green "State geladen: UPSTREAM_TAG=$UPSTREAM_TAG | BRANCH=$BRANCH | NEW_TAG=$NEW_TAG"
|
||||
}
|
||||
|
||||
# --- Build-Pipeline pollen ---
|
||||
poll_pipeline() {
|
||||
local tag_sha="$1"
|
||||
|
||||
if [[ -z "${GITEA_TOKEN:-}" ]]; then
|
||||
yellow "GITEA_TOKEN nicht gesetzt – Pipeline-Polling nicht möglich."
|
||||
pause "Build manuell auf Gitea prüfen, dann Enter drücken."
|
||||
return
|
||||
fi
|
||||
|
||||
yellow "Warte auf Pipeline-Run für SHA ${tag_sha:0:12}..."
|
||||
local run_id=""
|
||||
for i in $(seq 1 12); do
|
||||
sleep 10
|
||||
run_id=$(curl -sf -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$GITEA_OWNER/$GITEA_REPO/actions/runs?limit=10" \
|
||||
| jq -r --arg sha "$tag_sha" \
|
||||
'.workflow_runs[] | select(.head_sha == $sha) | .id' \
|
||||
| head -1 || true)
|
||||
[[ -n "$run_id" ]] && break
|
||||
echo " ... noch kein Run ($i/12, warte 10s)"
|
||||
done
|
||||
|
||||
if [[ -z "$run_id" ]]; then
|
||||
red "Pipeline-Run nicht gefunden nach 2 Minuten."
|
||||
pause "Build manuell prüfen, dann Enter drücken."
|
||||
return
|
||||
fi
|
||||
|
||||
green "Pipeline-Run #$run_id gefunden, überwache..."
|
||||
for i in $(seq 1 30); do
|
||||
sleep 20
|
||||
local result
|
||||
result=$(curl -sf -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$GITEA_OWNER/$GITEA_REPO/actions/runs/$run_id" \
|
||||
| jq -r '"\(.status)/\(.conclusion // "")"')
|
||||
echo " Status: $result"
|
||||
case "$result" in
|
||||
completed/success) green "Build erfolgreich!"; return ;;
|
||||
completed/*) red "Build fehlgeschlagen: $result"; exit 2 ;;
|
||||
esac
|
||||
[[ $i -eq 30 ]] && { red "Timeout: Build nach 10 Minuten nicht fertig."; exit 2; }
|
||||
done
|
||||
}
|
||||
|
||||
# --- URL pollen bis HTTP 200 ---
|
||||
poll_url() {
|
||||
local url="$1"
|
||||
local label="$2"
|
||||
yellow "Warte auf $label ($url)..."
|
||||
for i in $(seq 1 20); do
|
||||
sleep 15
|
||||
local http
|
||||
http=$(curl -sLo /dev/null -w "%{http_code}" "$url" 2>/dev/null || echo "000")
|
||||
echo " HTTP: $http"
|
||||
[[ "$http" == "200" ]] && { green "$label erreichbar (HTTP 200)."; return; }
|
||||
echo " ... warte ($i/20)"
|
||||
done
|
||||
red "$label nicht erreichbar nach 5 Minuten."
|
||||
exit 3
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# Hauptlogik
|
||||
# ============================================================
|
||||
|
||||
RESUME=false
|
||||
[[ "${1:-}" == "--resume" ]] && RESUME=true
|
||||
|
||||
if $RESUME; then
|
||||
load_state
|
||||
else
|
||||
# --- Phase 1: Git-Setup ---
|
||||
cd "$REPO_DIR"
|
||||
|
||||
green "Schritt 1: Master aktualisieren..."
|
||||
git checkout master
|
||||
git pull
|
||||
|
||||
green "Schritt 2: Upstream-Tags holen..."
|
||||
git fetch upstream --tags
|
||||
|
||||
UPSTREAM_TAG=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
|
||||
VERSION="${UPSTREAM_TAG#v}"
|
||||
BRANCH="upstream/$VERSION"
|
||||
NEW_TAG="${VERSION}.0"
|
||||
|
||||
green "Upstream-Tag: $UPSTREAM_TAG | Branch: $BRANCH | Neuer Tag: $NEW_TAG"
|
||||
save_state
|
||||
|
||||
green "Schritt 3: Branch erstellen..."
|
||||
git checkout -b "$BRANCH" "tags/$UPSTREAM_TAG"
|
||||
|
||||
green "Schritt 4: Master mergen..."
|
||||
git merge master
|
||||
|
||||
green "Schritt 5: Branch pushen + MR anlegen..."
|
||||
PUSH_OUT=$(git push --set-upstream origin "$BRANCH" -o merge_request.create 2>&1 || true)
|
||||
echo "$PUSH_OUT"
|
||||
MR_URL=$(echo "$PUSH_OUT" | grep -oP 'https://\S+' | head -1 || true)
|
||||
[[ -n "$MR_URL" ]] && yellow "MR-Link: $MR_URL"
|
||||
|
||||
# --- Phase 2: Gender-Prüfung ---
|
||||
green "Schritt 6: Gender-Prüfung..."
|
||||
PO_FILES=(
|
||||
"src/pretix/locale/de/LC_MESSAGES/django.po"
|
||||
"src/pretix/locale/de/LC_MESSAGES/djangojs.po"
|
||||
"src/pretix/locale/de_Informal/LC_MESSAGES/django.po"
|
||||
"src/pretix/locale/de_Informal/LC_MESSAGES/djangojs.po"
|
||||
)
|
||||
GENDER_PATTERN='([A-ZÄÖÜ][a-zäöü]+(\*|:|_)(in(nen)?)\b|[A-ZÄÖÜ][a-zäöü]+\((in|innen)\)|\b(Teilnehmenden|Helfenden|Organisierenden|Bestellenden|Buchenden|Zahlenden)\b)'
|
||||
GENDER_HITS=$(grep -n -E "$GENDER_PATTERN" "${PO_FILES[@]}" 2>/dev/null || true)
|
||||
|
||||
if [[ -n "$GENDER_HITS" ]]; then
|
||||
yellow "Gender-Befunde gefunden – öffne Claude zur Bereinigung..."
|
||||
echo ""
|
||||
RULES=$(cat "$SCRIPT_DIR/gender-cleanup-rules.md")
|
||||
claude "Beim Upstream-Merge auf Branch '$BRANCH' wurden gegenderte Ausdrücke in den deutschen Übersetzungsdateien gefunden. Bitte bereinige sie, committe und pushe anschließend.
|
||||
|
||||
Arbeitsverzeichnis: $REPO_DIR
|
||||
|
||||
Befunde:
|
||||
$GENDER_HITS
|
||||
|
||||
$RULES
|
||||
|
||||
Nach der Bereinigung:
|
||||
git -C $REPO_DIR add src/pretix/locale/de/ src/pretix/locale/de_Informal/
|
||||
git -C $REPO_DIR commit -m 'Remove gendered language from de/de_Informal translations'
|
||||
git -C $REPO_DIR push
|
||||
|
||||
Danach diese Session beenden – das Script läuft dann automatisch weiter."
|
||||
|
||||
# Nochmal prüfen ob alles bereinigt wurde
|
||||
GENDER_HITS2=$(grep -n -E "$GENDER_PATTERN" "${PO_FILES[@]}" 2>/dev/null || true)
|
||||
if [[ -n "$GENDER_HITS2" ]]; then
|
||||
red "Noch immer Gender-Befunde vorhanden – bitte manuell prüfen:"
|
||||
echo "$GENDER_HITS2"
|
||||
exit 1
|
||||
fi
|
||||
green "Gender-Bereinigung erfolgreich."
|
||||
else
|
||||
green "Gender-Prüfung: Keine Befunde."
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- Phase 3: Warten auf MR-Merge ---
|
||||
pause "Schritt 7: MR auf Gitea mergen, dann Enter drücken."
|
||||
|
||||
# --- Phase 4: Tag setzen + Build ---
|
||||
cd "$REPO_DIR"
|
||||
green "Schritt 8: Master aktualisieren + Tag $NEW_TAG setzen..."
|
||||
git checkout master
|
||||
git pull
|
||||
TAG_SHA=$(git rev-parse HEAD)
|
||||
git tag "$NEW_TAG"
|
||||
git push origin "$NEW_TAG"
|
||||
green "Tag $NEW_TAG gepusht (SHA: ${TAG_SHA:0:12})."
|
||||
|
||||
green "Schritt 9: Build-Pipeline überwachen..."
|
||||
poll_pipeline "$TAG_SHA"
|
||||
|
||||
# --- Phase 5: cgm72 GitOps-Update ---
|
||||
green "Schritt 10: cgm72 GitOps-Update..."
|
||||
CGM72_YAML="$GITOPS_DIR/pretix-cgm72/pretix-deployment.yaml"
|
||||
OLD_TAG=$(grep -oP 'cr\.ortlerstrasse\.de/cgo/pretix:\K[0-9]\S+' "$CGM72_YAML")
|
||||
sed -i "s|cr.ortlerstrasse.de/cgo/pretix:${OLD_TAG}|cr.ortlerstrasse.de/cgo/pretix:${NEW_TAG}|" "$CGM72_YAML"
|
||||
git -C "$GITOPS_DIR" add pretix-cgm72/pretix-deployment.yaml
|
||||
git -C "$GITOPS_DIR" commit -m "Update pretix-cgm72 to $NEW_TAG"
|
||||
git -C "$GITOPS_DIR" push
|
||||
green "cgm72 YAML aktualisiert ($OLD_TAG → $NEW_TAG)."
|
||||
|
||||
green "Schritt 11: Warte auf cgm72..."
|
||||
poll_url "https://anmeldung.christliche-gemeinde.de/" "cgm72"
|
||||
|
||||
# --- Phase 6: Manuelle Bestätigung cgm72 ---
|
||||
pause "Schritt 12: cgm72 manuell prüfen (https://anmeldung.christliche-gemeinde.de/). OK? Enter drücken."
|
||||
|
||||
# --- Phase 7: sola GitOps-Update ---
|
||||
green "Schritt 13: sola GitOps-Update..."
|
||||
SOLA_YAML="$GITOPS_DIR/pretix-sola/pretix-deployment.yaml"
|
||||
OLD_TAG_SOLA=$(grep -oP 'cr\.ortlerstrasse\.de/cgo/pretix:\K[0-9]\S+' "$SOLA_YAML")
|
||||
sed -i "s|cr.ortlerstrasse.de/cgo/pretix:${OLD_TAG_SOLA}|cr.ortlerstrasse.de/cgo/pretix:${NEW_TAG}|" "$SOLA_YAML"
|
||||
git -C "$GITOPS_DIR" add pretix-sola/pretix-deployment.yaml
|
||||
git -C "$GITOPS_DIR" commit -m "Update pretix-sola to $NEW_TAG"
|
||||
git -C "$GITOPS_DIR" push
|
||||
green "sola YAML aktualisiert ($OLD_TAG_SOLA → $NEW_TAG)."
|
||||
|
||||
green "Schritt 14: Warte auf sola..."
|
||||
poll_url "https://anmeldung.sola-muenchen.de" "sola"
|
||||
|
||||
# Aufräumen
|
||||
rm -f "$STATE_FILE"
|
||||
|
||||
echo ""
|
||||
green "============================================"
|
||||
green " Upstream-Merge $NEW_TAG abgeschlossen ✓"
|
||||
green "============================================"
|
||||
@@ -0,0 +1,31 @@
|
||||
name: Build Deploy email notification tool
|
||||
run-name: ${{ gitea.actor }} building new version of the email notification tool
|
||||
on:
|
||||
push: # Baut bei jedem Push (Branches + Tags)
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
Apply-Kubernetes-Resources:
|
||||
runs-on: podman
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Login to Docker Registry
|
||||
run: podman login -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_TOKEN }} cr.ortlerstrasse.de
|
||||
|
||||
- name: Set Docker Image Tag
|
||||
run: |
|
||||
if [[ "${{ gitea.ref }}" == refs/tags/* ]]; then
|
||||
echo "TAG_NAME=${{ gitea.ref_name }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "TAG_NAME=latest" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Build Docker image
|
||||
run: podman build -t cr.ortlerstrasse.de/cgo/pretix:${{ env.TAG_NAME }} .
|
||||
|
||||
- name: Push Docker image
|
||||
run: |
|
||||
podman push cr.ortlerstrasse.de/cgo/pretix:${{ env.TAG_NAME }}
|
||||
echo "Image pushed successfully: cr.ortlerstrasse.de/cgo/pretix:${{ env.TAG_NAME }}"
|
||||
+2
-1
@@ -61,7 +61,8 @@ RUN pip3 install -U \
|
||||
cd /pretix && \
|
||||
PRETIX_DOCKER_BUILD=TRUE pip3 install \
|
||||
-e ".[memcached]" \
|
||||
gunicorn django-extensions ipython && \
|
||||
gunicorn django-extensions ipython \
|
||||
pretix-oidc && \
|
||||
rm -rf ~/.cache/pip
|
||||
|
||||
RUN chmod +x /usr/local/bin/pretix && \
|
||||
|
||||
@@ -173,7 +173,7 @@ Datetime String in ISO 8601 format ``"2017-12-27T10:00:00Z"``
|
||||
with timezone (normally UTC) ``"2017-12-27T10:00:00.596934Z"``,
|
||||
``"2017-12-27T10:00:00+02:00"``
|
||||
Date String in ISO 8601 format ``2017-12-27``
|
||||
Multi-lingual string Object of strings ``{"en": "red", "de": "rot", "de-informal": "rot"}``
|
||||
Multi-lingual string Object of strings ``{"en": "red", "de": "rot", "de_Informal": "rot"}``
|
||||
Money String with decimal number ``"23.42"``
|
||||
Currency String with ISO 4217 code ``"EUR"``, ``"USD"``
|
||||
Relative datetime *either* String in ISO 8601 ``"2017-12-27T10:00:00.596934Z"``,
|
||||
|
||||
Generated
+108
-106
@@ -40,30 +40,30 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
|
||||
"integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
||||
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
|
||||
"integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
|
||||
"version": "7.28.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
|
||||
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.29.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz",
|
||||
"integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
|
||||
"integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.29.8"
|
||||
"@babel/types": "^7.29.0"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
@@ -73,13 +73,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.29.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
|
||||
"integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
|
||||
"version": "7.29.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
|
||||
"integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.29.7",
|
||||
"@babel/helper-validator-identifier": "^7.29.7"
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
"@babel/helper-validator-identifier": "^7.28.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -194,16 +194,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/config-array/node_modules/brace-expansion": {
|
||||
"version": "5.0.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz",
|
||||
"integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
|
||||
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
"node": "18 || 20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/config-array/node_modules/minimatch": {
|
||||
@@ -378,9 +378,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz",
|
||||
"integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==",
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@napi-rs/wasm-runtime": {
|
||||
@@ -1339,16 +1339,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
|
||||
"version": "5.0.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz",
|
||||
"integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
|
||||
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
"node": "18 || 20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
|
||||
@@ -1447,53 +1447,53 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.43.tgz",
|
||||
"integrity": "sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.30.tgz",
|
||||
"integrity": "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.29.8",
|
||||
"@vue/shared": "3.5.43",
|
||||
"@babel/parser": "^7.29.0",
|
||||
"@vue/shared": "3.5.30",
|
||||
"entities": "^7.0.1",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.43.tgz",
|
||||
"integrity": "sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.30.tgz",
|
||||
"integrity": "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.5.43",
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/compiler-core": "3.5.30",
|
||||
"@vue/shared": "3.5.30"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.43.tgz",
|
||||
"integrity": "sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.30.tgz",
|
||||
"integrity": "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.29.8",
|
||||
"@vue/compiler-core": "3.5.43",
|
||||
"@vue/compiler-dom": "3.5.43",
|
||||
"@vue/compiler-ssr": "3.5.43",
|
||||
"@vue/shared": "3.5.43",
|
||||
"@babel/parser": "^7.29.0",
|
||||
"@vue/compiler-core": "3.5.30",
|
||||
"@vue/compiler-dom": "3.5.30",
|
||||
"@vue/compiler-ssr": "3.5.30",
|
||||
"@vue/shared": "3.5.30",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.21",
|
||||
"postcss": "^8.5.28",
|
||||
"postcss": "^8.5.8",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.43.tgz",
|
||||
"integrity": "sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.30.tgz",
|
||||
"integrity": "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.43",
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/compiler-dom": "3.5.30",
|
||||
"@vue/shared": "3.5.30"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/eslint-config-typescript": {
|
||||
@@ -1537,51 +1537,53 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.43.tgz",
|
||||
"integrity": "sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.30.tgz",
|
||||
"integrity": "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/shared": "3.5.30"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.43.tgz",
|
||||
"integrity": "sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.30.tgz",
|
||||
"integrity": "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.43",
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/reactivity": "3.5.30",
|
||||
"@vue/shared": "3.5.30"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.43.tgz",
|
||||
"integrity": "sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.30.tgz",
|
||||
"integrity": "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.43",
|
||||
"@vue/runtime-core": "3.5.43",
|
||||
"@vue/shared": "3.5.43",
|
||||
"@vue/reactivity": "3.5.30",
|
||||
"@vue/runtime-core": "3.5.30",
|
||||
"@vue/shared": "3.5.30",
|
||||
"csstype": "^3.2.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.43.tgz",
|
||||
"integrity": "sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.30.tgz",
|
||||
"integrity": "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.5.43",
|
||||
"@vue/runtime-dom": "3.5.43",
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/compiler-ssr": "3.5.30",
|
||||
"@vue/shared": "3.5.30"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.30"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.43.tgz",
|
||||
"integrity": "sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.30.tgz",
|
||||
"integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
@@ -1695,9 +1697,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz",
|
||||
"integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -2120,16 +2122,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/brace-expansion": {
|
||||
"version": "5.0.12",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz",
|
||||
"integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
|
||||
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^4.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
"node": "18 || 20 || >=22"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/eslint-visitor-keys": {
|
||||
@@ -3188,9 +3190,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.20",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
|
||||
"integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
|
||||
"version": "3.3.16",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
|
||||
"integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -3364,9 +3366,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.5.29",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.29.tgz",
|
||||
"integrity": "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==",
|
||||
"version": "8.5.23",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz",
|
||||
"integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -3383,18 +3385,18 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.19",
|
||||
"nanoid": "^3.3.16",
|
||||
"picocolors": "^1.1.1",
|
||||
"source-map-js": "^1.2.2"
|
||||
"source-map-js": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz",
|
||||
"integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==",
|
||||
"version": "7.1.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz",
|
||||
"integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4160,9 +4162,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/smol-toml": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz",
|
||||
"integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==",
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.1.tgz",
|
||||
"integrity": "sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ==",
|
||||
"dev": true,
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
@@ -4183,9 +4185,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
|
||||
"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
@@ -4590,16 +4592,16 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.43",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.43.tgz",
|
||||
"integrity": "sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==",
|
||||
"version": "3.5.30",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.30.tgz",
|
||||
"integrity": "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.43",
|
||||
"@vue/compiler-sfc": "3.5.43",
|
||||
"@vue/runtime-dom": "3.5.43",
|
||||
"@vue/server-renderer": "3.5.43",
|
||||
"@vue/shared": "3.5.43"
|
||||
"@vue/compiler-dom": "3.5.30",
|
||||
"@vue/compiler-sfc": "3.5.30",
|
||||
"@vue/runtime-dom": "3.5.30",
|
||||
"@vue/server-renderer": "3.5.30",
|
||||
"@vue/shared": "3.5.30"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
|
||||
+4
-4
@@ -33,7 +33,7 @@ dependencies = [
|
||||
"bleach==6.4.*",
|
||||
"celery==5.6.*",
|
||||
"chardet==5.2.*",
|
||||
"cryptography>=50.0.2",
|
||||
"cryptography>=50.0.1",
|
||||
"css-inline==0.21.*",
|
||||
"defusedcsv>=3.0.0",
|
||||
"dnspython==2.*",
|
||||
@@ -41,7 +41,7 @@ dependencies = [
|
||||
"django-bootstrap3==26.2",
|
||||
"django-compressor==4.6.0",
|
||||
"django-countries==9.1.*",
|
||||
"django-filter==26.2",
|
||||
"django-filter==26.1",
|
||||
"django-formset-js-improved==0.5.0.5",
|
||||
"django-formtools==2.7",
|
||||
"django-hierarkey==2.0.*,>=2.0.2",
|
||||
@@ -94,11 +94,11 @@ dependencies = [
|
||||
"redis==7.4.*",
|
||||
"reportlab==5.0.*",
|
||||
"requests==2.34.*",
|
||||
"sentry-sdk==2.71.*",
|
||||
"sentry-sdk==2.70.*",
|
||||
"sepaxml==2.7.*",
|
||||
"stripe==7.9.*",
|
||||
"text-unidecode==1.*",
|
||||
"tlds>=2026093003",
|
||||
"tlds>=2026072401",
|
||||
"tqdm==4.*",
|
||||
"ua-parser==1.0.*",
|
||||
"vobject==0.9.*",
|
||||
|
||||
@@ -19,4 +19,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
__version__ = "2026.9.0.dev0"
|
||||
__version__ = "2026.8.0"
|
||||
|
||||
@@ -261,9 +261,7 @@ class ItemAddOnSerializer(serializers.ModelSerializer):
|
||||
def validate(self, data):
|
||||
data = super().validate(data)
|
||||
|
||||
full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {}
|
||||
full_data.update(data)
|
||||
ItemAddOn.clean_max_min_count(full_data.get('max_count'), full_data.get('min_count'))
|
||||
ItemAddOn.clean_max_min_count(data.get('max_count'), data.get('min_count'))
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@@ -28,5 +28,6 @@ from .items import * # noqa
|
||||
from .json import * # noqa
|
||||
from .mail import * # noqa
|
||||
from .orderlist import * # noqa
|
||||
from .relevant_orderlist import * # noqa
|
||||
from .reusablemedia import * # noqa
|
||||
from .waitinglist import * # noqa
|
||||
|
||||
@@ -89,7 +89,7 @@ class OrderListExporter(MultiSheetListExporter):
|
||||
description = gettext_lazy('Download a spreadsheet of all orders. The spreadsheet will include three sheets, one '
|
||||
'with a line for every order, one with a line for every order position, and one with '
|
||||
'a line for every additional fee charged in an order.')
|
||||
featured = True
|
||||
featured = False
|
||||
repeatable_read = False
|
||||
|
||||
@cached_property
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -71,8 +71,8 @@ class EmailTransmissionType(TransmissionType):
|
||||
|
||||
def transmission_info_to_form_data(self, transmission_info: dict) -> dict:
|
||||
return {
|
||||
"transmission_email_other": bool((transmission_info or {}).get("transmission_email_address")),
|
||||
"transmission_email_address": (transmission_info or {}).get("transmission_email_address"),
|
||||
"transmission_email_other": bool(transmission_info.get("transmission_email_address")),
|
||||
"transmission_email_address": transmission_info.get("transmission_email_address"),
|
||||
}
|
||||
|
||||
def form_data_to_transmission_info(self, form_data: dict) -> dict:
|
||||
|
||||
@@ -66,7 +66,7 @@ class ProcessForm(forms.Form):
|
||||
widget=forms.Select(
|
||||
attrs={'data-static': 'true'}
|
||||
),
|
||||
help_text=conditional_escape(c.help_text or ""),
|
||||
help_text=conditional_escape(c.help_text),
|
||||
)
|
||||
|
||||
def get_columns(self):
|
||||
|
||||
@@ -364,7 +364,7 @@ class TeamForm(forms.ModelForm):
|
||||
for opt in pg.options
|
||||
],
|
||||
label=pg.label,
|
||||
help_text=conditional_escape(pg.help_text or ""),
|
||||
help_text=conditional_escape(pg.help_text),
|
||||
initial=initial,
|
||||
widget=forms.RadioSelect,
|
||||
)
|
||||
@@ -389,7 +389,7 @@ class TeamForm(forms.ModelForm):
|
||||
for opt in pg.options
|
||||
],
|
||||
label=pg.label,
|
||||
help_text=conditional_escape(pg.help_text or ""),
|
||||
help_text=conditional_escape(pg.help_text),
|
||||
initial=initial,
|
||||
widget=forms.RadioSelect,
|
||||
)
|
||||
|
||||
@@ -851,7 +851,7 @@ msgstr "Details der Bestellposition"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee details"
|
||||
msgstr "Details Teilnehmer*in"
|
||||
msgstr "Details Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/answers.py
|
||||
#: pretix/base/models/items.py pretix/control/navigation.py
|
||||
@@ -898,11 +898,11 @@ msgstr "Veranstaltungs- oder Termininformationen"
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html
|
||||
msgid "Attendee name"
|
||||
msgstr "Name Teilnehmer*in"
|
||||
msgstr "Name"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee"
|
||||
msgstr "Teilnehmer*in"
|
||||
msgstr "Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/forms/questions.py pretix/base/models/customers.py
|
||||
@@ -910,11 +910,11 @@ msgstr "Teilnehmer*in"
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee email"
|
||||
msgstr "E-Mail Teilnehmer*in"
|
||||
msgstr "E-Mail Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee or order email"
|
||||
msgstr "E-Mail Teilnehmer*in oder Bestellung"
|
||||
msgstr "E-Mail Teilnehmer oder Bestellung"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/pdf.py pretix/control/templates/pretixcontrol/order/index.html
|
||||
@@ -922,23 +922,23 @@ msgstr "E-Mail Teilnehmer*in oder Bestellung"
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee company"
|
||||
msgstr "Teilnehmer*innen-Firma"
|
||||
msgstr "Teilnehmer-Firma"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address street"
|
||||
msgstr "Teilnehmer*innen-Adresse: Straße"
|
||||
msgstr "Teilnehmer-Adresse: Straße"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address ZIP code"
|
||||
msgstr "Teilnehmer*innen-Adresse: PLZ"
|
||||
msgstr "Teilnehmer-Adresse: PLZ"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address city"
|
||||
msgstr "Teilnehmer*innen-Adresse: Stadt"
|
||||
msgstr "Teilnehmer-Adresse: Stadt"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address country"
|
||||
msgstr "Teilnehmer*innen-Adresse: Land"
|
||||
msgstr "Teilnehmer-Adresse: Land"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/pdf.py
|
||||
@@ -1172,7 +1172,7 @@ msgid ""
|
||||
"Download a ZIP file including all files that have been uploaded by your "
|
||||
"customers while creating an order."
|
||||
msgstr ""
|
||||
"ZIP-Datei mit allen Dateien, die von Kund*innen im Bestellprozess als "
|
||||
"ZIP-Datei mit allen Dateien, die von Kunden im Bestellprozess als "
|
||||
"Antwort auf eine Frage hochgeladen wurden."
|
||||
|
||||
#: pretix/base/exporters/answers.py pretix/base/exporters/orderlist.py
|
||||
@@ -2033,7 +2033,11 @@ msgstr "Ohne gültige Mitgliedschaft verstecken"
|
||||
msgid "Order data"
|
||||
msgstr "Bestelldaten"
|
||||
|
||||
#: pretix/base/exporters/json.py
|
||||
#: pretix/base/exporters/relevant_orderlist.py:86
|
||||
msgid "Order data (sorted by relevance)"
|
||||
msgstr "Bestelldaten (nach Relevanz sortiert)"
|
||||
|
||||
#: pretix/base/exporters/json.py:53
|
||||
msgid ""
|
||||
"Download a structured JSON representation of all orders. This might be "
|
||||
"useful for the import in third-party systems."
|
||||
@@ -2050,8 +2054,8 @@ msgid ""
|
||||
"Download a text file with all email addresses collected either from buyers "
|
||||
"or from ticket holders."
|
||||
msgstr ""
|
||||
"Textdatei mit allen E-Mail-Adressen, die von Käufer*innen und "
|
||||
"Ticketinhaber*innen eingesammelt wurden."
|
||||
"Textdatei mit allen E-Mail-Adressen, die von Käufern und "
|
||||
"Ticketinhaber eingesammelt wurden."
|
||||
|
||||
#: pretix/base/exporters/mail.py pretix/plugins/reports/exporters.py
|
||||
msgid "Filter by status"
|
||||
@@ -2068,15 +2072,30 @@ msgstr ""
|
||||
"Bestellposition und das dritte eine Zeile für jede zusätzlich erhobene "
|
||||
"Gebühr."
|
||||
|
||||
#: pretix/base/exporters/orderlist.py pretix/base/models/orders.py
|
||||
#: pretix/base/permissions.py pretix/control/navigation.py
|
||||
#: pretix/control/templates/pretixcontrol/orders/index.html
|
||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html
|
||||
#: pretix/control/templates/pretixcontrol/subevents/detail.html
|
||||
#: pretix/plugins/reports/accountingreport.py
|
||||
#: pretix/plugins/reports/exporters.py pretix/plugins/statistics/apps.py
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_orders.html
|
||||
#: pretix/presale/views/customer.py
|
||||
#: pretix/base/exporters/relevant_orderlist.py:88
|
||||
msgid ""
|
||||
"Download a spreadsheet of all orders. The spreadsheet will include three "
|
||||
"sheets, one with a line for every order, one with a line for every order "
|
||||
"position, and one with a line for every additional fee charged in an "
|
||||
"order. The most relevant data is in the first columns of the tables."
|
||||
msgstr ""
|
||||
"Tabelle (Excel oder CSV) mit allen Bestellungen. Das erste Tabellenblatt "
|
||||
"enthält eine Zeile für jede Bestellung, das zweite eine Zeile für jede "
|
||||
"Bestellposition und das dritte eine Zeile für jede zusätzlich erhobene "
|
||||
"Gebühr. Die relevantesten Daten sind in den ersten Spalten der Tabellen."
|
||||
|
||||
#: pretix/base/exporters/orderlist.py:102 pretix/base/models/orders.py:336
|
||||
#: pretix/base/permissions.py:228 pretix/control/navigation.py:267
|
||||
#: pretix/control/navigation.py:387
|
||||
#: pretix/control/templates/pretixcontrol/orders/index.html:8
|
||||
#: pretix/control/templates/pretixcontrol/orders/index.html:10
|
||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:205
|
||||
#: pretix/control/templates/pretixcontrol/subevents/detail.html:203
|
||||
#: pretix/plugins/reports/accountingreport.py:673
|
||||
#: pretix/plugins/reports/accountingreport.py:873
|
||||
#: pretix/plugins/reports/exporters.py:673 pretix/plugins/statistics/apps.py:39
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:13
|
||||
#: pretix/presale/views/customer.py:364
|
||||
msgid "Orders"
|
||||
msgstr "Bestellungen"
|
||||
|
||||
@@ -3859,13 +3878,13 @@ msgstr "Bitte wählen Sie einen gültigen Staat aus."
|
||||
|
||||
#: pretix/base/modelimport_orders.py pretix/control/forms/filter.py
|
||||
msgid "Attendee email address"
|
||||
msgstr "Teilnehmer*innen-E-Mail-Adresse"
|
||||
msgstr "Teilnehmer-E-Mail-Adresse"
|
||||
|
||||
#: pretix/base/modelimport_orders.py pretix/control/forms/filter.py
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee address"
|
||||
msgstr "Teilnehmer*innen-Adresse"
|
||||
msgstr "Teilnehmer-Adresse"
|
||||
|
||||
#: pretix/base/modelimport_orders.py
|
||||
msgid "Calculate from product"
|
||||
@@ -5373,8 +5392,8 @@ msgid ""
|
||||
"needs to be checked."
|
||||
msgstr ""
|
||||
"Wenn diese Option gesetzt ist, wird die Check-in-Anwendung melden, dass "
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studierende "
|
||||
"nützlich, deren Studierendenausweis noch geprüft werden soll."
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studenten "
|
||||
"nützlich, deren Studentenausweis noch geprüft werden soll."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -6266,8 +6285,8 @@ msgid ""
|
||||
"cases."
|
||||
msgstr ""
|
||||
"Wenn diese Option gesetzt ist, wird die Check-in-Anwendung melden, dass "
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studierende "
|
||||
"nützlich, deren Studierendenausweis noch geprüft werden soll."
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studenten "
|
||||
"nützlich, deren Studentenausweis noch geprüft werden soll."
|
||||
|
||||
#: pretix/base/models/orders.py
|
||||
msgid ""
|
||||
@@ -7735,7 +7754,7 @@ msgstr "Musterfirma GmbH"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Full attendee address"
|
||||
msgstr "Volle Teilnehmer*innen-Adresse"
|
||||
msgstr "Volle Teilnehmer-Adresse"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid ""
|
||||
@@ -7753,23 +7772,23 @@ msgstr ""
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee street"
|
||||
msgstr "Teilnehmer*innen-Straße"
|
||||
msgstr "Teilnehmer-Straße"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee ZIP code"
|
||||
msgstr "Teilnehmer*innen-PLZ"
|
||||
msgstr "Teilnehmer-PLZ"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee city"
|
||||
msgstr "Teilnehmer*innen-Stadt"
|
||||
msgstr "Teilnehmer-Stadt"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee state"
|
||||
msgstr "Teilnehmer*innen-Bundesstaat"
|
||||
msgstr "Teilnehmer-Bundesstaat"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee country"
|
||||
msgstr "Teilnehmer*innen-Land"
|
||||
msgstr "Teilnehmer-Land"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Pseudonymization ID (lead scanning)"
|
||||
@@ -8064,7 +8083,7 @@ msgstr "Herr Mustermann"
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
#, python-brace-format
|
||||
msgid "Attendee name: {part}"
|
||||
msgstr "Teilnehmer*innenname: {part}"
|
||||
msgstr "Teilnehmername: {part}"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Invoice address name for salutation"
|
||||
@@ -8994,7 +9013,7 @@ msgstr "Veranstaltungsort: {location}"
|
||||
#, python-brace-format
|
||||
msgctxt "invoice"
|
||||
msgid "Attendee: {name}"
|
||||
msgstr "Teilnehmer*in: {name}"
|
||||
msgstr "Teilnehmer: {name}"
|
||||
|
||||
#: pretix/base/services/invoices.py pretix/plugins/reports/exporters.py
|
||||
#, python-brace-format
|
||||
@@ -9951,7 +9970,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Hide prices on attendee ticket page"
|
||||
msgstr "Preise auf Teilnehmer*innen-Ticket-Seite verstecken"
|
||||
msgstr "Preise auf Teilnehmer-Ticket-Seite verstecken"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -9961,13 +9980,13 @@ msgid ""
|
||||
"price."
|
||||
msgstr ""
|
||||
"Wenn eine Person mehrere Tickets erwirbt und E-Mails an alle "
|
||||
"Teilnehmer*innen verschickt werden, wird mit dieser Option der Ticketpreis "
|
||||
"auf der Ticket-Seite der einzelnen Teilnehmer*innen versteckt. Nur die "
|
||||
"Teilnehmer verschickt werden, wird mit dieser Option der Ticketpreis "
|
||||
"auf der Ticket-Seite der einzelnen Teilnehmer versteckt. Nur die "
|
||||
"Person, welche die Tickets kauft, sieht den Preis."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for attendee names"
|
||||
msgstr "Namen der Teilnehmer*innen erfragen"
|
||||
msgstr "Namen der Teilnehmer erfragen"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for a name for all personalized tickets."
|
||||
@@ -9976,11 +9995,11 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Require attendee names"
|
||||
msgstr "Namen der Teilnehmer*innen erfordern"
|
||||
msgstr "Namen der Teilnehmer erfordern"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Require customers to fill in the names of all attendees."
|
||||
msgstr "Erfordere die Eingabe aller Teilnehmer*innen-Namen."
|
||||
msgstr "Erfordere die Eingabe aller Teilnehmer-Namen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for email addresses per ticket"
|
||||
@@ -10534,8 +10553,8 @@ msgid ""
|
||||
"but no indication of missing payment will be visible on the ticket pages of "
|
||||
"attendees who did not buy the ticket themselves."
|
||||
msgstr ""
|
||||
"Die Box mit Zahlungsinstruktionen wird Ticketkäufer*innen weiter angezeigt, "
|
||||
"aber Teilnehmer*innen, die ihr Ticket nicht selbst gekauft haben, werden "
|
||||
"Die Box mit Zahlungsinstruktionen wird Ticketkäufern weiter angezeigt, "
|
||||
"aber Teilnehmern, die ihr Ticket nicht selbst gekauft haben, werden "
|
||||
"keine Anzeichen des fehlenden Zahlungseingangs sehen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
@@ -11046,7 +11065,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Show number of check-ins to customer"
|
||||
msgstr "Zeige Anzahl der Check-ins für Kund*innen an"
|
||||
msgstr "Zeige Anzahl der Check-ins für Kunden an"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -11057,12 +11076,12 @@ msgid ""
|
||||
"failed scans will not be counted, and the user will not see the different "
|
||||
"check-in lists."
|
||||
msgstr ""
|
||||
"Wenn diese Option aktiv ist, können Kund*innen selbst sehen, wie oft sie die "
|
||||
"Wenn diese Option aktiv ist, können Kunden selbst sehen, wie oft sie die "
|
||||
"Veranstaltung betreten haben. Das ist normalerweise nicht nötig, aber kann "
|
||||
"nützlich sein, wenn es Tickets gibt, die eine bestimmte Anzahl an Eintritten "
|
||||
"erlauben, sodass Kund*innen die bisherige Nutzung des Tickets einsehen "
|
||||
"erlauben, sodass Kunden die bisherige Nutzung des Tickets einsehen "
|
||||
"können. Ausgänge oder fehlgeschlagene Scans werden nicht angezeigt und die "
|
||||
"Kund*innen sehen keine Aufschlüsselung verschiedener Check-in-Listen."
|
||||
"Kunden sehen keine Aufschlüsselung verschiedener Check-in-Listen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow users to download tickets"
|
||||
@@ -11235,7 +11254,7 @@ msgstr ""
|
||||
#: pretix/base/settings.py
|
||||
msgid "Both the attendee and the person who ordered can make changes"
|
||||
msgstr ""
|
||||
"Sowohl Besteller*in als auch Teilnehmer*innen können Änderungen vornehmen"
|
||||
"Sowohl Besteller als auch Teilnehmer können Änderungen vornehmen"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow customers to modify their information"
|
||||
@@ -11343,7 +11362,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow individual attendees to change their ticket"
|
||||
msgstr "Erlaubt einzelnen Teilnehmer*innen ihr Ticket zu ändern"
|
||||
msgstr "Erlaubt einzelnen Teilnehmern ihr Ticket zu ändern"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -11355,7 +11374,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Standardmäßig kann nur die Person, welche die Tickets gekauft hat, "
|
||||
"Änderungen an der Bestellung vornehmen. Wenn diese Option aktiv ist, können "
|
||||
"auch einzelne Teilnehmer*innen Änderungen vornehmen. Teilnehmer*innen können "
|
||||
"auch einzelne Teilnehmer Änderungen vornehmen. Teilnehmer können "
|
||||
"jedoch immer nur Änderungen vornehmen, welche die Gesamtkosten der "
|
||||
"Bestellung nicht verändern. Solche Änderungen können nur vom Ticketkäufer "
|
||||
"vorgenommen werden."
|
||||
@@ -11664,7 +11683,7 @@ msgid ""
|
||||
"people."
|
||||
msgstr ""
|
||||
"Sie können dieses Feld benutzen, um zusätzliche Informationen mit Ihren "
|
||||
"Teilnehmer*innen zu teilen, wie z.B. Anreise-Informationen oder den Link zu "
|
||||
"Teilnehmer zu teilen, wie z.B. Anreise-Informationen oder den Link zu "
|
||||
"einer digitalen Veranstaltung. Wenn das Feld leer ist, fügen wir automatisch "
|
||||
"einen Link zum Ticketshop, die Einlass-Uhrzeit und den Veranstalter hier "
|
||||
"ein. Es sind keine Platzhalter mit sensiblen personenbezogenen Daten "
|
||||
@@ -11900,8 +11919,8 @@ msgstr ""
|
||||
"Diese Datei wird an die erste E-Mail angehängt, die wir beim Eingang einer "
|
||||
"neuen Bestellung verschicken. Sie kann daher mit den Textvorlagen "
|
||||
"\"Getätigte Bestellung\", \"Kostenlose Bestellung\" oder \"Erhaltene "
|
||||
"Bestellung\" von oben auftreten. Sie wird ggf. sowohl an Besteller*innen als "
|
||||
"auch Teilnehmer*innen verschickt. Nicht geeignet zum Versand nicht-"
|
||||
"Bestellung\" von oben auftreten. Sie wird ggf. sowohl an Besteller als "
|
||||
"auch Teilnehmer verschickt. Nicht geeignet zum Versand nicht-"
|
||||
"öffentlicher Informationen, da die Datei unabhängig davon verschickt wird, "
|
||||
"ob die Bestellung bezahlt oder freigegeben ist. Um zu vermeiden, dass diese "
|
||||
"wichtige E-Mail nicht ankommt, können nur PDF-Dateien mit maximal {size} MB "
|
||||
@@ -15205,7 +15224,7 @@ msgstr "Check-in-Status"
|
||||
|
||||
#: pretix/control/forms/filter.py pretix/plugins/checkinlists/exporters.py
|
||||
msgid "All attendees"
|
||||
msgstr "Alle Teilnehmer*innen"
|
||||
msgstr "Alle Teilnehmer"
|
||||
|
||||
#: pretix/control/forms/filter.py
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
@@ -15808,7 +15827,7 @@ msgid ""
|
||||
"people over 65. This ticket includes access to all parts of the event, "
|
||||
"except the VIP area."
|
||||
msgstr ""
|
||||
"z.B. Dieses reduzierte Ticket ist erhältlich für Vollzeitstudent*innen, "
|
||||
"z.B. Dieses reduzierte Ticket ist erhältlich für Vollzeitstudent, "
|
||||
"Arbeitslose und Menschen über 65. Das Ticket enthält Zugang zu allen Teilen "
|
||||
"der Veranstaltung außer des VIP-Bereiches."
|
||||
|
||||
@@ -16119,7 +16138,7 @@ msgstr ""
|
||||
|
||||
#: pretix/control/forms/orders.py
|
||||
msgid "Notify customer by email"
|
||||
msgstr "Kund*in per E-Mail benachrichtigen"
|
||||
msgstr "Kunde per E-Mail benachrichtigen"
|
||||
|
||||
#: pretix/control/forms/orders.py
|
||||
msgid "Keep a cancellation fee of"
|
||||
@@ -17730,7 +17749,7 @@ msgstr "Eine individuelle E-Mail wurde verschickt."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "A custom email has been sent to an attendee."
|
||||
msgstr "Eine individuelle E-Mail wurde an eine Teilnehmer*in verschickt."
|
||||
msgstr "Eine individuelle E-Mail wurde an einen Teilnehmer verschickt."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid ""
|
||||
@@ -19535,7 +19554,7 @@ msgstr "Terminal-ID"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html
|
||||
msgid "Card holder"
|
||||
msgstr "Karteninhaber*in"
|
||||
msgstr "Karteninhaber"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html
|
||||
msgid "Card expiration"
|
||||
@@ -19739,7 +19758,7 @@ msgstr "CSV"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
msgid "No attendee record was found."
|
||||
msgstr "Keine passenden Teilnehmer*innen gefunden."
|
||||
msgstr "Keine passenden Teilnehmer gefunden."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
#: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html
|
||||
@@ -22500,7 +22519,7 @@ msgid ""
|
||||
"Only purchases of such products will be considered \"attendees\" for most "
|
||||
"statistical purposes or within some plugins."
|
||||
msgstr ""
|
||||
"Nur Käufe eines solchen Produkts werden als \"Teilnehmer*innen\" gewertet, "
|
||||
"Nur Käufe eines solchen Produkts werden als \"Teilnehmer\" gewertet, "
|
||||
"z.B. in Statistiken oder in Funktionen von Erweiterungen."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/item/create.html
|
||||
@@ -22579,7 +22598,7 @@ msgid ""
|
||||
"The system will not ask for a name or other attendee details. This only "
|
||||
"affects system-provided fields, you can still add your own questions."
|
||||
msgstr ""
|
||||
"Das System wird nicht nach einem Namen oder anderen Teilnehmer*innen-Daten "
|
||||
"Das System wird nicht nach einem Namen oder anderen Teilnehmer-Daten "
|
||||
"fragen. Dies betrifft nur vom System bereitgestellte Felder, eigene Fragen "
|
||||
"können trotzdem hinzugefügt werden."
|
||||
|
||||
@@ -24884,7 +24903,7 @@ msgstr "Sonstige Datenexporte"
|
||||
#: pretix/control/templates/pretixcontrol/orders/export.html
|
||||
#: pretix/control/templates/pretixcontrol/organizers/export.html
|
||||
msgid "Recommended for new users"
|
||||
msgstr "Empfohlen für neue Benutzer*innen"
|
||||
msgstr "Empfohlen für neue Benutzer"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/orders/export.html
|
||||
#: pretix/control/templates/pretixcontrol/organizers/export.html
|
||||
@@ -25826,7 +25845,7 @@ msgstr "Domains"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html
|
||||
msgid "This dialog is intended for advanced users."
|
||||
msgstr "Dieser Dialog ist für fortgeschrittene Anwender*innen gedacht."
|
||||
msgstr "Dieser Dialog ist für fortgeschrittene Anwender gedacht."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html
|
||||
msgid ""
|
||||
@@ -28227,7 +28246,7 @@ msgid ""
|
||||
"customers. This way, customers will not be able to discover the waiting list."
|
||||
msgstr ""
|
||||
"Entsprechend Ihrer Veranstaltungseinstellungen werden ausverkaufte Produkte "
|
||||
"nicht angezeigt. Dies führt dazu, dass Kund*innen die Warteliste nicht "
|
||||
"nicht angezeigt. Dies führt dazu, dass Kunden die Warteliste nicht "
|
||||
"finden können."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/waitinglist/index.html
|
||||
@@ -28547,11 +28566,11 @@ msgstr "Das ausgewählte List wurde gelöscht."
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
msgid "Attendees (ordered)"
|
||||
msgstr "Teilnehmende (bestellt)"
|
||||
msgstr "Teilnehmer (bestellt)"
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
msgid "Attendees (paid)"
|
||||
msgstr "Teilnehmende (bezahlt)"
|
||||
msgstr "Teilnehmer (bezahlt)"
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
#, python-brace-format
|
||||
@@ -30628,7 +30647,7 @@ msgstr "PDF-Sammlungen"
|
||||
|
||||
#: pretix/plugins/badges/exporters.py
|
||||
msgid "Download all attendee badges as one large PDF for printing."
|
||||
msgstr "Alle Teilnehmer*innen-Badges in einer großen PDF-Datei für den Druck."
|
||||
msgstr "Alle Teilnehmer-Badges in einer großen PDF-Datei für den Druck."
|
||||
|
||||
#: pretix/plugins/badges/exporters.py
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
@@ -30879,7 +30898,7 @@ msgstr "Anderes Bankkonto"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
msgid "Name of account holder"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
msgid ""
|
||||
@@ -31015,7 +31034,7 @@ msgstr "Bitte überweisen Sie den vollen Betrag auf das folgende Bankkonto:"
|
||||
#: pretix/plugins/banktransfer/views.py pretix/plugins/stripe/payment.py
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_confirm.html
|
||||
msgid "Account holder"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html
|
||||
@@ -31592,7 +31611,7 @@ msgid ""
|
||||
"Download a spreadsheet with all attendees that are included in a check-in "
|
||||
"list."
|
||||
msgstr ""
|
||||
"Tabelle (Excel oder CSV) mit allen Teilnehmer*innen, die in einer Check-in-"
|
||||
"Tabelle (Excel oder CSV) mit allen Teilnehmer, die in einer Check-in-"
|
||||
"Liste zutrittsberechtigt sind."
|
||||
|
||||
#: pretix/plugins/checkinlists/exporters.py
|
||||
@@ -32708,7 +32727,7 @@ msgstr "Geplante E-Mails"
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "Mass email was sent to customers or attendees."
|
||||
msgstr "Rundmail wurde an Kunden oder Teilnehmer*innen verschickt."
|
||||
msgstr "Rundmail wurde an Kunden oder Teilnehmer verschickt."
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "Mass email was sent to waiting list entries."
|
||||
@@ -32740,7 +32759,7 @@ msgstr "Eine automatisierte E-Mail wurde an den Besteller verschickt"
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "A scheduled email was sent to a ticket holder"
|
||||
msgstr "Eine automatisierte E-Mail wurde an eine Teilnehmer*in verschickt."
|
||||
msgstr "Eine automatisierte E-Mail wurde an eine Teilnehmer verschickt."
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "An email rule was deleted"
|
||||
@@ -32773,7 +32792,7 @@ msgstr "Alle nicht eingecheckten Kunden"
|
||||
|
||||
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history_fragment_orders.html
|
||||
msgid "Attendee contact addresses"
|
||||
msgstr "Teilnehmer*innen-E-Mail-Adressen"
|
||||
msgstr "Teilnehmer-E-Mail-Adressen"
|
||||
|
||||
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history_fragment_orders.html
|
||||
msgid "All contact addresses"
|
||||
@@ -32925,14 +32944,14 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
msgid "Orders or attendees"
|
||||
msgstr "Bestellungen oder Teilnehmer*innen"
|
||||
msgstr "Bestellungen oder Teilnehmer"
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
msgid ""
|
||||
"Send an email to every customer, or to every person a ticket has been "
|
||||
"purchased for, or a combination of both."
|
||||
msgstr ""
|
||||
"Senden Sie eine E-Mail an alle Ticketkäufer*innen, alle Ticketinhaber*innen "
|
||||
"Senden Sie eine E-Mail an alle Ticketkäufer, alle Ticketinhaber "
|
||||
"oder eine Kombination aus beiden Gruppen."
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
@@ -33495,23 +33514,23 @@ msgstr "SEPA-Lastschrift"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Name"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Street"
|
||||
msgstr "Straße (Kontoinhaber*in)"
|
||||
msgstr "Straße (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Postal Code"
|
||||
msgstr "PLZ (Kontoinhaber*in)"
|
||||
msgstr "PLZ (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder City"
|
||||
msgstr "Stadt (Kontoinhaber*in)"
|
||||
msgstr "Stadt (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Country"
|
||||
msgstr "Land (Kontoinhaber*in)"
|
||||
msgstr "Land (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Affirm via Stripe"
|
||||
@@ -33951,7 +33970,7 @@ msgstr "MOTO"
|
||||
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html
|
||||
msgid "Payer name"
|
||||
msgstr "Name des Zahlenden"
|
||||
msgstr "Name des Zahlers"
|
||||
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html
|
||||
msgid "Payment receipt"
|
||||
@@ -35261,7 +35280,7 @@ msgstr[1] "Das Ticket wurde %(count)s-mal eingelöst."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "No attendee name provided"
|
||||
msgstr "Name der teilnehmenden Person nicht angegeben"
|
||||
msgstr "Name des Teilnehmenrs nicht angegeben"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "The price of this product was reduced because of an automatic discount."
|
||||
@@ -37028,12 +37047,12 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html
|
||||
#: pretix/presale/views/customer.py
|
||||
msgid "Attendee profiles"
|
||||
msgstr "Teilnehmer*innen-Profile"
|
||||
msgstr "Teilnehmer-Profile"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html
|
||||
msgid "You don’t have any attendee profiles in your account yet."
|
||||
msgstr ""
|
||||
"In Ihrem Kundenkonto sind noch keine Teilnehmer*innen-Profile gespeichert."
|
||||
"In Ihrem Kundenkonto sind noch keine Teilnehmer-Profile gespeichert."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_registration.html
|
||||
msgid "Registration"
|
||||
@@ -38834,7 +38853,7 @@ msgstr "Kosovo"
|
||||
#~ "This plugin allows you to generate badges or name tags for your attendees."
|
||||
#~ msgstr ""
|
||||
#~ "Diese Erweiterung erlaubt, Namensschilder oder Badges für die "
|
||||
#~ "Teilnehmer*innen zu erstellen."
|
||||
#~ "Teilnehmer zu erstellen."
|
||||
|
||||
#~ msgid "This plugin allows you to receive payments via PayPal"
|
||||
#~ msgstr "Dieses Plugin erlaubt, Zahlungen über PayPal anzunehmen"
|
||||
|
||||
@@ -153,11 +153,11 @@ msgstr "Bezahlte Bestellungen"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Attendees (ordered)"
|
||||
msgstr "Teilnehmende (bestellt)"
|
||||
msgstr "Teilnehmer (bestellt)"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Attendees (paid)"
|
||||
msgstr "Teilnehmende (bezahlt)"
|
||||
msgstr "Teilnehmer (bezahlt)"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Total revenue"
|
||||
|
||||
@@ -853,7 +853,7 @@ msgstr "Details der Bestellposition"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee details"
|
||||
msgstr "Details Teilnehmer*in"
|
||||
msgstr "Details Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/answers.py
|
||||
#: pretix/base/models/items.py pretix/control/navigation.py
|
||||
@@ -900,11 +900,11 @@ msgstr "Veranstaltungs- oder Termininformationen"
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_membership.html
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html
|
||||
msgid "Attendee name"
|
||||
msgstr "Name Teilnehmer*in"
|
||||
msgstr "Name"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee"
|
||||
msgstr "Teilnehmer*in"
|
||||
msgstr "Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/forms/questions.py pretix/base/models/customers.py
|
||||
@@ -912,11 +912,11 @@ msgstr "Teilnehmer*in"
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee email"
|
||||
msgstr "E-Mail Teilnehmer*in"
|
||||
msgstr "E-Mail Teilnehmer"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee or order email"
|
||||
msgstr "E-Mail Teilnehmer*in oder Bestellung"
|
||||
msgstr "E-Mail Teilnehmer oder Bestellung"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/pdf.py pretix/control/templates/pretixcontrol/order/index.html
|
||||
@@ -924,23 +924,23 @@ msgstr "E-Mail Teilnehmer*in oder Bestellung"
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee company"
|
||||
msgstr "Teilnehmer*innen-Firma"
|
||||
msgstr "Teilnehmer-Firma"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address street"
|
||||
msgstr "Teilnehmer*innen-Adresse: Straße"
|
||||
msgstr "Teilnehmer-Adresse: Straße"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address ZIP code"
|
||||
msgstr "Teilnehmer*innen-Adresse: PLZ"
|
||||
msgstr "Teilnehmer-Adresse: PLZ"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address city"
|
||||
msgstr "Teilnehmer*innen-Adresse: Stadt"
|
||||
msgstr "Teilnehmer-Adresse: Stadt"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py
|
||||
msgid "Attendee address country"
|
||||
msgstr "Teilnehmer*innen-Adresse: Land"
|
||||
msgstr "Teilnehmer-Adresse: Land"
|
||||
|
||||
#: pretix/base/datasync/sourcefields.py pretix/base/exporters/orderlist.py
|
||||
#: pretix/base/pdf.py
|
||||
@@ -1174,7 +1174,7 @@ msgid ""
|
||||
"Download a ZIP file including all files that have been uploaded by your "
|
||||
"customers while creating an order."
|
||||
msgstr ""
|
||||
"ZIP-Datei mit allen Dateien, die von Kund*innen im Bestellprozess als "
|
||||
"ZIP-Datei mit allen Dateien, die von Kunden im Bestellprozess als "
|
||||
"Antwort auf eine Frage hochgeladen wurden."
|
||||
|
||||
#: pretix/base/exporters/answers.py pretix/base/exporters/orderlist.py
|
||||
@@ -2052,8 +2052,8 @@ msgid ""
|
||||
"Download a text file with all email addresses collected either from buyers "
|
||||
"or from ticket holders."
|
||||
msgstr ""
|
||||
"Textdatei mit allen E-Mail-Adressen, die von Käufer*innen und "
|
||||
"Ticketinhaber*innen eingesammelt wurden."
|
||||
"Textdatei mit allen E-Mail-Adressen, die von Käufer und "
|
||||
"Ticketinhaber eingesammelt wurden."
|
||||
|
||||
#: pretix/base/exporters/mail.py pretix/plugins/reports/exporters.py
|
||||
msgid "Filter by status"
|
||||
@@ -3860,13 +3860,13 @@ msgstr "Bitte wähle einen gültigen Staat aus."
|
||||
|
||||
#: pretix/base/modelimport_orders.py pretix/control/forms/filter.py
|
||||
msgid "Attendee email address"
|
||||
msgstr "Teilnehmer*innen-E-Mail-Adresse"
|
||||
msgstr "Teilnehmer-E-Mail-Adresse"
|
||||
|
||||
#: pretix/base/modelimport_orders.py pretix/control/forms/filter.py
|
||||
#: pretix/control/templates/pretixcontrol/order/index.html
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "Attendee address"
|
||||
msgstr "Teilnehmer*innen-Adresse"
|
||||
msgstr "Teilnehmer-Adresse"
|
||||
|
||||
#: pretix/base/modelimport_orders.py
|
||||
msgid "Calculate from product"
|
||||
@@ -5369,8 +5369,8 @@ msgid ""
|
||||
"needs to be checked."
|
||||
msgstr ""
|
||||
"Wenn diese Option gesetzt ist, wird die Check-in-Anwendung melden, dass "
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studierende "
|
||||
"nützlich, deren Studierendenausweis noch geprüft werden soll."
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studenten "
|
||||
"nützlich, deren Studentenausweis noch geprüft werden soll."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -6262,8 +6262,8 @@ msgid ""
|
||||
"cases."
|
||||
msgstr ""
|
||||
"Wenn diese Option gesetzt ist, wird die Check-in-Anwendung melden, dass "
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studierende "
|
||||
"nützlich, deren Studierendenausweis noch geprüft werden soll."
|
||||
"dieses Ticket besondere Behandlung braucht. Das ist z.B. für Studenten "
|
||||
"nützlich, deren Studentenausweis noch geprüft werden soll."
|
||||
|
||||
#: pretix/base/models/orders.py
|
||||
msgid ""
|
||||
@@ -7727,7 +7727,7 @@ msgstr "Musterfirma"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Full attendee address"
|
||||
msgstr "Volle Teilnehmer*innen-Adresse"
|
||||
msgstr "Volle Teilnehmer-Adresse"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid ""
|
||||
@@ -7745,23 +7745,23 @@ msgstr ""
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee street"
|
||||
msgstr "Teilnehmer*innen-Straße"
|
||||
msgstr "Teilnehmer-Straße"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee ZIP code"
|
||||
msgstr "Teilnehmer*innen-PLZ"
|
||||
msgstr "Teilnehmer-PLZ"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee city"
|
||||
msgstr "Teilnehmer*innen-Stadt"
|
||||
msgstr "Teilnehmer-Stadt"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee state"
|
||||
msgstr "Teilnehmer*innen-Bundesstaat"
|
||||
msgstr "Teilnehmer-Bundesstaat"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Attendee country"
|
||||
msgstr "Teilnehmer*innen-Land"
|
||||
msgstr "Teilnehmer-Land"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Pseudonymization ID (lead scanning)"
|
||||
@@ -8056,7 +8056,7 @@ msgstr "Herr Mustermann"
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
#, python-brace-format
|
||||
msgid "Attendee name: {part}"
|
||||
msgstr "Teilnehmer*innenname: {part}"
|
||||
msgstr "Teilnehmer: {part}"
|
||||
|
||||
#: pretix/base/pdf.py
|
||||
msgid "Invoice address name for salutation"
|
||||
@@ -8983,7 +8983,7 @@ msgstr "Veranstaltungsort: {location}"
|
||||
#, python-brace-format
|
||||
msgctxt "invoice"
|
||||
msgid "Attendee: {name}"
|
||||
msgstr "Teilnehmer*in: {name}"
|
||||
msgstr "Teilnehmer: {name}"
|
||||
|
||||
#: pretix/base/services/invoices.py pretix/plugins/reports/exporters.py
|
||||
#, python-brace-format
|
||||
@@ -9939,7 +9939,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Hide prices on attendee ticket page"
|
||||
msgstr "Preise auf Teilnehmer*innen-Ticket-Seite verstecken"
|
||||
msgstr "Preise auf Teilnehmer-Ticket-Seite verstecken"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -9949,13 +9949,13 @@ msgid ""
|
||||
"price."
|
||||
msgstr ""
|
||||
"Wenn eine Person mehrere Tickets erwirbt und E-Mails an alle "
|
||||
"Teilnehmer*innen verschickt werden, wird mit dieser Option der Ticketpreis "
|
||||
"auf der Ticket-Seite der einzelnen Teilnehmer*innen versteckt. Nur die "
|
||||
"Teilnehmer verschickt werden, wird mit dieser Option der Ticketpreis "
|
||||
"auf der Ticket-Seite der einzelnen Teilnehmer versteckt. Nur die "
|
||||
"Person, welche die Tickets kauft, sieht den Preis."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for attendee names"
|
||||
msgstr "Namen der Teilnehmer*innen erfragen"
|
||||
msgstr "Namen der Teilnehmer erfragen"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for a name for all personalized tickets."
|
||||
@@ -9964,11 +9964,11 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Require attendee names"
|
||||
msgstr "Namen der Teilnehmer*innen erfordern"
|
||||
msgstr "Namen der Teilnehmer erfordern"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Require customers to fill in the names of all attendees."
|
||||
msgstr "Erfordere die Eingabe aller Teilnehmer*innen-Namen."
|
||||
msgstr "Erfordere die Eingabe aller Teilnehmer-Namen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Ask for email addresses per ticket"
|
||||
@@ -9990,7 +9990,7 @@ msgstr ""
|
||||
"aktivierst, fragt das System zusätzlich nach einzelnen E-Mail-Adressen für "
|
||||
"jedes personalisierte Ticket in der Bestellung. Dies könnte z.B. nützlich "
|
||||
"sein, wenn du auch im Falle von Gruppenbestellungen individuelle Adressen "
|
||||
"von jeder Teilnehmer*in benötigst. pretix sendet die Bestellbestätigung "
|
||||
"von jedem Teilnehmer benötigst. pretix sendet die Bestellbestätigung "
|
||||
"standardmäßig nach wie vor nur an die primäre Adresse, dies kann jedoch in "
|
||||
"den E-Mail-Einstellungen angepasst werden."
|
||||
|
||||
@@ -10521,8 +10521,8 @@ msgid ""
|
||||
"but no indication of missing payment will be visible on the ticket pages of "
|
||||
"attendees who did not buy the ticket themselves."
|
||||
msgstr ""
|
||||
"Die Box mit Zahlungsinstruktionen wird Ticketkäufer*innen weiter angezeigt, "
|
||||
"aber Teilnehmer*innen, die ihr Ticket nicht selbst gekauft haben, werden "
|
||||
"Die Box mit Zahlungsinstruktionen wird Ticketkäufern weiter angezeigt, "
|
||||
"aber Teilnehmer, die ihr Ticket nicht selbst gekauft haben, werden "
|
||||
"keine Anzeichen des fehlenden Zahlungseingangs sehen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
@@ -11033,7 +11033,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Show number of check-ins to customer"
|
||||
msgstr "Zeige Anzahl der Check-ins für Kund*innen an"
|
||||
msgstr "Zeige Anzahl der Check-ins für Kunden an"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -11044,12 +11044,12 @@ msgid ""
|
||||
"failed scans will not be counted, and the user will not see the different "
|
||||
"check-in lists."
|
||||
msgstr ""
|
||||
"Wenn diese Option aktiv ist, können Kund*innen selbst sehen, wie oft sie die "
|
||||
"Wenn diese Option aktiv ist, können Kunden selbst sehen, wie oft sie die "
|
||||
"Veranstaltung betreten haben. Das ist normalerweise nicht nötig, aber kann "
|
||||
"nützlich sein, wenn es Tickets gibt, die eine bestimmte Anzahl an Eintritten "
|
||||
"erlauben, sodass Kund*innen die bisherige Nutzung des Tickets einsehen "
|
||||
"erlauben, sodass Kunden die bisherige Nutzung des Tickets einsehen "
|
||||
"können. Ausgänge oder fehlgeschlagene Scans werden nicht angezeigt und die "
|
||||
"Kund*innen sehen keine Aufschlüsselung verschiedener Check-in-Listen."
|
||||
"Kunden sehen keine Aufschlüsselung verschiedener Check-in-Listen."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow users to download tickets"
|
||||
@@ -11222,7 +11222,7 @@ msgstr ""
|
||||
#: pretix/base/settings.py
|
||||
msgid "Both the attendee and the person who ordered can make changes"
|
||||
msgstr ""
|
||||
"Sowohl Besteller*in als auch Teilnehmer*innen können Änderungen vornehmen"
|
||||
"Sowohl Besteller als auch Teilnehmer können Änderungen vornehmen"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow customers to modify their information"
|
||||
@@ -11330,7 +11330,7 @@ msgstr ""
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Allow individual attendees to change their ticket"
|
||||
msgstr "Erlaubt einzelnen Teilnehmer*innen ihr Ticket zu ändern"
|
||||
msgstr "Erlaubt einzelnen Teilnehmer ihr Ticket zu ändern"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -11342,7 +11342,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Standardmäßig kann nur die Person, welche die Tickets gekauft hat, "
|
||||
"Änderungen an der Bestellung vornehmen. Wenn diese Option aktiv ist, können "
|
||||
"auch einzelne Teilnehmer*innen Änderungen vornehmen. Teilnehmer*innen können "
|
||||
"auch einzelne Teilnehmer Änderungen vornehmen. Teilnehmer können "
|
||||
"jedoch immer nur Änderungen vornehmen, welche die Gesamtkosten der "
|
||||
"Bestellung nicht verändern. Solche Änderungen können nur vom Ticketkäufer "
|
||||
"vorgenommen werden."
|
||||
@@ -11525,7 +11525,7 @@ msgstr "Kontakt-E-Mail"
|
||||
#: pretix/base/settings.py pretix/control/forms/event.py
|
||||
msgid "We'll show this publicly to allow attendees to contact you."
|
||||
msgstr ""
|
||||
"Wir werden diese Adresse veröffentlichen um Teilnehmer*innen zu ermöglichen, "
|
||||
"Wir werden diese Adresse veröffentlichen um Teilnehmern zu ermöglichen, "
|
||||
"dich zu kontaktieren."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
@@ -11650,7 +11650,7 @@ msgid ""
|
||||
"people."
|
||||
msgstr ""
|
||||
"Du kannst dieses Feld benutzen um zusätzliche Informationen mit deinen "
|
||||
"Teilnehmer*innen zu teilen, wie z.B. Anreise-Informationen oder den Link zu "
|
||||
"Teilnehmer zu teilen, wie z.B. Anreise-Informationen oder den Link zu "
|
||||
"einer digitalen Veranstaltung. Wenn das Feld leer ist, fügen wir automatisch "
|
||||
"einen Link zum Ticketshop, die Einlass-Uhrzeit und den Veranstalter hier "
|
||||
"ein. Es sind keine Platzhalter mit sensiblen personenbezogenen Daten "
|
||||
@@ -11885,8 +11885,8 @@ msgstr ""
|
||||
"Diese Datei wird an die erste E-Mail angehängt, die wir beim Eingang einer "
|
||||
"neuen Bestellung verschicken. Sie kann daher mit den Textvorlagen "
|
||||
"\"Getätigte Bestellung\", \"Kostenlose Bestellung\" oder \"Erhaltene "
|
||||
"Bestellung\" von oben auftreten. Sie wird ggf. sowohl an Besteller*innen als "
|
||||
"auch Teilnehmer*innen verschickt. Nicht geeignet zum Versand nicht-"
|
||||
"Bestellung\" von oben auftreten. Sie wird ggf. sowohl an Besteller als "
|
||||
"auch Teilnehmer verschickt. Nicht geeignet zum Versand nicht-"
|
||||
"öffentlicher Informationen, da die Datei unabhängig davon verschickt wird, "
|
||||
"ob die Bestellung bezahlt oder freigegeben ist. Um zu vermeiden, dass diese "
|
||||
"wichtige E-Mail nicht ankommt, können nur PDF-Dateien mit maximal {size} MB "
|
||||
@@ -13129,7 +13129,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"You cannot require specifying attendee names if you do not ask for them."
|
||||
msgstr ""
|
||||
"Du kannst die Angabe von Teilnehmer*innennamen nur erfordern, wenn auch nach "
|
||||
"Du kannst die Angabe von Teilnehmernamen nur erfordern, wenn auch nach "
|
||||
"Namen gefragt wird."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
@@ -14818,11 +14818,11 @@ msgstr "Ticket-Downloads"
|
||||
#: pretix/control/forms/event.py
|
||||
msgid "Your customers will be able to download their tickets in PDF format."
|
||||
msgstr ""
|
||||
"Die Teilnehmer*innen werden ihre Tickets im PDF-Format herunterladen können."
|
||||
"Die Teilnehmer werden ihre Tickets im PDF-Format herunterladen können."
|
||||
|
||||
#: pretix/control/forms/event.py
|
||||
msgid "Require all attendees to fill in their names"
|
||||
msgstr "Erfordere, dass alle Teilnehmer*innen ihre Namen ausfüllen"
|
||||
msgstr "Erfordere, dass alle Teilnehmer ihre Namen ausfüllen"
|
||||
|
||||
#: pretix/control/forms/event.py
|
||||
msgid ""
|
||||
@@ -14858,7 +14858,7 @@ msgid ""
|
||||
"then import your bank statements to process the payments within pretix, or "
|
||||
"mark them as paid manually."
|
||||
msgstr ""
|
||||
"Deine Teilnehmer*innen werden angewiesen, das Geld direkt auf dein Bankkonto "
|
||||
"Deine Teilnehmer werden angewiesen, das Geld direkt auf dein Bankkonto "
|
||||
"zu überweisen. Du kannst dann deinen Kontoauszug in pretix importieren, um "
|
||||
"Zahlungen zuzuweisen, oder die Bestellungen manuell als bezahlt markieren."
|
||||
|
||||
@@ -15181,7 +15181,7 @@ msgstr "Check-in-Status"
|
||||
|
||||
#: pretix/control/forms/filter.py pretix/plugins/checkinlists/exporters.py
|
||||
msgid "All attendees"
|
||||
msgstr "Alle Teilnehmer*innen"
|
||||
msgstr "Alle Teilnehmer"
|
||||
|
||||
#: pretix/control/forms/filter.py
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
@@ -15784,7 +15784,7 @@ msgid ""
|
||||
"people over 65. This ticket includes access to all parts of the event, "
|
||||
"except the VIP area."
|
||||
msgstr ""
|
||||
"z.B. Dieses reduzierte Ticket ist erhältlich für Vollzeitstudent*innen, "
|
||||
"z.B. Dieses reduzierte Ticket ist erhältlich für Vollzeitstudenten, "
|
||||
"Arbeitslose und Menschen über 65. Das Ticket enthält Zugang zu allen Teilen "
|
||||
"der Veranstaltung außer des VIP-Bereiches."
|
||||
|
||||
@@ -17706,7 +17706,7 @@ msgstr "Eine individuelle E-Mail wurde verschickt."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "A custom email has been sent to an attendee."
|
||||
msgstr "Eine individuelle E-Mail wurde an eine Teilnehmer*in verschickt."
|
||||
msgstr "Eine individuelle E-Mail wurde an eine Teilnehmer verschickt."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid ""
|
||||
@@ -19509,7 +19509,7 @@ msgstr "Terminal-ID"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html
|
||||
msgid "Card holder"
|
||||
msgstr "Karteninhaber*in"
|
||||
msgstr "Karteninhaber"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html
|
||||
msgid "Card expiration"
|
||||
@@ -19713,7 +19713,7 @@ msgstr "CSV"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
msgid "No attendee record was found."
|
||||
msgstr "Keine passenden Teilnehmer*innen gefunden."
|
||||
msgstr "Keine passenden Teilnehmer gefunden."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/checkin/index.html
|
||||
#: pretix/control/templates/pretixcontrol/datasync/failed_jobs.html
|
||||
@@ -21493,7 +21493,7 @@ msgid ""
|
||||
"provide ways for your attendees to contact you:"
|
||||
msgstr ""
|
||||
"Wenn irgendetwas schiefgeht oder unklar ist, empfehlen wir, dass du deinen "
|
||||
"Teilnehmer*innen die Möglichkeit gibst, dich zu benachrichtigen:"
|
||||
"Teilnehmer die Möglichkeit gibst, dich zu benachrichtigen:"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/event/settings.html
|
||||
msgid "Basics"
|
||||
@@ -22470,7 +22470,7 @@ msgid ""
|
||||
"Only purchases of such products will be considered \"attendees\" for most "
|
||||
"statistical purposes or within some plugins."
|
||||
msgstr ""
|
||||
"Nur Käufe eines solchen Produkts werden als \"Teilnehmer*innen\" gewertet, "
|
||||
"Nur Käufe eines solchen Produkts werden als \"Teilnehmer\" gewertet, "
|
||||
"z.B. in Statistiken oder in Funktionen von Erweiterungen."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/item/create.html
|
||||
@@ -22549,7 +22549,7 @@ msgid ""
|
||||
"The system will not ask for a name or other attendee details. This only "
|
||||
"affects system-provided fields, you can still add your own questions."
|
||||
msgstr ""
|
||||
"Das System wird nicht nach einem Namen oder anderen Teilnehmer*innen-Daten "
|
||||
"Das System wird nicht nach einem Namen oder anderen Teilnehmer-Daten "
|
||||
"fragen. Dies betrifft nur vom System bereitgestellte Felder, eigene Fragen "
|
||||
"können trotzdem hinzugefügt werden."
|
||||
|
||||
@@ -23220,9 +23220,9 @@ msgid ""
|
||||
"ticket. If you provide food, one example might be to ask your users about "
|
||||
"dietary requirements."
|
||||
msgstr ""
|
||||
"Fragen erlauben deinen Besucher*innen, zusätzliche Informationen zu ihrem "
|
||||
"Fragen erlauben deinen Besucher, zusätzliche Informationen zu ihrem "
|
||||
"Ticket auszufüllen. Wenn deine Veranstaltung Verpflegung beinhaltet, "
|
||||
"könntest du z.B. nach Allergien deiner Teilnehmer*innen fragen."
|
||||
"könntest du z.B. nach Allergien deiner Teilnehmer fragen."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/items/questions.html
|
||||
msgid "Create a new per-ticket question"
|
||||
@@ -23428,7 +23428,7 @@ msgstr ""
|
||||
"Um deine Produkte verfügbar zu machen, musst du Kontingente anlegen. "
|
||||
"Kontingente definieren, wie oft ein Produkt verkauft werden darf. Auf diese "
|
||||
"Art kannst du konfigurieren, ob deine Veranstaltung unbegrenzt viele "
|
||||
"Teilnehmer*innen aufnehmen kann oder ob die Anzahl begrenzt ist. Du kannst "
|
||||
"Teilnehmer aufnehmen kann oder ob die Anzahl begrenzt ist. Du kannst "
|
||||
"ein Produkt zu mehreren Kontingenten hinzufügen, um komplexere Anforderungen "
|
||||
"abzubilden, z.B. wenn du die Gesamtzahl der Tickets begrenzen willst, aber "
|
||||
"einen speziellen Ticket-Typ noch stärker begrenzen willst."
|
||||
@@ -24851,7 +24851,7 @@ msgstr "Sonstige Datenexporte"
|
||||
#: pretix/control/templates/pretixcontrol/orders/export.html
|
||||
#: pretix/control/templates/pretixcontrol/organizers/export.html
|
||||
msgid "Recommended for new users"
|
||||
msgstr "Empfohlen für neue Benutzer*innen"
|
||||
msgstr "Empfohlen für neue Benutzer"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/orders/export.html
|
||||
#: pretix/control/templates/pretixcontrol/organizers/export.html
|
||||
@@ -25792,7 +25792,7 @@ msgstr "Domains"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html
|
||||
msgid "This dialog is intended for advanced users."
|
||||
msgstr "Dieser Dialog ist für fortgeschrittene Anwender*innen gedacht."
|
||||
msgstr "Dieser Dialog ist für fortgeschrittene Anwender gedacht."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html
|
||||
msgid ""
|
||||
@@ -28188,7 +28188,7 @@ msgid ""
|
||||
"customers. This way, customers will not be able to discover the waiting list."
|
||||
msgstr ""
|
||||
"Entsprechend deiner Veranstaltungseinstellungen werden ausverkaufte Produkte "
|
||||
"nicht angezeigt. Dies führt dazu, dass Kund*innen die Warteliste nicht "
|
||||
"nicht angezeigt. Dies führt dazu, dass Kunden die Warteliste nicht "
|
||||
"finden können."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/waitinglist/index.html
|
||||
@@ -28507,11 +28507,11 @@ msgstr "Das ausgewählte List wurde gelöscht."
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
msgid "Attendees (ordered)"
|
||||
msgstr "Teilnehmende (bestellt)"
|
||||
msgstr "Teilnehmer (bestellt)"
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
msgid "Attendees (paid)"
|
||||
msgstr "Teilnehmende (bezahlt)"
|
||||
msgstr "Teilnehmer (bezahlt)"
|
||||
|
||||
#: pretix/control/views/dashboards.py
|
||||
#, python-brace-format
|
||||
@@ -30584,7 +30584,7 @@ msgstr "PDF-Sammlungen"
|
||||
|
||||
#: pretix/plugins/badges/exporters.py
|
||||
msgid "Download all attendee badges as one large PDF for printing."
|
||||
msgstr "Alle Teilnehmer*innen-Badges in einer großen PDF-Datei für den Druck."
|
||||
msgstr "Alle Teilnehmer-Badges in einer großen PDF-Datei für den Druck."
|
||||
|
||||
#: pretix/plugins/badges/exporters.py
|
||||
#: pretix/plugins/ticketoutputpdf/exporters.py
|
||||
@@ -30834,7 +30834,7 @@ msgstr "Anderes Bankkonto"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
msgid "Name of account holder"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
msgid ""
|
||||
@@ -30970,7 +30970,7 @@ msgstr "Bitte überweise den vollen Betrag auf das folgende Bankkonto:"
|
||||
#: pretix/plugins/banktransfer/views.py pretix/plugins/stripe/payment.py
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_confirm.html
|
||||
msgid "Account holder"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/banktransfer/payment.py
|
||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/checkout_payment_form.html
|
||||
@@ -31548,7 +31548,7 @@ msgid ""
|
||||
"Download a spreadsheet with all attendees that are included in a check-in "
|
||||
"list."
|
||||
msgstr ""
|
||||
"Tabelle (Excel oder CSV) mit allen Teilnehmer*innen, die in einer Check-in-"
|
||||
"Tabelle (Excel oder CSV) mit allen Teilnehmer, die in einer Check-in-"
|
||||
"Liste zutrittsberechtigt sind."
|
||||
|
||||
#: pretix/plugins/checkinlists/exporters.py
|
||||
@@ -32660,7 +32660,7 @@ msgstr "Geplante E-Mails"
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "Mass email was sent to customers or attendees."
|
||||
msgstr "Rundmail wurde an Kunden oder Teilnehmer*innen verschickt."
|
||||
msgstr "Rundmail wurde an Kunden oder Teilnehmer verschickt."
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "Mass email was sent to waiting list entries."
|
||||
@@ -32692,7 +32692,7 @@ msgstr "Eine automatisierte E-Mail wurde an den Besteller verschickt"
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "A scheduled email was sent to a ticket holder"
|
||||
msgstr "Eine automatisierte E-Mail wurde an eine Teilnehmer*in verschickt."
|
||||
msgstr "Eine automatisierte E-Mail wurde an einen Teilnehmer verschickt."
|
||||
|
||||
#: pretix/plugins/sendmail/signals.py
|
||||
msgid "An email rule was deleted"
|
||||
@@ -32725,7 +32725,7 @@ msgstr "Alle nicht eingecheckten Kunden"
|
||||
|
||||
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history_fragment_orders.html
|
||||
msgid "Attendee contact addresses"
|
||||
msgstr "Teilnehmer*innen-E-Mail-Adressen"
|
||||
msgstr "Teilnehmer-E-Mail-Adressen"
|
||||
|
||||
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history_fragment_orders.html
|
||||
msgid "All contact addresses"
|
||||
@@ -32879,14 +32879,14 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
msgid "Orders or attendees"
|
||||
msgstr "Bestellungen oder Teilnehmer*innen"
|
||||
msgstr "Bestellungen oder Teilnehmer"
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
msgid ""
|
||||
"Send an email to every customer, or to every person a ticket has been "
|
||||
"purchased for, or a combination of both."
|
||||
msgstr ""
|
||||
"Sende eine E-Mail an alle Ticketkäufer*innen, alle Ticketinhaber*innen oder "
|
||||
"Sende eine E-Mail an alle Ticketkäufer, alle Ticketinhaber oder "
|
||||
"eine Kombination aus beiden Gruppen."
|
||||
|
||||
#: pretix/plugins/sendmail/views.py
|
||||
@@ -33447,23 +33447,23 @@ msgstr "SEPA-Lastschrift"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Name"
|
||||
msgstr "Kontoinhaber*in"
|
||||
msgstr "Kontoinhaber"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Street"
|
||||
msgstr "Straße (Kontoinhaber*in)"
|
||||
msgstr "Straße (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Postal Code"
|
||||
msgstr "PLZ (Kontoinhaber*in)"
|
||||
msgstr "PLZ (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder City"
|
||||
msgstr "Stadt (Kontoinhaber*in)"
|
||||
msgstr "Stadt (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Account Holder Country"
|
||||
msgstr "Land (Kontoinhaber*in)"
|
||||
msgstr "Land (Kontoinhaber)"
|
||||
|
||||
#: pretix/plugins/stripe/payment.py
|
||||
msgid "Affirm via Stripe"
|
||||
@@ -33901,7 +33901,7 @@ msgstr "MOTO"
|
||||
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html
|
||||
msgid "Payer name"
|
||||
msgstr "Name des Zahlenden"
|
||||
msgstr "Name des Zahlers"
|
||||
|
||||
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html
|
||||
msgid "Payment receipt"
|
||||
@@ -35206,7 +35206,7 @@ msgstr[1] "Das Ticket wurde %(count)s-mal eingelöst."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "No attendee name provided"
|
||||
msgstr "Name der teilnehmenden Person nicht angegeben"
|
||||
msgstr "Name des Teilnehmenrs nicht angegeben"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html
|
||||
msgid "The price of this product was reduced because of an automatic discount."
|
||||
@@ -36971,12 +36971,12 @@ msgstr "Möchtest das folgende Profil wirklich aus deinem Kundenkonto löschen?"
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html
|
||||
#: pretix/presale/views/customer.py
|
||||
msgid "Attendee profiles"
|
||||
msgstr "Teilnehmer*innen-Adresse"
|
||||
msgstr "Teilnehmer-Adresse"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html
|
||||
msgid "You don’t have any attendee profiles in your account yet."
|
||||
msgstr ""
|
||||
"In deinem Kundenkonto sind noch keine Teilnehmer*innen-Profile gespeichert."
|
||||
"In deinem Kundenkonto sind noch keine Teilnehmer-Profile gespeichert."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/organizers/customer_registration.html
|
||||
msgid "Registration"
|
||||
@@ -38722,7 +38722,7 @@ msgstr "Kosovo"
|
||||
#~ "This plugin allows you to generate badges or name tags for your attendees."
|
||||
#~ msgstr ""
|
||||
#~ "Diese Erweiterung erlaubt, Namensschilder oder Badges für die "
|
||||
#~ "Teilnehmer*innen zu erstellen."
|
||||
#~ "Teilnehmer zu erstellen."
|
||||
|
||||
#~ msgid "This plugin allows you to receive payments via PayPal"
|
||||
#~ msgstr "Dieses Plugin erlaubt, Zahlungen über PayPal anzunehmen"
|
||||
@@ -39296,7 +39296,7 @@ msgstr "Kosovo"
|
||||
#~ msgstr "Biete Ticket-Download bereits vor Bezahlung einer Bestellung an"
|
||||
|
||||
#~ msgid "Attendee names"
|
||||
#~ msgstr "Teilnehmer*innennamen"
|
||||
#~ msgstr "Teilnehmername"
|
||||
|
||||
#~ msgid "Enable output"
|
||||
#~ msgstr "Aktivieren"
|
||||
@@ -39573,7 +39573,7 @@ msgstr "Kosovo"
|
||||
#~ "If checked, users can cancel orders by themselves as long as they are not "
|
||||
#~ "yet paid."
|
||||
#~ msgstr ""
|
||||
#~ "Wenn diese Option aktiviert ist, können Teilnehmer*innen selbstständig "
|
||||
#~ "Wenn diese Option aktiviert ist, können Teilnehmer selbstständig "
|
||||
#~ "Bestellungen stornieren solange sie nicht bezahlt wurden."
|
||||
|
||||
#~ msgid "Sales overview"
|
||||
|
||||
@@ -153,11 +153,11 @@ msgstr "Bezahlte Bestellungen"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Attendees (ordered)"
|
||||
msgstr "Teilnehmende (bestellt)"
|
||||
msgstr "Teilnehmer (bestellt)"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Attendees (paid)"
|
||||
msgstr "Teilnehmende (bezahlt)"
|
||||
msgstr "Teilnehmer (bezahlt)"
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Total revenue"
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-03 23:00+0000\n"
|
||||
"Last-Translator: Oksigenia <github@oksigenia.cc>\n"
|
||||
"PO-Revision-Date: 2026-09-28 11:01+0000\n"
|
||||
"Last-Translator: Tim <plicnetwork@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2026.10\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "English"
|
||||
@@ -1793,12 +1793,16 @@ msgid "Transmission type"
|
||||
msgstr "Tipo de transmisión"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission status"
|
||||
msgstr "Estado de la transmisión"
|
||||
msgstr "Tipo de transmisión"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission date"
|
||||
msgstr "Fecha de emisión"
|
||||
msgstr "Tipo de transmisión"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
msgid "Cancellation"
|
||||
@@ -3285,7 +3289,7 @@ msgstr ""
|
||||
#: pretix/base/forms/validators.py pretix/control/views/event.py
|
||||
#, python-format
|
||||
msgid "Invalid placeholder: {%(value)s}"
|
||||
msgstr "Marcador de posición no válido: {%(value)s}"
|
||||
msgstr "Marcador de posición no válido: {%(value)ss}"
|
||||
|
||||
#: pretix/base/forms/widgets.py
|
||||
#, python-format
|
||||
@@ -4454,8 +4458,10 @@ msgid "Initialization date"
|
||||
msgstr "Fecha de inicialización"
|
||||
|
||||
#: pretix/base/models/devices.py
|
||||
#, fuzzy
|
||||
#| msgid "Save to profile"
|
||||
msgid "Security profile"
|
||||
msgstr "Perfil de seguridad"
|
||||
msgstr "Guardar en perfil"
|
||||
|
||||
#: pretix/base/models/discount.py
|
||||
msgctxt "subevent"
|
||||
@@ -5898,8 +5904,10 @@ msgid "Maximum value"
|
||||
msgstr "Valor máximo"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "Maximum length"
|
||||
msgid "Minimum length"
|
||||
msgstr "Longitud mínima"
|
||||
msgstr "Longitud máxima"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid "Maximum length"
|
||||
@@ -5970,8 +5978,10 @@ msgid "The maximum value must not be lower than the minimum value."
|
||||
msgstr "El valor máximo no debe ser inferior al mínimo."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "The maximum value must not be lower than the minimum value."
|
||||
msgid "The maximum length must not be shorter than the minimum length."
|
||||
msgstr "La longitud máxima no debe ser inferior a la longitud mínima."
|
||||
msgstr "El valor máximo no debe ser inferior al mínimo."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -10571,8 +10581,10 @@ msgstr ""
|
||||
"después de la `Última fecha de pagos' configurada anteriormente."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
#, fuzzy
|
||||
#| msgid "Generate invoices for Sales channels"
|
||||
msgid "Allow postponed payment choice for sales channels"
|
||||
msgstr "Permitir la opción de pago aplazado en los canales de venta"
|
||||
msgstr "Generar facturas para canales de ventas"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -10580,9 +10592,6 @@ msgid ""
|
||||
"their order without selecting a payment method. This is useful whenever "
|
||||
"orders are not created by the same person who is making the payment."
|
||||
msgstr ""
|
||||
"Si en un canal de venta se permite el pago aplazado, los clientes pueden "
|
||||
"completar su pedido sin seleccionar una forma de pago. Esto resulta útil "
|
||||
"cuando los pedidos no los realiza la misma persona que efectúa el pago."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Show start date"
|
||||
@@ -16851,7 +16860,7 @@ msgstr "tercero"
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
msgid "fourth"
|
||||
msgstr "cuarto"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
@@ -17984,20 +17993,28 @@ msgid "Queued emails have been aborted."
|
||||
msgstr "Los correos electrónicos en cola se han cancelado."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The property has been created."
|
||||
msgid "An organizer meta property has been created."
|
||||
msgstr "Se ha creado una metapropiedad de organizador."
|
||||
msgstr "La propiedad ha sido creada."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The selected property has been deleted."
|
||||
msgid "An organizer meta property has been deleted."
|
||||
msgstr "Se ha eliminado una metapropiedad del organizador."
|
||||
msgstr "La propiedad seleccionada ha sido eliminada."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The organizer has been changed."
|
||||
msgid "An organizer meta property has been changed."
|
||||
msgstr "Se ha modificado una metapropiedad del organizador."
|
||||
msgstr "El pedido se ha cambiado."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The product has been reordered."
|
||||
msgid "An organizer meta property has been reordered."
|
||||
msgstr "Se ha cambiado el orden de una metapropiedad del organizador."
|
||||
msgstr "El producto se ha pedido de nuevo."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Gift card acceptance for another organizer has been added."
|
||||
@@ -18211,8 +18228,6 @@ msgstr "Se ha generado un código de emergencia de doble factor."
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Drift and throttle values for two-factor devices have been reset."
|
||||
msgstr ""
|
||||
"Se han restablecido los valores de deriva y aceleración para los "
|
||||
"dispositivos de dos factores."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, python-brace-format
|
||||
@@ -19165,8 +19180,10 @@ msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
#, fuzzy
|
||||
#| msgid "Authorized apps"
|
||||
msgid "Authorize"
|
||||
msgstr "Autorizar"
|
||||
msgstr "Aplicaciones autorizadas"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
msgid "Error:"
|
||||
@@ -22054,10 +22071,14 @@ msgstr ""
|
||||
"hacer referencia a este evento."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_basics.html
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "We strongly recommend against using short forms of more then 16 "
|
||||
#| "characters."
|
||||
msgid ""
|
||||
"We strongly recommend against using short forms of more than 16 characters."
|
||||
msgstr ""
|
||||
"Recomendamos encarecidamente no utilizar abreviaturas de más de 16 "
|
||||
"Recomendamos encarecidamente no utilizar formularios cortos de más de 16 "
|
||||
"caracteres."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_basics.html
|
||||
@@ -27936,23 +27957,27 @@ msgstr "Autenticación backend"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Reset drift and throttle"
|
||||
msgstr "Restablecer la desviación y el control"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, fuzzy
|
||||
#| msgid "Disable two-factor authentication"
|
||||
msgid "Available two-factor authentication methods"
|
||||
msgstr "Métodos de autenticación de dos factores disponibles"
|
||||
msgstr "Desactivar la autenticación de dos factores"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Expired since %(date)s"
|
||||
msgid "1 failed attempt since %(date)s"
|
||||
msgid_plural "%(cnt)s failed attempts since %(date)s"
|
||||
msgstr[0] "1 intento fallido desde %(date)s"
|
||||
msgstr[1] "%(cnt)s intentos fallidos desde el %(date)s"
|
||||
msgstr[0] "Vencido desde el %(date)s"
|
||||
msgstr[1] "Vencido desde el %(date)s"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Valid until %(date)s"
|
||||
msgid "Currently locked until %(date)s"
|
||||
msgstr "Actualmente bloqueado hasta el %(date)s"
|
||||
msgstr "Válido hasta el %(date)s"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Team memberships"
|
||||
@@ -28494,18 +28519,20 @@ msgid "Invalid code, please try again."
|
||||
msgstr "Código inválido, por favor inténtelo de nuevo."
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} minute."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} minutes."
|
||||
msgstr[0] "Código no válido. Inténtalo de nuevo tras esperar {value} minutos."
|
||||
msgstr[1] "ódigo no válido. Inténtalo de nuevo tras esperar {value} minutos."
|
||||
msgstr[0] "Código inválido, por favor inténtelo de nuevo."
|
||||
msgstr[1] "Código inválido, por favor inténtelo de nuevo."
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} second."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} seconds."
|
||||
msgstr[0] "Código no válido. Inténtalo de nuevo tras esperar {value} segundo."
|
||||
msgstr[1] "Código no válido. Inténtalo de nuevo tras esperar {value} segundos."
|
||||
msgstr[0] "Código inválido, por favor inténtelo de nuevo."
|
||||
msgstr[1] "Código inválido, por favor inténtelo de nuevo."
|
||||
|
||||
#: pretix/control/views/checkin.py
|
||||
msgid "The selected check-ins have been reverted."
|
||||
@@ -29378,8 +29405,10 @@ msgid "You entered an order in an event with a different currency."
|
||||
msgstr "Ha introducido un pedido en un evento con una moneda diferente."
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
#, fuzzy
|
||||
#| msgid "You entered an order in an event with a different currency."
|
||||
msgid "You entered an order in an event that you do not have access to."
|
||||
msgstr "Ha introducido un pedido en un evento al que no tienes acceso."
|
||||
msgstr "Ha introducido un pedido en un evento con una moneda diferente."
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
msgid ""
|
||||
@@ -30267,9 +30296,10 @@ msgstr ""
|
||||
"código de emergencia anterior para este usuario permanecerá activo."
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
#, fuzzy
|
||||
#| msgid "The password has been reset."
|
||||
msgid "The drift values for TOTP devices have been reset."
|
||||
msgstr ""
|
||||
"Se han restablecido los valores de desviación para los dispositivos TOTP."
|
||||
msgstr "La contraseña ha sido reiniciada."
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
msgid "The new user has been created."
|
||||
@@ -30284,12 +30314,14 @@ msgid "Bypass quota"
|
||||
msgstr "Cuota de bypass"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
#, fuzzy
|
||||
#| msgid "Widget"
|
||||
msgid "Budget"
|
||||
msgstr "Presupuesto"
|
||||
msgstr "Widget"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "Budget used"
|
||||
msgstr "Presupuesto utilizado"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "The requested voucher does not exist."
|
||||
@@ -34990,29 +35022,29 @@ msgid ""
|
||||
"Not sure yet? You can complete your order first and then select a payment "
|
||||
"method later."
|
||||
msgstr ""
|
||||
"¿Aún no estás seguro? Puedes completar primero tu pedido y seleccionar la "
|
||||
"forma de pago más tarde."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
msgid ""
|
||||
"To do so, please first remove the payment methods you already selected above."
|
||||
msgstr ""
|
||||
"Para ello, elimina primero los métodos de pago que ya hayas seleccionado "
|
||||
"anteriormente."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Your event needs to be over to use this feature."
|
||||
msgid "Your payment needs to be completed within %(minutes)s minutes."
|
||||
msgstr "Su pago debe completarse en un plazo de %(minutes)s minutos."
|
||||
msgstr "Su evento debe haber terminado para utilizar esta función."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Your event needs to be over to use this feature."
|
||||
msgid "Your payment needs to be completed by %(deadline)s."
|
||||
msgstr "Su pago debe completarse antes de %(deadline)s."
|
||||
msgstr "Su evento debe haber terminado para utilizar esta función."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, fuzzy
|
||||
#| msgid "Proceed with reset"
|
||||
msgid "Proceed without selection"
|
||||
msgstr "Continuar sin seleccionar nada"
|
||||
msgstr "Continuar con el restablecimiento"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html
|
||||
msgid "Before we continue, we need you to answer some questions."
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-03 23:00+0000\n"
|
||||
"Last-Translator: Oksigenia <github@oksigenia.cc>\n"
|
||||
"PO-Revision-Date: 2026-06-29 17:00+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||
"js/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2026.10\n"
|
||||
"X-Generator: Weblate 2026.6.1\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js
|
||||
msgid "Marked as paid"
|
||||
@@ -780,7 +780,7 @@ msgstr "El organizador retiene %(currency)s %(amount)s"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js
|
||||
msgid "You get %(currency)s %(amount)s back"
|
||||
msgstr "Se le devolverá %(currency)s %(amount)s"
|
||||
msgstr "Se le devolverá %(moneda)s %(cantidad)s"
|
||||
|
||||
#: pretix/static/pretixpresale/js/ui/main.js
|
||||
msgid "Please enter the amount the organizer can keep."
|
||||
|
||||
@@ -4,10 +4,10 @@ msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-01 09:28+0000\n"
|
||||
"PO-Revision-Date: 2026-09-30 07:25+0000\n"
|
||||
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
|
||||
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"fr/>\n"
|
||||
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
|
||||
">\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1793,12 +1793,16 @@ msgid "Transmission type"
|
||||
msgstr "Type de transmission"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission status"
|
||||
msgstr "État de la transmission"
|
||||
msgstr "Type de transmission"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission date"
|
||||
msgstr "Date de transmission"
|
||||
msgstr "Type de transmission"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
msgid "Cancellation"
|
||||
@@ -4464,8 +4468,10 @@ msgid "Initialization date"
|
||||
msgstr "Date d'initialisation"
|
||||
|
||||
#: pretix/base/models/devices.py
|
||||
#, fuzzy
|
||||
#| msgid "Save to profile"
|
||||
msgid "Security profile"
|
||||
msgstr "Profil de sécurité"
|
||||
msgstr "Enregistrer dans le profil"
|
||||
|
||||
#: pretix/base/models/discount.py
|
||||
msgctxt "subevent"
|
||||
@@ -5919,8 +5925,10 @@ msgid "Maximum value"
|
||||
msgstr "Valeur maximale"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "Maximum length"
|
||||
msgid "Minimum length"
|
||||
msgstr "Longueur minimale"
|
||||
msgstr "Longueur maximale"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid "Maximum length"
|
||||
@@ -5992,9 +6000,10 @@ msgid "The maximum value must not be lower than the minimum value."
|
||||
msgstr "La valeur maximale ne doit pas être inférieure à la valeur minimale."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "The maximum value must not be lower than the minimum value."
|
||||
msgid "The maximum length must not be shorter than the minimum length."
|
||||
msgstr ""
|
||||
"La longueur maximale ne doit pas être inférieure à la longueur minimale."
|
||||
msgstr "La valeur maximale ne doit pas être inférieure à la valeur minimale."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -10638,8 +10647,10 @@ msgstr ""
|
||||
"accepté après la 'dernière date de paiement' configurée ci-dessus."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
#, fuzzy
|
||||
#| msgid "Generate invoices for Sales channels"
|
||||
msgid "Allow postponed payment choice for sales channels"
|
||||
msgstr "Autoriser l'option de paiement différé pour les canaux de vente"
|
||||
msgstr "Générer des factures pour les canaux de vente"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -10647,10 +10658,6 @@ msgid ""
|
||||
"their order without selecting a payment method. This is useful whenever "
|
||||
"orders are not created by the same person who is making the payment."
|
||||
msgstr ""
|
||||
"Si le paiement différé est autorisé sur un canal de vente, les clients "
|
||||
"peuvent finaliser leur commande sans sélectionner de mode de paiement. Cette "
|
||||
"fonctionnalité est utile lorsque la commande n'est pas passée par la même "
|
||||
"personne que celle qui effectue le paiement."
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Show start date"
|
||||
@@ -17010,7 +17017,7 @@ msgstr "troisième"
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
msgid "fourth"
|
||||
msgstr "quatrième"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
@@ -18130,20 +18137,28 @@ msgid "Queued emails have been aborted."
|
||||
msgstr "Les e-mails en attente ont été annulés."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The property has been created."
|
||||
msgid "An organizer meta property has been created."
|
||||
msgstr "Une méta-propriété d'organisateur a été créée."
|
||||
msgstr "La propriété a été créée."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The selected property has been deleted."
|
||||
msgid "An organizer meta property has been deleted."
|
||||
msgstr "Une méta-propriété d'organisateur a été supprimée."
|
||||
msgstr "La propriété sélectionnée a été supprimée."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The organizer has been changed."
|
||||
msgid "An organizer meta property has been changed."
|
||||
msgstr "Une méta-propriété d'organisateur a été modifiée."
|
||||
msgstr "L’organisateur a été modifié."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The product has been reordered."
|
||||
msgid "An organizer meta property has been reordered."
|
||||
msgstr "Une méta-propriété d'organisateur a été réorganisée."
|
||||
msgstr "Le produit a été commandé à nouveau."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Gift card acceptance for another organizer has been added."
|
||||
@@ -18359,8 +18374,6 @@ msgstr "Un code d'urgence à deux facteurs a été généré."
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Drift and throttle values for two-factor devices have been reset."
|
||||
msgstr ""
|
||||
"Les valeurs de déviation et de puissance pour les appareils à deux facteurs "
|
||||
"ont été réinitialisées."
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, python-brace-format
|
||||
@@ -19309,8 +19322,10 @@ msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
#, fuzzy
|
||||
#| msgid "Authorized apps"
|
||||
msgid "Authorize"
|
||||
msgstr "Autoriser"
|
||||
msgstr "App. autorisées"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
msgid "Error:"
|
||||
@@ -22216,11 +22231,15 @@ msgstr ""
|
||||
"comme abréviations pour faire référence à cet événement."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_basics.html
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "We strongly recommend against using short forms of more then 16 "
|
||||
#| "characters."
|
||||
msgid ""
|
||||
"We strongly recommend against using short forms of more than 16 characters."
|
||||
msgstr ""
|
||||
"Nous déconseillons vivement d'utiliser des abréviations de plus de 16 "
|
||||
"caractères."
|
||||
"Nous vous déconseillons fortement d'utiliser des formulaires courts de plus "
|
||||
"de 16 caractères."
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_basics.html
|
||||
msgid "Display settings"
|
||||
@@ -28152,23 +28171,27 @@ msgstr "Backend d’authentification"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Reset drift and throttle"
|
||||
msgstr "Réinitialisation de la déviation et de la puissance"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, fuzzy
|
||||
#| msgid "Disable two-factor authentication"
|
||||
msgid "Available two-factor authentication methods"
|
||||
msgstr "Méthodes d'authentification à deux facteurs disponibles"
|
||||
msgstr "Désactiver l'authentification à deux facteurs"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Expired since %(date)s"
|
||||
msgid "1 failed attempt since %(date)s"
|
||||
msgid_plural "%(cnt)s failed attempts since %(date)s"
|
||||
msgstr[0] "1 tentative infructueuse depuis %(date)s"
|
||||
msgstr[1] "%(cnt)s tentatives infructueuses depuis le %(date)s"
|
||||
msgstr[0] "Expiré depuis le %(date)s"
|
||||
msgstr[1] "Expiré depuis le %(date)s"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Valid until %(date)s"
|
||||
msgid "Currently locked until %(date)s"
|
||||
msgstr "Actuellement verrouillé jusqu'au %(date)s"
|
||||
msgstr "Valable jusqu'au %(date)s"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Team memberships"
|
||||
@@ -28714,19 +28737,20 @@ msgid "Invalid code, please try again."
|
||||
msgstr "Code invalide, veuillez réessayer."
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} minute."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} minutes."
|
||||
msgstr[0] "Code invalide. Veuillez réessayer après avoir patienté {value} minute."
|
||||
msgstr[1] "Code invalide. Veuillez réessayer après avoir patienté {value} minutes."
|
||||
msgstr[0] "Code invalide, veuillez réessayer."
|
||||
msgstr[1] "Code invalide, veuillez réessayer."
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} second."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} seconds."
|
||||
msgstr[0] "Code invalide. Veuillez réessayer après avoir patienté {value} seconde."
|
||||
msgstr[1] ""
|
||||
"Code invalide. Veuillez réessayer après avoir patienté {value} secondes."
|
||||
msgstr[0] "Code invalide, veuillez réessayer."
|
||||
msgstr[1] "Code invalide, veuillez réessayer."
|
||||
|
||||
#: pretix/control/views/checkin.py
|
||||
msgid "The selected check-ins have been reverted."
|
||||
@@ -29608,9 +29632,11 @@ msgstr ""
|
||||
"Vous avez passé une commande dans un événement dont la devise est différente."
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
#, fuzzy
|
||||
#| msgid "You entered an order in an event with a different currency."
|
||||
msgid "You entered an order in an event that you do not have access to."
|
||||
msgstr ""
|
||||
"Vous avez saisi une commande dans un événement auquel vous n'avez pas accès."
|
||||
"Vous avez passé une commande dans un événement dont la devise est différente."
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
msgid ""
|
||||
@@ -30509,8 +30535,10 @@ msgstr ""
|
||||
"d'urgence précédents de cet utilisateur sont toujours actifs."
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
#, fuzzy
|
||||
#| msgid "The password has been reset."
|
||||
msgid "The drift values for TOTP devices have been reset."
|
||||
msgstr "Les valeurs de dérive des appareils TOTP ont été réinitialisées."
|
||||
msgstr "Le mot de passe a été réinitialisé."
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
msgid "The new user has been created."
|
||||
@@ -30525,12 +30553,14 @@ msgid "Bypass quota"
|
||||
msgstr "Outrepasser le quota"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
#, fuzzy
|
||||
#| msgid "Widget"
|
||||
msgid "Budget"
|
||||
msgstr "Budget"
|
||||
msgstr "Widget"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "Budget used"
|
||||
msgstr "Budget utilisé"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "The requested voucher does not exist."
|
||||
@@ -35279,29 +35309,29 @@ msgid ""
|
||||
"Not sure yet? You can complete your order first and then select a payment "
|
||||
"method later."
|
||||
msgstr ""
|
||||
"Vous hésitez encore ? Vous pouvez d'abord finaliser votre commande, puis "
|
||||
"choisir un mode de paiement ultérieurement."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
msgid ""
|
||||
"To do so, please first remove the payment methods you already selected above."
|
||||
msgstr ""
|
||||
"Pour ce faire, veuillez d'abord supprimer les moyens de paiement que vous "
|
||||
"avez déjà sélectionnés ci-dessus."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "The payment has to be completed before %(date)s."
|
||||
msgid "Your payment needs to be completed within %(minutes)s minutes."
|
||||
msgstr "otre paiement doit être effectué dans les %(minutes)s minutes."
|
||||
msgstr "Le paiement doit être effectué avant le %(date)s."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "The payment has to be completed before %(date)s."
|
||||
msgid "Your payment needs to be completed by %(deadline)s."
|
||||
msgstr "Votre paiement doit être effectué avant le %(deadline)s."
|
||||
msgstr "Le paiement doit être effectué avant le %(date)s."
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, fuzzy
|
||||
#| msgid "Proceed with reset"
|
||||
msgid "Proceed without selection"
|
||||
msgstr "Continuer sans sélectionner"
|
||||
msgstr "Procéder à la réinitialisation"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html
|
||||
msgid "Before we continue, we need you to answer some questions."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-09-30 17:00+0000\n"
|
||||
"PO-Revision-Date: 2026-08-01 21:00+0000\n"
|
||||
"Last-Translator: szurofkamarciidfbe08444ef04788 <szurofkamarcii@gmail.com>\n"
|
||||
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"hu/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
"X-Generator: Weblate 2026.7.1\n"
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "English"
|
||||
@@ -93,7 +93,7 @@ msgstr "Héber"
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "Hungarian"
|
||||
msgstr "Magyar"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "Indonesian"
|
||||
@@ -426,8 +426,10 @@ msgid "You cannot exchange a medium for a medium."
|
||||
msgstr "Nem cserélhet adathordozót adathordozóra."
|
||||
|
||||
#: pretix/api/views/checkin.py
|
||||
#, fuzzy
|
||||
#| msgid "Product does not support medium exchange."
|
||||
msgid "You cannot simulate a medium exchange."
|
||||
msgstr "Az adathordozó szimuláció nem engedélyezett."
|
||||
msgstr "A termék nem támogatja az adathordozó-cserét."
|
||||
|
||||
#: pretix/api/views/oauth.py pretix/control/logdisplay.py
|
||||
#, python-brace-format
|
||||
@@ -1777,12 +1779,16 @@ msgid "Transmission type"
|
||||
msgstr "Továbbítás típusa"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission status"
|
||||
msgstr "Továbbítás állapot"
|
||||
msgstr "Továbbítás típusa"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission date"
|
||||
msgstr "Továbbítás dátum"
|
||||
msgstr "Továbbítás típusa"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
msgid "Cancellation"
|
||||
@@ -3072,6 +3078,9 @@ msgid "Street"
|
||||
msgstr "Utca"
|
||||
|
||||
#: pretix/base/forms/questions.py
|
||||
#, fuzzy
|
||||
#| msgctxt "address"
|
||||
#| msgid "State"
|
||||
msgid "State"
|
||||
msgstr "Állam/tartomány"
|
||||
|
||||
@@ -4420,8 +4429,10 @@ msgid "Initialization date"
|
||||
msgstr "Inicializálás dátuma"
|
||||
|
||||
#: pretix/base/models/devices.py
|
||||
#, fuzzy
|
||||
#| msgid "Save to profile"
|
||||
msgid "Security profile"
|
||||
msgstr "Biztonsági profil"
|
||||
msgstr "Mentés a profilhoz"
|
||||
|
||||
#: pretix/base/models/discount.py
|
||||
msgctxt "subevent"
|
||||
@@ -5853,8 +5864,10 @@ msgid "Maximum value"
|
||||
msgstr "Maximális érték"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "Maximum length"
|
||||
msgid "Minimum length"
|
||||
msgstr "Minimum hossz"
|
||||
msgstr "Maximális hossz"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid "Maximum length"
|
||||
@@ -5925,8 +5938,10 @@ msgid "The maximum value must not be lower than the minimum value."
|
||||
msgstr "A maximális érték nem lehet kisebb a minimális értéknél."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "The maximum value must not be lower than the minimum value."
|
||||
msgid "The maximum length must not be shorter than the minimum length."
|
||||
msgstr "A maximális hossz nem lehet rövidebb a minimális hossznál."
|
||||
msgstr "A maximális érték nem lehet kisebb a minimális értéknél."
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -7474,6 +7489,9 @@ msgid "The payment for this invoice has already been received."
|
||||
msgstr "A számla már ki lett fizetve."
|
||||
|
||||
#: pretix/base/payment.py
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "This payment is already being processed and can not be canceled any more."
|
||||
msgid ""
|
||||
"This payment is already being processed and cannot be canceled any more."
|
||||
msgstr "Ez a fizetés már feldolgozás alatt áll, és többé nem törölhető."
|
||||
@@ -8249,12 +8267,16 @@ msgid "Presale end"
|
||||
msgstr "Elővétel vége"
|
||||
|
||||
#: pretix/base/reldate.py
|
||||
#, fuzzy
|
||||
#| msgid "Order email"
|
||||
msgid "Order creation"
|
||||
msgstr "Rendelés létrehozás"
|
||||
msgstr "Rendelés e-mail címe"
|
||||
|
||||
#: pretix/base/reldate.py
|
||||
#, fuzzy
|
||||
#| msgid "Order expired"
|
||||
msgid "Order expiry"
|
||||
msgstr "Rendelés lejárat"
|
||||
msgstr "Rendelés lejárt"
|
||||
|
||||
#: pretix/base/reldate.py
|
||||
msgid "before"
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-05 14:00+0000\n"
|
||||
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
|
||||
"PO-Revision-Date: 2026-09-07 18:00+0000\n"
|
||||
"Last-Translator: Yasunobu YesNo Kawaguchi <kawaguti@gmail.com>\n"
|
||||
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"ja/>\n"
|
||||
"Language: ja\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 2026.10\n"
|
||||
"X-Generator: Weblate 2026.9\n"
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "English"
|
||||
@@ -1776,12 +1776,16 @@ msgid "Transmission type"
|
||||
msgstr "送信タイプ"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission status"
|
||||
msgstr "送信ステータス"
|
||||
msgstr "送信タイプ"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
#, fuzzy
|
||||
#| msgid "Transmission type"
|
||||
msgid "Transmission date"
|
||||
msgstr "送信日"
|
||||
msgstr "送信タイプ"
|
||||
|
||||
#: pretix/base/exporters/invoices.py
|
||||
msgid "Cancellation"
|
||||
@@ -4396,8 +4400,10 @@ msgid "Initialization date"
|
||||
msgstr "初期化日"
|
||||
|
||||
#: pretix/base/models/devices.py
|
||||
#, fuzzy
|
||||
#| msgid "Save to profile"
|
||||
msgid "Security profile"
|
||||
msgstr "セキュリティ・プロフィール"
|
||||
msgstr "プロフィールに保存します"
|
||||
|
||||
#: pretix/base/models/discount.py
|
||||
msgctxt "subevent"
|
||||
@@ -5773,8 +5779,10 @@ msgid "Maximum value"
|
||||
msgstr "最大値"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "Maximum length"
|
||||
msgid "Minimum length"
|
||||
msgstr "最小長"
|
||||
msgstr "最大長"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid "Maximum length"
|
||||
@@ -5845,8 +5853,10 @@ msgid "The maximum value must not be lower than the minimum value."
|
||||
msgstr "最大値は最小値より低くできません。"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
#, fuzzy
|
||||
#| msgid "The maximum value must not be lower than the minimum value."
|
||||
msgid "The maximum length must not be shorter than the minimum length."
|
||||
msgstr "最大長は最小長より短くできません。"
|
||||
msgstr "最大値は最小値より低くできません。"
|
||||
|
||||
#: pretix/base/models/items.py
|
||||
msgid ""
|
||||
@@ -10259,8 +10269,10 @@ msgstr ""
|
||||
"す。上記で設定された\"支払いの最終日\"を過ぎてからは支払いを受け付けません。"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
#, fuzzy
|
||||
#| msgid "Generate invoices for Sales channels"
|
||||
msgid "Allow postponed payment choice for sales channels"
|
||||
msgstr "販売チャネルの支払延期選択を許可する"
|
||||
msgstr "請求書を生成する販売チャネル"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid ""
|
||||
@@ -10268,9 +10280,6 @@ msgid ""
|
||||
"their order without selecting a payment method. This is useful whenever "
|
||||
"orders are not created by the same person who is making the payment."
|
||||
msgstr ""
|
||||
"販売チャネルで支払いの延期が許可されている場合、顧客は支払い方法を選択せずに"
|
||||
"注文を完了できます。これは、支払いを行う同じ人物によって注文が作成されていな"
|
||||
"い場合に便利です。"
|
||||
|
||||
#: pretix/base/settings.py
|
||||
msgid "Show start date"
|
||||
@@ -16353,7 +16362,7 @@ msgstr "第三"
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
msgid "fourth"
|
||||
msgstr "4番目"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/forms/rrule.py
|
||||
msgctxt "rrule"
|
||||
@@ -17433,20 +17442,28 @@ msgid "Queued emails have been aborted."
|
||||
msgstr "キューに入っていた電子メールが、破棄されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The property has been created."
|
||||
msgid "An organizer meta property has been created."
|
||||
msgstr "主催者メタプロパティが作成されました。"
|
||||
msgstr "プロパティが作成されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The selected property has been deleted."
|
||||
msgid "An organizer meta property has been deleted."
|
||||
msgstr "オーガナイザーのメタプロパティが削除されました。"
|
||||
msgstr "選択されたプロパティは削除されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The organizer has been changed."
|
||||
msgid "An organizer meta property has been changed."
|
||||
msgstr "主催者のメタプロパティが変更されました。"
|
||||
msgstr "主催者が変更されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, fuzzy
|
||||
#| msgid "The product has been reordered."
|
||||
msgid "An organizer meta property has been reordered."
|
||||
msgstr "オーガナイザーのメタプロパティが再配置されました。"
|
||||
msgstr "製品の並び順が変更されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Gift card acceptance for another organizer has been added."
|
||||
@@ -17656,7 +17673,7 @@ msgstr "二要素の緊急コードが生成されました。"
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
msgid "Drift and throttle values for two-factor devices have been reset."
|
||||
msgstr "二要素装置のドリフト値とスロットル値がリセットされました。"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/logdisplay.py
|
||||
#, python-brace-format
|
||||
@@ -18594,8 +18611,10 @@ msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
#, fuzzy
|
||||
#| msgid "Authorized apps"
|
||||
msgid "Authorize"
|
||||
msgstr "承認する"
|
||||
msgstr "承認されたアプリ"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html
|
||||
msgid "Error:"
|
||||
@@ -21399,6 +21418,10 @@ msgstr ""
|
||||
"銀行振込の参照としていくつかの場所で使用します。"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/events/create_basics.html
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "We strongly recommend against using short forms of more then 16 "
|
||||
#| "characters."
|
||||
msgid ""
|
||||
"We strongly recommend against using short forms of more than 16 characters."
|
||||
msgstr "16文字を超える短縮形の使用は強くお勧めしません。"
|
||||
@@ -27113,22 +27136,26 @@ msgstr "認証バックエンド"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Reset drift and throttle"
|
||||
msgstr "ドリフトとスロットルをリセットする"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, fuzzy
|
||||
#| msgid "Disable two-factor authentication"
|
||||
msgid "Available two-factor authentication methods"
|
||||
msgstr "選択可能な二要素認証"
|
||||
msgstr "二要素認証を無効にする"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Expired since %(date)s"
|
||||
msgid "1 failed attempt since %(date)s"
|
||||
msgid_plural "%(cnt)s failed attempts since %(date)s"
|
||||
msgstr[0] "%(date)s以降%(cnt)s回失敗"
|
||||
msgstr[0] "%(date)s以降失効"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Valid until %(date)s"
|
||||
msgid "Currently locked until %(date)s"
|
||||
msgstr "現時点で%(date)sまでロックされています"
|
||||
msgstr "%(date)sまで有効"
|
||||
|
||||
#: pretix/control/templates/pretixcontrol/users/form.html
|
||||
msgid "Team memberships"
|
||||
@@ -27649,16 +27676,18 @@ msgid "Invalid code, please try again."
|
||||
msgstr "無効なコードです。もう一度お試しください。"
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} minute."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} minutes."
|
||||
msgstr[0] "無効なコードです。{value}分後再度お試しください。"
|
||||
msgstr[0] "無効なコードです。もう一度お試しください。"
|
||||
|
||||
#: pretix/control/views/auth.py
|
||||
#, python-brace-format
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "Invalid code, please try again."
|
||||
msgid "Invalid code. Please try again after waiting {value} second."
|
||||
msgid_plural "Invalid code. Please try again after waiting {value} seconds."
|
||||
msgstr[0] "無効なコードです。{value}秒後再度お試しください。"
|
||||
msgstr[0] "無効なコードです。もう一度お試しください。"
|
||||
|
||||
#: pretix/control/views/checkin.py
|
||||
msgid "The selected check-ins have been reverted."
|
||||
@@ -28504,8 +28533,10 @@ msgid "You entered an order in an event with a different currency."
|
||||
msgstr "イベントで異なる通貨で注文を入力しました。"
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
#, fuzzy
|
||||
#| msgid "You entered an order in an event with a different currency."
|
||||
msgid "You entered an order in an event that you do not have access to."
|
||||
msgstr "アクセスできないイベントに注文が入力されました。"
|
||||
msgstr "イベントで異なる通貨で注文を入力しました。"
|
||||
|
||||
#: pretix/control/views/orders.py
|
||||
msgid ""
|
||||
@@ -29363,8 +29394,10 @@ msgstr ""
|
||||
"ください。このユーザーの過去の緊急トークンは引き続き有効です。"
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
#, fuzzy
|
||||
#| msgid "The password has been reset."
|
||||
msgid "The drift values for TOTP devices have been reset."
|
||||
msgstr "TOTP デバイスのドリフト値がリセットされました。"
|
||||
msgstr "パスワードがリセットされました。"
|
||||
|
||||
#: pretix/control/views/users.py
|
||||
msgid "The new user has been created."
|
||||
@@ -29379,12 +29412,14 @@ msgid "Bypass quota"
|
||||
msgstr "クォータをバイパスする"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
#, fuzzy
|
||||
#| msgid "Widget"
|
||||
msgid "Budget"
|
||||
msgstr "予算"
|
||||
msgstr "ウィジェット"
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "Budget used"
|
||||
msgstr "消化済み予算"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/control/views/vouchers.py
|
||||
msgid "The requested voucher does not exist."
|
||||
@@ -33944,27 +33979,29 @@ msgid ""
|
||||
"Not sure yet? You can complete your order first and then select a payment "
|
||||
"method later."
|
||||
msgstr ""
|
||||
"まだ確かではありませんか?ご注文を先に完了し、その後でお支払い方法を選択でき"
|
||||
"ます。"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
msgid ""
|
||||
"To do so, please first remove the payment methods you already selected above."
|
||||
msgstr "そのためには、まず上記で既に選択された支払い方法を削除してください。"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Your event needs to be over to use this feature."
|
||||
msgid "Your payment needs to be completed within %(minutes)s minutes."
|
||||
msgstr "支払いは、%(minutes)s分以内に完了する必要があります。"
|
||||
msgstr "この機能を使用するには、イベントが終了している必要があります。"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, python-format
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Your event needs to be over to use this feature."
|
||||
msgid "Your payment needs to be completed by %(deadline)s."
|
||||
msgstr "支払いは、%(deadline)sまでに完了させる必要があります。"
|
||||
msgstr "この機能を使用するには、イベントが終了している必要があります。"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_payment.html
|
||||
#, fuzzy
|
||||
#| msgid "Proceed with reset"
|
||||
msgid "Proceed without selection"
|
||||
msgstr "選択なしで進む"
|
||||
msgstr "リセットを実行"
|
||||
|
||||
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html
|
||||
msgid "Before we continue, we need you to answer some questions."
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,9 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-02 05:00+0000\n"
|
||||
"Last-Translator: Translate pretix user 594 "
|
||||
"<ivagvr@users.noreply.translate.pretix.eu>\n"
|
||||
"PO-Revision-Date: 2025-10-17 16:55+0000\n"
|
||||
"Last-Translator: fd <fd@denkena-consulting.com>\n"
|
||||
"Language-Team: Russian <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||
"js/ru/>\n"
|
||||
"Language: ru\n"
|
||||
@@ -19,7 +18,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 2026.10\n"
|
||||
"X-Generator: Weblate 5.13.3\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js
|
||||
msgid "Marked as paid"
|
||||
@@ -79,8 +78,10 @@ msgid "SOFORT"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js
|
||||
#, fuzzy
|
||||
#| msgid "Yes"
|
||||
msgid "eps"
|
||||
msgstr ""
|
||||
msgstr "Да"
|
||||
|
||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js
|
||||
msgid "MyBank"
|
||||
@@ -146,7 +147,7 @@ msgstr "Подтверждается ваш платёж…"
|
||||
|
||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js
|
||||
msgid "Payment method unavailable"
|
||||
msgstr "Способ оплаты недоступен"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js
|
||||
msgid "Placed orders"
|
||||
@@ -199,16 +200,21 @@ msgid "Switch check-in list"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
#, fuzzy
|
||||
#| msgid "Check-in QR"
|
||||
msgid "Search results"
|
||||
msgstr "Результаты поиска"
|
||||
msgstr "QR-код для регистрации"
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
#, fuzzy
|
||||
#| msgctxt "widget"
|
||||
#| msgid "Close ticket shop"
|
||||
msgid "No tickets found"
|
||||
msgstr "Нет доступных билетов"
|
||||
msgstr "Закрыть билетную кассу"
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Result"
|
||||
msgstr "Результат"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "This ticket requires special attention"
|
||||
@@ -220,7 +226,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Entry"
|
||||
msgstr "Вход"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Exit"
|
||||
@@ -269,7 +275,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket not paid"
|
||||
msgstr "Билет не оплачен"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "This ticket is not yet paid. Do you want to continue anyways?"
|
||||
@@ -289,19 +295,21 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket already used"
|
||||
msgstr "Повторный проход по билету"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Information required"
|
||||
msgstr "Необходима информация"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
#, fuzzy
|
||||
#| msgid "Unknown error."
|
||||
msgid "Unknown ticket"
|
||||
msgstr "Неизвестный билет"
|
||||
msgstr "Неизвестная ошибка."
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket type not allowed here"
|
||||
msgstr "Здесь нельзя пройти по этому билету"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Entry not allowed"
|
||||
@@ -309,11 +317,11 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket code revoked/changed"
|
||||
msgstr "Код билета аннулирован и/или изменен"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket blocked"
|
||||
msgstr "Билет заблокирован"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Ticket not valid at this time"
|
||||
@@ -329,7 +337,7 @@ msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
msgid "Order not approved"
|
||||
msgstr "Заказ не подтвержден"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
#, fuzzy
|
||||
@@ -369,20 +377,32 @@ msgstr "Закрыть"
|
||||
|
||||
#: pretix/static/pretixbase/js/addressform.js
|
||||
#: pretix/static/pretixpresale/js/ui/main.js
|
||||
#, fuzzy
|
||||
#| msgid "Cart expired"
|
||||
msgid "required"
|
||||
msgstr "обязательно"
|
||||
msgstr "Срок действия корзины истёк"
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Your request has been queued on the server and will now be processed. "
|
||||
#| "Depending on the size of your event, this might take up to a few minutes."
|
||||
msgid ""
|
||||
"Your request is currently being processed. Depending on the size of your "
|
||||
"event, this might take up to a few minutes."
|
||||
msgstr ""
|
||||
"Ваш запрос принят в обработку. В зависимости от масштаба вашего мероприятия "
|
||||
"это может занять до нескольких минут."
|
||||
"Ваш запрос поставлен в очередь на сервере и будет обработан. В зависимости "
|
||||
"от масштаба вашего мероприятия это может занять до нескольких минут."
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Your request has been queued on the server and will now be processed. "
|
||||
#| "Depending on the size of your event, this might take up to a few minutes."
|
||||
msgid "Your request has been queued on the server and will soon be processed."
|
||||
msgstr "Ваш запрос поставлен в очередь на сервере и будет обработан."
|
||||
msgstr ""
|
||||
"Ваш запрос поставлен в очередь на сервере и будет обработан. В зависимости "
|
||||
"от масштаба вашего мероприятия это может занять до нескольких минут."
|
||||
|
||||
#: pretix/static/pretixbase/js/asynctask.js
|
||||
msgid ""
|
||||
@@ -453,7 +473,7 @@ msgstr "Чтобы скопировать, нажмите Ctrl-C."
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue
|
||||
msgid "Edit"
|
||||
msgstr "Редактировать"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue
|
||||
msgid "Visualize"
|
||||
@@ -512,7 +532,7 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts
|
||||
msgid "Duplicate"
|
||||
msgstr "Дубликат"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts
|
||||
msgctxt "entry_status"
|
||||
@@ -1195,15 +1215,15 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Tuesday"
|
||||
msgstr "Вторник"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Wednesday"
|
||||
msgstr "Среда"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Thursday"
|
||||
msgstr "Четверг"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Friday"
|
||||
@@ -1211,11 +1231,11 @@ msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Saturday"
|
||||
msgstr "Суббота"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "Sunday"
|
||||
msgstr "Воскресенье"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "January"
|
||||
@@ -1231,23 +1251,23 @@ msgstr "март"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "April"
|
||||
msgstr "Апрель"
|
||||
msgstr "апрель"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "May"
|
||||
msgstr "Май"
|
||||
msgstr "май"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "June"
|
||||
msgstr "Июнь"
|
||||
msgstr "июнь"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "July"
|
||||
msgstr "Июль"
|
||||
msgstr "июль"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "August"
|
||||
msgstr "Август"
|
||||
msgstr "август"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "September"
|
||||
@@ -1255,7 +1275,7 @@ msgstr "сентябрь"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "October"
|
||||
msgstr "Октябрь"
|
||||
msgstr "октябрь"
|
||||
|
||||
#: pretix/static/pretixpresale/widget/src/i18n.ts
|
||||
msgid "November"
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-09-30 17:00+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"PO-Revision-Date: 2026-09-04 14:29+0000\n"
|
||||
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
|
||||
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
|
||||
"sv/>\n"
|
||||
"Language: sv\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
"X-Generator: Weblate 2026.9\n"
|
||||
|
||||
#: pretix/_base_settings.py
|
||||
msgid "English"
|
||||
@@ -19239,6 +19239,7 @@ msgstr ""
|
||||
#: pretix/presale/templates/pretixpresale/event/order_pay.html
|
||||
#: pretix/presale/templates/pretixpresale/event/order_pay_change.html
|
||||
#: pretix/presale/templates/pretixpresale/event/position_change.html
|
||||
#, fuzzy
|
||||
msgid "Continue"
|
||||
msgstr "Fortsätt"
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-09-30 17:00+0000\n"
|
||||
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||
"PO-Revision-Date: 2026-09-04 14:29+0000\n"
|
||||
"Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
|
||||
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix-"
|
||||
"js/sv/>\n"
|
||||
"Language: sv\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
"X-Generator: Weblate 2026.9\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js
|
||||
msgid "Marked as paid"
|
||||
@@ -133,6 +133,7 @@ msgstr "Mercado Pago"
|
||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js
|
||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts
|
||||
#: pretix/static/pretixpresale/js/ui/cart.js
|
||||
#, fuzzy
|
||||
msgid "Continue"
|
||||
msgstr "Fortsätt"
|
||||
|
||||
|
||||
+1233
-1513
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-30 07:26+0000\n"
|
||||
"PO-Revision-Date: 2026-10-02 05:00+0000\n"
|
||||
"PO-Revision-Date: 2026-09-29 09:51+0000\n"
|
||||
"Last-Translator: Nate Horst <nate@agcthailand.org>\n"
|
||||
"Language-Team: Thai <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||
"th/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 2026.10\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
|
||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js
|
||||
msgid "Marked as paid"
|
||||
@@ -426,7 +426,7 @@ msgstr "แก้ไข"
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue
|
||||
msgid "Visualize"
|
||||
msgstr "แสดงภาพผัง"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue
|
||||
msgid ""
|
||||
@@ -434,12 +434,10 @@ msgid ""
|
||||
"or variations are not contained in any of your rule parts so people with "
|
||||
"these tickets will not get in:"
|
||||
msgstr ""
|
||||
"กฎของคุณมีการกรองตามสินค้าหรือรูปแบบย่อยเสมอ แต่สินค้าหรือรูปแบบย่อยต่อไปนี้ไม่ได้ถูกรวมอยู่ในส่วนใ"
|
||||
"ดของกฎ คุณจึงส่งผลให้ผู้ที่ถือตั๋วเหล่านี้จะไม่สามารถผ่านเข้างานได้:"
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue
|
||||
msgid "Please double-check if this was intentional."
|
||||
msgstr "โปรดตรวจสอบอีกครั้งว่าเป็นการดำเนินการโดยตั้งใจหรือไม่"
|
||||
msgstr ""
|
||||
|
||||
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts
|
||||
msgid "All of the conditions below (AND)"
|
||||
|
||||
@@ -161,12 +161,7 @@ class OrderMailForm(BaseMailForm):
|
||||
),
|
||||
label=pgettext_lazy('sendmail_form', 'Restrict to products'),
|
||||
required=True,
|
||||
queryset=Item.objects.none(),
|
||||
help_text=pgettext_lazy(
|
||||
'sendmail_form',
|
||||
'There may be multiple mails sent out to the same mail address if one order contains multiple attendee '
|
||||
'products for it, if you restrict to products while also restricting mails to attendees only. '
|
||||
'This is intended, as every one of those get linked to their own separate order page restricted to only that product.')
|
||||
queryset=Item.objects.none()
|
||||
)
|
||||
filter_checkins = forms.BooleanField(
|
||||
label=_('Filter check-in status'),
|
||||
@@ -379,11 +374,6 @@ class RuleForm(FormPlaceholderMixin, I18nModelForm):
|
||||
del self.fields['subevent']
|
||||
|
||||
self.fields['limit_products'].queryset = Item.objects.filter(event=self.event)
|
||||
self.fields['limit_products'].help_text = pgettext_lazy(
|
||||
'sendmail_form',
|
||||
'There may be multiple mails sent out to the same mail address if one order contains multiple attendee '
|
||||
'products for it, if you restrict to products while also restricting mails to attendees only. '
|
||||
'This is intended, as every one of those get linked to their own separate order page restricted to only that product.')
|
||||
|
||||
self.fields['schedule_type'] = forms.ChoiceField(
|
||||
label=_('Type of schedule time'),
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
import logging
|
||||
from datetime import datetime, time, timedelta
|
||||
|
||||
from dateutil.tz import datetime_exists
|
||||
@@ -40,8 +39,6 @@ from pretix.base.models import (
|
||||
)
|
||||
from pretix.base.models.base import LoggingMixin
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ScheduledMail(models.Model):
|
||||
STATE_SCHEDULED = 'scheduled'
|
||||
@@ -118,7 +115,7 @@ class ScheduledMail(models.Model):
|
||||
|
||||
filter_orders_by_op = False
|
||||
op_qs = OrderPosition.objects.filter(
|
||||
order__event=e,
|
||||
order__event=self.event,
|
||||
canceled=False,
|
||||
)
|
||||
|
||||
@@ -170,58 +167,14 @@ class ScheduledMail(models.Model):
|
||||
for o in orders:
|
||||
with language(o.locale, e.settings.region):
|
||||
positions = list(o.positions.all())
|
||||
send_to_order = send_to_orders
|
||||
o_sent = False
|
||||
|
||||
try:
|
||||
ia = o.invoice_address
|
||||
except InvoiceAddress.DoesNotExist:
|
||||
ia = InvoiceAddress(order=o)
|
||||
|
||||
if send_to_attendees:
|
||||
parent_op = None
|
||||
sent_to_positions = set()
|
||||
for p in positions:
|
||||
if p.addon_to_id is None:
|
||||
# this op might have matching add-ons, so save for later
|
||||
parent_op = p
|
||||
elif not parent_op or p.addon_to_id != parent_op.id:
|
||||
# this op is an add-on, but not to the current parent_op
|
||||
# something got mixed up as add-ons should always come directly after their parent
|
||||
logger.warning(f"Add-ons are mixed up for position #{p.positionid} in order {o.full_code}")
|
||||
continue
|
||||
|
||||
if p.id not in position_ids:
|
||||
# not a matching op, just there for parent_op
|
||||
continue
|
||||
|
||||
if p.addon_to_id and (
|
||||
not p.attendee_email or p.attendee_email == parent_op.attendee_email
|
||||
):
|
||||
# if op is addon and either has no mail or the same as parent => send to parent
|
||||
p = parent_op
|
||||
|
||||
if p.pk in sent_to_positions:
|
||||
# this position already got an email
|
||||
continue
|
||||
|
||||
if not p.attendee_email or p.attendee_email == o.email:
|
||||
# no email or same as order => send to order
|
||||
send_to_order = True
|
||||
continue
|
||||
|
||||
email_ctx = get_email_context(
|
||||
event=e,
|
||||
order=o,
|
||||
invoice_address=ia,
|
||||
position=p,
|
||||
event_or_subevent=self.subevent or e,
|
||||
)
|
||||
p.send_mail(self.rule.subject, self.rule.template, email_ctx,
|
||||
attach_ical=self.rule.attach_ical,
|
||||
log_entry_type='pretix.plugins.sendmail.rule.order.position.email.sent')
|
||||
sent_to_positions.add(p.pk)
|
||||
|
||||
if send_to_order and o.email:
|
||||
if send_to_orders and o.email:
|
||||
email_ctx = get_email_context(
|
||||
event=e,
|
||||
order=o,
|
||||
@@ -231,6 +184,38 @@ class ScheduledMail(models.Model):
|
||||
o.send_mail(self.rule.subject, self.rule.template, email_ctx,
|
||||
attach_ical=self.rule.attach_ical,
|
||||
log_entry_type='pretix.plugins.sendmail.rule.order.email.sent')
|
||||
o_sent = True
|
||||
|
||||
if send_to_attendees:
|
||||
if not self.rule.all_products:
|
||||
positions = [p for p in positions if p.item_id in limit_products]
|
||||
if self.subevent_id:
|
||||
positions = [p for p in positions if p.subevent_id == self.subevent_id]
|
||||
|
||||
for p in positions:
|
||||
if p.id in position_ids:
|
||||
if p.attendee_email and (p.attendee_email != o.email or not o_sent):
|
||||
email_ctx = get_email_context(
|
||||
event=e,
|
||||
order=o,
|
||||
invoice_address=ia,
|
||||
position=p,
|
||||
event_or_subevent=self.subevent or e,
|
||||
)
|
||||
p.send_mail(self.rule.subject, self.rule.template, email_ctx,
|
||||
attach_ical=self.rule.attach_ical,
|
||||
log_entry_type='pretix.plugins.sendmail.rule.order.position.email.sent')
|
||||
elif not o_sent and o.email:
|
||||
email_ctx = get_email_context(
|
||||
event=e,
|
||||
order=o,
|
||||
invoice_address=ia,
|
||||
event_or_subevent=self.subevent or e,
|
||||
)
|
||||
o.send_mail(self.rule.subject, self.rule.template, email_ctx,
|
||||
attach_ical=self.rule.attach_ical,
|
||||
log_entry_type='pretix.plugins.sendmail.rule.order.email.sent')
|
||||
o_sent = True
|
||||
|
||||
self.last_successful_order_id = o.pk
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
# Unless required by applicable law or agreed to in writing, software distributed under the Apache License 2.0 is
|
||||
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations under the License.
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
from django.db.models import Exists, OuterRef, Q
|
||||
@@ -44,8 +43,6 @@ from pretix.base.services.mail import mail
|
||||
from pretix.base.services.tasks import ProfiledEventTask
|
||||
from pretix.celery_app import app
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _chunks(lst, n):
|
||||
"""
|
||||
@@ -73,8 +70,6 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
||||
except InvoiceAddress.DoesNotExist:
|
||||
ia = InvoiceAddress(order=o)
|
||||
|
||||
parent_op = None
|
||||
sent_to_positions = set()
|
||||
if recipients in ('both', 'attendees'):
|
||||
for p in o.positions.annotate(
|
||||
any_checkins=Exists(
|
||||
@@ -90,16 +85,10 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
||||
)
|
||||
),
|
||||
).prefetch_related('addons', 'subevent'):
|
||||
|
||||
if p.addon_to_id is None:
|
||||
parent_op = p
|
||||
elif not parent_op or p.addon_to_id != parent_op.id:
|
||||
# this op is an add-on, but not to the current parent_op
|
||||
# something got mixed up as add-ons should always come directly after their parent
|
||||
logger.warning(f"Add-ons are mixed up for position #{p.positionid} in order {o.full_code}")
|
||||
if p.addon_to_id is not None:
|
||||
continue
|
||||
|
||||
if p.item_id not in items:
|
||||
if p.item_id not in items and not any(a.item_id in items for a in p.addons.all()):
|
||||
continue
|
||||
|
||||
if filter_checkins:
|
||||
@@ -110,11 +99,13 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
||||
if not allowed:
|
||||
continue
|
||||
|
||||
if p.addon_to_id and (
|
||||
not p.attendee_email or p.attendee_email == parent_op.attendee_email
|
||||
):
|
||||
# if op is addon and either has no mail or the same as parent => send to parent
|
||||
p = parent_op
|
||||
if not p.attendee_email:
|
||||
if recipients == 'attendees':
|
||||
send_to_order = True
|
||||
continue
|
||||
|
||||
if p.attendee_email == o.email and send_to_order:
|
||||
continue
|
||||
|
||||
if subevent and p.subevent_id != subevent:
|
||||
continue
|
||||
@@ -125,18 +116,6 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
||||
if subevents_to and p.subevent.date_from >= subevents_to:
|
||||
continue
|
||||
|
||||
if not p.attendee_email:
|
||||
send_to_order = True
|
||||
continue
|
||||
|
||||
if p.pk in sent_to_positions:
|
||||
# this position already got an email
|
||||
continue
|
||||
|
||||
if p.attendee_email == o.email:
|
||||
send_to_order = True
|
||||
continue
|
||||
|
||||
with language(o.locale, event.settings.region):
|
||||
email_context = get_email_context(event=event, order=o, invoice_address=ia, position=p)
|
||||
outgoing_mail = mail(
|
||||
@@ -158,7 +137,6 @@ def send_mails_to_orders(event: Event, user: int, subject: dict, message: dict,
|
||||
user=user,
|
||||
data=outgoing_mail.log_data(),
|
||||
)
|
||||
sent_to_positions.add(p.pk)
|
||||
|
||||
if send_to_order and o.email:
|
||||
with language(o.locale, event.settings.region):
|
||||
|
||||
@@ -183,6 +183,7 @@ class OrderPositionDetailMixin(NoSearchIndexViewMixin):
|
||||
def position(self):
|
||||
qs = OrderPosition.objects.filter(
|
||||
order__event=self.request.event,
|
||||
addon_to__isnull=True,
|
||||
order__code=self.kwargs['order'],
|
||||
positionid=self.kwargs['position']
|
||||
).select_related('order', 'order__event')
|
||||
|
||||
@@ -117,16 +117,6 @@ input[type=number]::-webkit-outer-spin-button {
|
||||
border: transparent;
|
||||
}
|
||||
|
||||
.btn.disabled, .btn[disabled], fieldset[disabled] .btn {
|
||||
box-shadow: 0px 0px 0px 1px #ccc inset, inset 0 1px 3px 0 #d9d9d9;
|
||||
background: #eee;
|
||||
opacity: 0.7;
|
||||
}
|
||||
.btn-link.disabled, .btn-link[disabled], fieldset[disabled] .btn-link {
|
||||
box-shadow: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.btn-group-flex { display: flex; }
|
||||
.btn-group-flex > .btn { flex: 1; }
|
||||
|
||||
|
||||
@@ -556,6 +556,8 @@ var editor = {
|
||||
editor.$fcv.get(0).height = editor.pdf_viewport.height
|
||||
editor.fabric = new fabric.Canvas('fabric-canvas')
|
||||
|
||||
editor.fabric.on('object:modified', editor._create_savepoint)
|
||||
editor.fabric.on('object:added', editor._create_savepoint)
|
||||
editor.fabric.on('selection:cleared', editor._update_toolbox)
|
||||
editor.fabric.on('selection:created', editor._update_toolbox)
|
||||
editor.fabric.on('selection:updated', editor._update_toolbox)
|
||||
@@ -588,12 +590,6 @@ var editor = {
|
||||
if (editor._window_loaded) {
|
||||
editor._ready()
|
||||
}
|
||||
|
||||
editor.fabric.on('object:modified', editor._create_savepoint)
|
||||
editor.fabric.on('object:added', editor._create_savepoint)
|
||||
editor.fabric.on('object:added', function(e) {
|
||||
editor.fabric.setActiveObject(e.target);
|
||||
})
|
||||
},
|
||||
|
||||
_window_load_event: function () {
|
||||
@@ -960,6 +956,7 @@ var editor = {
|
||||
mtr: true
|
||||
})
|
||||
editor.fabric.add(text)
|
||||
editor._create_savepoint()
|
||||
return text
|
||||
},
|
||||
|
||||
@@ -975,6 +972,7 @@ var editor = {
|
||||
rect.scaleToHeight(126)
|
||||
rect.setControlsVisibility({ mtr: false, mb: false, mt: false, mr: false, ml: false })
|
||||
editor.fabric.add(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
|
||||
@@ -1011,6 +1009,7 @@ var editor = {
|
||||
mtr: true
|
||||
})
|
||||
editor.fabric.add(rect)
|
||||
editor._create_savepoint()
|
||||
$('#version-notice').show()
|
||||
return rect
|
||||
},
|
||||
@@ -1027,6 +1026,7 @@ var editor = {
|
||||
})
|
||||
rect.setControlsVisibility({ mtr: false })
|
||||
editor.fabric.add(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
|
||||
@@ -1044,6 +1044,7 @@ var editor = {
|
||||
})
|
||||
rect.setControlsVisibility({ mtr: false, mb: false, mt: false, mr: false, ml: false })
|
||||
editor.fabric.add(rect)
|
||||
editor._create_savepoint()
|
||||
return rect
|
||||
},
|
||||
|
||||
|
||||
@@ -813,13 +813,7 @@ function setup_basics (el) {
|
||||
return
|
||||
}
|
||||
|
||||
$('<li></li>')
|
||||
.append(
|
||||
$('<a></a>').attr("href", "#" + scrollTarget.id).text($.trim(label))
|
||||
)
|
||||
.append(
|
||||
document.createTextNode(' - ' + description)
|
||||
)
|
||||
$('<li><a href="#' + scrollTarget.id + '">' + $.trim(label) + '</a> – ' + description + '</li>')
|
||||
.appendTo(alert.querySelector('ul') || $('<ul>').appendTo(alert))
|
||||
.find('a').on('click', function (e) {
|
||||
$panel.collapse('show')
|
||||
|
||||
@@ -157,12 +157,6 @@
|
||||
.profile-scope:last-child .profile-save-container {
|
||||
margin-bottom: -15px;
|
||||
}
|
||||
|
||||
/* the rule above removes blank space after any profile-save-container at the end of every fieldset, which causes an overlay if addon-questions are used. So re-add margin for non-addon-fieldsets followed by fieldsets (currently only happens it addon-questions are available) */
|
||||
fieldset:not(:has(.profile-add-on)):has( + fieldset) .profile-scope:last-child .profile-save-container {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.profile-save-container .help-block {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@@ -1925,14 +1925,6 @@ def test_addons_create(token_client, organizer, event, item, category, category2
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_addons_update(token_client, organizer, event, item, addon):
|
||||
resp = token_client.patch(
|
||||
'/api/v1/organizers/{}/events/{}/items/{}/addons/{}/'.format(organizer.slug, event.slug, item.pk, addon.pk),
|
||||
{
|
||||
},
|
||||
format='json'
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
|
||||
resp = token_client.patch(
|
||||
'/api/v1/organizers/{}/events/{}/items/{}/addons/{}/'.format(organizer.slug, event.slug, item.pk, addon.pk),
|
||||
{
|
||||
|
||||
@@ -199,84 +199,6 @@ def test_sendmail_rule_send_order_vs_pos(send_to, amount_mails, recipients, orde
|
||||
assert djmail.outbox[0].subject == 'Dummy: Foo City @ 11:30'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('send_to,amount_mails,recipients,ticket_mail,addon_mail, products', [
|
||||
(Rule.ATTENDEES, 1, ['addon-attendee@dummy.test'], 'attendee@dummy.test', 'addon-attendee@dummy.test', 'addon'),
|
||||
(Rule.ATTENDEES, 2, ['attendee@dummy.test', 'addon-attendee@dummy.test'], 'attendee@dummy.test',
|
||||
'addon-attendee@dummy.test', 'both'),
|
||||
(Rule.ATTENDEES, 1, ['attendee@dummy.test'], 'attendee@dummy.test', 'attendee@dummy.test', 'both'),
|
||||
(Rule.ATTENDEES, 1, ['attendee@dummy.test'], 'attendee@dummy.test', None, 'addon'),
|
||||
(Rule.ATTENDEES, 1, ['attendee@dummy.test'], 'attendee@dummy.test', None, 'both'),
|
||||
(Rule.ATTENDEES, 1, ['dummy@dummy.test'], None, None, 'addon'),
|
||||
(Rule.ATTENDEES, 1, ['dummy@dummy.test'], None, None, 'both'),
|
||||
(Rule.ATTENDEES, 2, ['dummy@dummy.test', 'addon-attendee@dummy.test'], None, 'addon-attendee@dummy.test', 'both'),
|
||||
(Rule.ATTENDEES, 1, ['dummy@dummy.test'], None, None, 'all'),
|
||||
(Rule.ATTENDEES, 2, ['dummy@dummy.test', 'addon-attendee@dummy.test'], None, 'addon-attendee@dummy.test', 'all'),
|
||||
])
|
||||
@scopes_disabled()
|
||||
def test_sendmail_rule_send_addons(send_to, amount_mails, recipients, ticket_mail, addon_mail, products, order,
|
||||
event, pos, item, item2):
|
||||
djmail.outbox = []
|
||||
|
||||
order.status = order.STATUS_PAID
|
||||
order.save()
|
||||
|
||||
p = pos
|
||||
p.attendee_email = ticket_mail
|
||||
p.save()
|
||||
order.all_positions.create(item=item2, price=0, attendee_email=addon_mail, addon_to=p)
|
||||
rule = order.event.sendmail_rules.create(date_is_absolute=True, send_date=dt_now - datetime.timedelta(hours=1),
|
||||
send_to=send_to, subject='meow', template='meow meow meow',
|
||||
all_products=products == 'all')
|
||||
if products == 'addon':
|
||||
rule.limit_products.set([item2])
|
||||
if products == 'both':
|
||||
rule.limit_products.set([item, item2])
|
||||
|
||||
sendmail_run_rules(None)
|
||||
|
||||
assert len(djmail.outbox) == amount_mails
|
||||
|
||||
_recipients = [mail.to[0] for mail in djmail.outbox]
|
||||
assert set(recipients) == set(_recipients)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@pytest.mark.parametrize('send_to,amount_mails,recipients,ticket_mail,addon_mail, products', [
|
||||
(Rule.ATTENDEES, 2, ['attendee@dummy.test', 'addon-attendee@dummy.test'], 'attendee@dummy.test',
|
||||
'addon-attendee@dummy.test', 'addon'),
|
||||
(Rule.ATTENDEES, 2, ['attendee@dummy.test', 'addon-attendee@dummy.test'], 'attendee@dummy.test',
|
||||
'addon-attendee@dummy.test', 'both'),
|
||||
])
|
||||
@scopes_disabled()
|
||||
def test_sendmail_rule_send_addons_one_unp(send_to, amount_mails, recipients, ticket_mail, addon_mail, products, order,
|
||||
event, pos, item, item2):
|
||||
djmail.outbox = []
|
||||
|
||||
order.status = order.STATUS_PAID
|
||||
order.save()
|
||||
|
||||
p = pos
|
||||
p.attendee_email = ticket_mail
|
||||
p.save()
|
||||
order.all_positions.create(item=item2, price=0, attendee_email=addon_mail, addon_to=p)
|
||||
order.all_positions.create(item=item2, price=0, addon_to=p)
|
||||
rule = order.event.sendmail_rules.create(date_is_absolute=True, send_date=dt_now - datetime.timedelta(hours=1),
|
||||
send_to=send_to, subject='meow', template='meow meow meow',
|
||||
all_products=False)
|
||||
if products == 'addon':
|
||||
rule.limit_products.set([item2])
|
||||
if products == 'both':
|
||||
rule.limit_products.set([item, item2])
|
||||
|
||||
sendmail_run_rules(None)
|
||||
|
||||
assert len(djmail.outbox) == amount_mails
|
||||
|
||||
_recipients = [mail.to[0] for mail in djmail.outbox]
|
||||
assert set(recipients) == set(_recipients)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@scopes_disabled()
|
||||
def test_sendmail_rule_send_attendees_unset_mail(order, event, item):
|
||||
|
||||
@@ -406,312 +406,6 @@ def test_sendmail_attendee_product_filter(logged_in_client, sendmail_url, event,
|
||||
assert '/order/' not in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_addon_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': addon.pk,
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == ['add-on-attendee@dummy.test']
|
||||
assert '/ticket/' in djmail.outbox[0].body
|
||||
assert '/order/' not in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_ticket_and_addon_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, p.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 2
|
||||
for msg in djmail.outbox:
|
||||
assert msg.to in [['attendee1@dummy.test'], ['add-on-attendee@dummy.test']]
|
||||
assert '/ticket/' in msg.body
|
||||
assert '/order/' not in msg.body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_ticket_and_same_addon_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='attendee1@dummy.test', addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, p.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == ['attendee1@dummy.test']
|
||||
assert '/ticket/' in djmail.outbox[0].body
|
||||
assert '/order/' not in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_addon_unpersonalized_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': addon.pk,
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == ['attendee1@dummy.test']
|
||||
assert '/ticket/' in djmail.outbox[0].body
|
||||
assert '/order/' not in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_ticket_and_addon_unp_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, p.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == ['attendee1@dummy.test']
|
||||
assert '/ticket/' in djmail.outbox[0].body
|
||||
assert '/order/' not in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_ticket_unp_and_addon_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=pos
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, pos.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 2
|
||||
for msg in djmail.outbox:
|
||||
assert msg.to in [[order.email], ['add-on-attendee@dummy.test']]
|
||||
if msg.to == [order.email]:
|
||||
assert '/ticket/' not in msg.body
|
||||
assert '/order/' in msg.body
|
||||
else:
|
||||
assert msg.to == ['add-on-attendee@dummy.test']
|
||||
assert '/ticket/' in msg.body
|
||||
assert '/order/' not in msg.body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_addon_unp_unp_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=pos
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': addon.pk,
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == [order.email]
|
||||
assert '/ticket/' not in djmail.outbox[0].body
|
||||
assert '/order/' in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_and_addon_unp_unp_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=pos
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, pos.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 1
|
||||
assert djmail.outbox[0].to == [order.email]
|
||||
assert '/ticket/' not in djmail.outbox[0].body
|
||||
assert '/order/' in djmail.outbox[0].body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_two_addons_one_unp_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p
|
||||
)
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': addon.pk,
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 2
|
||||
for msg in djmail.outbox:
|
||||
assert msg.to in [['attendee1@dummy.test'], ['add-on-attendee@dummy.test']]
|
||||
assert '/ticket/' in msg.body
|
||||
assert '/order/' not in msg.body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_and_two_addons_one_unp_filter(logged_in_client, sendmail_url, event, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
with scopes_disabled():
|
||||
p = pos
|
||||
p.attendee_email = 'attendee1@dummy.test'
|
||||
p.save()
|
||||
addon = Item.objects.create(name='Test addon', event=event, default_price=12)
|
||||
order.positions.create(
|
||||
item=addon, price=0, attendee_email='add-on-attendee@dummy.test', addon_to=p
|
||||
)
|
||||
order.positions.create(
|
||||
item=addon, price=0, addon_to=p
|
||||
)
|
||||
|
||||
djmail.outbox = []
|
||||
response = logged_in_client.post(sendmail_url + 'orders/',
|
||||
{'sendto': 'na',
|
||||
'action': 'send',
|
||||
'recipients': 'attendees',
|
||||
'items': {addon.pk, p.item_id},
|
||||
'subject_0': 'Test subject',
|
||||
'message_0': 'This is a test file for sending mails.',
|
||||
},
|
||||
follow=True)
|
||||
assert response.status_code == 200
|
||||
assert 'alert-success' in response.rendered_content
|
||||
assert len(djmail.outbox) == 2
|
||||
for msg in djmail.outbox:
|
||||
assert msg.to in [['attendee1@dummy.test'], ['add-on-attendee@dummy.test']]
|
||||
assert '/ticket/' in msg.body
|
||||
assert '/order/' not in msg.body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_sendmail_attendee_subevent_filter(logged_in_client, sendmail_url, event, item, order, pos):
|
||||
event.settings.attendee_emails_asked = True
|
||||
|
||||
Reference in New Issue
Block a user