def uusi_viesti(): form = ViestiForm(request.form) # tagit = Tagi.query.all() form.tagit.query = Tagi.query.all() print(form.tagit) if request.method == "GET": return render_template("viestit/uusi_viesti.html", form=form) if not form.validate(): return render_template( "viestit/uusi_viesti.html", form=form, sanoma= "Otsikon pitää olla vähintään neljä ja enintään neljäkymmentä sekä viestin vähintään neljä ja enintään tuhat merkkiä pitkä" ) viesti = Viesti(form.otsikko.data, form.sisalto.data, None) viesti.kayttaja_id = current_user.id db.session().add(viesti, viesti.id) db.session().commit() Tagitus.tallenna_viestin_tagit(form.tagit.data, viesti.id) return redirect(url_for("index"))
def tagi(tagi_id): t = Tagi.query.get(tagi_id) v = Tagitus.query.filter_by(tagi_id=tagi_id).count() viestit = Viesti.viestit_tagista_vastausmaarilla(tagi_id) # viritellään paginaatio def get_viestit(offset=0, per_page=10): return viestit[offset:offset + per_page] page, per_page, offset = get_page_args(page_parameter='page', per_page_parameter='per_page') total = len(viestit) pagination_viestit = get_viestit(offset=offset, per_page=per_page) pagination = Pagination(page=page, per_page=per_page, total=total, css_framework='bootstrap4') return render_template( "viestit/tagi.html", viestit=pagination_viestit, page=page, tagi=t, viesteja=v, per_page=per_page, pagination=pagination, )
def uusi_vastaus(viesti_id): form = VastausForm(request.form) viesti = Viesti.query.get(viesti_id) if not form.validate(): return render_template( "/viesti/<viesti_id>", form=form, sanoma= "Vastauksen pitää olla vähintään neljä ja enintään tuhat merkkiä pitkä", viesti=viesti) vastaus = Viesti(None, form.sisalto.data, int(viesti_id)) vastaus.kayttaja_id = current_user.id db.session().add(vastaus) db.session().commit() return redirect(url_for("viesti", viesti_id=viesti_id))
def viesti(viesti_id): viesti = Viesti.query.get(viesti_id) kayttaja = Kayttaja.query.filter_by(id=viesti.kayttaja_id).first() return render_template( "viestit/viesti.html", viesti=Viesti.query.get(viesti_id), tagit=Tagi.tagit_viestille(viesti_id), kayttaja=kayttaja, vastaukset=Viesti.kaikki_vastaukset_kayttajanimilla(viesti_id), form=VastausForm(), )
def poista_kayttaja(kayttaja_id): if current_user.yllapitaja == False: return redirect(url_for("index")) if int(kayttaja_id) == current_user.id: kayttajat = Kayttaja.query.all() sanoma="Et voi poistaa itseäsi" return render_template("auktorisointi/kayttajien_hallinta.html", sanoma=sanoma, kayttajat = kayttajat) t = request.form.get("poista") if t == 'poistele': poistettavaKayttaja = Kayttaja.query.filter_by(id=kayttaja_id).first() Viesti.vaihda_viestien_luojaa(poistettavaKayttaja.id) db.session.delete(poistettavaKayttaja) db.session.commit() return redirect(url_for("kayttajien_hallinta"))
def viestit_luo(): form = ViestiLomake(request.form) # choises asetettava uudelleen koska niitä ole asetettu lomakkeessa # tehtävä jo tässä koska automaattinen validointi tarvitsee niitä form.aiheet.choices = [(aihe.id, aihe.aihe) for aihe in Aihe.query.all()] if not form.validate(): return render_template("viestit/uusi.html", form=form) aiheet = Aihe.query.filter(Aihe.id.in_(form.aiheet.data)).all() viesti = Viesti(form.otsikko.data, form.teksti.data, aiheet, form.vastattava_viesti.data, current_user.id) viesti.lukeneet.append(current_user) db.session().add(viesti) db.session().commit() return redirect(url_for("viestit_index"))
def get_viestit(offset=0, per_page=10): return Viesti.kaikki_viestit_vastausmaarilla()[offset:offset + per_page]