Advertisement
Guest User

Untitled

a guest
Feb 6th, 2017
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.60 KB | None | 0 0
  1. import os
  2. from flask import Flask, render_template, flash, redirect, url_for
  3. from flask_script import Manager
  4. from flask_bootstrap import Bootstrap
  5. from flask_login import LoginManager
  6. from flask_wtf import Form
  7. from wtforms import StringField, PasswordField, BooleanField, SubmitField, IntegerField, DecimalField, FileField, TextAreaField
  8. from wtforms.validators import Required, Length, Email, Regexp, EqualTo
  9. from flask_sqlalchemy import SQLAlchemy
  10. from flask_mail import Mail, Message
  11. from threading import Thread
  12. from flask_migrate import Migrate, MigrateCommand
  13.  
  14. basedir=os.path.abspath(os.path.dirname(__file__))
  15.  
  16. app=Flask(__name__)
  17. app.config.from_object(__name__)
  18. app.config['SECRET_KEY']='Monchi'
  19. app.config['SQLALCHEMY_DATABASE_URI']= 'sqlite:///'+os.path.join(basedir, 'data.sqlite')
  20. app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
  21. app.config['MAIL_SERVER']='smtp.googlemail.com'
  22. app.config['MAIL_PORT']=587
  23. app.config['MAIL_USE_TLS']=True
  24. app.config['MAIL_USERNAME']='xxx@gmail.com'
  25. #app.config['MAIL_DEFAULT_SENDER']='xxx@gmail.com'
  26. app.config['MAIL_PASSWORD']='lamepass123'
  27.  
  28. db=SQLAlchemy(app)
  29. bootstrap=Bootstrap(app)
  30. manager=Manager(app)
  31. mail=Mail(app)
  32. migrate=Migrate(app,db)
  33. manager=Manager(app)
  34. manager.add_command('db', MigrateCommand)
  35. #this is the table inside the database, but the tablename has been changed.
  36. class User(db.Model):
  37.     __tablename__='users'
  38.     id=db.Column(db.Integer, primary_key=True)
  39.     email=db.Column(db.String(64), unique=True, index=True)
  40.     password=db.Column(db.String(128))
  41.  
  42. class RegistrationForm(Form):
  43.     email=StringField('email', validators=[Required(),Length(1,10)])
  44.     #areacode=IntegerField(validators=[Required()])
  45.     password=PasswordField(validators=[Required(), Length(1,10)])
  46.     submit=SubmitField('register')
  47.  
  48. class MessageForm(Form):
  49.     sender=StringField('Sender')
  50.     subject=StringField('Subject', validators=[Required()])
  51.     recipient=StringField('Recipient', validators=[Required(), Email()])
  52.     message=TextAreaField('Message', validators=[Required()])
  53.     submit=SubmitField('Send Email')
  54.  
  55. @app.route('/mail', methods=['GET','POST'])
  56. def send_mail():
  57.     form=MessageForm()
  58.     if form.validate_on_submit():
  59.             msg=Message(subject=form.subject.data, body=form.message.data, sender=("xxxY","fasfdasd@gmail.com"), recipients=[str(form.recipient.data)])
  60.             thr=Thread(target=send_async_email, args=[app, msg])
  61.             thr.start()
  62.     # if form.validate_on_submit():
  63.         # msg=MessageForm(subject=form.subject.data, recipients=form.recipient.data, sender=form.sender.data)
  64.         # mail.send(msg)
  65.             flash('YOUR MESSAGE WAS SENT SUCCESFULLY!')
  66.             return redirect(url_for('send_mail'))
  67.     return render_template('mail.html', form=form)
  68.  
  69.     # def validate_email(self, field):
  70.     #   if User.query.filter_by(email=field.data).first():
  71.     #       raise ValidationError('Email already registerrred')
  72.  
  73. def send_async_email(app,msg):
  74.     with app.app_context():
  75.         mail.send(msg)
  76.        
  77.  
  78. # class buttonform(Form):
  79. #   button=BooleanField()
  80. #   decimal=DecimalField()
  81. #   image=FileField()
  82.  
  83. @app.route('/', methods=['GET', 'POST'])
  84. def register():
  85.     form=RegistrationForm()
  86.     #form2=buttonform()
  87.     if form.validate_on_submit():
  88.         user=User.query.filter_by(email=form.email.data).first()
  89.         if user is None:
  90.             flash('Awesome welcome to the application')
  91.             user=User(email=form.email.data)
  92.             db.session.add(user)
  93.         else:
  94.             flash('we already have you in our database')
  95.             user=User(password=form.password.data)
  96.             db.session.add(user)
  97.         return redirect(url_for('register'))
  98.     return render_template('login.html', form2=form)
  99.  
  100. if __name__=='__main__':
  101.     #db.drop_all()
  102.     #db.create_all()
  103.     manager.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement