Vous pouvez modifier votre article. Actuellement seule la date de première édition sera publiée. Prochainement : intégration de la date de mise à jour dans la base de donnée.
+
Vous pouvez modifier votre article.
-
{{ oldpost[0] }}
+
{{ oldpost['title'] }}
@@ -30,3 +43,7 @@
{% endblock %}
+{% block js %}
+{% include '_js_editor.html' %}
+{% endblock %}
+
diff --git a/templates/index_blog.html b/templates/index_blog.html
index 7132a49..55b17dd 100644
--- a/templates/index_blog.html
+++ b/templates/index_blog.html
@@ -1,7 +1,7 @@
- Blog de {{ user }}
+ Le Blog du serveur
@@ -14,12 +14,19 @@
Pour votre mail de secours il sert à vous envoyer un mail pour changer de mot de passe en cas de perte de ce dernier. Il n'y a
- pas encore de validation de l'e-mail donc vérifiez bien ce que vous tapez.
+
+ Pour votre mail de secours il sert à vous envoyer un mail pour changer de mot de passe en cas de perte de ce dernier. Il n'y a
+ pas encore de validation de l'e-mail donc vérifiez bien ce que vous tapez.
+
@@ -30,40 +30,40 @@
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/templates/up_squelette.html b/templates/up_squelette.html
index 53b108a..f36889e 100644
--- a/templates/up_squelette.html
+++ b/templates/up_squelette.html
@@ -1,8 +1,9 @@
-
-{% include '_head.html' %}
-
+
+ {% include '_head.html' %}
+ {% include 'css/simple_editor.html' %}
+
@@ -20,9 +21,13 @@
{% include '_footer.html' %}
- {% include '_js-core.html' %}
- {% include '_js-gallery.html' %}
+
+
+{% include '_js-core.html' %}
+
+
+{% block js %} {% endblock %}
diff --git a/tools/databaseinit.py b/tools/databaseinit.py
index 38c6376..4749e53 100755
--- a/tools/databaseinit.py
+++ b/tools/databaseinit.py
@@ -32,36 +32,25 @@ def init_db(database):
Mail_rescue TEXT )
""")
conn.commit()
- print ('table users Ok')
-
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS posts(
- id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
- title TEXT,
- content TEXT,
- time TEXT,
- category TEXT,
- author TEXT,
- status TEXT
- )
- """)
+ print ("table users Ok")
cursor.execute("""
CREATE TABLE IF NOT EXISTS Blog_posts(
title TEXT NOT NULL,
subtitle TEXT,
comments TEXT,
- filename TEXT,
- time TEXT,
+ content TEXT,
+ creation_date TEXT,
last_updated TEXT,
category TEXT,
author TEXT,
status TEXT,
+ blog_theme TEXT,
PRIMARY KEY(title, author)
)
""")
conn.commit()
-
+ print ("Table Blog_posts Ok !")
cursor.execute("""select * from users""")
accounts = cursor.fetchall()
@@ -91,10 +80,12 @@ def db_migrate(database):
cursor.execute("""SELECT name FROM PRAGMA_TABLE_INFO('users');""")
db_columns = cursor.fetchall()
invitations_col = False
- blog_theme_col = False
- updated_col = False
lost_password_token_col = False
totp_col = False
+ blog_theme_col = False
+ updated_col = False
+ creation_date_col = False
+ content_col = False
for col in db_columns:
if "invitations" == col[0]:
@@ -111,7 +102,12 @@ def db_migrate(database):
blog_theme_col = True
if "last_updated" == col[0]:
updated_col = True
-
+ if "content" == col[0]:
+ content_col = True
+ if "creation_date" == col[0]:
+ creation_date_col= True
+ if "category" == col[0]:
+ category_col= True
if not(invitations_col):
@@ -143,5 +139,20 @@ def db_migrate(database):
print ("Ajout du champ updated dans la table BLog")
+ if not(content_col):
+ cursor.execute("""ALTER TABLE Blog_posts RENAME COLUMN filename TO content;""")
+ conn.commit()
+ print ("Filename renomé en content")
+
+
+ if not(creation_date_col):
+ cursor.execute("""ALTER TABLE Blog_posts RENAME COLUMN time TO creation_date;""")
+ conn.commit()
+ print ("Time renomé en creation_date")
+
+ if not(category_col):
+ cursor.execute("""ALTER TABLE Blog_posts ADD COLUMN category TEXT;""")
+ conn.commit()
+ print ("Ajout de la colono category")
conn.close()
diff --git a/views/blog.py b/views/blog.py
index de3985c..584abc9 100644
--- a/views/blog.py
+++ b/views/blog.py
@@ -28,43 +28,72 @@ DOSSIER_PUBLIC= app.config['DOSSIER_PUBLIC']+'/'
@login_required
def new_article():
user = '%s'% escape(session['username'])
- folder_blog = DOSSIER_PERSO + user + "/blog/articles/"
if request.method == 'POST':
title = request.form['title']
subtitle = request.form['subtitle']
+ category = request.form['category']
content = request.form['content']
status = request.form['status']
post_date = time.strftime("%d/%m/%Y %H:%M:%S")
- filename = title.replace(" ", "_") + ".md"
-
+
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
- cursor.execute("""INSERT INTO Blog_posts(title, subtitle, filename, time, author, status) VALUES(?, ?, ?, ?, ?, ?)""", (title, subtitle, filename, post_date, user, status)) # Insérer des valeurs
+ cursor.execute("""INSERT INTO Blog_posts(title, subtitle, category, content, creation_date, author, status) VALUES(?, ?, ?, ?, ?, ?, ?)""", (title, subtitle, category, content, post_date, user, status)) # Insérer des valeurs
conn.commit()
- ## On génère le fichiers markdown
- with open(folder_blog + filename, 'w') as f:
- f.write(content)
-
+
return redirect(url_for('blog.list_articles_blog'))
else:
return render_template('new_article_blog.html')
+@blog.route('/myblog/edit/', methods=['GET', 'POST'])
+@login_required
+def edit(title):
+ user='%s'% escape(session['username'])
+
+ folder_blog = DOSSIER_PERSO + user + "/blog/articles/"
+
+ if request.method == 'POST' :
+ title = requrest.form['title']
+ subtitle = request.form['subtitle']
+ category = request.form['category']
+ newcontent = request.form['content']
+ newstatus = request.form['status']
+ updated = time.strftime("%d/%m/%Y %H:%M:%S")
+ conn = sqlite3.connect(DATABASE)
+ cursor = conn.cursor()
+ cursor.execute("""UPDATE Blog_posts SET title, subtitle=?, category=?, last_updated=?, status=?, content=? WHERE title=? AND author=?""", (title, subtitle, category, updated, newstatus, newcontent, title, user))
+ conn.commit()
+ conn.close()
+
+ return redirect(url_for('blog.list_articles_blog'))
+ else:
+ conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
+ cursor = conn.cursor() # Création de l'objet "curseur"
+ cursor.execute("""SELECT title, subtitle, category, content, status FROM Blog_posts WHERE title=? AND author=?""", (title, user))
+ oldpost = cursor.fetchone()
+ conn.close()
+ post = dict(title=oldpost[0], subtitle=oldpost[1], categoory=oldpost[2], content=oldpost[3], status=oldpost[4])
+ return render_template('edit_article.html',
+ section='Post-it',
+ oldpost=post)
+
+
@blog.route('/myblog/list-articles/', methods=['GET'])
@login_required
def list_articles_blog():
user = '%s'% escape(session['username'])
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
- cursor.execute("""SELECT title, subtitle, time, last_updated, status FROM Blog_posts WHERE author=? """, (user,) )
+ cursor.execute("""SELECT title, subtitle, creation_date, last_updated, status FROM Blog_posts WHERE author=? """, (user,) )
list_posts=cursor.fetchall()
posts=list()
nb_articles=0
for post in list_posts:
- posts.append(dict(title=post[0],
+ posts = [dict(title=post[0],
subtitle=post[1],
time=post[2],
last_updated=post[3],
- status=post[4]))
+ status=post[4])] + posts
nb_articles =+ 1
return render_template('list_articles.html',
@@ -79,60 +108,43 @@ def delete(title):
user='%s'% escape(session['username'])
folder_blog = DOSSIER_PERSO + user + "/blog/articles/"
folder_blog_public = DOSSIER_PUBLIC + user + "/blog/articles/"
- filename = title.replace(" ", "_")
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
cursor.execute("""DELETE FROM Blog_posts WHERE title=? AND author=?""", (title, user))
conn.commit()
conn.close()
- os.remove(folder_blog+filename+".md")
- os.remove(folder_blog_public+filename+".html")
return redirect(url_for('blog.list_articles_blog'))
-@blog.route('/myblog/edit/', methods=['GET', 'POST'])
+
+@blog.route('/myblog/personnalize/', methods=['GET'])
@login_required
-def edit(title):
- user='%s'% escape(session['username'])
- filename = title.replace(" ", "_") + ".md"
- folder_blog = DOSSIER_PERSO + user + "/blog/articles/"
-
- if request.method == 'POST' :
- subtitle = request.form['subtitle']
- newcontent = request.form['content']
- newstatus = request.form['status']
- updated = time.strftime("%d/%m/%Y %H:%M:%S")
- conn = sqlite3.connect(DATABASE)
- cursor = conn.cursor()
- cursor.execute("""UPDATE Blog_posts SET subtitle=?, last_updated=?, status=? WHERE title=? AND author=?""", (subtitle, updated, newstatus, title, user))
- conn.commit()
- conn.close()
-
- with open(folder_blog + filename, 'w') as f:
- f.write(newcontent)
-
-
- return redirect(url_for('blog.list_articles_blog'))
- else:
- conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
- cursor = conn.cursor() # Création de l'objet "curseur"
- cursor.execute("""SELECT title, subtitle, status FROM Blog_posts WHERE title=? AND author=?""", (title, user))
- oldpost = cursor.fetchone()
- conn.close()
-
- with open(folder_blog + filename, 'r') as f:
- content = f.read()
-
- return render_template('edit_article.html',
- section='Post-it',
- oldpost=oldpost,
- content=content)
+def personnalize_blog():
+ return render_template('personnalize_blog.html')
-@blog.route('/blog//', methods=['GET'])
-def view(username):
- user = username
+@blog.route('/private-blog/', methods=['GET'])
+@login_required
+def view_internal():
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
- cursor.execute("""SELECT title, subtitle, time, author FROM Blog_posts WHERE status='public' AND author=? """, (user,) )
+ cursor.execute("""SELECT title, subtitle, content, creation_date, last_updated, author, status FROM Blog_posts WHERE status!='draft' """ )
+ list_posts=cursor.fetchall()
+ conn.close()
+ posts=list()
+ id=0
+
+ if list_posts != None:
+ for post in list_posts:
+ posts = [dict(title=post[0], subtitle=post[1], content=post[2], creation_date=post[3], last_updated=post[4], author=post[5], status=post[6] )] + posts
+ else:
+ return redirect(BASE_URL, code=404)
+
+ return render_template('index_blog.html', section='Blog', posts=posts)
+
+@blog.route('/blog/', methods=['GET'])
+def view():
+ conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
+ cursor = conn.cursor() # Création de l'objet "curseur"
+ cursor.execute("""SELECT title, subtitle, creation_date, author FROM Blog_posts WHERE status='public'""" )
list_posts=cursor.fetchall()
posts=list()
id=0
@@ -141,29 +153,46 @@ def view(username):
print (list_posts)
if list_posts != None:
for post in list_posts:
- posts.append(dict(title=post[0], subtitle=post[1], time=post[2], author=post[3]))
+ posts=[dict(title=post[0], subtitle=post[1], creation_date=post[2], author=post[3], status=post[4])] + posts
else:
return redirect(BASE_URL, code=404)
- return render_template('index_blog.html', section='Blog', posts=posts, user=user)
-
-@blog.route('/blog//', methods=['GET'])
-def viewArticle(username, title):
- folder_blog = DOSSIER_PERSO + username + "/blog/articles/"
- filename = title.replace(" ", "_") + ".md"
+ return render_template('index_blog.html', section='Blog', posts=posts)
+
+@blog.route('/blog/private//', methods=['GET'])
+@login_required
+def viewPrivateArticle(username, title):
user = username
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
- cursor.execute("""SELECT title, subtitle, time, author FROM Blog_posts WHERE author=? AND title=? """, (user, title) )
+ cursor.execute("""SELECT title, subtitle, content, creation_date, last_updated, author, status FROM Blog_posts WHERE author=? AND title=? AND status!='draft' """, (user, title) )
post = cursor.fetchone()
conn.close()
if post != None:
- post_info = (dict(title=post[0], subtitle=post[1], time=post[2], author=post[3]))
- with open(folder_blog + filename, 'r') as f:
- content_md = f.read()
- content = markdown(content_md)
+ post_info = (dict(title=post[0], subtitle=post[1], creation_date=post[3], last_updated=post[4],author=post[5]))
+ content= markdown(post[2])
+
return render_template('blog.html', post_info=post_info, content=content)
else:
- flash(u"Cet article n'existe pas", 'error');
+ return redirect(url_for('blog'), code=404);
+
+
+
+
+@blog.route('/blog/public//', methods=['GET'])
+def viewArticle(username, title):
+ user = username
+ conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
+ cursor = conn.cursor() # Création de l'objet "curseur"
+ cursor.execute("""SELECT title, subtitle, content, creation_date, last_updated, author FROM Blog_posts WHERE author=? AND title=? AND status='public' """, (user, title) )
+ post = cursor.fetchone()
+ conn.close()
+ if post != None:
+ post_info = (dict(title=post[0], subtitle=post[1], creation_date=post[3], last_updated=post[4],author=post[5]))
+ content= markdown(post[2])
+
+ return render_template('blog.html', post_info=post_info, content=content)
+ else:
+ return redirect(url_for('blog'), code=404);