From 1c6ba6eb4bcef830a896d3497dfb8a743758af38 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 6 Jun 2019 01:27:32 +0200 Subject: [PATCH] API improved --- app/data.db | Bin 36864 -> 36864 bytes app/data_old.db | Bin 0 -> 36864 bytes app/forms.py | 1 + app/models.py | 6 +- app/static/css/style.css | 25 ++++++- app/static/css/style_pub.css | 2 + app/templates/base.html | 7 +- app/templates/home.html | 99 ++++++++++++++++++++++++++ app/templates/index.html | 2 +- app/templates/singlepost.html | 7 +- app/templates/singlepost_minimal.html | 48 +++++++++++++ app/templates/writer.html | 17 +++-- app/views.py | 66 +++++++++++++++-- 13 files changed, 263 insertions(+), 17 deletions(-) create mode 100644 app/data_old.db create mode 100644 app/static/css/style_pub.css create mode 100644 app/templates/home.html create mode 100644 app/templates/singlepost_minimal.html diff --git a/app/data.db b/app/data.db index fb3203d9fea00b9ad11ca87aba7e2ec9719001f1..87d879c0ab5507f9998beceaafc4ee17496798a3 100644 GIT binary patch literal 36864 zcmeI5->)23R`1(Md>lJ*3=B-}+`*zSFtIhK+rMt&*po>(ah$}A?Hqj0j4wnXRCiZ* zS59?RQ&oMA&s-tp*F_icfHVjpq+x^vLINZtUO-|5i0}vSj>JoJr7M2CAkcl`h0k~G zy{qcj@nk?F5r+0;l5@JN_FjAa+G~B++S^+{c_XcpXi}8(xQ;INzNdHSQ18d1sMqT~ z%m0t^|M2G!KRgnC;lKL*g^!=MEit^2sL;z5Dq(9%jj+sOrl8_0ZMZ*EY7VMcW%M-nbUo zN73nHM;GZhx_)c>+AG&?N4H+vj&6PV#*Ovp*wH$zvn2Y;#_g-GZrnb7{@l4U`gE^M z>olKE(j*&qzw}>^;yRfY<$m`odvEjh^_v^Fe=7RYwV#SkGv%3MXAZ;l!zccqcz^W7 zznu90C;suoKe%7No5ZnN%ZdXl4y-t^;=qanD-NtUu;Rdq11k=!II!ZtiUa>uIPmEA zv(h7<;$MfK;9rj@^MClE+43Kg!ZcGKj9%QCdaC zJWm&8QYCpE>A^XmRe1VNQq@VBM^!OOlX^eeE0#b{44FiA5yecC)zMyB&x$2u)q`lG zj_O$wRk5B(`B&AYXqecmRS^~CIL+g7f1Sr^KuH}XlNy4H-K5NlVka37qGmnN>6Sys zN;ECwyiUf^-Yf+rbML14s7&Gtc#P$-l$alQBxO8St@YaCMnw*Uwk(zvkHzC+QCCr( z>@j$?Qw^fmcoq^DOIBS)Rg%oL&Or7&F8Lga%VIg5*?T)_K8A&pD9(W1V8onJwr7x= zB{ARdwuT?Us4U5+NhOMw`IzA$5gtri4t@CcuS9tP?{jFIl*JqdSMVK*C+P^#FhxR4 zwVN{H5QfJYob(TlmRY?l<7}PhGGM|{oY{gUIeuI);UYm%c9DC-RcVPEq<|(kSw(yC zJ|sf6#K?MWkll2YM2Mw|*KK0HL&v0NRh?#8G>sRwFuhYISuA~oYxQ1&JoRC{SDJ8CZtyM1(h({-5>_iAl*uF$;~A5G+SS4NC zC}XVNiycLtVx5_%Pm(tM2-5_k%}3dC%&KSc$XFzbjBjP~bIY{kn*^o7&Wv3eT?n@1 zpQL3}?6vIhHnUg`;hs~Uh-aCJw~%t;}h+Ucbx zO7143r5WMDakXqo%Y@4YucH)-g@*X^QHZV?oVs&tql zxP57pwmED_yGp~&@M17bIi&kNiBZ-00;R+0V5M`fGth@>n5QC8NEWGgTdjk+pVV;y znNr6*asDre$~FpZ_v|TVp*hRezJXi9FFMc7CRm#mU^J%ADLVvjbR^sL+VHK3cL-&F z>E9bbt=?O4V8wwI2fjlbc<0pOwA7ZL^i!-tRQNb#_UPm z5#}*l`H-D;Ndo7B7j2>mJBYK*#0 zC;ssGuRZ=Zk3aL+Ge_S(`rjY@n@9ib&<`H@r6WIaZmeG}pDlJLw*3s!Z zX;B~UhJ!L*bN^v<|$|j&(K^Ln@%9P9> za|ywx3r!lj9h6|fXr2&>Rv;7_NpJ*#r^S>9xn(3N)U4{|L>VVfv6eLNchlcRdN*Oc zBA-PWU_-dRi0c_955rv~*7A=j%O%-S63;WJ$bdOQDMKL;!DVe|_w6DAw}@a?bP6yCE)3Z+*Ba!U2ne4>1?1X&_cP;^Y9Xrf}N%I8SO zp@-B_OW!LCttKOOSCTPA`a98>^v)+OPDzY4F2ReMFkPZ%h`D%1<~B{3Crjt#D3(j} z6^Y_Jt!!{*3!0#_*ujTy|3-9r6D6&p3+K*VK4U4pvV0}^cMKoehQy65OJk*DQiQ7t zcdy+YC4ywMTFVGo<_F(=J$?g>s|4d>waTS~Lq{AaBq6;x;p9j{KC1N_;wB$T=b#L< zW>sX@`Am~JfhT#Hj_|pLLs>pN24XQlibcnxS(@ysSL}n|k4|4Dmjo87SH#Cg+!2iV7rxoFwRG2@x@X$kf&`D>CqlINFV~ zrDd5Ol_{4FWngd_j#I>Ff|ac^{|@UBij}7#J&G6j38b^`RCHu0p^^eoA`EC~o0jRi zs1$5r)VbV1Ha|>6Q97R|qDC$11(&c<_4ihO8TpAg+Q5pzPwN5W|JxQjHM7GZxZ6Tf8W>X`b@9X}>P|hxb8N1WcpY53Gu?kY7AGd4SAKnq((|J>R1dGl=YYA*rK z)c_&YKG-~as=P67ih*IaK~c_mGN&I6=6i_V(QME0az1jtEH4Cr8FynKssc>fk1g@V zDUSR)(gEgKcMfLkNx<#{UMI-Gzcgjdn`{pdE; z0&QJjDGqwjI6_r6%R*Z}0zDt`QI`@uGDElJj7GSafD^YR1EWa4A{E=h*cVb^l3+D` zmVvyobSELs&!QX2owR1_^`1uf`#^iphj0JR8`0}G-_YIwY;DFpF5^Ak)UOUr8CFFG z2-cxQECyCF5qI>+fO%|XwqF?@t&wDNQkxQ3ayLP$({xv#>0SIdXr_K^!LSDVGt}D* zQCok3)(Fbt1@f1Dzo3D3GUG10*k!h_+~PstD`FD7(z49GV4cRHx(d!FuzrrZiMc@l z`jKc!oP;tHa!@bRn$tmL&N$dLtgWHN7pyA$WShgNr z9oT@E2hsluFa3P9)rMj$t)ssR(z8MIIsqEG@diF^7awn~Ms=Yp(X6f))s?enQNKk| z)&ojrb)M`GigJ1uH6^r?7FTD3%Ws3evx>b3vwEIIuWyWG5s2Z!v(d}RP%FOtMwd5X zKU;m=m=w()Kerp9T7rf1JxL<(9|9}4TB;sDt8cb7hBCnof;D1^{-0WxEGj=gxJC@Bkfi%;z! z?mG>ly(Cw!i>1kXAPRk@Dum+uL)Fr1D&v-rSibU-^5sm=ZZWlhmJNHtm+k1lfdH`H zef3)GN0kUxDV>%C5k@|2sk)Qkxq8IDVUw4$(E?l6gUVtVG!L=EwJq0UHW0 zWW&st$lp_D4AljFyzeakw7;bzGM+|eLV6|!YZa}uW#{%y&`tj9=QYXSnRB%7>9 z$B%(n?u#Rqt?3nch49*Qp5m+cv9;dk-`zNQGtHSNv(_INB5XQ%PIVf(1sZyqL=WQ2`SXr1 z_l(stD2y&7G9VJDDN`kP$yqBS@G3&Sj+zPnB(1lW3xhq~*MahPpFFnKJM;d-CpY74 z9(^u)8LE*j>SiC1zw9d~=R4PbXiZ{t{z%#=ueCUN2FmZ)*S^n0kNCEvM)&#Mbfn>I zXHNJh{2Gd8JXd zNK%>Na5g~d-A}ch7j!7HlW7@V$S3kfrVlWPc6Y@5SaXhj@ zb3Ru$zdVR;CVc)S5R^>#fh(wv0AguZMZHzqsk}eyyVy*yF;2Ve|gM@slHKy&rn# z%*i{H4b%cO-`cwVl41%d7nUs(709V3RBts{ondCiSG=pb&IIqnm*8F(lwr(mhGq16 z5Bbu!SyWDMqMDk?pUTC6%6vURU8HcuV$YYC{GeV_d#1 z+d|E-qYG42wHh2=&6RFT2jq<-i^hrTtu0s~R>3w&L$8XJVKCQUtt!vw;`!nW(W2TP z5v~2|_C<*>D7{tr<9;!*ZWv^>Iq&u9}L7R--2hxdk z+K$)IWtaN`S-@IVHn9d%{HJ<)Tg9L!-f9a0Pj?I$0&wp1hs9l<91#ptBWQ=R$;CF; zsnRqv&X=@jx9W9(EO^6l0CgX_o=KJ^l%E=g7-sM%BJ@4FIPlZ#%DHgJOI9YmaN#n{ zxz&zf%owWlNH95W>Tru?iNmy*h-UsBLIAZ4m_k{-w|$M=Et%_d01E3{F0HfOuvMT( zD~f63X62or13t1b6btJ^PVS;qlt+nBe}Y*TGf+zOJs-x)`G;@+dKF#E(y!7|9}_{k znoegVuTI3oS~!}3u+i}a;SBXY=)e~iGkY1{ANEbvlL{lXJ?bq)qB7^i>WNKz z(LKs&6&4?ueFS~z=p7Q$GF|jvE|+itVO(&+xP&YOg;Q3*)?Mv|-LmH32ED6MGQqo8 z^iT9G2C1+rvRVc=1qbC#ax=~`xT+Kd_CYiqM7xDjXk{+KlxwjbS%hDmZNU0)Qb1Cs z0fOw>tcHX}maPOwr($XxhN62%B1FZwA?6|Sg%QfwLjI;gZmTT5;4VeWtEJ)OI+oB? z9}E^1JHTD7HgO9#4MQL_xXkf0&JWW6kq}IcIggNzcH}(F#okOuWg(Ys+B3nIQMyz*S%kO`$O|^$)$|?}HGOYQ$wG}LL)xbZLuCl}3v+ZtMGEg~?lQ>GUqDX) zeDfOxRRomFpGzc@%pni77FG5i%9^Hpf;7^2x8ZqcS%(<)Q%n zZzFpf>4R^|t*MiEpMsOy07y~Ux2S(4nNMzv6*`}SD`}6TpoYo-*pRHl+}r<0IZDe_ zIwvZ~35iT;H~4khaS*E9L$zF}wgOw_-@~~N2q7y+gb-d9r1U)M5S$LLb>!zd93cx- zB8j$Q5DJgo$Z$)fTGb7s4?~My<(E=4ZACi9Vaf|@5qo!6LEgisAU&!7!oqCS;nuq1bou@xRA(;xnr z$|~i)W|*^Bxejri{rp!_sCsZUu04NtVE!!P*HUs&}R|O+>%GDfC zQ>gubs*qdR!$E7A2%WR3Y~`5RM8@HCX#mfqpu}|pf=jlWhh!=IFV4z=+NL~7AxWimHxxp6`VHr z&lvomX)?Rk#<~)ysR5oiM)_=++Q0f}EMab22Y3n)%!S?`d{Z=8Rz?ae=t?Ufy$$#z zSQe!WzKAJ<0@KmFZKoUxz#&1<0iY43Sz$N7*pYe3XaUFw9tO%tiUjf}B+p~ZT1~jd zpqX}EEeAUuOFvBwRGs3&{>~c!o8EO0pks=)sY91W3OH`lpL73Yj`c!3ReEutRMVqj z-4c>MEvVFN+))`}G>#T)U*CEo02cw2Qf7S?NMY$B5kxgkk_E6I){d&k>M?`^D3Kev zTV(M%U?Y)FyQ0D%F!an2l)fbG=IoFlL#DamfNT>ynLhBq9*adTg zP6ysK%yi6aRNZiHdh9A7u5XP&eQZ<3JYE!&z(?jSb)41rRNxozU#^pl#x-txIpxmw zD0>#$;jrPL{y+xMw=e>SaUjpa;boxEA=*k(O=YoYEtOZC648MaaTu=|)_3j8!Q*_R#KM={gikt;wJ01n`e5l~X#qNBf+G z=Y$@N)tx*#?RvuWDBtQPhAgfvB;%5hc|w%!GH@MW)T!L2{iK=S4qr1P^?0tB6K4p5 ziJx^BB>nR3d3RbRj9AsNm9+algi!bPq0tB5v=mx-Ejb_`9u(9b2@8@S-L$qlYc47{ za_sVWj%IRZfR_&RlX!Nv12vbvB4Y~aaSm5?tew-*>RXTo@gaTTv=@o5(ioByWn${w zZ3a?y@2{)%r_XuBck00(qW-xhYHkb|16c;!=q&iHVpvFhl-t1#16&Y+Z)I>d0YhV!OAo`)0f11uq5-w>JYVF!dT;8v*L++|UG?PWA z%~bv<^-H&Jww;<`ERjm%87ExsH8(Rp&N(TQ1)&Ld3;5m+DXO~;Btd`43+!;Y(rU6) zlpaDbo?x;{0qkx92~`7g;7Q4C#)_L8vIghUq1z{ zqP^4s4z9aIm#Bc70MyvUQf5;kj%gj9Asy{nJWCkU4RODc$ObBIq{zn(B_Z#g*kPtX zwYwL@!E)9E*yyz3E8O6O;AwQw875FdNt8oO755mwW(~2O&%4({`L;OSjwSp`^a?98 z=gPWR3%6~i6InIixVAqjo{=EqL^zhVlB&I?Teg<8@OE8UT?4&Qf)uj%#tWebHFlDoJx6lpFn{oW>saOq;IjAQ?Tv(n=g|=&Eu(rS>{T zBtx=wx~cV$1D`yF;wLY6Z_JVU8zRPn-2pk=mb=kNmyEl6t`qeliVDCe>s+-kz;Czo ziwc1M2oTQNF7Bi|Y0IJxK+kn4>h+PVf+zPQa*%Tmvb24-G&s>25w?wXF6uHDeb=?w zqg|nSjjlf~M$dqmq*w?;=l_ZH4nO*ry%T?a{I4GW`eRS?4&Z+GtwTkrnX9K*@TiFpSk(NjQ}oS zQ@V=_QIHWRaSB&ll8U)AN!`W}7@-W@uF4HU8FZBD-SL0p#PZb-fElh^PU zrdWB|s1_cezeR`@k^3rp^r#O%Dyu?1Hj0uB)%DO!9k#VJoNshmE*VS*jOFj#a2ISq zoN{F0i<3@#OX<}1lm?K8hsu*&qc2SiMx2(nISYD`3xs;iPHz9CS>b6ME35v zC)awPdHc><2@cMx!e+XLItYdq;$joOW6En?L*M zwce$_IM{I29EFl@aSS5-#X%j{peexN`|!IZeCgFPLic|9=IRU~v2Z literal 36864 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 diff --git a/app/data_old.db b/app/data_old.db new file mode 100644 index 0000000000000000000000000000000000000000..fb3203d9fea00b9ad11ca87aba7e2ec9719001f1 GIT binary patch literal 36864 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 literal 0 HcmV?d00001 diff --git a/app/forms.py b/app/forms.py index bdaf973..c15ca96 100644 --- a/app/forms.py +++ b/app/forms.py @@ -7,3 +7,4 @@ from wtforms.validators import DataRequired, Length, Email class UploadForm(FlaskForm): title = TextField('title', validators=[ DataRequired()]) writingfield = TextAreaField('writingfield', validators = [DataRequired()]) + category = TextField('category', validators=[ DataRequired()]) diff --git a/app/models.py b/app/models.py index 4fa07c4..6ddd952 100644 --- a/app/models.py +++ b/app/models.py @@ -7,11 +7,13 @@ db = SQLAlchemy(app) class Posts(db.Model): pid = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100)) - writingfield = db.Column(db.String(1000)) + writingfield = db.Column(db.String(10000)) + category = db.Column(db.String(100)) - def __init__(self, title, writingfield): + def __init__(self, title, writingfield, category): self.title = title self.writingfield = writingfield + self.category = category db.create_all() diff --git a/app/static/css/style.css b/app/static/css/style.css index c3ad117..0ac964a 100644 --- a/app/static/css/style.css +++ b/app/static/css/style.css @@ -57,9 +57,17 @@ h2{ font-family: 'suisse_works'!important; font-weight: normal; font-size: 40px!important; - margin:0; + margin:10px; padding:0; } +.post h2{ + margin:0px; +} +.imgsub{ + font-size: 14px; + font-style: italic; +} + h3{ font-weight: normal; font-family: 'suisseintl'; @@ -196,6 +204,21 @@ cursor:pointer; border-bottom: none; } +#buttons{ + display: none; +position: fixed; +right: 10px; +bottom: 10px; +} + +.category{ + font-size: 10px!important; + font-family: monospace!important; + padding: 0px; + margin: 0px; + line-height: 12px!important; +} + #title{ background: #eeeeee; padding: 0px; diff --git a/app/static/css/style_pub.css b/app/static/css/style_pub.css new file mode 100644 index 0000000..ca32630 --- /dev/null +++ b/app/static/css/style_pub.css @@ -0,0 +1,2 @@ +#main{font-family: monospace;} +.mono{} diff --git a/app/templates/base.html b/app/templates/base.html index d3489b2..2e46fb9 100755 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -35,6 +35,11 @@ ______ ______ ______ ______ __ ______ {% block css %} {% endblock%} +
+
+ +
+ {% with messages = get_flashed_messages() %} {% if messages %}
    @@ -45,7 +50,7 @@ ______ ______ ______ ______ __ ______ {% endif %} {% endwith %}
    -

    Read only, write a bit and make me run!

    +

    Poetic Software

    {% block main %}{% endblock %} diff --git a/app/templates/home.html b/app/templates/home.html new file mode 100644 index 0000000..37a3a36 --- /dev/null +++ b/app/templates/home.html @@ -0,0 +1,99 @@ + + + + + + + + + + Poetic Software + + + + + + + + + + + +
    +

    +POETIC SOFTWARE
    +---------------
    +
    +INTRODUCTION +{% for post in posts %} +{% if "introduction"|string() == post.category|string() %} +

    +

    {{ post.writingfield|safe }}

    +{% endif %} + {% else %} + The Software is lacking a introduction, ask your system administrator about it. + {% endfor %} + +
    + THESES ON SOFTWARE + {% set count = [0] %} + {% for post in posts %} + {% if "thesis"|string() == post.category|string() %} +
    +

    {{count|length}}. {{ post.title|safe }}

    +{% set __ = count.append(1) %} + {% endif %} + {% else %} + The Software is lacking a introduction, ask your system administrator about it. + {% endfor %} + +
    + EXERCISES IN POETIC SOFTWARE + {% set count = [0] %} + {% for post in posts %} + {% if "exercise"|string() == post.category|string() %} +
    +

    {{count|length}}. {{ post.title|safe }}

    + {% set __ = count.append(1) %} + {% endif %} + {% else %} + The Software is lacking exercises, ask your system administrator about it. + {% endfor %} + + +
    + TERMS AND CONCEPTS + {% for post in posts %} + {% if "concept"|string() == post.category|string() %} +
    +

    {{ post.title|safe }}

    + {% endif %} + {% else %} + The Software is lacking a introduction, ask your system administrator about it. + {% endfor %} + + + +

    + + +
    + + diff --git a/app/templates/index.html b/app/templates/index.html index c9d9783..655c32d 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -3,7 +3,7 @@ {% block main %} {% for post in posts %} - {% if "Introduction"|string() == post.title|string() %} + {% if "introduction"|string() == post.category|string() %}

    {{ post.writingfield|safe }}

    {% endif %} diff --git a/app/templates/singlepost.html b/app/templates/singlepost.html index 952a447..e39a0b8 100644 --- a/app/templates/singlepost.html +++ b/app/templates/singlepost.html @@ -1,8 +1,11 @@ {% extends 'base.html' %} {% block main %} -

    {{ post.title }}

    -

    {{ post.writingfield|safe }}

    +
    +

    {{ post.category }}

    +

    {{ post.title }}

    +

    {{ post.writingfield|safe }}

    +

    diff --git a/app/templates/singlepost_minimal.html b/app/templates/singlepost_minimal.html new file mode 100644 index 0000000..4188c5a --- /dev/null +++ b/app/templates/singlepost_minimal.html @@ -0,0 +1,48 @@ + + + + + + + + + + Poetic Software + + + + + + + + + + + +
    +

    + {{ post.category }}

    + {{ post.title }}
    +
    + {{ post.writingfield|safe }} + +

    + + diff --git a/app/templates/writer.html b/app/templates/writer.html index 10befb6..9ae03c1 100644 --- a/app/templates/writer.html +++ b/app/templates/writer.html @@ -8,6 +8,7 @@
    {{ form.csrf_token }} {{ form.title }} + {{ form.category }} {{ form.writingfield }}

    PARA .DOX

    @@ -36,6 +37,7 @@ P + img sub @@ -142,7 +144,7 @@ number_selected=-1; } caret_pos=getCaretPosition(document.getElementById("writing-field")); console.log(caret_pos); -current_word = getWordAt(writing_field.text(),getCaretPosition(document.getElementById("writing-field"))) +current_word = getWordAt(writing_field.text(),getCaretPosition(document.getElementById("writing-field"))-1) console.log(current_word) //typeinfo at the bottom $("#type_log").append(e.key ); @@ -237,7 +239,7 @@ function pasteHtmlAtCaret(html) { } -function getWordAt (str, pos) { +function getWordAt(str, pos) { // Perform type conversions. str = String(str); @@ -284,7 +286,6 @@ var output = $('#output'); writing_field.on('input', function() { var n = new Date() var time = (last - n); - console.log(time + ' ms'); last = n; }); @@ -312,9 +313,7 @@ function update() { if(event.keyCode != 40 && event.keyCode != 38){ // Set `debug` to true in order to see the mirror div. Default false. - console.log(getSelectionCoords()); var coordinates = getSelectionCoords(); - console.log("SCROOOLLL"+document.scrollingElement.scrollTop) //console.log('(top, left, height) = (%s, %s, %s)', coordinates.top, coordinates.left, coordinates.height); rect.style.top = + document.scrollingElement.scrollTop @@ -361,7 +360,7 @@ requestProposals = $.ajax({ $(".proposal").on("mousedown",function(e){ e.preventDefault(); var position = getCaretPosition(document.getElementById("writing-field")); - console.log("CARET POSITION:::: "+caret_pos) + console.log("CARET POSITION:::: "+caret_pos) console.log("CURRENT WORD:::: "+current_word) /* var content = writing_field.text(); @@ -539,6 +538,12 @@ $('#toolbar a').click(function(e) { } if (command == 'forecolor' || command == 'backcolor') { document.execCommand($(this).data('command'), false, $(this).data('value')); + } + if(command == "imgsub") + { + selection = window.getSelection().toString(); +wrappedselection = '' + selection + ''; +document.execCommand('insertHTML', false, wrappedselection); } if (command == 'createlink' || command == 'insertimage') { url = prompt('Enter the link here: ','http:\/\/'); document.execCommand($(this).data('command'), false, url); diff --git a/app/views.py b/app/views.py index ab3bba0..b78fbd8 100644 --- a/app/views.py +++ b/app/views.py @@ -35,6 +35,12 @@ def index(): posts = db.session.query(Posts).all() return render_template('index.html', posts=posts) +@app.route('/overview') +@cross_origin(origin='*') +def overview(): + posts = db.session.query(Posts).all() + return render_template('home.html', posts=posts) + @app.route('/index') def all(): posts = db.session.query(Posts).all() @@ -46,35 +52,51 @@ def post(pid): post = Posts.query.filter_by(pid=pid).first() return render_template('singlepost.html', post=post) +@app.route('/min/') +@cross_origin(origin='*') +def post_min(pid): + post = Posts.query.filter_by(pid=pid).first() + return render_template('singlepost_minimal.html', post=post) + @app.route('//edit', methods=['GET', 'POST']) @cross_origin(origin='*') def edit_post(pid): post = Posts.query.filter_by(pid=pid).first() - user_form = UploadForm(title = post.title, writingfield=post.writingfield) + user_form = UploadForm(title = post.title, writingfield=post.writingfield, category=post.category) if request.method == 'POST': if user_form.validate_on_submit(): # on submit, check fields post.title = user_form.title.data post.writingfield = user_form.writingfield.data - + post.category = user_form.category.data db.session.commit() return redirect(url_for('post', pid=pid)) return render_template('writer.html', form=user_form, post=post) +@app.route('//delete', methods=['GET', 'POST']) +@cross_origin(origin='*') +def delete_post(pid): + post = Posts.query.filter_by(pid=pid).first() + db.session.delete(post) + db.session.commit() + + return redirect(url_for('index')) + @app.route('/writer', methods=['GET', 'POST']) @cross_origin(origin='*') def writer(): - post = Posts("unknown", "") + post = Posts("unknown", "", "") user_form = UploadForm() if request.method == 'POST': if user_form.validate_on_submit(): # on submit, check fields title = user_form.title.data writingfield = user_form.writingfield.data - post = Posts(title, writingfield) + category = user_form.category.data + post = Posts(title, writingfield, category) db.session.add(post) db.session.commit() return redirect(url_for('post', pid=post.pid)) @@ -214,5 +236,41 @@ def replace_with(link, n, pid): return redirect(url_for('post', pid=pid)) +@app.route('/api/getcontent', methods=['GET']) +def get_text(): + posts = Posts.query.all() + data = {} + + for post in posts: + content = post.writingfield + soup = BeautifulSoup(content) + removedLinks = [] + removedImg = [] + imgsub = [] + for a in soup.find_all("a", {'class':'linkTo'}): + removedLinks.append(a.extract().get_text()) + for img in soup.find_all("img"): + removedImg.append(img['src']) + for subtitle in soup.find_all("span", {'class':'imgsub'}): + imgsub.append(subtitle.extract().get_text()) + content = str(soup) + soup = BeautifulSoup(content) + content = str(soup.get_text(separator='\n')) + content = re.sub(' +', ' ', content).strip() + #content=re.sub("\s\s+" , " ", content) + #content = str(soup) + images = [] + for i,img in enumerate(removedImg): + if i < len(imgsub): + images.append({"url":img, "sub":imgsub[i]}) + else: + images.append({"url":img, "sub":""}) + + data[post.pid] = {"title":post.title, "category":post.category, "content":content, "removedLinks":removedLinks, "images":images} + + #print(errors) + return jsonify(data) + + if __name__ == '__main__': app.run()