Advertisement
Guest User

Untitled

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