def post(self, objava_id):
        objava = Objava.get_by_id(int(objava_id))

        uporabnik = users.get_current_user()

        if objava.uporabnik_email == uporabnik.email(
        ) or users.is_current_user_admin():
            Objava.delete(objava=objava)

        return self.write("Objava izbrisana.")
    def post(self):
        vrednost_csrf = self.request.get("csrf-zeton")

        if not memcache.get(vrednost_csrf):
            return self.write("CSRF napad v dogajanju.")

        naslov = cgi.escape(self.request.get("title"))
        vsebina = cgi.escape(self.request.get("text"))
        uporabnik = users.get_current_user()
        email = uporabnik.email()
        nova_objava = Objava(naslov=naslov,
                             vsebina=vsebina,
                             uporabnik_email=email)
        nova_objava.put()
        return self.write("Objava dodana.")
Esempio n. 3
0
    def test_dodaj_objavo(self):
        # Preverimo ali GET zahteva na /dodaj-objavo deluje.
        get = self.testapp.get('/dodaj-objavo')  # do a GET request
        self.assertEqual(get.status_int, 200)

        # Preverimo ali POST zahteva na /dodaj-objavo deluje.
        # Najprej moramo v memcache bazo dodati CSRF zeton.
        # Pozor: To je samo testna memcache baza, namenjena izkljucno za
        #        test test_dodaj_objavo! Na zacetku je torej prazna.
        csrf_zeton = str(uuid.uuid4())
        memcache.add(key=csrf_zeton, value=True, time=20)

        naslov = "Nova objava"
        vsebina = "To je nova objava"

        params = {"title": naslov, "text": vsebina, "csrf-zeton": csrf_zeton}

        # Sedaj naredimo post zahtevo. Ce je vse prav, bi se morala v bazo
        # dodati nova objava. Spet pozor: gre se za testno bazo, ki obstaja
        # le za test test_dodaj_objavo. Na zacetku je torej prazna.
        post = self.testapp.post('/dodaj-objavo', params)  # do a POST request
        self.assertEqual(post.status_int, 200)

        # Iz te testne baze sedaj preberemo objavo in preverimo, da so se podatki
        # pravilno zapisali.
        objava = Objava.query().get(
        )  # Ker imamo sedaj v bazi le eno objavo, lahko naredimo get().
        self.assertEqual(objava.naslov, naslov)
        self.assertEqual(objava.vsebina, vsebina)
Esempio n. 4
0
    def get(self):
        trenutni_cas = datetime.now()

        mejni_cas_izbrisa = trenutni_cas - timedelta(days=30)

        objave = Objava.query(Objava.cas_izbrisa != None,
                              Objava.cas_izbrisa < mejni_cas_izbrisa).fetch()
        for objava in objave:
            objava.key.delete()
Esempio n. 5
0
    def post(self):
        vrednost_csrf = self.request.get("csrf-token")

        if not memcache.get(vrednost_csrf):
            return self.write("CSRF attack.")

        naslov = self.request.get("title")
        vsebina = self.request.get("text")

        if users.get_current_user():
            email = users.get_current_user().email()
        else:
            return self.write("You must be logged in to participate.")

        nova_objava = Objava(naslov=naslov,
                             vsebina=vsebina,
                             uporabnikEmail=email)

        nova_objava.put()
        return self.redirect("/objava/" + str(nova_objava.key.id()))
Esempio n. 6
0
    def get(self):
        params = {}
        objave = []
        user = users.get_current_user().email()
        vseobjave = Objava.query()
        vsikomentarji = Komentar.query()

        for komentar in vsikomentarji:
            if komentar.uporabnikEmail == user:
                objava = Objava.get_by_id(int(komentar.objavaID))
                #objave[str(objava.naslov)] = objava.key.id()
                if not objava.cas_izbrisa:
                    if not params.get(objava.naslov):
                        params[objava.naslov] = [komentar]
                    else:
                        params[objava.naslov].append(komentar)

        for i in Objava.query():
            objave.append(i)

        wrapper = {"comments": params, "objave": objave}
        return self.render_template("comments.html", wrapper)
Esempio n. 7
0
    def post(self, id):
        user = users.get_current_user()

        if not user:
            return self.write("You must first log in.")
        if not users.is_current_user_admin():
            return self.write("You must be admin to delete topics.")
        else:
            objava = Objava.get_by_id(int(id))
            objava.cas_izbrisa = True
            objava.put()
            time.sleep(0.1)
            return self.redirect("/")
Esempio n. 8
0
    def get(self, objava_id):
        objava = Objava.get_by_id(int(objava_id))
        if not objava:
            return self.write('Te objave ni.')

        if not (users.get_current_user().email() == objava.uporabnik_email
                or users.is_current_user_admin()):
            return self.write(
                "Objavo lahko izbrise le njen avtor ali administrator.")

        objava.cas_izbrisa = datetime.now()
        objava.put()
        return self.write("Objava je bila izbrisana.")
Esempio n. 9
0
    def get(self, id):
        objava = Objava.get_by_id(int(id))

        komentarji = Komentar.query(Komentar.objavaID == str(
            objava.key.id())).order(-Komentar.cas_objave).fetch()
        parami = {
            "id": id,
            "deleted": objava.cas_izbrisa,
            "naslov": objava.naslov,
            "vsebina": objava.vsebina,
            "cas_objave": objava.cas_objave,
            "objava": objava,
            "komentarji": komentarji
        }

        return self.render_template("detajli.html", params=parami)
Esempio n. 10
0
    def get(self, objava_id):
        objava = Objava.get_by_id(int(objava_id))
        if not objava:
            return self.write('Te objave ni.')

        if objava.cas_izbrisa != None:
            return self.write('Ta objava je bila izbrisana.')

        komentarji = Komentar.query(Komentar.objava_id == str(
            objava.key.id())).order(-Komentar.cas_objave).fetch()

        prikazi_izbris = users.get_current_user().email(
        ) == objava.uporabnik_email or users.is_current_user_admin()

        params = {
            "objava": objava,
            "komentarji": komentarji,
            "prikazi_izbris": prikazi_izbris
        }
        return self.render_template("preglej_objavo.html", params)
Esempio n. 11
0
    def render_template(self, view_filename, params=None):
        if not params:
            params = {}

        piskotek = self.request.cookies.get("piskotek")
        if piskotek:
            params["cookies"] = True

        uporabnik = users.get_current_user()
        if uporabnik:
            params["url_odjave"] = users.create_logout_url("/")
        else:
            params["url_prijave"] = users.create_login_url("/")

        params["objave"] = Objava.query()
        params["uporabnik"] = uporabnik

        template = jinja_env.get_template(view_filename)

        return self.response.out.write(template.render(params))
Esempio n. 12
0
    def get(self, objava_id):
        objava = Objava.get_by_id(int(objava_id))
        if not objava:
            return self.write('Te objave ni.')
        komentarji = Komentar.query(Komentar.objava_id == str(
            objava.key.id())).order(-Komentar.cas_objave).fetch()
        # params = {
        #    "objava": objava,
        #   "komentarji": komentarji,
        #}
        # preverimo, ali lahko trenutni uporabnik izbrise objavo:
        lahko_izbrise = False
        if users.get_current_user().email(
        ) == objava.uporabnik_email or users.is_current_user_admin():
            lahko_izbrise = True

        params = {
            "objava": objava,
            "komentarji": komentarji,
            "lahko_izbrise": lahko_izbrise
        }
        return self.render_template("preglej_objavo.html", params)
Esempio n. 13
0
 def get(self):
     seznam = Objava.query().order(-Objava.cas_objave).fetch()
     params = {"seznam": seznam}
     return self.render_template("home.html", params=params)
Esempio n. 14
0
 def get(self, objava_id):
     objava = Objava.get_by_id(int(objava_id))
     if not objava:
         return self.write("Te objave ni")
     params = {"objava": objava}
     return self.render_template("objave.html", params=params)
Esempio n. 15
0
 def get(self):
     #objave = Objava.query().order(-Objava.cas_objave).fetch()
     objave = Objava.query(
         Objava.cas_izbrisa == None).order(-Objava.cas_objave).fetch()
     params = {"objave": objave}
     return self.render_template("preglej_objave.html", params)