From 241e5af2d3dacbb9525aab63e315d0d2786f1b9c Mon Sep 17 00:00:00 2001 From: Jaap Joris Vens Date: Thu, 20 Feb 2020 10:49:11 +0100 Subject: [PATCH] Form logic: only save if valid, delete pages when the last sections is deleted --- cms/static/cms/cms.scss | 29 ++++++++++++++++--------- cms/static/cms/cms.scss.css | 24 +++++++++++++-------- cms/static/cms/cms.scss.css.map | 2 +- cms/templates/cms/edit.html | 6 +++++- cms/views.py | 38 ++++++++++++++++++--------------- 5 files changed, 61 insertions(+), 38 deletions(-) diff --git a/cms/static/cms/cms.scss b/cms/static/cms/cms.scss index e6f435d..57482e9 100644 --- a/cms/static/cms/cms.scss +++ b/cms/static/cms/cms.scss @@ -180,6 +180,10 @@ div.edit { right: 1em; bottom: 1em; z-index: 1000; + button { + padding: 0; + outline: none; + } img { width: 75px; height: auto; @@ -262,15 +266,6 @@ form.cms { margin-top: 3em; } - div.global_error { - border: 2px dotted red; - padding: 10px; - margin: 1em -10px; - background: #f001; - color: red; - font-weight: bold; - } - fieldset { padding: 2em; margin-bottom: 2em; @@ -370,7 +365,7 @@ form.cms { padding: 0; list-style: none; color: red; - font-size: 12px !important; + font-size: 12px; li { margin: 0; @@ -378,6 +373,20 @@ form.cms { } } + div.global_error { + border: 2px dotted red; + padding: 10px; + margin: 1em -10px; + background: #f001; + color: red; + font-weight: bold; + + ul.errorlist { + margin: 0; + font-size: inherit; + } + } + .errors { color: red; font-weight: bold; diff --git a/cms/static/cms/cms.scss.css b/cms/static/cms/cms.scss.css index b0299cd..7b8b220 100644 --- a/cms/static/cms/cms.scss.css +++ b/cms/static/cms/cms.scss.css @@ -133,6 +133,9 @@ div.edit { right: 1em; bottom: 1em; z-index: 1000; } + div.edit.page button { + padding: 0; + outline: none; } div.edit.page img { width: 75px; height: auto; } @@ -183,14 +186,6 @@ section.contact div#message { form.cms section { margin-top: 3em; } -form.cms div.global_error { - border: 2px dotted red; - padding: 10px; - margin: 1em -10px; - background: #f001; - color: red; - font-weight: bold; } - form.cms fieldset { padding: 2em; margin-bottom: 2em; @@ -273,11 +268,22 @@ form.cms ul.errorlist { padding: 0; list-style: none; color: red; - font-size: 12px !important; } + font-size: 12px; } form.cms ul.errorlist li { margin: 0; padding: 0; } +form.cms div.global_error { + border: 2px dotted red; + padding: 10px; + margin: 1em -10px; + background: #f001; + color: red; + font-weight: bold; } + form.cms div.global_error ul.errorlist { + margin: 0; + font-size: inherit; } + form.cms .errors { color: red; font-weight: bold; } diff --git a/cms/static/cms/cms.scss.css.map b/cms/static/cms/cms.scss.css.map index f9c80f0..72cec25 100644 --- a/cms/static/cms/cms.scss.css.map +++ b/cms/static/cms/cms.scss.css.map @@ -5,5 +5,5 @@ "cms.scss" ], "names": [], - "mappings": "AAKA,AAAA,IAAI,EAAE,IAAI,CAAC;EACT,WAAW,EANN,UAAU;EAOf,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC,GACX;;AAED,AAAA,CAAC,CAAC;EACA,KAAK,EAVA,OAAO;EAWZ,eAAe,EAAE,IAAI,GAItB;EAND,AAGE,CAHD,CAGG,KAAK,CAAC;IACN,eAAe,EAAE,SAAS,GAC3B;;AAGH,AAAA,KAAK,CAAC;EACJ,eAAe,EAAE,QAAQ,GAO1B;EARD,AAEE,KAFG,CAEH,EAAE,EAFJ,KAAK,CAEC,EAAE,CAAC;IACL,OAAO,EAAE,GAAG,GACb;EAJH,AAKE,KALG,CAKH,EAAE,CAAC;IACD,aAAa,EAAE,eAAe,GAC/B;;AAGH,AAAA,CAAC,AAAA,OAAO,EAAE,MAAM,AAAA,OAAO,CAAC;EACtB,MAAM,EAAE,OAAO;EACf,WAAW,EAAE,UAAU;EACvB,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,IAAI;EACjB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,YAAY;EACrB,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,QAAQ;EACjB,UAAU,EArCL,OAAO;EAsCZ,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,UAAU,GAYvB;EAxBD,AAcE,CAdD,AAAA,OAAO,CAcJ,KAAK,EAdC,MAAM,AAAA,OAAO,CAcnB,KAAK,CAAC;IACN,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA3ClB,OAAO;IA4CV,KAAK,EA5CF,OAAO,GA6CX;EAlBH,AAmBE,CAnBD,AAAA,OAAO,CAmBJ,MAAM,EAnBA,MAAM,AAAA,OAAO,CAmBnB,MAAM,CAAC;IACP,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG,GACV;;AAGH,AAAA,GAAG,AAAA,QAAQ,CAAC;EACV,UAAU,EAAE,UAAU;EACtB,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,MAAM,GAChB;;AAED,AAAA,GAAG,AAAA,OAAO,CAAC;EACT,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI,GACZ;;AAED,AAAA,GAAG,CAAC;EACF,OAAO,EAAE,CAAC,GAwGX;EAzGD,AAGE,GAHC,CAGD,MAAM,AAAA,UAAU,CAAC;IACf,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC;IACV,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC,GAcT;IArBH,AASI,GATD,CAGD,MAAM,AAAA,UAAU,CAMd,gBAAgB,EATpB,GAAG,CAGD,MAAM,AAAA,UAAU,CAMI,gBAAgB,CAAC,MAAM,EAT7C,GAAG,CAGD,MAAM,AAAA,UAAU,CAM6B,gBAAgB,CAAC,KAAK,CAAC;MAChE,UAAU,EA3ET,OAAO,GA4ET;IAXL,AAYI,GAZD,CAGD,MAAM,AAAA,UAAU,AASb,UAAU,CAAC;MACV,QAAQ,EAAE,KAAK,GAChB;IAdL,AAeI,GAfD,CAGD,MAAM,AAAA,UAAU,CAYZ,KAAK,CAAC;MACN,OAAO,EAAE,YAAY,GACtB;IAjBL,AAkBI,GAlBD,CAGD,MAAM,AAAA,UAAU,CAeZ,KAAK,CAAC;MACN,OAAO,EAAE,eAAe,GACzB;EApBL,AAuBE,GAvBC,CAuBD,EAAE,CAAC;IACD,UAAU,EAAE,GAAG,CAAC,KAAK,CAzFlB,OAAO;IA0FV,aAAa,EAAE,GAAG,CAAC,KAAK,CA1FrB,OAAO;IA2FV,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,KAAK,GAerB;IAlDH,AAqCI,GArCD,CAuBD,EAAE,CAcA,EAAE,CAAC;MACD,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,OAAO,EAAE,YAAY,GAStB;MAjDL,AA0CM,GA1CH,CAuBD,EAAE,CAcA,EAAE,CAKA,CAAC,CAAC;QACA,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,IAAI,GAClB;EAIL,MAAM,mBACJ;IArDJ,AAqDI,GArDD,CAqDC,CAAC,CAAC,KAAK,CAAA,GAAK,CAAA,KAAK,GArDrB,GAAG,CAqDqB,CAAC,AAAA,QAAQ,CAAC;MAC5B,eAAe,EAAE,IAAI;MACrB,KAAK,EAAE,KAAK;MACZ,UAAU,EAzHT,OAAO,GA0HT;IAzDL,AA2DI,GA3DD,CA2DC,MAAM,AAAA,UAAU,CAAC;MACf,OAAO,EAAE,IAAI,GACd,EAJA;EAOH,MAAM,mBAhER;IAAA,AAAA,GAAG,CAAC;MAiEA,OAAO,EAAE,CAAC,GAwCb;MAzGD,AAmEI,GAnED,CAmEC,MAAM,AAAA,UAAU,CAAC;QACf,OAAO,EAAE,KAAK,GACf;MArEL,AAsEI,GAtED,CAsEC,EAAE,AAAA,KAAK,CAAC;QACN,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,GAAG;QAChB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAgBhB,UAAU,EAAE,QAAQ;QACpB,SAAS,EAAE,gBAAgB,GAI5B;QAvGL,AAoFM,GApFH,CAsEC,EAAE,AAAA,KAAK,CAcL,EAAE,CAAC;UACD,KAAK,EAAE,IAAI;UACX,UAAU,EAAE,UAAU;UACtB,OAAO,EAAE,GAAG;UACZ,MAAM,EAAE,KAAK;UACb,aAAa,EAAE,cAAc;UAC7B,WAAW,EAAE,GAAG;UAChB,UAAU,EAAE,MAAM,GAKnB;UAhGP,AA6FQ,GA7FL,CAsEC,EAAE,AAAA,KAAK,CAcL,EAAE,CASA,CAAC,CAAC;YACA,eAAe,EAAE,IAAI,GACtB;QA/FT,AAoGM,GApGH,CAsEC,EAAE,AAAA,KAAK,AA8BJ,QAAQ,CAAC;UACR,SAAS,EAAE,aAAa,GACzB,EAGN;AAED,AAAA,GAAG,AAAA,KAAK,CAAC;EACP,UAAU,EAAE,MAAM,GAcnB;EAfD,AAEE,GAFC,AAAA,KAAK,AAEL,KAAK,CAAC;IACL,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,IAAI,GAQd;IAdH,AAOI,GAPD,AAAA,KAAK,AAEL,KAAK,CAKJ,GAAG,CAAC;MACF,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI,GACb;IAVL,AAWI,GAXD,AAAA,KAAK,AAEL,KAAK,CASJ,CAAC,CAAC,MAAM,EAXZ,GAAG,AAAA,KAAK,AAEL,KAAK,CASM,MAAM,CAAC,MAAM,EAX3B,GAAG,AAAA,KAAK,AAEL,KAAK,CASqB,CAAC,CAAC,KAAK,EAXpC,GAAG,AAAA,KAAK,AAEL,KAAK,CAS8B,MAAM,CAAC,KAAK,CAAC;MAC7C,OAAO,EAAE,IAAI,GACd;;AAIL,AAAA,GAAG,AAAA,KAAK,CAAC,CAAC,EAAE,GAAG,AAAA,KAAK,CAAC,MAAM,EAAE,CAAC,AAAA,KAAK,CAAA;EACjC,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,eAAe;EAC1B,WAAW,EAAE,iBAAiB;EAC9B,KAAK,EAAE,cAAc;EACrB,cAAc,EAAE,eAAe;EAC/B,eAAe,EAAE,IAAI;EACrB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,MAAM;EACf,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,OAAO,GAQhB;EAnBD,AAaE,GAbC,AAAA,KAAK,CAAC,CAAC,CAaN,MAAM,EAbE,GAAG,AAAA,KAAK,CAAC,MAAM,CAavB,MAAM,EAbmB,CAAC,AAAA,KAAK,CAa/B,MAAM,CAAC;IACP,OAAO,EAAE,IAAI,GACd;EAfH,AAgBE,GAhBC,AAAA,KAAK,CAAC,CAAC,CAgBN,KAAK,EAhBG,GAAG,AAAA,KAAK,CAAC,MAAM,CAgBvB,KAAK,EAhBoB,CAAC,AAAA,KAAK,CAgB/B,KAAK,CAAC;IACN,OAAO,EAAE,IAAI,GACd;;AAGH,AAAA,OAAO,CAAC;EACN,KAAK,EAAE,IAAI,GAmCZ;EApCD,AAII,OAJG,CAGL,GAAG,AAAA,MAAM,CACP,GAAG,CAAC;IACF,KAAK,EAAE,IAAI,GACZ;EANL,AASE,OATK,CASL,GAAG,AAAA,MAAM,CAAC;IACR,UAAU,EAAE,MAAM,GACnB;EAXH,AAiBI,OAjBG,CAgBL,GAAG,AAAA,MAAM,CACP,GAAG,AAAA,OAAO,CAAC;IACT,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,GAAG;IACnB,QAAQ,EAAE,QAAQ,GASnB;IA7BL,AAsBM,OAtBC,CAgBL,GAAG,AAAA,MAAM,CACP,GAAG,AAAA,OAAO,CAKR,MAAM,CAAC;MACL,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,IAAI,EAAE,CAAC;MACP,GAAG,EAAE,CAAC,GACP;EA5BP,AAgCE,OAhCK,CAgCL,GAAG,AAAA,OAAO,CAAC;IACT,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,GACf;;AAGH,AACE,OADK,AAAA,QAAQ,CACb,GAAG,AAAA,QAAQ,CAAC;EACV,OAAO,EAAE,IAAI,GACd;;AAGH,mBAAmB;AAEnB,AACE,IADE,AAAA,IAAI,CACN,OAAO,CAAC;EACN,UAAU,EAAE,GAAG,GAChB;;AAHH,AAKE,IALE,AAAA,IAAI,CAKN,GAAG,AAAA,aAAa,CAAC;EACf,MAAM,EAAE,cAAc;EACtB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,SAAS;EACjB,UAAU,EAAE,KAAK;EACjB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,IAAI,GAClB;;AAZH,AAcE,IAdE,AAAA,IAAI,CAcN,QAAQ,CAAC;EACP,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,GAAG,GAKnB;EAvBH,AAoBI,IApBA,AAAA,IAAI,CAcN,QAAQ,CAMN,MAAM,CAAC;IACL,SAAS,EAAE,MAAM,GAClB;;AAtBL,AAyBE,IAzBE,AAAA,IAAI,CAyBN,GAAG,AAAA,UAAU,CAAC;EACZ,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,UAAU,GAWvB;EAvCH,AA8BI,IA9BA,AAAA,IAAI,CAyBN,GAAG,AAAA,UAAU,AAKV,KAAK,EA9BV,IAAI,AAAA,IAAI,CAyBN,GAAG,AAAA,UAAU,AAKF,OAAO,EA9BpB,IAAI,AAAA,IAAI,CAyBN,GAAG,AAAA,UAAU,AAKQ,KAAK,CAAC;IACvB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI,GACZ;EAlCL,AAmCI,IAnCA,AAAA,IAAI,CAyBN,GAAG,AAAA,UAAU,AAUV,OAAO,CAAC;IACP,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK,GACb;;AAtCL,AAwCE,IAxCE,AAAA,IAAI,CAwCN,GAAG,AAAA,UAAU,AAAA,MAAM,CAAC;EAClB,MAAM,EAAE,cAAc;EACtB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,KAAK,GAClB;;AA7CH,AA+CI,IA/CA,AAAA,IAAI,CA8CN,GAAG,AAAA,UAAU,AAAA,SAAS,CACpB,GAAG,AAAA,MAAM,CAAC;EACR,WAAW,EAAE,GAAG,GACjB;;AAjDL,AAuDE,IAvDE,AAAA,IAAI,CAuDN,GAAG,AAAA,MAAM,EAvDX,IAAI,AAAA,IAAI,CAuDK,KAAK,CAAC;EACf,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG,GACnB;;AA5DH,AA8DE,IA9DE,AAAA,IAAI,CA8DN,GAAG,AAAA,MAAM,CAAC;EACR,QAAQ,EAAE,MAAM,GACjB;;AAhEH,AAkEE,IAlEE,AAAA,IAAI,CAkEN,GAAG,AAAA,SAAS,EAlEd,IAAI,AAAA,IAAI,CAkEQ,IAAI,AAAA,SAAS,CAAC;EAC1B,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,eAAe;EAC1B,WAAW,EAAE,cAAc,GAC5B;;AAtEH,AAwEE,IAxEE,AAAA,IAAI,CAwEN,IAAI,AAAA,SAAS,CAAC;EACZ,UAAU,EAAE,MAAM,GACnB;;AA1EH,AA4EE,IA5EE,AAAA,IAAI,CA4EN,KAAK,EA5EP,IAAI,AAAA,IAAI,CA4EC,MAAM,EA5Ef,IAAI,AAAA,IAAI,CA4ES,QAAQ,CAAC;EACtB,UAAU,EAAE,KAAK;EACjB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,gBAAgB;EACxB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,OAAO;EAChB,WAAW,EAAE,OAAO,GACrB;;AAxFH,AAyFE,IAzFE,AAAA,IAAI,CAyFN,KAAK,CAAA,AAAA,IAAC,CAAD,QAAC,AAAA,EAAe;EACnB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM,GACvB;;AA7FH,AA8FE,IA9FE,AAAA,IAAI,CA8FN,KAAK,CAAA,AAAA,IAAC,EAAD,KAAC,AAAA,EAAa;EACjB,WAAW,EAAE,IAAI,GAClB;;AAhGH,AAiGE,IAjGE,AAAA,IAAI,CAiGN,QAAQ,CAAC;EACP,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,GAAG,GACjB;;AArGH,AAsGE,IAtGE,AAAA,IAAI,CAsGN,MAAM,CAAC;EACL,UAAU,EAAE,KAAK;EACjB,YAAY,EAAE,GAAG,GAClB;;AAzGH,AA2GE,IA3GE,AAAA,IAAI,CA2GN,EAAE,AAAA,UAAU,CAAC;EACX,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,GAAG;EACV,SAAS,EAAE,eAAe,GAM3B;EAvHH,AAmHI,IAnHA,AAAA,IAAI,CA2GN,EAAE,AAAA,UAAU,CAQV,EAAE,CAAC;IACD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,GACX;;AAtHL,AAyHE,IAzHE,AAAA,IAAI,CAyHN,OAAO,CAAC;EACN,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,IAAI,GAClB" + "mappings": "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" } \ No newline at end of file diff --git a/cms/templates/cms/edit.html b/cms/templates/cms/edit.html index bbb527a..06cbac8 100644 --- a/cms/templates/cms/edit.html +++ b/cms/templates/cms/edit.html @@ -11,7 +11,11 @@ {% if form %}
- {% if form.errors or formset.errors %} + {% if form.non_field_errors %} +
+ {{form.non_field_errors}} +
+ {% elif form.errors or formset.errors %}
{% trans 'Please correct the error(s) below and save again' %}
diff --git a/cms/views.py b/cms/views.py index ebeee4e..f4badf9 100644 --- a/cms/views.py +++ b/cms/views.py @@ -1,13 +1,13 @@ import json import swapper +from django.shortcuts import redirect from django.views.generic import base, detail, edit from django.http import Http404, HttpResponseRedirect -from django.shortcuts import redirect +from django.utils.translation import gettext_lazy as _ from django.core.exceptions import ImproperlyConfigured from django.contrib.contenttypes.models import ContentType from django.contrib.auth.mixins import UserPassesTestMixin -#from django.http import HttpResponseRedirect, HttpResponseBadRequest from .decorators import register_view from .forms import PageForm, SectionForm, SectionFormSet @@ -37,7 +37,7 @@ class SectionFormView(edit.FormMixin, SectionView): form = self.get_form() if form.is_valid(): form.save(request) - return redirect(self.get_success_url()) + return HttpResponseRedirect(self.get_success_url()) return form class SectionFormSetView(SectionView): @@ -50,7 +50,7 @@ class SectionFormSetView(SectionView): formset = self.get_formset() if formset.is_valid(): formset.save(request) - return redirect(self.get_success_url()) + return HttpResponseRedirect(self.get_success_url()) return formset def get_formset(self): @@ -178,22 +178,26 @@ class EditPage(UserPassesTestMixin, edit.ModelFormMixin, base.TemplateResponseMi self.object = self.get_object() return self.render_to_response(self.get_context_data()) + def get_formset(self): + return SectionFormSet(self.request.POST, self.request.FILES, instance=self.object) + def post(self, request, *args, **kwargs): self.object = self.get_object() form = self.get_form() - if form.is_valid(): - page = form.save() - formset = SectionFormSet(request.POST, request.FILES, instance=page) - if formset.is_valid(): - if formset.save(): - if page.slug and not page.sections.exists(): # anymore - page.delete() - return HttpResponseRedirect('/') - return HttpResponseRedirect(page.get_absolute_url()) - else: - # TODO: show sensible error - formset.errors.append([{}, {'title': ['You have to add sections']}]) - formset = SectionFormSet(request.POST, request.FILES) + formset = self.get_formset() + + if form.is_valid() and formset.is_valid(): + if not self.object and not formset.has_changed(): + form.add_error(None, _('You can’t save a new page without adding any sections!')) + else: + page = form.save() + formset.instance = page + formset.save() + if page.slug and not page.sections.exists(): + page.delete() + return HttpResponseRedirect('/') + return HttpResponseRedirect(page.get_absolute_url()) + return self.render_to_response(self.get_context_data(form=form, formset=formset)) class CreatePage(EditPage):