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 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_admins(request): if not request["BESK_admin"]: return {} post_data = read_post_data(request) new_ini_string = ",".join(post_data["admins"]) if request["BESK_login"]["user"]["user"]["email"] not in new_ini_string: raise Error400("Du kan inte ta bort dig själv.") config['general']['admins'] = new_ini_string with open('../BESK.ini', 'w') as configfile: config.write(configfile) return get_admins(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 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 handle(request): if request['REQUEST_METHOD'] == 'GET': return all(request) Error400("Du kan bara visa loggar inte ändra")
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 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}