def izmeni_zadatak(id_zadatka): data = flask.request.get_json() data["id"] = id_zadatka print(data) db = mysql.get_db() cursor = mysql.get_db().cursor() cursor.execute( "UPDATE zadatak SET predmet_id= %(predmet_id)s, naslov= %(naslov)s, sadrzaj=%(sadrzaj)s, datum_provere=%(datum_provere)s WHERE id=%(id)s", data) db.commit() return flask.jsonify({'status': 'ok'}), 200
def izmeni_profesora(id_profesora): data = flask.request.get_json() data["id"] = id_profesora print(data) db = mysql.get_db() cursor = mysql.get_db().cursor() cursor.execute( "UPDATE profesor SET id= %(id)s, ime= %(ime)s, prezime=%(prezime)s WHERE id=%(id)s", data) db.commit() return flask.jsonify({'status': 'ok'}), 200
def izmeni_predmet(id_predmeta): data = flask.request.get_json() data["id"] = id_predmeta print(data) db = mysql.get_db() cursor = mysql.get_db().cursor() cursor.execute( "UPDATE predmet SET naziv= %(naziv)s, skracenica= %(skracenica)s, profesor_id= %(profesor_id)s WHERE id=%(id)s", data) db.commit() return flask.jsonify({'status': 'ok'}), 200
def dodaj_korisnika(): print("DJAVO JE NOCAS OPET U GRADU") # Provera da li je korisnik prijavljen. db = mysql.get_db() # Dobavljanje instance konekcije ka bazi. cursor = db.cursor() # Dobavljanje kursora. # Izvrsava se parametrizovani upit sa imenovanim parametrima. Ukoliko se koriste imenovani parametri # umesto torkse sa podacima moguce je proslediti recnik koji u se bi sadrzi kljuceve koji odgovaraju # imenima parametara. Vrednosti na datim kljucevima ce automatski biti preuzete u istoimenim parametrima. # Kako se sadrzaj forme u Flasku predstavlja kao imutabilni recnik koji nasledjuje recnik moguce je umesto # obicnog recnika proslediti sam sadrzaj forme. Takodje konverzija podatak nije neophodna jer ce se ispravna # konverzija izvrsiti na serveru za upravljanje bazama podataka. # Dodatna napomena: Iako je id kolona koja postoji u tabeli proizvod, ona nije navedena prilikom dodavanja # jer je ova kolona podesena da bude auto increment, odnosno da se njena vrednost moze automatski generisati. # Ovo generisanje ce se desiti samo ukoliko se prilikom izvrsavanja insert naredbe izostavi podesavanje vrednosti # za kolonu koja je auto increment ili ako se za njenu vrednost postavi NULL vrednost. print(flask.request.json) cursor.execute("INSERT INTO korisnik(korisnicko_ime, ime, prezime) VALUES(%(korisnicko_ime)s, %(ime)s, %(prezime)s)", flask.request.json) # Request objekat u flasku sadrzi atribut json, ovaj atribut sadrzace recnik koji je nastao # parsiranjem tela zahteva. Telo ce biti parsirano ukoliko je content type bio application/json # a recnik ce biti formiran samo ukoliko se u telu nalazio ispravan JSON dokument. db.commit() # Upiti se izvrsavaju u transakcijama. Uskladistavanje rezultata transakcije je neophodno rucno potvrditi. # Za to se koristi commit() metoda nad konekcijom. Ukoliko se ne pozove commit() transakcija nece biti # potvrdjena pa se samim tim rezultat nece uskladistiti u bazu podataka. Vise upita koji zavise # jedan od drugo moguce je grupisati u jednu transakciju tako sto se nakon izvrsavanja cele grupe # upita pozove commit(). return flask.jsonify(flask.request.json), 201 # Status kod 201 oznacava uspesno kreiran resurs.
def dodaj_rezervaciju(): db = mysql.get_db() # Dobavljanje instance konekcije ka bazi. cursor = db.cursor() # Dobavljanje kursora. data = flask.request.json data["datumDolaska"] = data["datumDolaska"].split(".")[0] data["datumOdlaska"] = data["datumOdlaska"].split(".")[0] # OVDE TREBA DA SE RADI PROVERU AKO DATUM ZA ODREDJENI SMESTAJ VEC POSTOJI, ALI IZ NEKOG RAZLOGA IF NE PRINTA IAKO JE TOTALNO ISTI DATUM # cursor.execute("SELECT * FROM rezervacije WHERE smestaj_id=%s", data["smestaj_id"]) # rezervacijeSaId = cursor.fetchall() # for i in rezervacijeSaId: # print(i["datumDolaska"], data["datumDolaska"].replace("T", " ")) # if(i["datumDolaska"] == data["datumDolaska"].replace("T", " ") and i["datumOdlaska"] == data["datumOdlaska"].replace("T", " ")): # print("Vec postoji rezervacija za odredjeni datum") cursor.execute("SELECT * FROM smestaj WHERE id=%s", data["smestaj_id"]) smestaj = cursor.fetchone() if smestaj["raspolozivost"] > 0: cursor.execute( "INSERT INTO rezervacije(datumDolaska, datumOdlaska, korisnici_id, smestaj_id) VALUES(%(datumDolaska)s, %(datumOdlaska)s, %(korisnici_id)s, %(smestaj_id)s)", flask.request.json) cursor.execute( "UPDATE smestaj SET raspolozivost=raspolozivost-1 WHERE id=%s", data["smestaj_id"]) db.commit() else: print("Nema raspolozivih jedinica za odabrani smestaj!") return "", 204 return flask.jsonify( flask.request.json ), 201 # Status kod 201 oznacava uspesno kreiran resurs.
def search_part(part_search): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM pc_parts WHERE( part_name LIKE '%" + part_search + "%' OR part_manufacturer LIKE '%" + part_search +"%')") parts = cursor.fetchall() return flask.jsonify(parts)
def dobavi_rezervacije(id_korisnika): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM rezervacije WHERE korisnici_id=%s", (id_korisnika, )) rezervacije = cursor.fetchall() return flask.jsonify(rezervacije)
def delete_order(order_id): db = mysql.get_db() cursor = db.cursor() cursor.execute("SELECT order_price FROM orders WHERE order_id=%s", (order_id)) order_price = cursor.fetchall() print(order_price) cursor.execute( "SELECT pc_parts_part_id FROM orders_has_pc_parts WHERE orders_order_id=%s", (order_id)) part_id = cursor.fetchall() cursor.execute("SELECT part_price FROM pc_parts WHERE part_id=%s", (part_id[0]['pc_parts_part_id'])) part_price = cursor.fetchall() print(part_price) order_part_number = int(order_price[0]['order_price'] / part_price[0]['part_price']) print(order_part_number) cursor.execute("SELECT part_stock FROM pc_parts WHERE part_id=%s", (part_id[0]['pc_parts_part_id'])) part_stock = cursor.fetchall() part_stock = part_stock[0]['part_stock'] + order_part_number print(part_stock) cursor.execute("DELETE FROM orders_has_pc_parts WHERE orders_order_id=%s", (order_id)) cursor.execute("DELETE FROM orders WHERE order_id=%s", (order_id)) db.commit() update_part = { "part_stock": part_stock, "part_id": part_id[0]['pc_parts_part_id'] } print(update_part) cursor.execute( "UPDATE pc_parts SET part_stock=%(part_stock)s WHERE part_id=%(part_id)s", update_part) db.commit() return "", 204
def get_part(part_id): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM pc_parts WHERE part_id=%s",(part_id)) part = cursor.fetchall() if part is not None: return flask.jsonify(part) else: return "", 404
def dodaj_ocenu(): data = flask.request.json db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute( "INSERT INTO ocena(student_id,zadatak_id,ocena, datum_ocene) VALUES(%(student_id)s, %(zadatak_id)s, %(ocena)s, %(datum_ocene)s)", data) db.commit() return flask.jsonify({"status": "Resource created."}), 204
def ukloni_korisnika(id_korisnika): print(id_korisnika) db = mysql.get_db() cursor = db.cursor() cursor.execute("DELETE FROM karta WHERE korisnik_id=%s", (id_korisnika)) db.commit() cursor.execute("DELETE FROM korisnik WHERE id=%s", (id_korisnika,)) db.commit() return "", 204 # Operacija je uspesna ali je telo odgovora prazno.f
def dobavi_korisnike(): cursor = mysql.get_db().cursor() # Dobavljanje instance kursora. cursor.execute("SELECT * FROM korisnik") # Izvrsavanje upita za dobavljanje svih proizvoda # cija kolicina je veca od 0. Ovime je posao filtriranja # proizvoda po kolicini izmesten iz generisanja sablona # na server baze podataka koji je optimivan za ovakve # zadatke. korisnik = cursor.fetchall() # Dobavljanje svih rezultat prethodni izvrsenog upita. return flask.jsonify(korisnik) # Vracanje proizvoda u JSON formatu.
def dobavi_korisnika(id_korisnika): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM korisnik WHERE id=%s", (id_korisnika,)) korisnik = cursor.fetchone() # Kako je rezultat upita samo jedna torka dovoljno je # pozvati metodu fetchone() nad kursorom koja vraca # sledecu torku koja zadovoljava upit. if korisnik is not None: return flask.jsonify(korisnik) # Ukoliko je pronadje, proizvod se prosledjuje klijentu. else: return "", 404 # Ukoliko proizvod nije pronadjen klijent ce dobiti status odgovora 404.
def dodaj_predmet(): data = flask.request.json db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute( "INSERT INTO predmet(naziv, skracenica, profesor_id) VALUES(%(naziv)s, %(skracenica)s, %(profesor_id)s)", data) db.commit() return flask.jsonify({"status": "Resource created."}), 204
def login(): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM korisnici WHERE brojLicne=%(brojLicne)s AND lozinka=%(lozinka)s", flask.request.json) korisnik = cursor.fetchone() if korisnik is not None: flask.session["korisnik"] = korisnik["id"] # Dodavanje podataka o korisniku u sesiju. flask.session["admin"] = korisnik["admin"] return "", 200 else: return "", 404
def dodaj_zadatak(): data = flask.request.json db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute( "INSERT INTO zadatak(predmet_id, naslov, sadrzaj, datum_provere) VALUES(%(predmet_id)s, %(naslov)s, %(sadrzaj)s, %(datum_provere)s)", data) db.commit() return flask.jsonify({"status": "Resource created."}), 204
def dodaj_profesora(): data = flask.request.json db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute( "INSERT INTO profesor(id, ime, prezime) VALUES(%(id)s, %(ime)s, %(prezime)s)", data) db.commit() return flask.jsonify({"status": "Resource created."}), 204
def dobavi_sverezervacije(): db = mysql.get_db() cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM rezervacije") sveRezervacije = cursor.fetchall() danasnji = datetime.now() for i in sveRezervacije: if i["datumOdlaska"] <= danasnji: cursor.execute( "UPDATE smestaj SET raspolozivost=raspolozivost+1 WHERE id=%s", i["smestaj_id"]) cursor.execute("DELETE FROM rezervacije WHERE id=%s", i["id"]) #DODAJ DA NE MOZE ICI AKO JE MANJE OD NULA db.commit() print(i["datumOdlaska"], danasnji) return flask.jsonify(sveRezervacije)
def edit_part(part_id): db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute("UPDATE pc_parts SET part_name=%(part_name)s, part_price=%(part_price)s, part_stock=%(part_stock)s, part_manufacturer=%(part_manufacturer)s, part_warranty=%(part_warranty)s, part_info=%(part_info)s WHERE part_id=%(part_id)s", flask.request.json[0]) db.commit() return flask.jsonify(flask.request.json), 201
def login(): login_user = request.json cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM student WHERE indeks=", (login_user[indeks])) user = cursor.fetchone() if user is not None: session["user"] = user return flask.jsonify({"success": True}) return flask.jsonify({"success": False})
def new_part(): db = mysql.get_db() cursor = db.cursor() print(flask.request.json) cursor.execute("INSERT INTO pc_parts(part_name, part_price, part_stock, part_manufacturer, part_warranty, part_info, part_image) VALUES(%(part_name)s, %(part_price)s, %(part_stock)s, %(part_manufacturer)s, %(part_warranty)s, %(part_info)s, %(part_image)s)", flask.request.json) db.commit() return flask.jsonify(flask.request.json), 201
def izmeni_smestaj(id_smestaja): db = mysql.get_db() cursor = db.cursor() data = flask.request.json data["id"] = id_smestaja # Id proizvoda koji treba azurirati preuzima # se iz vrednosti parametra URL-a. cursor.execute( "UPDATE smestaj SET naziv=%(naziv)s, opis=%(opis)s, cena=%(cena)s, raspolozivost=%(raspolozivost)s, kategorija_id=%(kategorija)s WHERE id=%(id)s", data) db.commit() return "", 200
def izmeni_korisnika(id_korisnika): # Provera da li je korisnik prijavljen. print("DJAVO JE NOCAS OPET U GRADU") db = mysql.get_db() cursor = db.cursor() data = flask.request.json data["id"] = id_korisnika # Id proizvoda koji treba azurirati preuzima # se iz vrednosti parametra URL-a. cursor.execute("UPDATE korisnik SET korisnicko_ime=%(korisnicko_ime)s, prezime=%(prezime)s, ime=%(ime)s WHERE id=%(id)s", data) db.commit() return "", 200
def dodaj_smestaj(): db = mysql.get_db() # Dobavljanje instance konekcije ka bazi. cursor = db.cursor() # Dobavljanje kursora. cursor.execute( "INSERT INTO smestaj(naziv, opis, raspolozivost, cena, kategorija_id) VALUES(%(naziv)s, %(opis)s, %(raspolozivost)s, %(cena)s, %(kategorija)s)", flask.request.json) db.commit() return flask.jsonify( flask.request.json ), 201 # Status kod 201 oznacava uspesno kreiran resurs.
def dobavi_smestaj(id_smestaja, methods=["GET"]): cursor = mysql.get_db().cursor() cursor.execute("SELECT * FROM smestaj WHERE id=%s", (id_smestaja, )) smestaj = cursor.fetchone( ) # Kako je rezultat upita samo jedna torka dovoljno je # pozvati metodu fetchone() nad kursorom koja vraca # sledecu torku koja zadovoljava upit. if smestaj is not None: return flask.jsonify( smestaj) # Ukoliko je pronadje, proizvod se prosledjuje klijentu. else: return "", 404 # Ukoliko proizvod nije pronadjen klijent ce dobiti status odgovora 404.
def aukloni_rezervaciju(id_rezervacije): db = mysql.get_db() cursor = db.cursor() #data = flask.request.json cursor.execute("SELECT * FROM rezervacije WHERE id=%s", id_rezervacije) smestajid = cursor.fetchone() cursor.execute("DELETE FROM rezervacije WHERE id=%s", (id_rezervacije, )) cursor.execute( "UPDATE smestaj SET raspolozivost=raspolozivost+1 WHERE id=%s", smestajid["smestaj_id"]) #ne radi ti ovo, dovrsi db.commit() return "", 204 # Operacija je uspesna ali je telo odgovora prazno.
def get_all_valid_order(): db = mysql.get_db() cursor = db.cursor() query = {"order_status": "ORDERD"} cursor.execute("SELECT * FROM orders WHERE order_status=%(order_status)s", query) orders = cursor.fetchall() print(orders) return flask.jsonify(orders)
def complete_order(order_id): db = mysql.get_db() cursor = db.cursor() cursor.execute("UPDATE orders SET order_status='DONE' WHERE order_id=%s", (order_id)) cursor.execute("DELETE FROM orders_has_pc_parts WHERE orders_order_id=%s", (order_id)) db.commit() return "", 204
def get_done_order(user_id): db = mysql.get_db() cursor = db.cursor() query = {"user_id": user_id, "order_status": "DONE"} cursor.execute( "SELECT * FROM orders WHERE user_user_id=%(user_id)s AND order_status=%(order_status)s", query) orders = cursor.fetchall() print(orders) return flask.jsonify(orders)
def get_parts_order(order_id): db = mysql.get_db() cursor = db.cursor() cursor.execute( "SELECT pc_parts_part_id FROM orders_has_pc_parts WHERE orders_order_id=%s", (order_id)) part_id = cursor.fetchall() cursor.execute("SELECT order_price FROM orders WHERE order_id=%s", (order_id)) part = cursor.fetchall() cursor.execute("SELECT * FROM pc_parts WHERE part_id=%s", (part_id[0]["pc_parts_part_id"])) part = part + cursor.fetchall() return flask.jsonify(part)