Example #1
0
def comment():
    form = TextFormular()
    if form.validate_on_submit():
        dbUser = DBUser.LoadFromSession('dbUserRegistration')
        dbUser.info = form.comment.data
        dbUser.id = DBAccess.GetSequencerNextVal('users_id_seq')
        dbUser.telephone2 = form.telephone.data
        dbUser.InsertDB()
        response = RenameImageToPrivate(session['cloudinaryId'],
                                        (str(dbUser.id) + 'OP'))
        imageUrl = response['url']

        ts = URLSafeTimedSerializer(app.config["SECRET_KEY"])
        token = ts.dumps(dbUser.id, salt='email-confirm-key')
        confirm_url = url_for('login_bp.user_confirmation',
                              token=token,
                              _external=True)

        SendMail(
            GetEmail('noreplyMail'), GetEmail('adminMail'),
            'Zaregistrován nový uživatel',
            f'''<html>Nový uživatel zaregistrovan, čeká na schválení. <br>
         <img src={GetImageUrl(dbUser.id)}>foto</img> 
         <br> <img src={imageUrl}>OP</img> 
         <br> jméno a příjmení: {dbUser.first_name} {dbUser.surname}
         <br> email: {dbUser.email}
         <br> telefon: {dbUser.telephone}
         <br> adresa: {dbUser.street}, {dbUser.town}
         <br> info: {dbUser.info} 
         <br> telefon na kontaktní osobu (seniora registruje někdo jiný): {dbUser.telephone2}
         <br> Pro schválení uživatele klikněte na následující link {confirm_url} </html>'''
        )
        SendMail(
            GetEmail('noreplyMail'), '*****@*****.**',
            'Zaregistrován nový uživatel',
            f'''<html>Nový uživatel zaregistrovan, čeká na schválení. <br>
         <img src={GetImageUrl(dbUser.id)}>foto</img> 
         <br> <img src={imageUrl}>OP</img> 
         <br> jméno a příjmení: {dbUser.first_name} {dbUser.surname}
         <br> email: {dbUser.email}
         <br> telefon: {dbUser.telephone}
         <br> adresa: {dbUser.street}, {dbUser.town}
         <br> info: {dbUser.info},
          <br> telefon na kontaktní osobu (seniora registruje někdo jiný): {dbUser.telephone2},
         <br> Pro schválení uživatele klikněte na následující link {confirm_url} </html>'''
        )
        SendMail(
            GetEmail('noreplyMail'), '*****@*****.**',
            'Zaregistrován nový uživatel',
            f'<html>Nový uživatel zaregistrovan, čeká na schválení. <br> <img src={GetImageUrl(dbUser.id)}>foto</img> <br> <img src={imageUrl}>OP</img> <br> údaje: {dbUser.__dict__} <br> Pro schválení uživatele klikněte na následující link {confirm_url}'
        )
        flash(
            f'Registrace uživatele {dbUser.first_name} {dbUser.surname} úspěšně dokončena. Váš profil nyní musíme zkontrolovat. Zabere nám to maximálně 48 hodin. Prosíme, mějte strpení. Ruční ověřování považujeme za nezbytnost kvůli bezpečnosti. O schválení vás budeme informovat emailem.',
            FlashStyle.Success)
        SendMail(
            GetEmail('noreplyMail'), dbUser.email, 'Registrace na Seniore.org',
            'Děkujeme za vaši registraci na Seniore.org. Váš profil nyní musíme zkontrolovat. Zabere nám to maximálně 48 hodin. Prosíme, mějte strpení. Ruční ověřování považujeme za nezbytnost kvůli bezpečnosti. O schválení vás budeme informovat emailem. Děkujeme, tým Seniore.org'
        )
        return redirect(url_for("login_bp.login"))
    return render_template("/registraceComment.html", form=form)
Example #2
0
def senior_registration():
    form = SeniorRegistrationForm()

    if (form.validate_on_submit()):
        if form.password.data != form.passwordAgain.data:
            flash('Hesla nejsou totožná!', FlashStyle.Danger)
            return render_template('senior_registration.html', form=form)
        if DBAccess.ExecuteScalar(
                'select id from users where trim(email) ilike %s',
            (form.email.data.strip(), )) is not None:
            flash(
                f'Uživatel {form.email.data} je již zaregistrován, zvolte jiný email.',
                FlashStyle.Danger)
            form.email.data = None
            return render_template('senior_registration.html', form=form)

        dbUser = DBUser()
        dbUser.first_name = form.first_name.data
        dbUser.surname = form.surname.data
        dbUser.email = form.email.data
        dbUser.telephone = form.telephone.data
        dbUser.telephone2 = form.telephone2.data
        dbUser.comment = form.comment.data
        dbUser.street = form.street.data
        dbUser.street_number = form.street_number.data
        if (form.street_number.data == ''):
            dbUser.street_number = 1
        dbUser.town = form.town.data
        dbUser.post_code = form.post_code.data
        dbUser.password = form.password.data
        bcrypt = Bcrypt()
        dbUser.password = bcrypt.generate_password_hash(
            dbUser.password).decode('UTF-8')
        dbUser.level = 1

        address = '{} {} {}'.format(dbUser.street, dbUser.town,
                                    dbUser.post_code)

        coordinates = GetCoordinates(address)
        if (coordinates is not None):
            dbUser.latitude = round(coordinates[0], 5)
            dbUser.longitude = round(coordinates[1], 5)
            x = 1
            y = 1
            difference = 0.00001
            originalLatitude = dbUser.latitude
            originalLongitue = dbUser.longitude
            #check if same coordinates already exists
            while DBAccess.ExecuteScalar(
                    'select id from users where latitude=%s and longitude=%s',
                (
                    dbUser.latitude,
                    dbUser.longitude,
                )) is not None:
                #if exists add difference and try again and again..
                dbUser.latitude = originalLatitude + x * difference
                dbUser.longitude = originalLongitue + y * difference
                if x != -1:
                    x -= 1
                elif y != -1:
                    y -= 1
                else:
                    x = 1
                    y = 1
                    difference += 0.00001
        else:
            flash('Nenalezeny souřadnice pro vaši adresu', FlashStyle.Danger)
            return render_template('senior_registration.html', form=form)

        dbUser.salt = salt = DBAccess.ExecuteScalar("select salt()")
        dbUser.id = DBAccess.GetSequencerNextVal('users_id_seq')
        dbUser.InsertDB()
        flash(
            f'Senior {dbUser.first_name} {dbUser.surname} email: {dbUser.email} vložen do databáze a nastaven jako ověřený.',
            FlashStyle.Success)
        return redirect(url_for("login_bp.login"))

    return render_template('senior_registration.html', form=form)
Example #3
0
def email_sent():

    # kdo oslovuje
    user = session["user"]
    id_users_services = request.form.get("id", type=int)
    dbUser = DBUser.LoadFromSession('dbUser')
    email_oslovujici = dbUser.email
    name_oslovujici = dbUser.first_name
    surname_oslovujici = dbUser.surname
    # date = request.form.get("date", type=str)
    # time = request.form.get("time", type=str)
    # strDateTime = f"{date} {time}"
    # dt = datetime.strptime(strDateTime, "%Y-%m-%d %H:%M")

    info = request.form.get("info", type=str)

    email_user_long = DBAccess.ExecuteSQL(
        """
    SELECT u.email, u.id, s.id, d.id
    FROM users u
    LEFT JOIN users_services us on us.id_users = u.id
    LEFT JOIN services s on s.id = us.id_services
    LEFT JOIN demand_offer d on d.id = us.id_demand_offer
    WHERE us.id = %s
    """, (id_users_services, ))

    email_user = email_user_long[0][0]  # for testing emails are sent to admin
    services_id = email_user_long[0][2]
    id_demand_offer = email_user_long[0][3]

    offeringUserId = email_user_long[0][
        1] if id_demand_offer == 2 else session["id_user"]
    demandingUserId = email_user_long[0][
        1] if id_demand_offer == 1 else session["id_user"]

    id_request = DBAccess.GetSequencerNextVal("requests_id_seq")
    DBAccess.ExecuteInsert(
        "INSERT INTO requests (id, id_users_demand, id_users_offer, id_services, "
        "timestamp, date_time, add_information, id_requests_status, id_users_creator)"
        " values (%s, %s,%s,%s,now(),now(),%s,%s, %s)",
        (id_request, demandingUserId, offeringUserId, services_id, info, 1,
         session["id_user"]))

    # protistrana, kdo je osloven - email_user
    dbUser_protistrana = DBAccess.GetDBUserByEmail(email_user)
    name_protistrana = dbUser_protistrana.first_name
    surname_protistrana = dbUser_protistrana.surname

    text1 = 'Vaši nabídku' if id_demand_offer == 1 else 'Váš požadavek'

    text2 = 'Vaši nabídky' if id_demand_offer == 1 else 'vašeho požadavku'

    # mail to person who click on "contact"
    SendMail(
        GetEmail('noreplyMail'), f'{email_oslovujici}',
        'Zaregistrována žádost o spolupráci',
        f'''<html>Úspěšně jsme zaregistrovali Vaší žádost o spolupráci. <br> 
    Váš kontakt je {name_protistrana},  email: {email_user} <br>
    Prosíme, spojte se, abyste se mohli domluvit na podrobnostech. Nezapomeňte dodržovat pravidla: <a href="https://app.seniore.org/podminky_dobrovolnici"> dobrovolníci</a> / <a href="https://app.seniore.org/podminky_seniori"> senioři</a><br>
    V případě potíží, nebo nejasností nám neváhejte napsat na [email protected]. <br>
    Děkujeme, Váš tým Seniore</html>''')
    # mail to person who is being contacted
    SendMail(
        GetEmail('noreplyMail'), f'{email_user}',
        'Zaregistrována žádost o spolupráci', f'''
    <html> Pan / paní {name_oslovujici} by se s Vámi rád/a spojil/a ohledně možné pomoci. 
    Kontaktní email je: {email_oslovujici} <br> 
    Prosíme, spojte se, abyste se mohli domluvit na podrobnostech. Nezapomeňte dodržovat pravidla: <a href="https://app.seniore.org/podminky_dobrovolnici"> dobrovolníci</a> / <a href="https://app.seniore.org/podminky_seniori"> senioři</a><br>
    V případě potíží, nebo nejasností nám neváhejte napsat na [email protected]. <br>
    Děkujeme, Váš tým Seniore < / html > ''')
    # mail to admins
    SendMail(
        GetEmail('noreplyMail'), GetEmail('adminMail'),
        'Seniore - zažádáno o spolupráci',
        f'''Uživatel {user} se s chce setkat s {email_user}! :-D <br>
    Doplňující informace: {info}. <br>
    Prosím, zkontrolujte žádost v http://seniore.herokuapp.com/requests_detail?id={id_request}.'''
    )
    # print(response.status_code)
    # print(response.body)
    # print(response.headers)
    return render_template("email_sent.html", text1=text1, text2=text2)