def add_or_uppdate(request): post_data = read_post_data(request) if "id" not in post_data: raise Error400("Inga ändringar sparade.") for i in range(len(post_data["id"])): if not post_data["id"][i] == "0": data = ( post_data["status"][i], post_data["id"][i] ) db.cursor.execute(""" UPDATE deltagande_närvaro SET status = ? WHERE id = ? """, data) else: data = ( post_data["deltagare_id"][i], post_data["datum"][i], post_data["status"][i], int(time()) ) db.cursor.execute(""" INSERT INTO deltagande_närvaro (deltagare_id, datum, status, skapad) VALUES (?,?,?,?) """, data) db.commit() return all(request)
def set(request): if request["BESK_admin"]: post_data = read_post_data(request) if "datum" in post_data: data = [] for i, datum in enumerate(post_data["datum"]): data.append((post_data["kodstugor_id"][0], post_data["datum"][i], post_data["typ"][i])) db.cursor.execute( """ DELETE FROM kodstugor_datum WHERE kodstugor_id = ?; """, (data[0][0], )) for query in data: db.cursor.execute( """ INSERT INTO kodstugor_datum(kodstugor_id,datum,typ) VALUES (?, ?, ?); """, query) db.commit() return all(request)
def update_as_vol(request): post_data = read_post_data(request) if not get_by_id(post_data["id"][0])["epost"] == request["BESK_login"]["user"]["user"]["email"]: return try: phone_number = phonenumbers.parse(post_data["telefon"][0], "SE") phone_number_str = phonenumbers.format_number(phone_number, phonenumbers.PhoneNumberFormat.E164) except Exception: raise Error400("Fyll i ett giltigt telefonummer.") if not phonenumbers.is_valid_number(phone_number): raise Error400("Fyll i ett giltigt telefonummer.") if "id" in post_data: data = ( post_data["namn"][0], phone_number_str, post_data["id"][0] ) db.cursor.execute(""" UPDATE volontarer SET namn = ?, telefon = ? WHERE id = ? """, data) db.commit()
def reply(request): if request['REQUEST_METHOD'] == 'GET': return static_file('static/reply.html') invitedata = read_post_data(request) deltagar_id = invitedata["id"][0] status = invitedata["status"][0] if status == "ja": foto = invitedata["foto"][0] else: foto = "" db.cursor.execute( ''' UPDATE deltagare SET status = ?, foto = ? WHERE id = ? AND status = "inbjuden"; ''', (status, foto, deltagar_id)) db.commit() kodstuga = deltagare.get_kodstuga(deltagar_id) if status == "ja" and kodstuga["epost_status_ja"] != "inaktiv": kontakter = kontaktpersoner.fordeltagare(deltagar_id) this_deltagare = deltagare.get_one(deltagar_id) meddelande = kodstuga["epost_text_ja"] meddelande = meddelande.replace("%namn%", this_deltagare["fornamn"]).replace( "%kodstuga%", kodstuga["namn"]) for kontakt in kontakter: send_email(kontakt["epost"], kodstuga["epost_rubrik_ja"], meddelande) return static_file('static/reply_done.html')
def add_or_uppdate(request): if request["BESK_admin"]: post_data = read_post_data(request) for i in range(len(post_data["id"])): if "new" not in post_data: data = (post_data["text"][i], post_data["id"][i]) db.cursor.execute( """ UPDATE keyvalue SET text = ? WHERE id = ? """, data) else: data = (post_data["id"][i], post_data["text"][i]) db.cursor.execute( """ INSERT INTO keyvalue (id,text) VALUES (?,?) """, data) db.commit() return all(request)
def set_value(key, value): db.cursor.execute( ''' INSERT INTO key_value(key, value) VALUES(?,?) ON CONFLICT(key) DO UPDATE SET value=?;''', (key, value, value)) db.commit()
def set_auth(session_id, userdata): if not session_id or len(session_id) < 31: return user_serial_data = json.dumps(userdata) expire = int(time()) + (3600 * 12) db.cursor.execute(''' INSERT INTO auth(session_id, user_data, vailid) VALUES(?,?,?) ON CONFLICT(session_id) DO UPDATE SET user_data=?, vailid=?;''', (session_id, user_serial_data, expire, user_serial_data, expire)) db.commit()
def add_roller(kodstugor_id, roll, volontarer_id): db.cursor.execute(""" INSERT INTO volontarer_roller ( kodstugor_id, roll, volontarer_id ) VALUES (?, ?, ?); """, (kodstugor_id, roll, volontarer_id)) db.commit()
def send_utskick_once(): logger.info("Datumspecifika utskick genomförs.") found = db.cursor.execute( ''' SELECT id, kodstugor_id, typ, rubrik, text, datum, status FROM utskick WHERE datum < ? AND status = "aktiv" ORDER BY datum; ''', (int(time.time()), )) def to_headers(row): ut = {} for idx, col in enumerate(found.description): ut[col[0]] = row[idx] return ut up_for_sending = found.fetchall() if len(up_for_sending) > 0: for utskick in list(map(to_headers, up_for_sending)): logger.info("Utskick för kostuga %s genomförs.", utskick["kodstugor_id"]) for mottagare in kontaktpersoner.for_kodstuga( utskick["kodstugor_id"]): message = utskick["text"].replace( "%namn%", mottagare["deltagare_fornamn"]).replace( "%kodstuga%", mottagare["kodstugor_namn"]) if utskick["typ"] == "sms": send_sms(mottagare["telefon"], message) elif utskick["typ"] == "e-post": send_email(mottagare["epost"], utskick["rubrik"], message) db.cursor.execute( ''' UPDATE utskick SET status = "skickad" WHERE id = ?; ''', (utskick["id"], )) db.commit() logger.info("Datumspecifika utskick genomförda.")
def delete(request): post_data = read_post_data(request) if request["BESK_admin"]: deltagar_ids = db.cursor.execute( """ SELECT id FROM deltagare WHERE kodstugor_id == ? """, (post_data['id'][0], )).fetchall() for deltagare_id in deltagar_ids: deltagare.delete_deltagare(deltagare_id[0]) db.cursor.execute( """ DELETE FROM utskick WHERE kodstugor_id = ? """, (post_data['id'][0], )) db.cursor.execute( """ DELETE FROM kodstugor_datum WHERE kodstugor_id = ? """, (post_data['id'][0], )) db.cursor.execute( """ DELETE FROM volontarer_plannering WHERE kodstugor_id = ? """, (post_data['id'][0], )) db.cursor.execute( """ DELETE FROM volontarer_roller WHERE kodstugor_id = ? """, (post_data['id'][0], )) db.cursor.execute( """ DELETE FROM kodstugor WHERE id = ? """, (post_data['id'][0], )) db.commit() return all(request)
def send_invites_once(): found = db.cursor.execute(''' SELECT kodstugor.namn AS kodstuga, kodstugor.typ AS kodstuga_typ, deltagare.id AS deltagare_id, deltagare.status AS deltagare_status, deltagare.fornamn AS deltagare_fornamn, kontaktpersoner.epost AS kontaktperson_epost FROM deltagare INNER JOIN kontaktpersoner_deltagare ON deltagare.id=kontaktpersoner_deltagare.deltagare_id INNER JOIN kontaktpersoner ON kontaktpersoner.id=kontaktpersoner_deltagare.kontaktpersoner_id INNER JOIN kodstugor ON deltagare.kodstugor_id=kodstugor.id WHERE deltagare.status = "inbjudan" ORDER BY deltagare.id; ''') def to_headers(row): ut = {} for idx, col in enumerate(found.description): ut[col[0]] = row[idx] return ut deltagare_id = False for row in list(map(to_headers, found.fetchall())): if not deltagare_id: deltagare_id = row["deltagare_id"] if row["deltagare_id"] != deltagare_id: break message = texter.get_one("Erbjudande om plats " + row["kodstuga_typ"])["text"] link = "https://besk.kodcentrum.se/reply?id=" + row["deltagare_id"] message = message.replace("%namn%", row["deltagare_fornamn"]).replace( "%kodstuga%", row["kodstuga"]).replace("%länk%", link) send_email(row["kontaktperson_epost"], "Erbjudande om plats", message) db.cursor.execute( ''' UPDATE deltagare SET status = "inbjuden" WHERE id = ?; ''', (deltagare_id, )) db.commit()
def send_email_queue(): while True: try: sleep(2) all = db.cursor.execute(""" SELECT id, till, subject, message FROM mail_queue WHERE status = "köad"; """) tosend = all.fetchone() if tosend is None: continue (id, to, subject, message) = tosend mail_sent = send_mail_to_office365(to, subject, message) if not mail_sent: db.cursor.execute( """ UPDATE mail_queue SET status = "kunde inte skickas" WHERE id = ?; """, (id, )) db.commit() continue if mail_sent == "retry": sleep(3600) continue db.cursor.execute( """ UPDATE mail_queue SET status = "skickad" WHERE id = ?; """, (id, )) db.commit() except Exception: logger.error("Epost kunde inte skickas från kön.", exc_info=1) sleep(3600)
def add_or_uppdate(request): if request["BESK_admin"]: post_data = read_post_data(request) if "id" in post_data: data = (post_data["kodstugor_id"][0], post_data["typ"][0], post_data["rubrik"][0], post_data["text"][0], arrow.get(post_data["datum"][0]).timestamp(), post_data["status"][0], post_data["id"][0]) db.cursor.execute( """ UPDATE utskick SET kodstugor_id = ?, typ = ?, rubrik = ?, text = ?, datum = ?, status = ? WHERE id = ? """, data) else: data = ( post_data["kodstugor_id"][0], post_data["typ"][0], post_data["rubrik"][0], post_data["text"][0], arrow.get(post_data["datum"][0]).timestamp(), ) db.cursor.execute( """ INSERT INTO utskick ( kodstugor_id, typ, rubrik, text, datum, status ) VALUES (?,?,?,?,?,"aktiv") """, data) db.commit() return all(request)
def new(request): if request["BESK_admin"]: post_data = read_post_data(request) if "invite" not in post_data: raise Error400("Inga deltagare valda.") invites = post_data["invite"] for invite in invites: db.cursor.execute( ''' UPDATE deltagare SET status = "inbjudan" WHERE id = ?; ''', (invite, )) db.commit() return deltagare.all(request)
def send_sms(receiver, message): if len(message.strip()) < 4: return datum = arrow.utcnow().to('Europe/Stockholm').format("YYYY-MM-DD") id = hashlib.sha512( (receiver + message + datum).encode("utf-8")).hexdigest() try: db.cursor.execute( ''' INSERT INTO sms_queue(id, date, till, message, status) VALUES (?, ?, ?, ?, ?); ''', (id, datum, receiver, message, "köad")) db.commit() except db.sqlite3.IntegrityError: logger.info("SMS redan i kö") except Exception: logger.error("SMS kunde inte skickas till: " + receiver, exc_info=1)
def scratch(request): deltagare = all(request)["deltagare"] for one in deltagare: if one["skonto"] == "": username = "******" % (one["kodstuga_id"], one["deltagare_id"][-4:]) password = one["deltagare_id"][:6] data = (username, password, one["deltagare_id"]) db.cursor.execute( """ UPDATE deltagare SET skonto = ?, slosen = ? WHERE id = ? """, data) db.commit() return all(request)
def delete_deltagare(deltagare_id): db.cursor.execute( """ DELETE FROM klick_svar WHERE deltagare_id = ?; """, (deltagare_id, )) db.cursor.execute( """ DELETE FROM deltagande_närvaro WHERE deltagare_id = ?; """, (deltagare_id, )) db.cursor.execute( """ DELETE FROM kontaktpersoner_deltagare WHERE deltagare_id = ?; """, (deltagare_id, )) db.cursor.execute( """ DELETE FROM deltagare WHERE id = ?; """, (deltagare_id, )) db.commit() db.cursor.execute(""" DELETE FROM kontaktpersoner WHERE NOT EXISTS (SELECT 1 FROM kontaktpersoner_deltagare WHERE kontaktpersoner_deltagare.kontaktpersoner_id = kontaktpersoner.id ); """) db.commit()
def send_sms_queue(): while True: try: sleep(2) all = db.cursor.execute(""" SELECT id, till, message FROM sms_queue WHERE status = "köad"; """) tosend = all.fetchone() if tosend is None: continue (id, to, message) = tosend result = requests.post('https://api.46elks.com/a1/sms', auth=(config["46elks"]["username"], config["46elks"]["password"]), data={ 'from': 'Kodcentrum', 'to': to, 'message': message }) try: sms_id = result.json()["id"] except Exception: sms_id = "error" db.cursor.execute( """ UPDATE sms_queue SET status = "skickad", sms_id = ? WHERE id = ?; """, (sms_id, id)) db.commit() except Exception: logger.error("Epost kunde inte skickas från kön.", exc_info=1) sleep(3600)
def add_or_update_roller(kodstugor_roll_list, volontarer_id): db.cursor.execute(""" DELETE FROM volontarer_roller WHERE volontarer_id = ? """, (volontarer_id,)) db.commit() for roll in kodstugor_roll_list: db.cursor.execute(""" INSERT INTO volontarer_roller ( kodstugor_id, roll, volontarer_id ) VALUES (?, ?, ?); """, (roll['kodstugor_id'], roll['roll'], volontarer_id)) db.commit()
def add_or_uppdate(request): post_data = read_post_data(request) for i in range(len(post_data["id"])): if not post_data["id"][i] == "0": data = ( post_data["status"][i], post_data["kommentar"][i], post_data["id"][i], ) db.cursor.execute( """ UPDATE volontarer_plannering SET status = ?, kommentar = ? WHERE id = ? """, data) else: data = ( post_data["volontarer_id"][i], post_data["kodstugor_id"][i], post_data["datum"][i], post_data["status"][i], post_data["kommentar"][i], ) db.cursor.execute( """ INSERT INTO volontarer_plannering ( volontarer_id, kodstugor_id, datum, status, kommentar ) VALUES (?,?,?,?,?) """, data) db.commit() return all(request)
def delete(request): if request["BESK_admin"]: post_data = read_post_data(request) db.cursor.execute(""" DELETE FROM volontarer_plannering WHERE volontarer_id = ? """, (post_data['id'][0],)) db.cursor.execute(""" DELETE FROM volontarer_roller WHERE volontarer_id = ? """, (post_data['id'][0],)) db.cursor.execute(""" DELETE FROM volontarer WHERE id = ? """, (post_data['id'][0],)) db.commit() return all(request)
def add_or_update_admin(request): post_data = read_post_data(request) if "flytta" in post_data: for flytta_id in post_data["flytta"]: add_roller(post_data["kodstugor_id"][0], "volontär", flytta_id) elif "flera" in post_data: for i, namn in enumerate(post_data["namn"]): data = ( post_data["namn"][i], post_data["epost"][i], phonenumber_to_format(post_data["telefon"][i]), arrow.get("2090-01-01").timestamp(), ) try: db.cursor.execute(""" INSERT INTO volontarer (namn, epost, telefon, utdrag_datum) VALUES (?,?,?,?) """, data) db.commit() add_roller( post_data["kodstugor_id"][0], "volontär", get_id(post_data["epost"][i]) ) send_email( post_data["epost"][i], "BESK-konto aktiverat", texter.get_one("BESK-konto aktiverat")["text"] ) except db.sqlite3.IntegrityError: pass else: try: phone_number = phonenumbers.parse(post_data["telefon"][0], "SE") phone_number_str = phonenumbers.format_number(phone_number, phonenumbers.PhoneNumberFormat.E164) except Exception: raise Error400("Fyll i ett giltigt telefonummer.") if not phonenumbers.is_valid_number(phone_number): raise Error400("Fyll i ett giltigt telefonummer.") if "id" in post_data: data = ( post_data["namn"][0], post_data["epost"][0], phone_number_str, arrow.get("2090-01-01").timestamp(), post_data["id"][0] ) db.cursor.execute(""" UPDATE volontarer SET namn = ?, epost = ?, telefon = ?, utdrag_datum = ? WHERE id = ? """, data) db.commit() roll_list = [] if "kodstugor_id" in post_data: for form_index, value in enumerate(post_data["kodstugor_id"]): roll_list.append( { "kodstugor_id": value, "roll": post_data["roller"][form_index] } ) add_or_update_roller(roll_list, post_data["id"][0]) else: add_or_update_roller([], post_data["id"][0]) else: data = ( post_data["namn"][0], post_data["epost"][0], phone_number_str, arrow.get("2090-01-01").timestamp(), ) try: db.cursor.execute(""" INSERT INTO volontarer (namn, epost, telefon, utdrag_datum) VALUES (?,?,?,?) """, data) db.commit() send_email( post_data["epost"][0], "BESK-konto aktiverat", texter.get_one("BESK-konto aktiverat")["text"] ) roll_list = [] if "kodstugor_id" in post_data: for form_index, value in enumerate(post_data["kodstugor_id"]): roll_list.append( { "kodstugor_id": value, "roll": post_data["roller"][form_index] } ) add_or_update_roller(roll_list, get_id(post_data["epost"][0])) except db.sqlite3.IntegrityError: raise Error400("E-Postadressen finns redan.")
def new(request): data_to_db = {"kids": [], "adults": []} status = "ansökt" formdata = read_post_data(request) if request["BESK_login"]["user"]: user_is_admin = login.is_admin( request["BESK_login"]["user"]["user"]["email"]) else: user_is_admin = False if "invite_now" in formdata: if user_is_admin and formdata["invite_now"][0] == "inbjudan": status = "inbjudan" if user_is_admin and formdata["invite_now"][0] == "ja": status = "ja" if "approve" not in formdata: raise Error400("Du måste acceptera Kodcentrums Integritetspolicy.") try: kodstugaid = formdata["kodstuga"][0] (kodstuga, kodstuga_typ) = db.cursor.execute( """ SELECT namn, typ FROM kodstugor WHERE id = ?; """, (kodstugaid, )).fetchone() except Exception: raise Error400("Välj en aktivitet.") now = int(time.time()) for i, _ in enumerate(formdata["barn_efternamn"]): if user_is_admin: foto = formdata["foto"][i] else: foto = None if formdata["barn_fornamn"][i] == "": raise Error400("Fyll i förnamn för samtliga barn.") if formdata["barn_efternamn"][i] == "": raise Error400("Fyll i efternamn för samtliga barn.") if formdata["kon"][i] == "": raise Error400("Fyll i kön för samtliga barn.") if formdata["klass"][i] == "": raise Error400("Fyll i klass för samtliga barn.") if formdata["skola"][i] == "": raise Error400("Fyll i skola för samtliga barn.") data_to_db["kids"].append( (uuid.uuid4().hex, kodstugaid, formdata["barn_fornamn"][i], formdata["barn_efternamn"][i], formdata["kon"][i], formdata["klass"][i], formdata["skola"][i], foto, now, status)) for i, value in enumerate(formdata["vuxen_efternamn"]): try: phone_number = phonenumbers.parse(formdata["telefon"][i], "SE") except Exception: raise Error400("Fyll i ett giltigt telefonummer för alla målsmän.") if not phonenumbers.is_valid_number(phone_number): raise Error400("Fyll i ett giltigt telefonummer för alla målsmän.") if formdata["vuxen_fornamn"][i] == "": raise Error400("Fyll i förnamn för alla målsmän.") if formdata["vuxen_efternamn"][i] == "": raise Error400("Fyll i efternamn för alla målsmän.") if formdata["email"][i] == "": raise Error400("Fyll i en email för alla målsmän.") data_to_db["adults"].append( (uuid.uuid4().hex, formdata["vuxen_fornamn"][i], formdata["vuxen_efternamn"][i], formdata["email"][i], phonenumbers.format_number(phone_number, phonenumbers.PhoneNumberFormat.E164))) for kid in data_to_db["kids"]: db.cursor.execute( "INSERT INTO deltagare (id,kodstugor_id,fornamn,efternamn,kon,klass,skola,foto,datum,status) VALUES (?,?,?,?,?,?,?,?,?,?)", kid) # noqa: E501 for adult in data_to_db["adults"]: db.cursor.execute( "INSERT INTO kontaktpersoner (id,fornamn,efternamn,epost,telefon) VALUES (?,?,?,?,?)", adult) for adult in data_to_db["adults"]: for kid in data_to_db["kids"]: db.cursor.execute( "INSERT INTO kontaktpersoner_deltagare (kontaktpersoner_id, deltagare_id) VALUES (?,?)", (adult[0], kid[0])) hittade = (formdata["hittade"][0], ) db.cursor.execute("INSERT INTO hittade (hittade) VALUES (?)", hittade) db.commit() if status == "ansökt": mailmessage = texter.get_one("Intresseanmälan " + kodstuga_typ)["text"].replace( "%kodstuga%", kodstuga) mailsubject = "Tack för din intresseanmälan" for email in formdata["email"]: send_email(email, mailsubject, mailmessage) return {"applied": data_to_db}
def add_or_uppdate(request): if request["BESK_admin"]: post_data = read_post_data(request) if "id" in post_data: data = (post_data["namn"][0], post_data["sms_text"][0], post_data["epost_text"][0], post_data["epost_rubrik"][0], post_data["epost_text_ja"][0], post_data["epost_rubrik_ja"][0], post_data["typ"][0], post_data["open"][0], post_data["sms_status"][0], post_data["epost_status"][0], post_data["epost_status_ja"][0], post_data["id"][0]) db.cursor.execute( """ UPDATE kodstugor SET namn = ?, sms_text = ?, epost_text = ?, epost_rubrik = ?, epost_text_ja = ?, epost_rubrik_ja = ?, typ = ?, open = ?, sms_status = ?, epost_status = ?, epost_status_ja = ? WHERE id = ? """, data) else: data = ( post_data["namn"][0], post_data["sms_text"][0], post_data["epost_text"][0], post_data["epost_rubrik"][0], post_data["epost_text_ja"][0], post_data["epost_rubrik_ja"][0], post_data["typ"][0], post_data["open"][0], post_data["sms_status"][0], post_data["epost_status"][0], post_data["epost_status_ja"][0], ) db.cursor.execute( """ INSERT INTO kodstugor ( namn, sms_text, epost_text, epost_rubrik, epost_text_ja, epost_rubrik_ja, typ, open, sms_status, epost_status, epost_status_ja ) VALUES (?,?,?,?,?,?,?,?,?,?,?) """, data) db.commit() return all(request)
def add_or_uppdate(request): post_data = read_post_data(request) try: phone_number = phonenumbers.parse(post_data["telefon"][0], "SE") except Exception: raise Error400("Fyll i ett giltigt telefonummer.") if not phonenumbers.is_valid_number(phone_number): raise Error400("Fyll i ett giltigt telefonummer.") if request["BESK_admin"]: if "deltagare_id" not in post_data: post_data["deltagare_id"] = [] if "id" in post_data: data = (post_data["fornamn"][0], post_data["efternamn"][0], post_data["epost"][0], phonenumbers.format_number( phone_number, phonenumbers.PhoneNumberFormat.E164), post_data["id"][0]) db.cursor.execute( """ UPDATE kontaktpersoner SET fornamn = ?, efternamn = ?, epost = ?, telefon = ? WHERE id = ? """, data) db.cursor.execute( """ DELETE FROM kontaktpersoner_deltagare WHERE kontaktpersoner_id = ? """, (post_data["id"][0], )) for deltagare_id in post_data["deltagare_id"]: db.cursor.execute( """ INSERT INTO kontaktpersoner_deltagare (deltagare_id, kontaktpersoner_id) VALUES (?,?) """, (deltagare_id, post_data["id"][0])) else: data = (uuid.uuid4().hex, post_data["fornamn"][0], post_data["efternamn"][0], post_data["epost"][0], phonenumbers.format_number( phone_number, phonenumbers.PhoneNumberFormat.E164)) db.cursor.execute( """ INSERT INTO kontaktpersoner (id, fornamn, efternamn, epost, telefon) VALUES (?,?,?,?,?) """, data) for deltagare_id in post_data["deltagare_id"]: db.cursor.execute( """ INSERT INTO kontaktpersoner_deltagare (deltagare_id, kontaktpersoner_id) VALUES (?,?) """, (deltagare_id, data[0])) db.commit() kontaktpersoner = all(request) kontaktpersoner.update(deltagare.all(request)) return kontaktpersoner
def add_or_uppdate(request): if request["BESK_admin"]: post_data = read_post_data(request) if "kontaktperson_id" not in post_data: post_data["kontaktperson_id"] = [] if "id" in post_data: data = (post_data["fornamn"][0], post_data["efternamn"][0], post_data["status"][0], post_data["kon"][0], post_data["foto"][0], post_data["klass"][0], post_data["skola"][0], post_data["kodstuga"][0], post_data["skonto"][0], post_data["slosen"][0], post_data["id"][0]) db.cursor.execute( """ UPDATE deltagare SET fornamn = ?, efternamn = ?, status = ?, kon = ?, foto = ?, klass = ?, skola = ?, kodstugor_id = ?, skonto = ?, slosen = ? WHERE id = ? """, data) db.cursor.execute( """ DELETE FROM kontaktpersoner_deltagare WHERE deltagare_id = ? """, (post_data["id"][0], )) for kontaktperson_id in post_data["kontaktperson_id"]: db.cursor.execute( """ INSERT INTO kontaktpersoner_deltagare (deltagare_id, kontaktpersoner_id) VALUES (?,?) """, (post_data["id"][0], kontaktperson_id)) else: data = ( uuid.uuid4().hex, post_data["fornamn"][0], post_data["efternamn"][0], post_data["status"][0], post_data["kon"][0], post_data["klass"][0], post_data["skola"][0], post_data["kodstuga"][0], post_data["skonto"][0], post_data["slosen"][0], ) db.cursor.execute( """ INSERT INTO deltagare ( id, fornamn, efternamn, status, kon, klass, skola, kodstugor_id, skonto, slosen ) VALUES (?,?,?,?,?,?,?,?,?,?) """, data) for kontaktperson_id in post_data["kontaktperson_id"]: db.cursor.execute( """ INSERT INTO kontaktpersoner_deltagare (deltagare_id, kontaktpersoner_id) VALUES (?,?) """, (data[0], kontaktperson_id)) db.commit() deltagare = all(request) deltagare.update(kontaktpersoner.all(request)) return deltagare