Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic MassCommunicationAdmin model email newsletter template form field widget prototype #134

Open
wants to merge 189 commits into
base: master
Choose a base branch
from

Conversation

tmszi
Copy link
Member

@tmszi tmszi commented Oct 15, 2019

Basic MassCommunicationAdmin model email newsletter template form field widget prototype, which use ContentTools js library.

  • all internal, external css in the html email template is converted to inline form (compatible with email clients), before save model into db

@PetrDlouhy
Copy link
Contributor

Ahoj @tmszi,

zkoušel jsem ty newslettery, ale zatím se mi nepodařilo odeslat tak aby se šablona použila. Dával jsem "Uložit a odeslat testovací email". V mém prostředí to vypíše tělo e-mailu ve spuštěném Celery, ale tělo e-mailu neobsahuje žádné prvky z šablony.

Myslel jsem, že ty šablony budou spíš uložené v databázi, než aby to byly soubory přímo v kódu. Jde o to, že nebudeme měnit repozitář a nasazovat novou verzi pokaždé když si Diakonie vzpomene, že chce novou šablonu. Na druhou stranu to klidně může zůstat ve formátu Django šablony - s tím ať už si poradí, když jim k tomu napíšeme dokumentaci.

Taky mi nefunguje tlačítko "OK" u náhledu šablony (který je myslím trochu zbytečně moc agresivní a neumožňuje rychle prohlídnout víc šablon, protože se select box překryje tím overlayem).
Snímek obrazovky pořízený 2019-10-17 15-53-24

@tmszi
Copy link
Member Author

tmszi commented Oct 17, 2019

Zdar @PetrDlouhy

Spresním ako to funguje... Editovací dialóg slúži na interaktívne editovanie šablóny užívateľom vybranej default šablóny (z toho obrázku, ktorý si zaslal, to vyzerá, že sa ti nenačítali správne javascript knižnice ContentTools a teda sa ti to nesprávne vyrenderovalo, zasielam obrázok ako to má vyzerať). Prípadne na akom web browseri si to testoval? (u mňa som to testoval firefox/chromium, fungovalo mi to bez problémov)

  • python manage.py bower install

  • python manage.py collectstatic

Po interaktívnej úprave šablóny (ukončenie editácie uživateľom sa zmeny uložia do db modelu TemplateContent (html_template_editor app) pre danú šablónu. Po opätovnom načítaní šablóny, sa načítajú zmeny šablóny z db.

Po odkliknutí tlačidla Ok v editovacom dialógu sa zmeny prejavia v hodnote form fieldu template (hodnotou bude samotný html kód šablóny). A po uložení modelu MassCommunication sa obsah šablóny uloží normálne do db, ako keď si použil ten pôvodný wysiwyg editor tinymce. Tieto uvedené veci som otestoval, a fungovalo to.

Jediné čo som zatiaľ neotestoval je zaslanie emailu cez celery.

edit_dialog

Ahoj @tmszi,

zkoušel jsem ty newslettery, ale zatím se mi nepodařilo odeslat tak aby se šablona použila. Dával jsem "Uložit a odeslat testovací email". V mém prostředí to vypíše tělo e-mailu ve spuštěném Celery, ale tělo e-mailu neobsahuje žádné prvky z šablony.

Myslel jsem, že ty šablony budou spíš uložené v databázi, než aby to byly soubory přímo v kódu. Jde o to, že nebudeme měnit repozitář a nasazovat novou verzi pokaždé když si Diakonie vzpomene, že chce novou šablonu. Na druhou stranu to klidně může zůstat ve formátu Django šablony - s tím ať už si poradí, když jim k tomu napíšeme dokumentaci.

Taky mi nefunguje tlačítko "OK" u náhledu šablony (který je myslím trochu zbytečně moc agresivní a neumožňuje rychle prohlídnout víc šablon, protože se select box překryje tím overlayem).
Snímek obrazovky pořízený 2019-10-17 15-53-24

@tmszi
Copy link
Member Author

tmszi commented Oct 18, 2019

Zdar @PetrDlouhy,

Prerobil som nasledujúcich pár vecí:

  • nastavenie dlhšieho delay času pri prechode kurzorom myši nad kontajnerom email html šablóny, pre zobrazenie popover dialogu 'Edit template' -> menej 'agresívny' (slúžiaceho pre zobrazenie editovacieho modálneho dialógu šablóny )

  • nahradenie jQuery ui dialog knižnice za jQuery modal dialog (vizuálne vhodnejší) pre zobrazenie editovacieho modálneho dialógu šablóny emailu.

edit_dialog

Ešte doplním že po zeditovaní šablóny v modálnom editovacom dialógu (to znamená po zavretí tohto dialógu), je html kód šablóny upravený (konverzia interných/extrených css na inline formu, pričom sú použité iba css property, ktoré sú kompatibilné s väčšinou emailiových klientov, napr. nie je akceptovaná property margin, padding...)

Z toho teda vyplýva, že kód šablóny, ktorý sa potom zobrazuje vo form fielde template, môže byť odlišný (formátovanie) od toho ktorý sa zobrazí v editovacom modálnom dialógu šablóny (pretože tam sú podporované všetky css property). To budem musieť premyslieť ako nahradiť/obísť chýbajúce css property htlm kódom. Viac obrázok.
email_template

@tmszi tmszi force-pushed the mass_communication_email_templates branch from 1616f70 to 80984b7 Compare October 24, 2019 07:08
@PetrDlouhy
Copy link
Contributor

@tmszi Ahoj, díky za vysvětlení. Ještě to budeme muset celé pořádně testovat.
Aby nám to fungovalo na testovacím server, tak jsem ještě musel udělat tohle: bbbe377

Teď se mi ale děje jedna věc, která mě trochu mate. Na testovacím serveru se načte edit stránka bez šablony tak, že jsou rozhozené styly a zobrazuje se tam WYSIWYG editor. Styly jsou rozhozené, protože se tam z nějakého důvodu pokouší načíst styl theme.css, ke kterému je ale relativní cesta, která nefunguje:
Snímek obrazovky pořízený 2019-10-30 19-41-53

Na lokálu se mi tuhle chybu replikovat nepodařilo, a vypadá to v zásadě normálně, ale úplně tam chybí WYSIWYG editor:
Snímek obrazovky pořízený 2019-10-30 19-41-39

Tak nevím jak to má být správně. K testovacímu serveru ti případně můžu dát přístup.

@tmszi
Copy link
Member Author

tmszi commented Oct 30, 2019

Ahoj @PetrDlouhy.

Pri editácií MassCommunication modelu, by pri výbere možnosti 'Create new email body' v combo box widgete 'Choose how to create an email body', by mala prebehnúť inicializácia wysiwyg tinymce editora vo form fielde 'Template' a 'English template' (Textarea widget) . Respektíve pri prídaní nového modelu je táto možnosť prednastavená a wysiwyg editor by mal byť inicializovaný. U mňa na localhoste to vyzerá nasledovne:
edit_mass_communication_model
Ten chýbajúci wysiwyg tinymce editor (neprebehla inicializácia) vo form fielde 'Template' u teba na localhoste (tvoj druhý screenshot), v podstate to môže nastať, iba že by si nemal zaktualizovaný pipenv django-wysiwyg balík z Pipfile, alebo nenačítaním assets súborov (css/js) pre wysiwyg tinymce editor.

Ak je to možné, tak mi k tomu testovaciemu serveru pošli prístup, pozriem sa na to, dík.

@tmszi tmszi force-pushed the mass_communication_email_templates branch 3 times, most recently from f4c2809 to 84c50f6 Compare November 22, 2019 05:01
@tmszi
Copy link
Member Author

tmszi commented Nov 26, 2019

Zdar @PetrDlouhy,

  1. pipenv install -d (django package ticket + PR, napísal som aj vlastné riešenie PR)

  2. python manage.py bower install (pribudol colorPicker js lib)

  3. pipenv run python manage.py build_contenttools --npm $(which npm) (build custom ContentTools js lib)

  4. pipenv run python manage.py collectstatic

Následne by mal pribudnúť button tool v editovacej nástrojovej lište:
btn_tool

@PetrDlouhy
Copy link
Contributor

@tmszi Udělal jsem větev https://github.com/auto-mat/klub/tree/mass_comm_templates, která je rebasem tohohle kódu na aktuální větev diakonie. Zatím se mi to pořád nedaří nasadit, protože tvoje verze Djanga způsobuje následující chybu běhu compilemessages:

webui-popover#2.1.15 bower_components/webui-popover
└── jquery#3.4.1
jquery#3.4.1 bower_components/jquery
ContentTools#1.6.10 bower_components/ContentTools
jquery-ui#1.12.1 bower_components/jquery-ui
└── jquery#3.4.1
4909 static files copied to '/tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/staticfiles', 13973 post-processed.
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/other/locale/fr/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/other/locale/de/LC_MESSAGES
.
.
.
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ko/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/xxx/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/es_AR/LC_MESSAGES
The /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/es_AR/LC_MESSAGES/django.po file has a BOM (Byte Order Mark). Django only supports .po files encoded in UTF-8 and without any BOM.
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ja/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/hr/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ru/LC_MESSAGES
Execution of msgfmt failed: /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ko/LC_MESSAGES/django.po:24: 'msgstr' is not a valid Python brace format string, unlike 'msgid'. Reason: In the directive number 0, '�' cannot start a field name.
msgfmt: found 1 fatal error
Execution of msgfmt failed: /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ja/LC_MESSAGES/django.po:21: keyword "msgwhat" unknown
/tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/src/django/tests/i18n/commands/locale/ja/LC_MESSAGES/django.po:21:8: syntax error
msgfmt: found 2 fatal errors
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/model_utils/locale/zh_Hans/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/model_utils/locale/cs/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/model_utils/locale/de/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/model_utils/locale/ru/LC_MESSAGES
.
.
.
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/post_office/locale/it/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/post_office/locale/ru_RU/LC_MESSAGES
processing file django.po in /tmp/build_88d8d53fc26fe4ccb1fecfa875b9d01b/.heroku/python/lib/python3.6/site-packages/post_office/locale/de/LC_MESSAGES
CommandError: compilemessages generated one or more errors.
 !     Push rejected, failed to compile Python app.
 !     Push failed

Také si nemyslím, že je dobrý nápad nasazovat vlastní verzi Djanga, protože to hodně komplikuje případný update bezpečnostních záplat.
Než to tedy budeme chtít pullnout, budeme tam buď muset udělat workaround navrhovaný v tom ticketu a nebo overridovat ten ...StaticFilesStorage.converter() tvým kódem.

@PetrDlouhy
Copy link
Contributor

@tmszi Už se mi to podařilo nasadit, ale musel jsem tam udělat tenhle quickfix:
396c5a2

@tmszi
Copy link
Member Author

tmszi commented Jan 14, 2020

Zdar @PetrDlouhy,

Tá chyba, pri spoustení príkazu python manage.py compilemessages, nesúvisí s mojou úpravou kódu (vlastný fork/vetva Djanga). Chyba sa objaví aj pri použití oficiálneho releasu Django==2.2.9. Zbežne som pozrel, tak on sa snaží skompilovať svoje testovacie *.po súbory (uložené v venv) určené na testovanie, ktoré zámerne majú vyvolať chybu.

V configu pre travis sa pre kompiláciu messages použil tento commandDJANGO_SETTINGS_MODULE="" pipenv run django-admin compilemessages, čo je obdobou toho, čo si použil ty (quickfix).

Viď:

src/django/tests/i18n/commands/locale/ko/LC_MESSAGES/django.po

Obsah:

# This file intentionally contains a wrong msgstr that will produce
# a msgfmt error.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-04 12:01-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: foo/password_validation.py:17
#, python-brace-format
msgid "Your password must contain a symbol: {symbols}"
msgstr "[Ẏǿŭř ƥȧşşẇǿřḓ ḿŭşŧ ƈǿƞŧȧīƞ ȧ şẏḿƀǿŀ: {şẏḿƀǿŀş} ΐΰϖΐ ϖΐẛϕϐ]"

S tou vlastnou verziou Djanga, máš samozrejme pravdu (update bezpečnostních záplat...), potreboval som to vtedy vyriešit v čo najkratšom čase, aby chybu nevyhadzoval travis pri collectstatic commande. Pozriem teda vhodnejšie riešenie.

@tmszi tmszi force-pushed the mass_communication_email_templates branch 2 times, most recently from e94d037 to 6cd8d71 Compare January 15, 2020 12:20
@tmszi
Copy link
Member Author

tmszi commented Jan 16, 2020

Zdar @PetrDlouhy,

Prerobil som ten fix toho bugu, aby išlo používať official Django release, vytvorená je custom class CustomStaticFilesStorage, s override metódou url_converter(), commit.

Momentálne je tam teraz problém s tým že neprechádzajú testy konrétne aklub.tests.test_import_export.AdminImportExportTests (error: AttributeError: module 'tablib.formats._xls' has no attribute 'title') čo súvisí s aktualizáciu django-import-export balíku, resp. s povýšením dependency knižnice tablib na verziu 1.0.0. Už to aj stihli fixnúť, commit.

@tmszi tmszi force-pushed the mass_communication_email_templates branch 2 times, most recently from adb6361 to 1d99dc2 Compare January 23, 2020 05:08
@tmszi tmszi force-pushed the mass_communication_email_templates branch from 923673a to 6e7b306 Compare February 10, 2020 20:53
@tmszi tmszi force-pushed the mass_communication_email_templates branch from 2abc95b to 68cd872 Compare March 9, 2020 05:42
@tmszi tmszi force-pushed the mass_communication_email_templates branch from e236b36 to aa25f4d Compare April 6, 2020 04:30
@tmszi tmszi force-pushed the mass_communication_email_templates branch from aa25f4d to 4a5e929 Compare April 14, 2020 03:53
@tmszi tmszi force-pushed the mass_communication_email_templates branch 2 times, most recently from 4cc3ef5 to 2506bd2 Compare April 27, 2020 04:34
@tmszi tmszi force-pushed the mass_communication_email_templates branch from 4b6d00f to 35f5c1d Compare May 13, 2020 05:29
@tmszi tmszi force-pushed the mass_communication_email_templates branch 2 times, most recently from 0663fb0 to 850c466 Compare May 18, 2020 03:36
@tmszi tmszi force-pushed the mass_communication_email_templates branch from 850c466 to 13ef1b9 Compare June 2, 2020 05:30
tmszi and others added 28 commits November 26, 2020 19:37
@tmszi tmszi force-pushed the mass_communication_email_templates branch from baa5808 to eba74b1 Compare November 26, 2020 18:49
@timthelion timthelion changed the base branch from diakonie to master July 21, 2021 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants