Ejemplo n.º 1
0
    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 ]
Ejemplo n.º 2
0
    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 ]
Ejemplo n.º 3
0
    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 ]
Ejemplo n.º 4
0
    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 ]
Ejemplo n.º 5
0
    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 ]
Ejemplo n.º 6
0
    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 ]