112 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from flask import Flask, redirect, url_for, render_template, request, flash
 | |
| from models import db, Contact
 | |
| from forms import ContactForm
 | |
| 
 | |
| # Flask
 | |
| app = Flask(__name__)
 | |
| app.secret_key = 'my secret'
 | |
| 
 | |
| # Database
 | |
| app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///book.sqlite'
 | |
| # app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root@localhost/book'
 | |
| app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
 | |
| db.init_app(app)
 | |
| 
 | |
| 
 | |
| @app.route("/")
 | |
| def index():
 | |
|     '''
 | |
|     Home page
 | |
|     '''
 | |
|     return redirect(url_for('contacts'))
 | |
| 
 | |
| 
 | |
| @app.route("/new_contact", methods=('GET', 'POST'))
 | |
| def new_contact():
 | |
|     '''
 | |
|     Create new contact
 | |
|     '''
 | |
|     form = ContactForm()
 | |
|     if form.validate_on_submit():
 | |
|         my_contact = Contact()
 | |
|         form.populate_obj(my_contact)
 | |
|         db.session.add(my_contact)
 | |
|         try:
 | |
|             db.session.commit()
 | |
|             # User info
 | |
|             flash('Contact created correctly', 'success')
 | |
|             return redirect(url_for('contacts'))
 | |
|         except:
 | |
|             db.session.rollback()
 | |
|             flash('Error generating contact.', 'danger')
 | |
| 
 | |
|     return render_template('web/new_contact.html', form=form)
 | |
| 
 | |
| 
 | |
| @app.route("/edit_contact/<id>", methods=('GET', 'POST'))
 | |
| def edit_contact(id):
 | |
|     '''
 | |
|     Edit contact
 | |
| 
 | |
|     :param id: Id from contact
 | |
|     '''
 | |
|     my_contact = Contact.query.filter_by(id=id).first()
 | |
|     form = ContactForm(obj=my_contact)
 | |
|     if form.validate_on_submit():
 | |
|         try:
 | |
|             # Update contact
 | |
|             form.populate_obj(my_contact)
 | |
|             db.session.add(my_contact)
 | |
|             db.session.commit()
 | |
|             # User info
 | |
|             flash('Saved successfully', 'success')
 | |
|         except:
 | |
|             db.session.rollback()
 | |
|             flash('Error update contact.', 'danger')
 | |
|     return render_template(
 | |
|         'web/edit_contact.html',
 | |
|         form=form)
 | |
| 
 | |
| 
 | |
| @app.route("/contacts")
 | |
| def contacts():
 | |
|     '''
 | |
|     Show alls contacts
 | |
|     '''
 | |
|     contacts = Contact.query.order_by(Contact.name).all()
 | |
|     return render_template('web/contacts.html', contacts=contacts)
 | |
| 
 | |
| 
 | |
| @app.route("/search")
 | |
| def search():
 | |
|     '''
 | |
|     Search
 | |
|     '''
 | |
|     name_search = request.args.get('name')
 | |
|     all_contacts = Contact.query.filter(
 | |
|         Contact.name.contains(name_search)
 | |
|         ).order_by(Contact.name).all()
 | |
|     return render_template('web/contacts.html', contacts=all_contacts)
 | |
| 
 | |
| 
 | |
| @app.route("/contacts/delete", methods=('POST',))
 | |
| def contacts_delete():
 | |
|     '''
 | |
|     Delete contact
 | |
|     '''
 | |
|     try:
 | |
|         mi_contacto = Contact.query.filter_by(id=request.form['id']).first()
 | |
|         db.session.delete(mi_contacto)
 | |
|         db.session.commit()
 | |
|         flash('Delete successfully.', 'danger')
 | |
|     except:
 | |
|         db.session.rollback()
 | |
|         flash('Error delete  contact.', 'danger')
 | |
| 
 | |
|     return redirect(url_for('contacts'))
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     app.debug = True
 | |
|     app.run()
 |