Ejemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 5
0
def delete(request):
    if request["BESK_admin"]:
        post_data = read_post_data(request)
        delete_deltagare(post_data["id"][0])
    utdata = all(request)
    utdata.update(kontaktpersoner.all(request))
    return utdata
Ejemplo n.º 6
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.º 7
0
def delete(request):
    if request["BESK_admin"]:
        post_data = read_post_data(request)
        db.cursor.execute(
            """
            DELETE FROM
                utskick
            WHERE
                id = ?
         """, (post_data['id'][0], ))
    return all(request)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
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.º 10
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.º 11
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.º 12
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.º 13
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.º 14
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.º 15
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.º 16
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.º 17
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.º 18
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