Initial commit

This commit is contained in:
Andros Fenollosa 2016-09-17 12:21:42 +02:00
parent 3b8b91b76a
commit 7e878f6fe1
22 changed files with 817 additions and 0 deletions

127
README.org Normal file
View File

@ -0,0 +1,127 @@
* PyConES16: Flask-note > Clone of Evernote with Flask
** [[https://flasknote.fenollosa.work][DEMO]]
#+CAPTION: Flask-note
#+NAME: Flask-note
[[file:sketching/PNG/dashboard.png]]
** Install
*** Flask
#+BEGIN_SRC bash
mkdir flask-note
cd flask-note
pip install virtualenv
virtualenv ENV
source ENV/bin/activate
pip install Flask
pip install markdown
#+END_SRC
*** SQLite
**** OS X
#+BEGIN_SRC bash
brew install sqlite
#+END_SRC
**** Ubuntu
#+BEGIN_SRC bash
sudo apt-get update
sudo apt-get install sqlite3 libsqlite3-dev
#+END_SRC
*** Flask_sqlalchemy
#+BEGIN_SRC bash
pip install flask_sqlalchemy
#+END_SRC
** Create Flask
Create *app.py*
#+BEGIN_SRC python
from flask import Flask
app = Flask(__name__)
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if 'user_id' not in session:
session.clear()
return redirect(url_for('index'))
return f(*args, **kwargs)
return decorated_function
@app.route('/')
def hello():
return 'Hello PyConES!'
if __name__ == "__main__":
app.run()
#+END_SRC
#+BEGIN_SRC bash
python app.py
#+END_SRC
Open in your browser
http://127.0.0.1:5000/
** Create Database
Create *database.py*
#+BEGIN_SRC python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.sqlite'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(32))
def __init__(self, email, password):
self.email = email
self.password = password
def __repr__(self):
return '<User {email}>'.format(email=self.email)
class Note(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), unique=True)
text = db.Column(db.Text())
def __init__(self, title, text):
self.title = title
self.text = text
def __repr__(self):
return '<Note {title}>'.format(title=self.title)
#+END_SRC
#+BEGIN_SRC bash
python
from database import db
db.create_all()
exit()
sqlite3 database.sqlite
#+END_SRC
#+BEGIN_SRC sql
INSERT INTO user VALUES (NULL, 'py@con.es', '2016');
.exit
#+END_SRC

View File

@ -0,0 +1,7 @@
/*
place extra stylesheet here
*/
.ImageContainer img {
border: solid 2px #999;
}

View File

@ -0,0 +1 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>sketching.ep</title><link rel="stylesheet" href="Resources/SampleStyle.css" /></head><body><h1 id="documentTitle">Flask-note</h1><div class="Page" id="login_page"><h2>Login</h2><div class="ImageContainer"><img width="749" height="884" src="pages/login.png" usemap="#map_login" /></div><map name="map_login"><area shape="rect" coords="350.2833251953125,467.2833251953125,441.7166442871094,494.7166442871094" href="#dashboard_page" title="Go to page 'Dashboard'" /></map></div><div class="Page" id="dashboard_page"><h2>Dashboard</h2><div class="ImageContainer"><img width="749" height="884" src="pages/dashboard.png" usemap="#map_dashboard" /></div><map name="map_dashboard"><area shape="rect" coords="629.2833251953125,138.28334045410156,685.7166442871094,159" href="#login_page" title="Go to page 'Login'" /><area shape="rect" coords="490.2833251953125,185.28334045410156,581.7166442871094,213.71665954589844" href="#edit_page" title="Go to page 'Edit'" /><area shape="rect" coords="589.2833251953125,185.28334045410156,680.7166442871094,213.71665954589844" href="#delete_page" title="Go to page 'Delete'" /><area shape="rect" coords="111.28334045410156,185.28334045410156,202.71665954589844,211.71665954589844" href="#new_page" title="Go to page 'New'" /></map></div><div class="Page" id="new_page"><h2>New</h2><div class="ImageContainer"><img width="749" height="884" src="pages/new.png" usemap="#map_new" /></div><map name="map_new"><area shape="rect" coords="629.2833251953125,138.28334045410156,685.7166442871094,159" href="#login_page" title="Go to page 'Login'" /><area shape="rect" coords="114.28334045410156,181.28334045410156,205.71665954589844,209.71665954589844" href="#dashboard_page" title="Go to page 'Dashboard'" /></map></div><div class="Page" id="edit_page"><h2>Edit</h2><div class="ImageContainer"><img width="749" height="884" src="pages/edit.png" usemap="#map_edit" /></div><map name="map_edit"><area shape="rect" coords="629.2833251953125,138.28334045410156,685.7166442871094,159" href="#login_page" title="Go to page 'Login'" /><area shape="rect" coords="114.28334045410156,181.28334045410156,205.71665954589844,209.71665954589844" href="#dashboard_page" title="Go to page 'Dashboard'" /></map></div><div class="Page" id="delete_page"><h2>Delete</h2><div class="ImageContainer"><img width="749" height="884" src="pages/delete.png" usemap="#map_delete" /></div><map name="map_delete"><area shape="rect" coords="445.2833251953125,181.28334045410156,536.7166442871094,209.71665954589844" href="#dashboard_page" title="Go to page 'Dashboard'" /><area shape="rect" coords="573.2833251953125,181.28334045410156,664.7166442871094,209.71665954589844" href="#dashboard_page" title="Go to page 'Dashboard'" /></map></div></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
sketching/PNG/dashboard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
sketching/PNG/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
sketching/PNG/edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
sketching/PNG/login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
sketching/PNG/new.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

313
sketching/sketching.ep Normal file
View File

@ -0,0 +1,313 @@
<?xml version="1.0"?>
<Document xmlns="http://www.evolus.vn/Namespace/Pencil"><Properties/><Pages><Page><Properties><Property name="name">Login</Property><Property name="id">1473225761798_6183</Property><Property name="width">749</Property><Property name="height">884</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="fid">login</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6c6eb1964e87684ca7a83ab56c6820ad" transform="matrix(1,0,0,1,101,129)"><p:metadata><p:property name="box"><![CDATA[591,437]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,54.625]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="435" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="3eda5e5f02c9fb4fa8568664a8e09ed5" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="74d79e366ca01d4ebd5a8496dffcafd6">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#3eda5e5f02c9fb4fa8568664a8e09ed5" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#74d79e366ca01d4ebd5a8496dffcafd6)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="4fd764c77dc2f841942df1cb4aa1bfaf"/>
<use xlink:href="#3eda5e5f02c9fb4fa8568664a8e09ed5" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="54.625" y="219" width="481.75" height="0" p:name="text" id="1ef10cf856b23d448cc78b5862fb3840" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 1" id="b9379b3e1e368642983fd818b66232a1" transform="matrix(1,0,0,1,336,160)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">Flask-note</span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|24px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="124" height="34" p:name="htmlObject" id="a07d81d3d407634faeb0756e433c20ac" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 24px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="c3accd52bc8a934fbbb382b3e295b7c0" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">Flask-note</span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:textbox" id="285766456ed7c249a228af7e79977cd9" transform="matrix(1,0,0,1,300,274)"><p:metadata><p:property name="box"><![CDATA[200,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[E-mail]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[0,1]]></p:property></p:metadata>
<g p:name="rect" id="8464eb7b8edec4439bca17a6f875b9ba" transform="translate(0.5,0.5)" style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;" p:name="line1" id="566ea47722647143b90345bad03fd136" transform="translate(0.5,0.5)" d="M 0 0 C 67 1 133 1 200 0 C 200 8 200 17 200 25 C 133 24 67 24 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="6298e0b192273d4eaf37c11cebb49a81" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(6,18)">E-mail</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:textbox" id="2885ab639a9b5c448bada6f3598dc526" transform="matrix(1,0,0,1,300,320)"><p:metadata><p:property name="box"><![CDATA[200,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Password]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[0,1]]></p:property></p:metadata>
<g p:name="rect" id="177ec675b2d1e04d9ecfbe082094a0dd" transform="translate(0.5,0.5)" style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;" p:name="line1" id="6829ea86dac5d4478b48d5220f9993d6" transform="translate(0.5,0.5)" d="M 0 0 C 67 0 133 0 200 0 C 200 8 200 17 200 25 C 133 26 67 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="427efd5208185046ad12a8b9b051fbaa" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(6,18)">Password</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="216839614f9b9b4da59c90eef96ecad2" transform="matrix(1,0,0,1,351,468)" p:RelatedPage="1473719769736_2313"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Login]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="4533250375783f4ebc44859ec4ef2b71" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="fcceaf4eb15a874590317f07aa2efb94" d="M 0 0 C 30 0 60 0 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="3a2eb11b16b65e4e8a13d9306bfd0ca6" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(31,18)">Login</text>
</g></Content></Page><Page><Properties><Property name="name">Dashboard</Property><Property name="id">1473719769736_2313</Property><Property name="width">749</Property><Property name="height">884</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="fid">dashboard</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6c6eb1964e87684ca7a83ab56c6820ad" transform="matrix(1,0,0,1,101,129)"><p:metadata><p:property name="box"><![CDATA[591,437]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,54.625]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="435" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="a8d2dc64a197704d87c5471ca7e68613" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="509f348b6d3e8a4483b490c8fcc4fcbf">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#a8d2dc64a197704d87c5471ca7e68613" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#509f348b6d3e8a4483b490c8fcc4fcbf)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="4fb36a30823d674d8a14c03d66879210"/>
<use xlink:href="#a8d2dc64a197704d87c5471ca7e68613" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="54.625" y="219" width="481.75" height="0" p:name="text" id="1bc7cc118ba13c42ae470b40fb97d068" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 1" id="b9379b3e1e368642983fd818b66232a1" transform="matrix(1,0,0,1,325,139)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">Flask-note</span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|24px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="124" height="34" p:name="htmlObject" id="4cbabb1ea653d14790919319ee8cf104" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 24px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="925f0885031cca44b7c8c629897d9463" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">Flask-note</span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="e054d51f67d5944eb66135a731c6bdb4" transform="matrix(1,0,0,1,101,219)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">PyConES16</span>]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="198" height="78" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="03a0284e0ae8db4eb60ebe5e69d4a146" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="558ef3bd1f13b040b7de3c952f8ef273">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#03a0284e0ae8db4eb60ebe5e69d4a146" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#558ef3bd1f13b040b7de3c952f8ef273)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="8035d13f002b8a43afa8161a749a513c"/>
<use xlink:href="#03a0284e0ae8db4eb60ebe5e69d4a146" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="10" y="31" width="180" height="19" p:name="text" id="ee987a7b6ea9824f911479806bfc87a2" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">PyConES16</span></div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="8871482851f9e549bb8c288efbeebbba" transform="matrix(1,0,0,1,101,297)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[List of Disney Pictures<br />]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="198" height="78" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="f817eb4c8c8f42429c487082124470e0" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="3c33cf2ebd833b4abc55cf3d25cde543">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#f817eb4c8c8f42429c487082124470e0" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#3c33cf2ebd833b4abc55cf3d25cde543)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="96044174bf8eb7428e5ae5976b9a7109"/>
<use xlink:href="#f817eb4c8c8f42429c487082124470e0" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="10" y="33" width="180" height="15" p:name="text" id="9cf7827863193646bde93f2d9bcd4f5a" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">List of Disney Pictures<br /></div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="0e0f246a46abf843a6849c3c4572253a" transform="matrix(1,0,0,1,101,376)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Windows: Code to format]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="198" height="78" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="f207054f037f9c4abe892b05ec070344" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="2273eb8f22e63a4cb85474577388c981">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#f207054f037f9c4abe892b05ec070344" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#2273eb8f22e63a4cb85474577388c981)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="88f70bc41c977447955e04a5a0ec6a4c"/>
<use xlink:href="#f207054f037f9c4abe892b05ec070344" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="10" y="33" width="180" height="15" p:name="text" id="e102ca44a6fa1a4394e446ddc7ee1468" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Windows: Code to format</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="034b5ea08bb2054088ebb2bda9b5d5eb" transform="matrix(1,0,0,1,101,455)"><p:metadata><p:property name="box"><![CDATA[200,80]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,10]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[Super powers of aquaman]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="198" height="78" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="36abfef416de314f9e336f43c313c52d" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="db5634be0a91da488f5c0a66b7f505d0">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#36abfef416de314f9e336f43c313c52d" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#db5634be0a91da488f5c0a66b7f505d0)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="a16a948c3092cd42bda22c2c3dee7ff5"/>
<use xlink:href="#36abfef416de314f9e336f43c313c52d" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="10" y="33" width="180" height="15" p:name="text" id="b0e36939fd755a4b852d5b03b734707c" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">Super powers of aquaman</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="8515c081a54b0f4495e858a5a2e9ca71" transform="matrix(1,0,0,1,305,219)"><p:metadata><p:property name="box"><![CDATA[387,344]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,43]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="385" height="342" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="8773b9143e1eee4bbb08562deaecb8bb" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="af0174feed04f1439b25cf8f333df54b">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#8773b9143e1eee4bbb08562deaecb8bb" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#af0174feed04f1439b25cf8f333df54b)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="f699241caef41544b4b953a147f1db70"/>
<use xlink:href="#8773b9143e1eee4bbb08562deaecb8bb" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="43" y="172" width="301" height="0" p:name="text" id="61acc9ba5358fd4d81a32064a5dd7533" style="font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="c68238017e0ba044a5cff3084c8f4a86" transform="matrix(1,0,0,1,337,264)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[En un lugar de la mancha...]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Comic Sans MS|normal|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="01b3033f2b619b41b33634c0ca60797b" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="546f263109e1634480352346a747fb05" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Comic Sans MS; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0">En un lugar de la mancha...</tspan></text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:scrollbar" id="43a145d45686f84cbeda44a10402a3c0" transform="matrix(1,0,0,1,291,219)"><p:metadata><p:property name="box"><![CDATA[14,341]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<rect rx="0" ry="0" style="fill: white; stroke: none;" p:name="bg" id="056997cf47338843b86e1650ace8488b" width="14" height="341"/>
<g style="fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;" p:name="scrollbar" id="0f09fd40c05ed44ba7ee763a728da131">
<path style="stroke-linejoin: round; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;" p:name="line2" id="4b777c363b833b44ad39cfa9580a84f3" d="M 0 0 C -1 114 -1 227 0 341 C 5 341 9 341 14 341 C 12 227 12 114 14 0 z M 2 180.5 C 5 181 7 181 10 180.5 M 2 170.5 C 5 170 7 170 10 170.5 M 2 160.5 C 5 160 7 160 10 160.5 M 2 10 C 4 8 5 7 7 5 C 8 7 9 8 10 10 M 2 331 C 4 333 5 334 7 336 C 8 334 9 333 10 331"/>
</g>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="915d20878ff09b4ba7aa891c6aa7398a" transform="matrix(1,0,0,1,112,186)" p:RelatedPage="1473720033604_586"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[New]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="bdeb81ef3ec4c24ea82b3ca65eb6516f" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="249cc299977a8d439af27b7051afc645" d="M 0 0 C 30 0 60 0 90 0 C 90 8 90 17 90 25 C 60 25 30 25 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="68a47d213e99bf48bfc9c0bb1facb4e8" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(33,18)">New</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="4d73ed3d6a237843bcef16a527a3c6b3" transform="matrix(1,0,0,1,590,187)" p:RelatedPage="1473720471843_2494"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Delete]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="b4c6b9c8e874c649b63d1ee5f4fa9ffe" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="c48b88783512f54590038ec5797eb135" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="5bd1413bb9199d4dba6f48480a2cde82" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(26,18)">Delete</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="541ee5fc533d1d4ba68797ccdaa19125" transform="matrix(1,0,0,1,491,187)" p:RelatedPage="1473720371952_2384"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Edit]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="a2a167c989a8cf47924c02d5a7b14d20" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="8113269bdab8e440a943aebdfb36cbc4" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="3aa0c8bd7364154b93bbc7fc3b8856c9" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(33,18)">Edit</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="a38e1ca4cb6fa24eac40a0f4833ddb2c" transform="matrix(1,0,0,1,630,139)" p:RelatedPage="1473225761798_6183"><p:metadata><p:property name="box"><![CDATA[55,19]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Logout]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="5083035c8937d74e97a90522e9c2962f" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="751cf3c08b1dff4b8b074eb2500a4029" d="M 0 0 C 18 0 37 0 55 0 C 55 6 55 13 55 19 C 37 19 18 19 0 19 C 0 13 0 6 0 0 z"/>
</g>
<text p:name="text" id="a591d7c42b38e54d871dd26fb1ed46d7" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(9,15)">Logout</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:textbox" id="24d8c50bc11d5044838c01a135422440" transform="matrix(1,0,0,1,118,143)"><p:metadata><p:property name="box"><![CDATA[154,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Search...]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[0,1]]></p:property></p:metadata>
<g p:name="rect" id="7c1ced93672d8141bccc57c89712baad" transform="translate(0.5,0.5)" style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;" p:name="line1" id="7f421f58ac348f4385fe132aea2cafc2" transform="translate(0.5,0.5)" d="M 0 0 C 51 -1 103 -1 154 0 C 154 8 154 17 154 25 C 103 25 51 25 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="56004383d42293478c2304e31652774a" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(6,18)">Search...</text>
</g></Content></Page><Page><Properties><Property name="name">New</Property><Property name="id">1473720033604_586</Property><Property name="width">749</Property><Property name="height">884</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="background">transparent</Property><Property name="fid">new</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6c6eb1964e87684ca7a83ab56c6820ad" transform="matrix(1,0,0,1,101,129)"><p:metadata><p:property name="box"><![CDATA[591,437]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,54.625]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="435" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="67fb8a92cdc71c4b95b091669b2970d8" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="7e76dbb2bf16cc40b1781915a854ff0d">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#67fb8a92cdc71c4b95b091669b2970d8" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#7e76dbb2bf16cc40b1781915a854ff0d)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="743444f3af46914c8091c058313b864d"/>
<use xlink:href="#67fb8a92cdc71c4b95b091669b2970d8" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="54.625" y="219" width="481.75" height="0" p:name="text" id="2ec2072d65f9334d9bb0963e63904e7f" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 1" id="b9379b3e1e368642983fd818b66232a1" transform="matrix(1,0,0,1,325,140)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">Flask-note</span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|24px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="124" height="34" p:name="htmlObject" id="5516573c3b7c2947a7dd60fc1ef6aa8b" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 24px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="4fa3e50a16d6ad4480f0e2e36b8f37ba" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">Flask-note</span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="8515c081a54b0f4495e858a5a2e9ca71" transform="matrix(1,0,0,1,101,222)"><p:metadata><p:property name="box"><![CDATA[591,344]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,43]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="342" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="30916da1dd532843bebc22c5e9ac9b0b" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="279c96adf937d04aacb81c59a5eb8ea4">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#30916da1dd532843bebc22c5e9ac9b0b" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#279c96adf937d04aacb81c59a5eb8ea4)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="98b9199a82e0ee4ebbd2269623ab1974"/>
<use xlink:href="#30916da1dd532843bebc22c5e9ac9b0b" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="43" y="172" width="505" height="0" p:name="text" id="2c5d4346d21f9a4f864da294aa6af648" style="font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="c68238017e0ba044a5cff3084c8f4a86" transform="matrix(1,0,0,1,124,256)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[# En un lugar de la mancha...]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Comic Sans MS|normal|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="12663c79cbead64f9410485517cef207" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="28c4f97ffde812459bb4d1e3185e3762" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Comic Sans MS; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0"># En un lugar de la mancha...</tspan></text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="4d73ed3d6a237843bcef16a527a3c6b3" transform="matrix(1,0,0,1,115,183)" p:RelatedPage="1473719769736_2313"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[New]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="98dfecf0bbd99b4f9b28a77771c573cf" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="6e845a828bd2b640933b7c998d4c3499" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="eda885d9cc035f49b89cd6af8aa62980" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(33,18)">New</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="541ee5fc533d1d4ba68797ccdaa19125" transform="matrix(1,0,0,1,591,183)"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Preview]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="e1b75c1139f98f4dabeeefc88e2c584f" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="d34ef6333a707a4e9a53502c27eb3e0c" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="06d1f8d49dea3343950be0e4ba17b252" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(24,18)">Preview</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:line" p:sc="Vertical Line" id="201b7a4abbd19145b063e846900b6503" transform="matrix(1,0,0,1,302,165)"><p:metadata><p:property name="a"><![CDATA[0,76]]></p:property><p:property name="b"><![CDATA[0,100]]></p:property><p:property name="mode"><![CDATA[vertical]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<g p:name="rect" id="d35053f711a29a409b9e281e000303d7" transform="translate(0.5,0.5)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke: #FFFFFF; stroke-opacity: 0; stroke-width: 8px; fill: none;" p:name="bg" id="7db0978258f6284d950095a892c3e9e0" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
<path style="stroke-linejoin: round; fill: none;" p:name="line1" id="c25f227d73e12544bbb38f1aaa1b0595" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
</g>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="b957018133f0d94ab564b7dd02a502e6" transform="matrix(1,0,0,1,491,183)"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[MarkDown]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="461a13ed08ed374a9f8d205b857032f8" style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="0f1246788335954ab6e02152e010640f" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="26f003d4f77ec2458d9b42c4a7a67e04" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(16,18)">MarkDown</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="7c875878e664784da286d900eb05b829" transform="matrix(1,0,0,1,630,139)" p:RelatedPage="1473225761798_6183"><p:metadata><p:property name="box"><![CDATA[55,19]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Logout]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="1bb7f4df52f0434a953482796613672a" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="ad172f6ba091c64f91db42140c738670" d="M 0 0 C 18 0 37 0 55 0 C 55 6 55 13 55 19 C 37 19 18 19 0 19 C 0 13 0 6 0 0 z"/>
</g>
<text p:name="text" id="a14b42a35d926b4ab927d5b38ed67aae" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(9,15)">Logout</text>
</g></Content></Page><Page><Properties><Property name="name">Edit</Property><Property name="id">1473720371952_2384</Property><Property name="width">749</Property><Property name="height">884</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="background">transparent</Property><Property name="fid">edit</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6c6eb1964e87684ca7a83ab56c6820ad" transform="matrix(1,0,0,1,101,129)"><p:metadata><p:property name="box"><![CDATA[591,437]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,54.625]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="435" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="38098c999073e94f91156e78fb753259" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="7c3ec6f38495b248b66b05d0ee74c34f">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#38098c999073e94f91156e78fb753259" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#7c3ec6f38495b248b66b05d0ee74c34f)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="b39690157bf7eb4092cdb37a085b23c8"/>
<use xlink:href="#38098c999073e94f91156e78fb753259" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="54.625" y="219" width="481.75" height="0" p:name="text" id="59f8c76166e4194483276655004e2507" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 1" id="b9379b3e1e368642983fd818b66232a1" transform="matrix(1,0,0,1,325,140)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">Flask-note</span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|24px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="124" height="34" p:name="htmlObject" id="1f24b6be4a4a334bbe9bc28cda12a5e5" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 24px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="7e06a4455589e24cbfe85362997900b5" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">Flask-note</span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="8515c081a54b0f4495e858a5a2e9ca71" transform="matrix(1,0,0,1,101,222)"><p:metadata><p:property name="box"><![CDATA[591,344]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,43]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="342" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="267bff514ee94943a300f4d8f014fac8" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="c87acef22f25ae438d5311f410548ef1">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#267bff514ee94943a300f4d8f014fac8" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#c87acef22f25ae438d5311f410548ef1)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="9a2552f112201b40bd86d7d586e93a41"/>
<use xlink:href="#267bff514ee94943a300f4d8f014fac8" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="43" y="172" width="505" height="0" p:name="text" id="e3c210ae5b398c43a4c021d562a2b087" style="font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="c68238017e0ba044a5cff3084c8f4a86" transform="matrix(1,0,0,1,124,256)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[# En un lugar de la mancha...]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Comic Sans MS|normal|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="b01a1aef4803ba42a30d64f4b7ce8c4d" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="18911e59c4bf56498bc12d17067867a9" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Comic Sans MS; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0"># En un lugar de la mancha...</tspan></text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="4d73ed3d6a237843bcef16a527a3c6b3" transform="matrix(1,0,0,1,115,183)" p:RelatedPage="1473719769736_2313"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Save]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="e06df62af0f1c846bb52cbf14c084902" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="523b861675b1e040b8a98eb88ece8a2f" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="0b43801168cb51449ba1a7e7795b0a2f" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(32,18)">Save</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="541ee5fc533d1d4ba68797ccdaa19125" transform="matrix(1,0,0,1,591,183)"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Preview]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="7c81b7d96bdbf141ab7ca36a0228a63d" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="b2fb4aba05ee4749b339c60c9e518e86" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="ce893aa605e82341bd23f8da7ef387ff" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(24,18)">Preview</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:line" p:sc="Vertical Line" id="201b7a4abbd19145b063e846900b6503" transform="matrix(1,0,0,1,302,165)"><p:metadata><p:property name="a"><![CDATA[0,76]]></p:property><p:property name="b"><![CDATA[0,100]]></p:property><p:property name="mode"><![CDATA[vertical]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<g p:name="rect" id="b22a9339d9442847a10ac6b397280a38" transform="translate(0.5,0.5)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke: #FFFFFF; stroke-opacity: 0; stroke-width: 8px; fill: none;" p:name="bg" id="0a5ce703d955e846a83d6bfebe07ca3b" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
<path style="stroke-linejoin: round; fill: none;" p:name="line1" id="cb8b820b089ca2408d8e0f2084030929" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
</g>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="b957018133f0d94ab564b7dd02a502e6" transform="matrix(1,0,0,1,491,183)"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[MarkDown]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="224b743bb141234ab710bda384f20d97" style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="948c2bcc2c66ff40be50813dc0cb820e" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="9fb3d84efe771b4793bcf2c00bb02fd7" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(16,18)">MarkDown</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="e6c4dbe0331f4d429d2667bdf581dbfd" transform="matrix(1,0,0,1,630,139)" p:RelatedPage="1473225761798_6183"><p:metadata><p:property name="box"><![CDATA[55,19]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Logout]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="476f2434ebeb334db71a46ccc4c5bdc0" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="f4e50c197db1e24cb9c6ed8c134984d1" d="M 0 0 C 18 0 37 0 55 0 C 55 6 55 13 55 19 C 37 19 18 19 0 19 C 0 13 0 6 0 0 z"/>
</g>
<text p:name="text" id="b0a07c0418239940a6d3506d543f31a9" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(9,15)">Logout</text>
</g></Content></Page><Page><Properties><Property name="name">Delete</Property><Property name="id">1473720471843_2494</Property><Property name="width">749</Property><Property name="height">884</Property><Property name="dimBackground"/><Property name="transparentBackground">true</Property><Property name="backgroundColor">#FFFFFFFF</Property><Property name="background">transparent</Property><Property name="fid">delete</Property></Properties><Content><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="6c6eb1964e87684ca7a83ab56c6820ad" transform="matrix(1,0,0,1,101,129)"><p:metadata><p:property name="box"><![CDATA[591,437]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,54.625]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA[Arial|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="435" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="119f67257158a04989b641e53eae3562" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="64fabd5e5abd4a4cbc3cc08da2b84acb">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#119f67257158a04989b641e53eae3562" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#64fabd5e5abd4a4cbc3cc08da2b84acb)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="4f88b9f3d493b8459480cb5db9edbde9"/>
<use xlink:href="#119f67257158a04989b641e53eae3562" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="54.625" y="219" width="481.75" height="0" p:name="text" id="cd2ac366f54582449bec44a6f2fb7640" style="font-family: Arial; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.BasicWebElements:heading" p:sc="Heading 1" id="b9379b3e1e368642983fd818b66232a1" transform="matrix(1,0,0,1,325,140)"><p:metadata><p:property name="textContent"><![CDATA[<span style="font-family: Comic Sans MS;">Flask-note</span>]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|bold|normal|24px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="customStyle"><![CDATA[]]></p:property></p:metadata>
<foreignObject x="0" y="0" width="124" height="34" p:name="htmlObject" id="80a7c0c85e2351499c58057e85096236" style="color: rgb(0, 0, 0); opacity: 1; font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 24px; font-weight: bold; font-style: normal; text-decoration: none;">
<div xmlns="http://www.w3.org/1999/xhtml" p:name="textDiv" id="282089c1ddcb284995fc2a9e6657e344" style="white-space: nowrap; display: inline-block !important"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-family: Comic Sans MS;">Flask-note</span></div></div>
</foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:RoundedRect" id="8515c081a54b0f4495e858a5a2e9ca71" transform="matrix(1,0,0,1,101,222)"><p:metadata><p:property name="box"><![CDATA[591,344]]></p:property><p:property name="withBlur"><![CDATA[false]]></p:property><p:property name="radius"><![CDATA[0,0]]></p:property><p:property name="textPadding"><![CDATA[0,43]]></p:property><p:property name="fillColor"><![CDATA[#FFFFFFFF]]></p:property><p:property name="strokeColor"><![CDATA[#1B3280FF]]></p:property><p:property name="strokeStyle"><![CDATA[2|]]></p:property><p:property name="textContent"><![CDATA[
]]></p:property><p:property name="textFont"><![CDATA["Liberation Sans",Arial,sans-serif|normal|normal|13px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<defs>
<rect width="589" height="342" rx="0" ry="0" x="0" y="0" style="stroke-width: 2; fill: rgb(255, 255, 255); fill-opacity: 1; stroke: rgb(27, 50, 128); stroke-opacity: 1;" p:name="rrRect" id="a3a8789f30a46c47ad1365d50d74f16e" transform="translate(1,1)"/>
<filter height="1.2558399" y="-0.12792" width="1.06396" x="-0.03198" p:name="shadingFilter" id="b85df533bffc7549b84ddc007239fa09">
<feGaussianBlur stdDeviation="1" in="SourceAlpha"/>
</filter>
</defs>
<use xlink:href="#a3a8789f30a46c47ad1365d50d74f16e" xmlns:xlink="http://www.w3.org/1999/xlink" transform="translate(2, 2)" p:filter="url(#b85df533bffc7549b84ddc007239fa09)" style="opacity: 0.5; visibility: hidden; display: none;" p:heavy="true" p:name="bgCopy" id="f5bf76456bea1b4cab0debb4af086b73"/>
<use xlink:href="#a3a8789f30a46c47ad1365d50d74f16e" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<foreignObject x="43" y="172" width="505" height="0" p:name="text" id="2406cb559af43b4a9cafcc4be06580ff" style="font-family: &quot;Liberation Sans&quot;,Arial,sans-serif; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1; color: rgb(0, 0, 0); opacity: 1; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml">
</div></foreignObject>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" id="c68238017e0ba044a5cff3084c8f4a86" transform="matrix(1,0,0,1,124,256)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[# En un lugar de la mancha...]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA[Comic Sans MS|normal|normal|13px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="e318ba8fd7625346a9591d8ecebd82be" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="f920455e9eaad442857f5803efbee6ed" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: Comic Sans MS; font-size: 13px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0"># En un lugar de la mancha...</tspan></text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="4d73ed3d6a237843bcef16a527a3c6b3" transform="matrix(1,0,0,1,574,183)" p:RelatedPage="1473719769736_2313"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[Yes]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="4c5cf9b8c5789b4da2efcb98473c8f2a" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="0aacd439affad44195e13b43e28efcbd" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="56e2c406f9479a43a77876f6e112596f" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(35,18)">Yes</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:button" id="541ee5fc533d1d4ba68797ccdaa19125" transform="matrix(1,0,0,1,446,183)" p:RelatedPage="1473719769736_2313"><p:metadata><p:property name="box"><![CDATA[90,25]]></p:property><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="default"><![CDATA[false]]></p:property><p:property name="fillColor"><![CDATA[#CCCCCCFF]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property><p:property name="textContent"><![CDATA[No please!]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|12px|none]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textAlign"><![CDATA[1,1]]></p:property></p:metadata>
<g p:name="rect" id="2227eaf46ce967419f9ea332e33f5276" style="fill: rgb(204, 204, 204); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke-linejoin: round;" p:name="line1" id="bc70f4265df0b94886643eda31f923ed" d="M 0 0 C 30 -1 60 -1 90 0 C 90 8 90 17 90 25 C 60 26 30 26 0 25 C 0 17 0 8 0 0 z"/>
</g>
<text p:name="text" id="6180e49f5b00514597fbc957613938fa" style="font-family: &quot;Comic Sans MS&quot;; font-size: 12px; font-weight: normal; font-style: normal; text-decoration: none; fill: rgb(0, 0, 0); fill-opacity: 1;" transform="translate(16,18)">No please!</text>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Sketchy.GUI:line" p:sc="Vertical Line" id="201b7a4abbd19145b063e846900b6503" transform="matrix(1,0,0,1,302,165)"><p:metadata><p:property name="a"><![CDATA[0,76]]></p:property><p:property name="b"><![CDATA[0,100]]></p:property><p:property name="mode"><![CDATA[vertical]]></p:property><p:property name="strokeColor"><![CDATA[#000000FF]]></p:property><p:property name="strokeStyle"><![CDATA[1|]]></p:property></p:metadata>
<g p:name="rect" id="babf695055b8d04da6e8d7f328fe0b67" transform="translate(0.5,0.5)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1;">
<path style="stroke: #FFFFFF; stroke-opacity: 0; stroke-width: 8px; fill: none;" p:name="bg" id="3a4d00717737da4990f740f5afed4ac6" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
<path style="stroke-linejoin: round; fill: none;" p:name="line1" id="a9974d06e4ae2b48a003353317d68a50" transform="translate(0.5,0.5)" d="M 0 76 C 0 84 0 92 0 100"/>
</g>
</g><g xmlns="http://www.w3.org/2000/svg" p:type="Shape" xmlns:p="http://www.evolus.vn/Namespace/Pencil" p:def="Evolus.Common:PlainTextV2" p:sc="Label" id="17e00feb4b9cb4438ccaeec4ac849996" transform="matrix(1,0,0,1,136,200)"><p:metadata><p:property name="disabled"><![CDATA[false]]></p:property><p:property name="width"><![CDATA[100,0]]></p:property><p:property name="fixedWidth"><![CDATA[false]]></p:property><p:property name="label"><![CDATA[Do you want to delete this note?]]></p:property><p:property name="textColor"><![CDATA[#000000FF]]></p:property><p:property name="textFont"><![CDATA['Comic Sans MS'|normal|normal|16px|none]]></p:property><p:property name="textAlign"><![CDATA[0,0]]></p:property></p:metadata>
<rect x="0" y="0" style="fill: none; stroke: none; visibility: hidden; display: none;" p:name="bgRect" id="eb1e372bc87f2247bebcaafadfd839aa" width="0" height="0"/>
<text xml:space="preserve" p:name="text" id="21ef6db44ca7e04a93c7246b68971e5e" style="fill: rgb(0, 0, 0); fill-opacity: 1; font-family: &quot;Comic Sans MS&quot;; font-size: 16px; font-weight: normal; font-style: normal; text-decoration: none;"><tspan x="0" y="0">Do you want to delete this note?</tspan></text>
</g></Content></Page></Pages></Document>

164
src/app.py Normal file
View File

@ -0,0 +1,164 @@
from flask import Flask, render_template, request, url_for, redirect, session
from functools import wraps
from sqlalchemy import or_
from markdown import markdown
from database import db, User, Note
app = Flask(__name__)
# Decoration: check login in session
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if 'user_id' not in session:
session.clear()
return redirect(url_for('index'))
return f(*args, **kwargs)
return decorated_function
@app.route('/')
def index(data=None):
return render_template('items/login.html', data=data)
@app.route('/login', methods=['POST'])
def login():
data = dict()
if request.form['email'] and request.form['password']:
# Checks if the user exists
data['email'] = request.form['email']
data['password'] = request.form['password']
my_user = User.query.filter_by(
email=data['email'], password=data['password']).first()
if my_user:
# Create user session
session['user_id'] = my_user.id
session['user_email'] = my_user.email
return redirect(url_for('dashboard'))
else:
data['error'] = True
else:
data['error'] = True
return index(data)
@app.route('/logout')
@login_required
def logout():
# Clear sessions
session.clear()
return redirect(url_for('index'))
@app.route('/dashboard')
@login_required
def dashboard(my_param_note=None):
my_main_note = None
# Searchs
my_notes = my_param_note
if not my_notes:
# Nothing found
my_notes = Note.query.order_by(Note.id.desc()).all()
if my_notes:
# Show first result
my_main_note = my_notes[0]
# Show first note
if request.args.get('id'):
my_note_temp = Note.query.filter_by(id=request.args.get('id')).first()
# Is there any note in the database?
if my_note_temp:
my_main_note = my_note_temp
# Data for template
data = dict()
data['notes'] = my_notes
data['main_note'] = my_main_note
data['markdown'] = markdown
return render_template('items/dashboard.html', data=data)
@app.route('/search')
@login_required
def search():
q = request.args.get('q')
return dashboard(Note.query.filter(
or_(Note.title.like('%' + q + '%'), Note.text.like('%' + q + '%')
)).all())
@app.route('/new')
@login_required
def new():
return render_template('items/new.html')
@app.route('/new/save', methods=['POST'])
@login_required
def save_note():
myNote = Note(request.form['title'], request.form['text'])
# Create
db.session.add(myNote)
db.session.commit()
return redirect(url_for('dashboard'))
@app.route('/edit')
@login_required
def edit(data=None):
id = request.args.get('id')
my_note = Note.query.filter_by(id=id).first()
data = dict()
data['main_note'] = my_note
return render_template('items/edit.html', data=data)
@app.route('/edit_note', methods=['POST'])
@login_required
def edit_note(data=None):
if request.form['id']:
# Update
my_note = Note.query.filter_by(id=request.form['id']).first()
my_note.title = request.form['title']
my_note.text = request.form['text']
db.session.commit()
return redirect(url_for('dashboard'))
@app.route('/delete')
@login_required
def delete():
id = request.args.get('id')
my_note = Note.query.filter_by(id=id).first()
data = dict()
data['main_note'] = my_note
data['markdown'] = markdown
return render_template('items/delete.html', data=data)
@app.route('/delete_note')
@login_required
def delete_note():
id = request.args.get('id')
# Delete
my_note = Note.query.filter_by(id=id).first()
db.session.delete(my_note)
db.session.commit()
return redirect(url_for('dashboard', id=id))
# App
if __name__ == "__main__":
app.secret_key = 'secret'
app.run()

32
src/database.py Normal file
View File

@ -0,0 +1,32 @@
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.sqlite'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(32))
def __init__(self, email, password):
self.email = email
self.password = password
def __repr__(self):
return '<User {email}>'.format(email=self.email)
class Note(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), unique=True)
text = db.Column(db.Text())
def __init__(self, title, text):
self.title = title
self.text = text
def __repr__(self):
return '<Note {title}>'.format(title=self.title)

View File

@ -0,0 +1,62 @@
{% extends 'layouts/master.html' %}
{% block contain %}
<div class="row">
<div class="col-sm-4">
<form action="{{ url_for('search') }}" method="get">
<div class="input-group">
<input name="q" type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-secondary" type="submit">Go!</button>
</span>
</div>
</form>
</div>
<div class="col-sm-8 text-right">
<strong>{{ session['user_email'] }}</strong>
<a href="{{ url_for('logout') }}" class="btn btn-primary">Logout</a>
</div>
</div>
<br/>
<div class="row">
<div class="col-xs-6">
<a href="{{ url_for('new') }}" class="btn btn-success">New</a>
</div>
<div class="col-xs-6 text-right">
{%- if data.main_note -%}
<a href="{{ url_for('edit', id=data.main_note.id) }}" class="btn btn-warning">Edit</a>
<a href="{{ url_for('delete', id=data.main_note.id) }}" class="btn btn-danger">Delete</a>
{% endif %}
</div>
</div>
<br/>
<div class="row">
<div class="col-xs-4">
<div class="list-group">
{% for note in data.notes %}
<a href="{{ url_for('dashboard', id=note.id) }}" class="list-group-item">
<h4 class="list-group-item-heading">{{ data.markdown(note.title)|safe }}</h4>
<p class="list-group-item-text">
{%- if note.text|length > 140 -%}
{{ data.markdown(note.text[:140] + '...')|safe }}
{% else %}
{{ data.markdown(note.text)|safe }}
{% endif %}
</p>
</a>
{% endfor %}
</div>
</div>
<div class="col-xs-8">
{%- if data.main_note -%}
<div class="panel panel-default">
<div class="panel-body">
<h3>
{{ data.markdown(data.main_note.title)|safe }}
</h3>
{{ data.markdown(data.main_note.text)|safe }}
</div>
</div>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,21 @@
{% extends 'layouts/master.html' %}
{% block contain %}
<div class="row">
<div class="col-sm-6"><h4>Do you want to delete this note?</h4></div>
<div class="col-sm-6 text-right">
<a href="{{ url_for('dashboard') }}" class="btn btn-danger">No, please!</a>
<a href="{{ url_for('delete_note', id=data.main_note.id) }}" class="btn btn-success">Yes</a>
</div>
</div>
<br/>
<div class="row">
<div class="panel panel-default">
<div class="panel-body">
<h3>
{{ data.markdown(data.main_note.title)|safe }}
</h3>
{{ data.markdown(data.main_note.text)|safe }}
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,24 @@
{% extends 'layouts/master.html' %}
{% block contain %}
<div class="row text-right">
<strong>{{ session['user_email'] }}</strong>
<a href="{{ url_for('logout') }}" class="btn btn-primary">Logout</a>
</div>
<br/>
<form action="{{ url_for('edit_note') }}" method="post">
<input name="id" type="hidden" value="{{ data.main_note.id }}"/>
<div class="row">
<div class="col-xs-6">
<a href="{{ url_for('dashboard') }}" class="btn btn-danger">Back</a>
</div>
<div class="col-xs-6 text-right">
<button type="submit" class="btn btn-success">Edit</button>
</div>
</div>
<br/>
<div class="row">
<input type="text" name="title" class="form-control" required value="{{ data.main_note.title }}">
<textarea name="text" class="form-control" rows="10" required>{{ data.main_note.text }}</textarea>
</div>
</form>
{% endblock %}

View File

@ -0,0 +1,21 @@
{% extends 'layouts/master.html' %}
{% block contain %}
{% if data['error'] %}
<div class="row">
<div class="alert alert-danger" role="alert">
<strong>Error</strong> Email or password incorrect
</div>
</div>
{% endif %}
<div class="row">
<form method="post" action="{{ url_for('login') }}">
<div class="form-group">
<input type="email" class="form-control" id="email" placeholder="Email" name="email" value="{{ data['email'] }}">
</div>
<div class="form-group">
<input type="password" class="form-control" id="password" placeholder="Password" name="password" value="{{ data['password'] }}">
</div>
<button type="submit" class="btn btn-default center-block">Login</button>
</form>
</div>
{% endblock %}

View File

@ -0,0 +1,23 @@
{% extends 'layouts/master.html' %}
{% block contain %}
<div class="row text-right">
<strong>{{ session['user_email'] }}</strong>
<a href="{{ url_for('logout') }}" class="btn btn-primary">Logout</a>
</div>
<br/>
<form action="{{ url_for('save_note') }}" method="post">
<div class="row">
<div class="col-xs-6">
<a href="{{ url_for('dashboard') }}" class="btn btn-danger">Back</a>
</div>
<div class="col-xs-6 text-right">
<button type="submit" class="btn btn-success">Save</button>
</div>
</div>
<br/>
<div class="row">
<input type="text" name="title" class="form-control" placeholder="Title..." required>
<textarea name="text" class="form-control" rows="10" placeholder="Your text..." required></textarea>
</div>
</form>
{% endblock %}

View File

@ -0,0 +1,22 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
<link href="https://bootswatch.com/flatly/bootstrap.min.css" rel="stylesheet">
<title>Flask-note</title>
</head>
<body>
<div class="container">
<div class="page-header">
<h1 class="text-center">
<small>Flask-note</small>
</h1>
</div>
<div class="row">
{% block contain %}
{% endblock %}
</div>
</div>
</body>
</html>