edwh-editorjs 2.6.0__tar.gz → 2.6.2__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.
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/CHANGELOG.md +12 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/PKG-INFO +1 -1
- edwh_editorjs-2.6.2/editorjs/__about__.py +1 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/blocks.py +26 -9
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/tests/test_core.py +60 -0
- edwh_editorjs-2.6.0/blog.md +0 -86
- edwh_editorjs-2.6.0/debug.py +0 -18
- edwh_editorjs-2.6.0/editorjs/__about__.py +0 -1
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/.gitignore +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/README.md +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/__init__.py +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/core.py +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/exceptions.py +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/helpers.py +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/editorjs/types.py +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/pyproject.toml +0 -0
- {edwh_editorjs-2.6.0 → edwh_editorjs-2.6.2}/tests/__init__.py +0 -0
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v2.6.2 (2026-02-05)
|
|
6
|
+
|
|
7
|
+
### Fix
|
|
8
|
+
|
|
9
|
+
* **custom:** Preserve inner text and tail content in HTML parsing ([`f432744`](https://github.com/educationwarehouse/edwh-editorjs/commit/f43274495faca52fdbc4fdd3f300a637981a3332))
|
|
10
|
+
|
|
11
|
+
## v2.6.1 (2026-02-05)
|
|
12
|
+
|
|
13
|
+
### Fix
|
|
14
|
+
|
|
15
|
+
* **paragraph:** Handle nested HTML in alignment tag closing detection ([`7f910e1`](https://github.com/educationwarehouse/edwh-editorjs/commit/7f910e15103fe25ae0e4d1158deecc15d267d926))
|
|
16
|
+
|
|
5
17
|
## v2.6.0 (2026-02-05)
|
|
6
18
|
|
|
7
19
|
### Fix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: edwh-editorjs
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.2
|
|
4
4
|
Summary: EditorJS.py
|
|
5
5
|
Project-URL: Homepage, https://github.com/educationwarehouse/edwh-EditorJS
|
|
6
6
|
Author-email: SKevo <skevo.cw@gmail.com>, Robin van der Noord <robin.vdn@educationwarehouse.nl>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.6.2"
|
|
@@ -187,6 +187,18 @@ class ParagraphBlock(EditorJSBlock):
|
|
|
187
187
|
|
|
188
188
|
return f"{text}\n\n"
|
|
189
189
|
|
|
190
|
+
@staticmethod
|
|
191
|
+
def _find_closing_editorjs_tag(nodes: list, start_idx: int) -> int | None:
|
|
192
|
+
"""Find index of closing </editorjs> tag."""
|
|
193
|
+
for idx, node in enumerate(nodes[start_idx:], start=start_idx):
|
|
194
|
+
if (
|
|
195
|
+
node.get("type") == "html"
|
|
196
|
+
and node.get("value", "").strip() == "</editorjs>"
|
|
197
|
+
):
|
|
198
|
+
return idx
|
|
199
|
+
|
|
200
|
+
return None
|
|
201
|
+
|
|
190
202
|
@classmethod
|
|
191
203
|
def to_json(cls, node: MDChildNode) -> list[dict]:
|
|
192
204
|
result = []
|
|
@@ -210,14 +222,17 @@ class ParagraphBlock(EditorJSBlock):
|
|
|
210
222
|
|
|
211
223
|
if child.get("value", "").endswith("/>"):
|
|
212
224
|
# self-closing
|
|
213
|
-
result.append(EditorJSCustom.to_json(
|
|
225
|
+
result.append(EditorJSCustom.to_json({"children": [child]}))
|
|
214
226
|
else:
|
|
215
|
-
# <editorjs
|
|
216
|
-
|
|
217
|
-
|
|
227
|
+
# <editorjs>...</editorjs> may include nested HTML; find the closing tag
|
|
228
|
+
end_idx = cls._find_closing_editorjs_tag(nodes, idx + 1)
|
|
229
|
+
children_slice = (
|
|
230
|
+
nodes[idx : idx + 2]
|
|
231
|
+
if end_idx is None
|
|
232
|
+
else nodes[idx : end_idx + 1]
|
|
218
233
|
)
|
|
219
|
-
|
|
220
|
-
|
|
234
|
+
skip = 2 if end_idx is None else end_idx - idx
|
|
235
|
+
result.extend(EditorJSCustom.to_json({"children": children_slice}))
|
|
221
236
|
|
|
222
237
|
continue
|
|
223
238
|
|
|
@@ -826,8 +841,11 @@ class EditorJSCustom(EditorJSBlock, markdown2.Extra):
|
|
|
826
841
|
root = lxml.html.fromstring(html)
|
|
827
842
|
|
|
828
843
|
attributes = dict(root.attrib)
|
|
829
|
-
|
|
830
|
-
|
|
844
|
+
|
|
845
|
+
# support both innerText + innerHTML:
|
|
846
|
+
inner_html = (root.text or "") + "".join(
|
|
847
|
+
lxml.html.tostring(child, encoding="unicode", with_tail=True)
|
|
848
|
+
for child in root
|
|
831
849
|
)
|
|
832
850
|
|
|
833
851
|
return attributes, inner_html
|
|
@@ -845,7 +863,6 @@ class EditorJSCustom(EditorJSBlock, markdown2.Extra):
|
|
|
845
863
|
handler = BLOCKS.get(_type)
|
|
846
864
|
|
|
847
865
|
if not handler:
|
|
848
|
-
raise ValueError(f"debug: {attrs = } {body = }") # fixme
|
|
849
866
|
raise ValueError(f"Unknown custom type {_type}")
|
|
850
867
|
|
|
851
868
|
return handler, attrs
|
|
@@ -328,3 +328,63 @@ def test_editorjs_alignment_tag():
|
|
|
328
328
|
|
|
329
329
|
assert "<b>Werk dat ertoe doet" in html
|
|
330
330
|
assert "<editorjs" not in html
|
|
331
|
+
assert "<code" not in html
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def test_alignment_with_nested_bold_roundtrip():
|
|
335
|
+
"""
|
|
336
|
+
Test that alignment tags preserve nested bold HTML through JSON roundtrip.
|
|
337
|
+
|
|
338
|
+
Regression test for issue where nested HTML in alignment tags causes:
|
|
339
|
+
- Text content to disappear (simple use case without inner HTML)
|
|
340
|
+
- Malformed closing tags to appear as separate raw blocks
|
|
341
|
+
"""
|
|
342
|
+
# Input: four paragraphs with different alignments
|
|
343
|
+
# - "start" with left alignment
|
|
344
|
+
# - "simpel" with right alignment (simple case, no HTML)
|
|
345
|
+
# - "<b>moeilijk </b> " with center alignment (nested HTML)
|
|
346
|
+
# - "eind" with left alignment
|
|
347
|
+
input_json = r"""{"time":1770299588459,"blocks":[{"id":"aySMulbYqf","type":"paragraph","data":{"text":"start"},"tunes":{"alignmentTune":{"alignment":"left"}}},{"id":"z8S1Gy3XzF","type":"paragraph","data":{"text":"simpel"},"tunes":{"alignmentTune":{"alignment":"right"}}},{"id":"pSBHuALBVu","type":"paragraph","data":{"text":"<b>moeilijk </b> "},"tunes":{"alignmentTune":{"alignment":"center"}}},{"id":"C2A4mJLXE_","type":"paragraph","data":{"text":"eind"},"tunes":{"alignmentTune":{"alignment":"left"}}}],"version":"2.30.7"}"""
|
|
348
|
+
# faulty output: {"time": 1770299637826, "blocks": [{"type": "paragraph", "data": {"text": "start"}}, {"type": "paragraph", "data": {"text": ""}, "tunes": {"alignmentTune": {"alignment": "right"}}}, {"type": "paragraph", "data": {"text": "<b>moeilijk </b> "}, "tunes": {"alignmentTune": {"alignment": "center"}}}, {"type": "paragraph", "data": {"text": "eind"}}], "version": "2.30.6"}
|
|
349
|
+
|
|
350
|
+
e = EditorJS.from_json(input_json)
|
|
351
|
+
|
|
352
|
+
# Convert through HTML and back to JSON
|
|
353
|
+
html = e.to_html()
|
|
354
|
+
print("HTML output:", html)
|
|
355
|
+
|
|
356
|
+
output_json = json.loads(e.to_json())
|
|
357
|
+
output_str = json.dumps(output_json, indent=2)
|
|
358
|
+
print("Output JSON:", output_str)
|
|
359
|
+
|
|
360
|
+
# Should have exactly 4 blocks
|
|
361
|
+
assert len(output_json["blocks"]) == 4
|
|
362
|
+
|
|
363
|
+
# All should be paragraphs (not raw blocks)
|
|
364
|
+
for block in output_json["blocks"]:
|
|
365
|
+
assert block["type"] == "paragraph"
|
|
366
|
+
|
|
367
|
+
# First block should preserve content and alignment
|
|
368
|
+
assert output_json["blocks"][0]["data"]["text"] == "start"
|
|
369
|
+
# alignmentTune left is implied
|
|
370
|
+
|
|
371
|
+
# Second block should preserve content and alignment (the "simple" case that was disappearing)
|
|
372
|
+
assert output_json["blocks"][1]["data"]["text"] == "simpel"
|
|
373
|
+
assert output_json["blocks"][1]["tunes"]["alignmentTune"]["alignment"] == "right"
|
|
374
|
+
|
|
375
|
+
# Third block should preserve the bold content and alignment
|
|
376
|
+
assert (
|
|
377
|
+
"<b>moeilijk </b>" in output_json["blocks"][2]["data"]["text"]
|
|
378
|
+
or "<b>moeilijk</b>" in output_json["blocks"][2]["data"]["text"]
|
|
379
|
+
)
|
|
380
|
+
assert output_json["blocks"][2]["tunes"]["alignmentTune"]["alignment"] == "center"
|
|
381
|
+
|
|
382
|
+
# Fourth block should preserve content and alignment
|
|
383
|
+
assert output_json["blocks"][3]["data"]["text"] == "eind"
|
|
384
|
+
# alignmentTune left is implied
|
|
385
|
+
|
|
386
|
+
assert "raw" not in output_str
|
|
387
|
+
assert "html" not in output_str
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
# {"time":1770300217211,"blocks":[{"id":"Smj3WkpMq0","type":"paragraph","data":{"text":"start <b>fancy</b> eind"},"tunes":{"alignmentTune":{"alignment":"right"}}}],"version":"2.30.7"}
|
edwh_editorjs-2.6.0/blog.md
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
Via de pilot **‘Ambtenaar in de Praktijk’** doen Leidse ambtenaren gerichte praktijkervaring op in de stad. Zo loopt Lies Timmering, projectleider van de **Leidse Gelijke Kansen Aanpak**, elke woensdagmorgen mee bij **BuZz**, waar zij te vinden is bij de buurtsoep en meewerkt met bewoners en vrijwilligers. In deze blog deelt Lies haar persoonlijke reflectie op wat deze ervaringen voor haar betekenen en hoe ze helpen om beleid beter te laten aansluiten op wat er écht speelt in de stad.
|
|
2
|
-
|
|
3
|
-
<editorjs type="image" caption="Foto: BuZz Leiden " border="" background="" stretched="1" url="https://py4web.onderwijsindeleidseregio.nl/thumb/upload/af1ac9a1-fd7a-416e-a5dc-6ee97266397d.jpg?hash=075d9622bd25e284eb23ea34a22537dd707d8437" />
|
|
4
|
-
|
|
5
|
-
***
|
|
6
|
-
|
|
7
|
-
Vandaag pakte ik mijn eed en belofte er nog eens bij. Ik beloofde als ambtenaar bij de start van mijn functie ‘plechtig’ het volgende:
|
|
8
|
-
|
|
9
|
-
1. Ik zal de gerechtigheid dienen.
|
|
10
|
-
2. Ik zal trouw zijn aan de grondwet en de overige wetten van het rijk.
|
|
11
|
-
3. Ik zal mij inzetten voor het welzijn en de rechten van alle burgers van Leiden.
|
|
12
|
-
4. Ik zal onpartijdig handelen en de democratische beginselen en procedures respecteren.
|
|
13
|
-
5. Ik ben loyaal ten opzichte van de bestuursorganen van de stad en het door hen vastgestelde beleid.
|
|
14
|
-
6. Ik zal van de overheidsmacht die mij is toevertrouwd geen misbruik maken.
|
|
15
|
-
7. Ik zal zorgvuldig omgaan met informatie.
|
|
16
|
-
8. Ik zal de geloofwaardigheid van het ambt niet schaden.
|
|
17
|
-
9. Ik zal het vertrouwen, dat de burger in mij mag stellen, niet beschamen.
|
|
18
|
-
10. Ik zal mij een zelfstandig oordeel vormen over de morele juistheid van mijn handelen.
|
|
19
|
-
|
|
20
|
-
Tevens verklaar ik dat ik bekend ben met de gedragscode voor ambtenaren van de gemeente Leiden en deze als leidraad zal hanteren.
|
|
21
|
-
|
|
22
|
-
**Dat verklaar en beloof ik!**
|
|
23
|
-
|
|
24
|
-
Toen ik mocht starten bij de gemeente had ik weinig beeld bij wat een ambtenaar nou precies deed. Wat het betekende om te werken voor een gemeente. Mensen zeiden me: “Bij de gemeente, jij? Dat gaat jou toch allemaal veel te traag, dat is niks voor jou?!” Maar de inhoud van de functie sprak me ontzettend aan, het team waarin ik werd ontvangen was ongelofelijk warm en de rest zou ik nog ontdekken.
|
|
25
|
-
|
|
26
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>Werk dat ertoe doet </b> </editorjs>
|
|
27
|
-
|
|
28
|
-
Toen ik mocht starten bij de gemeente had ik weinig beeld bij wat een ambtenaar nou precies deed. Wat het betekende om te werken voor een gemeente. Mensen zeiden me: “Bij de gemeente, jij? Dat gaat jou toch allemaal veel te traag, dat is niks voor jou?!” Maar de inhoud van de functie sprak me ontzettend aan, het team waarin ik werd ontvangen was ongelofelijk warm en de rest zou ik nog ontdekken.
|
|
29
|
-
|
|
30
|
-
Later kon ik al deze mensen vertellen dat ik een geweldige baan had gevonden. Een baan waarvan mijn hart sneller ging kloppen. Ik mocht werk doen dat ertoe deed. Niks ging langzaam, eerder te snel. Nog nooit werkte ik in zo’n dynamische omgeving als een gemeente, geen dag is hetzelfde!
|
|
31
|
-
|
|
32
|
-
Iedereen die mij spreekt, die weet: ik geniet van mijn werk. Ik mag met ontzettend fijne mensen werken en ik mag werk doen dat ertoe doet. Ik mag mij inzetten voor het welzijn en de rechten van burgers in Leiden. Net zoals ik heb beloofd.
|
|
33
|
-
|
|
34
|
-
Wat ik wel merkte toen ik vanuit mijn functie met zoveel mogelijk partners en burgers in de stad ging praten, was dat er een flinke kloof was tussen de beleidswereld (gemeente, overheid) en de leefwereld van mensen, de wijken, de scholen, de plekken waarvoor het beleid werd gemaakt. Daar ervaarden mensen soms afstand, onbegrip en frustratie doordat de realiteit weerbarstig is en het beleid zwart-wit. Dit is natuurlijk niet iets Leids. Dit is landelijk zo, dit is internationaal zo. De afstand tussen overheid en ‘burgers’ lijkt groot, en bovendien ook steeds groter te worden. Regels, procedures, systemen. Maar ook simpelweg taal. Alsof het verschillende talen zijn, maar het zijn zeker verschillende belevingen...
|
|
35
|
-
|
|
36
|
-
Wat in mijn eed en belofte niet echt scherp wordt, is het waartoe van mijn werk. Waartoe beloof ik te doen wat ik als ambtenaar ga doen? Zeker, trouw aan de wet, zorgvuldigheid, inzetten voor het welzijn, loyaal aan het stadsbestuur. Ja. Maar waartoe doe ik dit dan eigenlijk?
|
|
37
|
-
|
|
38
|
-
Volgens AI bestaan “\[...] ambtenaren om het functioneren van de samenleving te waarborgen door het uitvoeren van overheidstaken, het ontwikkelen en uitvoeren van beleid, en het leveren van publieke diensten. Zij zorgen voor de handhaving van wetten, innen belastingen, verlenen vergunningen en ondersteunen politieke bestuurders.”
|
|
39
|
-
|
|
40
|
-
Herkenbaar en zeker, dat doen we. Maar nogmaals, waartoe doen we dit? Anno 2026 is een ambtenaar toch zeker iemand die zich bewust is van het feit dat de functie bestaat bij de gratie van deze vorm van democratie? Dat het doel is om de inwoners te dienen, en dus ook nabij te zijn om zelf te ervaren dat je werk goed uitpakt, en dus dienend is aan het welzijn en de rechten van de burgers? Soms raak ik zelf zo overweldigd door de systemen waarin we allen ons werk proberen uit te voeren dat het eerder voelt alsof je trouw hebt beloofd te zijn aan Excel-sheets en processen van besluitvorming, dan aan je inzetten voor het welzijn van de inwoners. De praktijk van een ambtenaar is ook best weerbarstig…
|
|
41
|
-
|
|
42
|
-
Tim ‘s Jongers <a href="https://decorrespondent.nl/15957/beleid-wordt-beter-als-ambtenaren-achter-hun-laptop-vandaan-komen-daarom-een-pleidooi-voor-een-maatschappelijke-diensttijd/91ead8ad-ffb7-0a2a-15bf-316fe8e4578a" target="_blank">schreef eens dat beleid beter wordt als ambtenaren achter hun laptops vandaan komen </a> en onderdeel worden van de leefwereld waarvoor zij beleid maken. In Leiden kennen wij gelukkig verschillende werkprincipes die ons hierop wijzen, zo ook: wij werken van buiten (wat leeft in de stad) naar binnen (we maken beleid dat aansluit op wat leeft in de stad).
|
|
43
|
-
|
|
44
|
-
<editorjs type='alignment' tag='h2' alignment='center'>Leidse Ambtenaren in de Praktijk </editorjs>
|
|
45
|
-
|
|
46
|
-
Eén van de projecten die vanuit de Leidse Gelijke Kansen Aanpak is opgestart is de pilot ‘Ambtenaar in de Praktijk’. Via Ambtenaar in de Praktijk, doen ambtenaren van gemeente Leiden gerichte praktijkervaring op. Op die manier ervaren zij direct hoe beleid uitpakt in de praktijk en die kennis en ervaring brengen zij mee terug naar hun beleidsafdelingen.
|
|
47
|
-
|
|
48
|
-
“Ik krijg door het meewerken in de praktijk van een brugfunctionaris meer inzicht in de problematieken die scholen binnenkomen. Ik realiseerde me dat problemen zichtbaar worden via het kind maar dat de problemen altijd verder reiken.” — Ambtenaar in de praktijk
|
|
49
|
-
|
|
50
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>Gerichte praktijkervaring via partners in de stad </b> </editorjs>
|
|
51
|
-
|
|
52
|
-
In aanloop naar deze pilot hebben we de standpunten van onze samenwerkingspartners geïnventariseerd en hen gevraagd: ‘stel dat we dit gaan doen, wat zou je dan waardevolle praktijkervaring vinden voor een ambtenaar en hoe kun je dat faciliteren?’
|
|
53
|
-
|
|
54
|
-
Op die manier zijn we gekomen tot een soort menukaart met daarop min of meer kant-en-klare ideeën voor het opdoen van praktijkervaringen. Denk aan het meewerken in een buurthuis of buurtontmoetingsplek tijdens een inloop voor inwoners. Of denk aan het meewerken bij een speelgroep van JES Rijnland waar ouders met zeer jonge kinderen komen. Of misschien het meewerken bij een spreekuur rondom schulden. Of meewerken op een Leidse basisschool om zo meer mee te krijgen van wat er zoals speelt in en rond het onderwijs.
|
|
55
|
-
|
|
56
|
-
“Bij de speelgroep merk ik dat er vaak sprake is van een taalbarrière. Ouders gebruiken de ontmoetingen bij een speelgroep dus ook om onderling informatie uit te wisselen. Het is een soort vindplaats. Ouders en de professional(s) van de speelgroep delen kennis en helpen elkaar dus via deze plek.” — Ambtenaar in de praktijk
|
|
57
|
-
|
|
58
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>De gemeente organiseert en faciliteert </b> </editorjs>
|
|
59
|
-
|
|
60
|
-
Het is geweldig fijn dat gemeente Leiden haar ambtenaren hiervoor 32u op jaarbasis ruimte biedt. Op die manier geven we echt uitvoering aan ‘werken van buiten naar binnen’. De coördinatie van de pilot gebeurt vanuit de Leidse Gelijke Kansen Aanpak. Het is natuurlijk niet de bedoeling dat dit een verzwaring oplevert voor de partners in de stad. Het moet elkaar gaan versterken.
|
|
61
|
-
|
|
62
|
-
“Het is alleen al prachtig dat we nu zo nabij kunnen zijn. De partners voelen zich gezien en gehoord in hun werk. En andersom kun je ook een inkijkje geven in hoe het dan binnen de gemeente loopt, waarom dingen soms wat tijd vragen. Of gewoon door te zeggen, “Ja, wij balen er ook enorm van dat dit nog wat rommelig loopt. We werken er hard aan om dit beter te maken.” Het vertrouwen waarmee de partners deze pilot in de stad hebben ontvangen is geweldig. En nu op naar verdere uitbreiding!” — Ambtenaar in de praktijk
|
|
63
|
-
|
|
64
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>Ongelofelijk leerzame weken </b> </editorjs>
|
|
65
|
-
|
|
66
|
-
De reacties in de stad zijn dan ook positief; de partnerorganisaties benadrukken het belang van praktijkervaring voor ambtenaren. Het is zeer leerzaam om in de praktijk te ervaren dat jouw beeld van hoe iets uitwerkt, misschien moet worden bijgesteld omdat de praktijk nu eenmaal weerbarstig is.
|
|
67
|
-
|
|
68
|
-
“Op papier staat het mooi, maar in de praktijk valt het me op hoeveel je vraagt van partijen op het gebied van samenwerking en uitwisseling. Als je je handen dagelijks vol hebt aan het ondersteunen van inwoners, dan is het niet realistisch om te verwachten dat men ook nog zelf op zoek gaat naar allerlei samenwerkingen. Zonde, want je ziet wel hoeveel men onderling van die kennis zou kunnen profiteren. Zowel de professionals als inwoners.” — Ambtenaar in de praktijk
|
|
69
|
-
|
|
70
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>De volgende ronde gaat in maart van start </b> </editorjs>
|
|
71
|
-
|
|
72
|
-
De eerste ronde van deze mooie pilot is bijna afgerond. De betrokken ambtenaren ronden de pilot met elkaar af door de geleerde en ervaren lessen met elkaar om te zetten naar advies terug naar de beleidswereld. Onderling worden deze natuurlijk ook vast gedeeld met de volgende groep ambtenaren en met de betrokken partijen. Het is een prachtig leerproces. Wat leren wij van hen? Wat leren zij van ons? Wat betekent dit en hoe kunnen we dit leren omzetten in het daadwerkelijk verkleinen van die kloof tussen praktijk en beleid?
|
|
73
|
-
|
|
74
|
-
Zo geeft een collega aan dat ze ziet hoe brieven in duidelijke taal vanuit de gemeente, toch vaak niet duidelijk genoeg lijken te zijn voor inwoners. Dat kun je niet weten, tenzij je spreekt met de inwoners zelf én met de professionals die hen ondersteunen.
|
|
75
|
-
|
|
76
|
-
“Bij het Goede Buur spreekuur werk ik met gepassioneerde hulpverleners die de inwoner zo goed mogelijk willen helpen.” — Ambtenaar in de praktijk
|
|
77
|
-
|
|
78
|
-
Eén ding is zeker: dit zou onderdeel moeten kunnen zijn van je werk. Gemeente Leiden werkt graag kennisgericht, en via deze praktijkervaring maken we daar ook praktijkervaringskennisgericht werken van. Minimaal ieder jaar een week meewerken in de praktijk. De mouwen opstropen, doen, ondergaan en ervaren. Dit zou toch voor eenieder moeten gelden in elke positie waarbij jouw beleid invloed heeft op de ander?
|
|
79
|
-
|
|
80
|
-
<editorjs type='alignment' tag='p' alignment='center'> <b>College in de Praktijk? </b> </editorjs>
|
|
81
|
-
|
|
82
|
-
Pasgeleden opperde een collega dat we misschien ook moeten denken aan een uitbreiding van de pilot; ‘College in de Praktijk’, zodat na de verkiezingen het college van wethouders en burgemeester ook de Leidse praktijk echt kan ervaren. Een werkbezoek is namelijk echt iets heel anders als gewoon even ergens zelf de koffie zetten, stoelen uitklappen voor de vele inwoners die binnenkomen, samen soep koken, luisteren naar de verhalen van zij die even steun nodig hebben of vragen komen stellen. Zij die even warmte opzoeken omdat het thuis koud is. Of even stoom komen afblazen omdat ze niet als volwaardig worden gezien...
|
|
83
|
-
|
|
84
|
-
“Heel eerlijk? Ik had geen idee. Ik wist het wel, maar ik realiseerde me het niet. Zelf voelen hoe het moet zijn om geen netwerk te hebben, om geen idee te hebben van de wereld om je heen. Zoveel te bieden, zo slim, getalenteerd. Zo betrokken en sociaal. Maar toch vast blijven zitten omdat je nu eenmaal de weg niet kent. Je denkt, dat hebben we allemaal goed ingeregeld! Maar in de praktijk zie je dat het niet zo makkelijk is...” — Ambtenaar in de praktijk
|
|
85
|
-
|
|
86
|
-
***
|
edwh_editorjs-2.6.0/debug.py
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
|
|
3
|
-
from editorjs import EditorJS
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def main():
|
|
7
|
-
blog = Path("blog.md").read_text()
|
|
8
|
-
|
|
9
|
-
ejs = EditorJS.from_markdown(blog)
|
|
10
|
-
|
|
11
|
-
# if html = <editorjs type='alignment' tag='p' alignment='center'> <b>Werk dat ertoe doet </b> </editorjs>
|
|
12
|
-
# assert parse_html(html).type == 'alignment'
|
|
13
|
-
|
|
14
|
-
print(ejs.to_html())
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if __name__ == "__main__":
|
|
18
|
-
main()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.6.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|