prune_captcha 1.18.0__tar.gz → 1.18.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/PKG-INFO +14 -1
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/README.md +13 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/static/prune_captcha/css/captcha.css +4 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/static/prune_captcha/js/captcha.js +3 -2
- prune_captcha-1.18.3/prune_captcha/templates/prune_captcha/captcha.html +10 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/utils.py +8 -8
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha.egg-info/PKG-INFO +14 -1
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/pyproject.toml +1 -1
- prune_captcha-1.18.0/prune_captcha/templates/prune_captcha/captcha.html +0 -7
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/MANIFEST.in +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/__init__.py +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/apps.py +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha.egg-info/SOURCES.txt +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha.egg-info/dependency_links.txt +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha.egg-info/requires.txt +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha.egg-info/top_level.txt +0 -0
- {prune_captcha-1.18.0 → prune_captcha-1.18.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: prune_captcha
|
3
|
-
Version: 1.18.
|
3
|
+
Version: 1.18.3
|
4
4
|
Summary: A tool to protect formulaire from spam.
|
5
5
|
Author-email: Arnout <bastien@prune.sh>
|
6
6
|
Project-URL: Made_by, https://prune.sh/
|
@@ -66,6 +66,16 @@ PUZZLE_IMAGE_STATIC_PATH = "website/static/website/images/puzzles/"
|
|
66
66
|
|
67
67
|
Important: You must import the static files (css, js) present in "prune_captcha/static/".
|
68
68
|
|
69
|
+
```html
|
70
|
+
<header>
|
71
|
+
<link
|
72
|
+
rel="stylesheet"
|
73
|
+
href="{% static 'prune_captcha/css/captcha.css' %}"
|
74
|
+
/>
|
75
|
+
<script defer src="{% static 'prune_captcha/js/captcha.js' %}"></script>
|
76
|
+
</header>
|
77
|
+
```
|
78
|
+
|
69
79
|
### Utilisation
|
70
80
|
|
71
81
|
- GET request (form display)
|
@@ -116,6 +126,9 @@ Important: You must import the static files (css, js) present in "prune_captcha/
|
|
116
126
|
|
117
127
|
| Version | Date | Notes |
|
118
128
|
| ------- | ---------- | ---------------------------------- |
|
129
|
+
| 1.18.3 | 2025-05-22 | add puzzle info |
|
130
|
+
| 1.18.2 | 2025-05-22 | fix |
|
131
|
+
| 1.18.1 | 2025-05-22 | some improvements |
|
119
132
|
| 1.18.0 | 2025-05-22 | create "addHiddenInputs" func |
|
120
133
|
| 1.17.0 | 2025-05-21 | fix pos_answer |
|
121
134
|
| 1.16.1 | 2025-05-21 | fix static |
|
@@ -48,6 +48,16 @@ PUZZLE_IMAGE_STATIC_PATH = "website/static/website/images/puzzles/"
|
|
48
48
|
|
49
49
|
Important: You must import the static files (css, js) present in "prune_captcha/static/".
|
50
50
|
|
51
|
+
```html
|
52
|
+
<header>
|
53
|
+
<link
|
54
|
+
rel="stylesheet"
|
55
|
+
href="{% static 'prune_captcha/css/captcha.css' %}"
|
56
|
+
/>
|
57
|
+
<script defer src="{% static 'prune_captcha/js/captcha.js' %}"></script>
|
58
|
+
</header>
|
59
|
+
```
|
60
|
+
|
51
61
|
### Utilisation
|
52
62
|
|
53
63
|
- GET request (form display)
|
@@ -98,6 +108,9 @@ Important: You must import the static files (css, js) present in "prune_captcha/
|
|
98
108
|
|
99
109
|
| Version | Date | Notes |
|
100
110
|
| ------- | ---------- | ---------------------------------- |
|
111
|
+
| 1.18.3 | 2025-05-22 | add puzzle info |
|
112
|
+
| 1.18.2 | 2025-05-22 | fix |
|
113
|
+
| 1.18.1 | 2025-05-22 | some improvements |
|
101
114
|
| 1.18.0 | 2025-05-22 | create "addHiddenInputs" func |
|
102
115
|
| 1.17.0 | 2025-05-21 | fix pos_answer |
|
103
116
|
| 1.16.1 | 2025-05-21 | fix static |
|
{prune_captcha-1.18.0 → prune_captcha-1.18.3}/prune_captcha/static/prune_captcha/js/captcha.js
RENAMED
@@ -8,6 +8,7 @@ const addHiddenInputs = () => {
|
|
8
8
|
const input = document.createElement("input");
|
9
9
|
input.type = "text";
|
10
10
|
input.name = name;
|
11
|
+
input.id = `puzzle_${name}`;
|
11
12
|
input.placeholder = name
|
12
13
|
.replace(/_/g, " ")
|
13
14
|
.replace(/\b\w/g, (c) => c.toUpperCase());
|
@@ -17,8 +18,8 @@ const addHiddenInputs = () => {
|
|
17
18
|
};
|
18
19
|
addHiddenInputs();
|
19
20
|
|
20
|
-
const inputPosX = document.querySelector('input[
|
21
|
-
const inputPosY = document.querySelector('input[
|
21
|
+
const inputPosX = document.querySelector('input[id="puzzle_pos_x_answer"]');
|
22
|
+
const inputPosY = document.querySelector('input[id="puzzle_pos_y_answer"]');
|
22
23
|
|
23
24
|
let isDragging = false;
|
24
25
|
let offsetX = 0;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
{% load static %}
|
2
|
+
|
3
|
+
<div class="prune-captcha">
|
4
|
+
<p class="puzzle-info">Veuillez glisser la pièce au bon emplacement</p>
|
5
|
+
<div class="puzzle-container" style="width: {{ puzzle.width }}px; height: {{ puzzle.height }}px; background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px;">
|
6
|
+
<div class="puzzle-background" style="background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px;"></div>
|
7
|
+
<div class="puzzle-mask" style="top: {{ puzzle.pos_y_solution }}px; left: {{ puzzle.pos_x_solution }}px; width: {{ puzzle.piece_width }}px; height: {{ puzzle.piece_height }}px;"></div>
|
8
|
+
<div class="puzzle-piece" style="background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px; background-position: -{{ puzzle.pos_x_solution }}px -{{ puzzle.pos_y_solution }}px; width: calc({{ puzzle.piece_width }}px - 1px); height: calc({{ puzzle.piece_height }}px - 1px); top: {{ puzzle.piece_pos_y }}px; left: {{ puzzle.piece_pos_x }}px;"></div>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -19,9 +19,11 @@ def create_and_get_captcha(
|
|
19
19
|
if f.lower().endswith((".jpg", ".jpeg", ".png", ".gif", ".webp"))
|
20
20
|
]
|
21
21
|
selected_image = random.choice(puzzle_images)
|
22
|
-
request.session["
|
23
|
-
|
24
|
-
|
22
|
+
request.session["puzzle"] = {
|
23
|
+
"pos_x_solution": pos_x_solution,
|
24
|
+
"pos_y_solution": pos_y_solution,
|
25
|
+
"precision": precision,
|
26
|
+
}
|
25
27
|
return {
|
26
28
|
"width": width,
|
27
29
|
"height": height,
|
@@ -40,12 +42,10 @@ def verify_captcha(request: HttpRequest) -> bool:
|
|
40
42
|
pos_y_answer = int(request.POST.get("pos_y_answer"))
|
41
43
|
if pos_x_answer is None or pos_y_answer is None:
|
42
44
|
return False
|
43
|
-
|
44
|
-
pos_y_solution = request.session.get("pos_y_solution")
|
45
|
-
precision = request.session.get("precision")
|
45
|
+
puzzle = request.session.get("puzzle")
|
46
46
|
if (
|
47
|
-
abs(pos_x_solution - pos_x_answer) <= precision
|
48
|
-
and abs(pos_y_solution - pos_y_answer) <= precision
|
47
|
+
abs(puzzle["pos_x_solution"] - pos_x_answer) <= puzzle["precision"]
|
48
|
+
and abs(puzzle["pos_y_solution"] - pos_y_answer) <= puzzle["precision"]
|
49
49
|
):
|
50
50
|
return True
|
51
51
|
else:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: prune_captcha
|
3
|
-
Version: 1.18.
|
3
|
+
Version: 1.18.3
|
4
4
|
Summary: A tool to protect formulaire from spam.
|
5
5
|
Author-email: Arnout <bastien@prune.sh>
|
6
6
|
Project-URL: Made_by, https://prune.sh/
|
@@ -66,6 +66,16 @@ PUZZLE_IMAGE_STATIC_PATH = "website/static/website/images/puzzles/"
|
|
66
66
|
|
67
67
|
Important: You must import the static files (css, js) present in "prune_captcha/static/".
|
68
68
|
|
69
|
+
```html
|
70
|
+
<header>
|
71
|
+
<link
|
72
|
+
rel="stylesheet"
|
73
|
+
href="{% static 'prune_captcha/css/captcha.css' %}"
|
74
|
+
/>
|
75
|
+
<script defer src="{% static 'prune_captcha/js/captcha.js' %}"></script>
|
76
|
+
</header>
|
77
|
+
```
|
78
|
+
|
69
79
|
### Utilisation
|
70
80
|
|
71
81
|
- GET request (form display)
|
@@ -116,6 +126,9 @@ Important: You must import the static files (css, js) present in "prune_captcha/
|
|
116
126
|
|
117
127
|
| Version | Date | Notes |
|
118
128
|
| ------- | ---------- | ---------------------------------- |
|
129
|
+
| 1.18.3 | 2025-05-22 | add puzzle info |
|
130
|
+
| 1.18.2 | 2025-05-22 | fix |
|
131
|
+
| 1.18.1 | 2025-05-22 | some improvements |
|
119
132
|
| 1.18.0 | 2025-05-22 | create "addHiddenInputs" func |
|
120
133
|
| 1.17.0 | 2025-05-21 | fix pos_answer |
|
121
134
|
| 1.16.1 | 2025-05-21 | fix static |
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
26
26
|
keywords = ["captcha", "django", "code-quality"]
|
27
27
|
urls = {Made_by = "https://prune.sh/"}
|
28
28
|
name = "prune_captcha"
|
29
|
-
version = "1.18.
|
29
|
+
version = "1.18.3"
|
30
30
|
description = "A tool to protect formulaire from spam."
|
31
31
|
readme = "README.md"
|
32
32
|
dependencies = [
|
@@ -1,7 +0,0 @@
|
|
1
|
-
{% load static %}
|
2
|
-
|
3
|
-
<div class="puzzle-container" style="width: {{ puzzle.width }}px; height: {{ puzzle.height }}px; background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px;">
|
4
|
-
<div class="puzzle-background" style="background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px;"></div>
|
5
|
-
<div class="puzzle-mask" style="top: {{ puzzle.pos_y_solution }}px; left: {{ puzzle.pos_x_solution }}px; width: {{ puzzle.piece_width }}px; height: {{ puzzle.piece_height }}px;"></div>
|
6
|
-
<div class="puzzle-piece" style="background-image: url('{% static puzzle.image %}'); background-size: {{ puzzle.width }}px {{ puzzle.height }}px; background-position: -{{ puzzle.pos_x_solution }}px -{{ puzzle.pos_y_solution }}px; width: calc({{ puzzle.piece_width }}px - 1px); height: calc({{ puzzle.piece_height }}px - 1px); top: {{ puzzle.piece_pos_y }}px; left: {{ puzzle.piece_pos_x }}px;"></div>
|
7
|
-
</div>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|