Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- from flask import Flask, render_template, flash, redirect, url_for
- from flask_script import Manager
- from flask_bootstrap import Bootstrap
- from flask_login import LoginManager
- from flask_wtf import Form
- from wtforms import StringField, PasswordField, BooleanField, SubmitField, IntegerField, DecimalField, FileField, TextAreaField
- from wtforms.validators import Required, Length, Email, Regexp, EqualTo
- from flask_sqlalchemy import SQLAlchemy
- from flask_mail import Mail, Message
- from threading import Thread
- from flask_migrate import Migrate, MigrateCommand
- from werkzeug.security import generate_password_hash
- from flask_login import UserMixin
- basedir=os.path.abspath(os.path.dirname(__file__))
- app=Flask(__name__)
- app.config.from_object(__name__)
- app.config['SECRET_KEY']='Monchi'
- app.config['SQLALCHEMY_DATABASE_URI']= 'sqlite:///'+os.path.join(basedir, 'data.sqlite')
- app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
- app.config['MAIL_SERVER']='smtp.googlemail.com'
- app.config['MAIL_PORT']=587
- app.config['MAIL_USE_TLS']=True
- app.config['MAIL_USERNAME']='xxxxxx@gmail.com'
- #app.config['MAIL_DEFAULT_SENDER']='xxxxx@gmail.com'
- app.config['MAIL_PASSWORD']='XXXXXXXXXXXXX'
- db=SQLAlchemy(app)
- bootstrap=Bootstrap(app)
- manager=Manager(app)
- mail=Mail(app)
- migrate=Migrate(app,db)
- manager=Manager(app)
- manager.add_command('db', MigrateCommand)
- #this is the table inside the database, but the tablename has been changed.
- class User(UserMixin, db.Model):
- __tablename__='users'
- id=db.Column(db.Integer, primary_key=True)
- email=db.Column(db.String(64), unique=True, index=True)
- password_hash=db.Column(db.String(128))
- @property
- def password(self):
- raise AttributeError('not allowed to see this password')
- @password.setter
- def password(self, password):
- self.password_hash=generate_password_hash(password)
- class RegistrationForm(Form):
- email=StringField('Username/Email', validators=[Required(),Length(1,10)])
- #areacode=IntegerField(validators=[Required()])
- password=PasswordField('Password',validators=[Required()])
- submit=SubmitField('register')
- class MessageForm(Form):
- sender=StringField('Sender')
- subject=StringField('Subject', validators=[Required()])
- recipient=StringField('Recipient', validators=[Required(), Email()])
- message=TextAreaField('Message', validators=[Required()])
- submit=SubmitField('Send Email')
- @app.route('/mail', methods=['GET','POST'])
- def send_mail():
- form=MessageForm()
- if form.validate_on_submit():
- msg=Message(subject=form.subject.data, body=form.message.data, sender=("LA MONEY","fasfdasd@gmail.com"), recipients=[str(form.recipient.data)])
- thr=Thread(target=send_async_email, args=[app, msg])
- thr.start()
- # if form.validate_on_submit():
- # msg=MessageForm(subject=form.subject.data, recipients=form.recipient.data, sender=form.sender.data)
- # mail.send(msg)
- flash('YOUR MESSAGE WAS SENT SUCCESFULLY!')
- return redirect(url_for('send_mail'))
- return render_template('mail.html', form=form)
- # def validate_email(self, field):
- # if User.query.filter_by(email=field.data).first():
- # raise ValidationError('Email already registerrred')
- def send_async_email(app,msg):
- with app.app_context():
- mail.send(msg)
- # class buttonform(Form):
- # button=BooleanField()
- # decimal=DecimalField()
- # image=FileField()
- @app.route('/', methods=['GET', 'POST'])
- def register():
- form=RegistrationForm()
- #form2=buttonform()
- if form.validate_on_submit():
- user=User.query.filter_by(email=form.email.data).first()
- if user is None:
- flash('Awesome welcome to the application')
- user=User(email=form.email.data, password=form.password.data)
- db.session.add(user)
- else:
- flash('we already have you in our database')
- user=User(password=form.password.data)
- db.session.add(user)
- return redirect(url_for('register'))
- return render_template('login.html', form2=form)
- if __name__=='__main__':
- #db.drop_all()
- #db.create_all()
- manager.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement