def delete(self): if self.authorized(self.resepti_id): Resepti.delete(self.resepti_id) self.redirect_after_post("%s/resepti?deleted=%d" % (self.conf['script_name'], self.resepti_id)) else: self.redirect_after_post("%s/resepti?status=not_authorized" % (self.conf['script_name'])) return [ self.headers, self.parameters ]
def get(self): status = '' lisaalomake = '' if self.authorized(): lisaalomake = """\ <form class="cmxform" action="%s" method="post"> <fieldset> <legend>Lisää resepti:</legend> <ol> <li> <input type="text" name="nimi" autofocus /> </li> <li> <input type="submit" value="Lisää" /> </li> </ol> </fieldset> </form> """ % (self.conf['full_path']) request_status = self.form.getvalue('status') if request_status is not None and request_status == 'not_authorized': status = "<p class=\"status\">Toiminto kielletty.</p>" resepti_id_input = self.form.getvalue('inserted') if resepti_id_input is not None: resepti_id = int(resepti_id_input) status = ("<p class=\"status\">Lisätty: <a href=\"%s/%d\">%d</a></p>" % (self.conf['full_path'], resepti_id, resepti_id)) resepti_id_input = self.form.getvalue('deleted') if resepti_id_input is not None: resepti_id = int(resepti_id_input) status = ("<p class=\"status\">Poistettu: <a href=\"%s/%d\">%d</a></p>" % (self.conf['full_path'], resepti_id, resepti_id)) reseptilista = "<ul class=\"reseptilista\">\n" for id in Resepti.load_ids(): resepti = Resepti.load_from_database(id) delete_form = """<form class="deleteform" action="%s/%d" method="post"> <input type="hidden" name="method_override" value="DELETE" /> <input type="submit" value="Poista" class="deleteform" /> </form>""" % (self.conf['full_path'], resepti.resepti_id) reseptilista += "<li><a href=\"%s/%d\">%s</a> %s</li>\n" % (self.conf['full_path'], resepti.resepti_id, cgi.escape(resepti.nimi), self.authorized(resepti.resepti_id) and delete_form or '') reseptilista += "</ul>\n" self.headers.append('Content-Type: text/html; charset=UTF-8') self.parameters.update({ 'reseptilista': reseptilista, 'status': status, 'lisaalomake': lisaalomake }) return [ self.headers, self.parameters ]
def post(self): nimi = self.form.getvalue("nimi") # # Auktorisointi # if self.sessio is None: self.redirect_after_post("%s?status=not_authorized" % (self.conf['full_path'],)) return [ self.headers, self.parameters ] resepti = Resepti.new(nimi=nimi) resepti.omistaja = self.sessio.henkilo_id resepti.save() self.redirect_after_post("%s?inserted=%d" % (self.conf['full_path'], resepti.resepti_id)) return [ self.headers, self.parameters ]
def post(self): ruokaaine_id_input = self.form.getvalue('ruokaaine_id') maara_input = self.form.getvalue('maara') mittayksikko_input = self.form.getvalue('mittayksikko') jarjestys = 42 resepti = Resepti.load_from_database(self.resepti_id) ruokaaine = Ruokaaine.load_from_database(int(ruokaaine_id_input)) reseptiruokaaine = ReseptiRuokaaine.new(resepti, ruokaaine, jarjestys, maara_input, mittayksikko_input) self.redirect_after_post("%s/resepti/%d?added=%d" % (self.conf['script_name'], self.resepti_id, reseptiruokaaine.ruokaaine.ruokaaine_id)) return [ self.headers, self.parameters ]
def post(self): if self.authorized(self.resepti_id): action = self.form.getvalue('action') if action == 'updaterecipe': valmistusohje_unsafe = self.form.getvalue('valmistusohje') # # Salli vain turvallisten HTML-tagien käyttö kommenteissa. # parser = CommentHTMLParser(ok_tags=['p', 'strong', 'pre', 'em', 'b', 'br', 'i', 'hr', 's', 'sub', 'sup', 'tt', 'u']) valmistusohje = parser.parse_string(valmistusohje_unsafe) self.resepti = Resepti.load_from_database(self.resepti_id) self.resepti.valmistusohje = valmistusohje self.resepti.save() self.redirect_after_post("%s?updated=true" % (self.conf['full_path'])) else: self.redirect_after_post("%s/resepti?status=not_authorized" % (self.conf['script_name'])) return [ self.headers, self.parameters ]
def get(self): edit = self.form.getvalue('edit') self.resepti = Resepti.load_from_database(self.resepti_id) self.render_kohdeinfo(self.resepti) kuva_link = '' for kommentti in self.resepti.kommentit: tunnus = '<span class="tuntematon">tuntematon</span>' if kommentti.omistaja is not None: omistaja = Henkilo.load_from_database(kommentti.omistaja) tunnus = omistaja.tunnus delete_form = '' if self.authorized(): delete_form = """<form class="deleteform" action="%s/kommentti/%d" method="post"> <input type="hidden" name="method_override" value="DELETE" /> <input type="submit" value="Poista" class="deleteform" /> </form>""" % (self.conf['full_path'], kommentti.kommentti_id) kuva_link += "<div class=\"comment\">" kuva_link += "<div class=\"timestamp\">%s %s %s</div>\n" % (tunnus, kommentti.aika, delete_form) if kommentti.kuva is not None: kuva_link += "<img src=\"%s/kuva/%d\" alt=\"%s\" />\n" % ( self.conf['script_name'], kommentti.kommentti_id, '') kuva_link += "<div class=\"commenttext\">%s</div>\n" % (kommentti.teksti) kuva_link += "</div>" ruokaaineetlista = self.create_ruokaaineet_list(self.resepti.resepti_id) valmistusohje_text = "<div class=\"valmistusohje\">%s</div>" % (self.resepti.valmistusohje) if self.authorized(): if edit is not None: valmistusohje_text = textwrap.dedent("""\ <form class="cmxform" action="%s%s" method="post"> <fieldset> <legend></legend> <ol> <li> <textarea name="valmistusohje" rows="10" cols="60" id="valmistusohje">%s</textarea> </li> <li> <input type="submit" value="Tallenna" /> </li> <input type="hidden" name="action" value="updaterecipe"</input> </ol> </fieldset> </form>""" % (self.conf['script_name'], self.conf['path_info'], self.resepti.valmistusohje)) else: valmistusohje_text = valmistusohje_text + """\ <form action="%s"> <input type="submit" name="edit" value="Muokkaa" /> </form>""" % (self.conf['full_path']) lisaalomake = '' if self.authorized(): ruokaaine_optiot = self.create_ruokaaine_optiot() mittayksikko_optiot = self.create_mittayksikko_optiot() lisaalomake = """\ <form class="cmxform" action="%s/ruokaaine" method="post" enctype="multipart/form-data"> <fieldset> <legend>Lisää ruoka-aine:</legend> <ol> <li> <label for="ruokaaine_id">Ruoka-aine</label> <select name="ruokaaine_id" id="ruokaaine_id"> %s </select> </li> <li> <label for="maara">Määrä</label> <input type="text" name="maara" id="maara" /> </li> <li> <label for="mittayksikko">Mittayksikko</label> <select name="mittayksikko" id="mittayksikko"> %s </select> </li> <li> <input type="submit" value="Lisää" /> </li> <input type="hidden" name="action" value="add" /> </ol> </fieldset> </form> """ % (self.conf['full_path'], ruokaaine_optiot, mittayksikko_optiot) status = '' if self.form.getvalue('updated', '') == 'true': status = '<p class="status">Tallennettu.</p>' elif self.form.getvalue('comment_created') is not None: status = '<p class="status">Uusi kommentti: %d</p>' % (int(self.form.getvalue('comment_created'))) self.headers.append('Content-Type: text/html; charset=UTF-8') self.parameters.update({ 'nimi': self.resepti.nimi, 'resepti_id': self.resepti.resepti_id, 'valmistusohje': valmistusohje_text, 'kuva': kuva_link, 'ruokaaineetlista': ruokaaineetlista, 'status': status, 'lisaalomake': lisaalomake }) return [ self.headers, self.parameters ]