Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
Archivo: datum.py Proyecto: thuma/BESK
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)
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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.")
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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()
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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()
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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.")
Ejemplo n.º 23
0
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}
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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
Ejemplo n.º 26
0
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