Install et HTMLization de markdown pour les articles de blog
This commit is contained in:
		
							parent
							
								
									eda47f57a6
								
							
						
					
					
						commit
						489ec21bc4
					
				
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
								
							@ -1,7 +1,28 @@
 | 
			
		||||
Salut, donc pour activer l'environnement virtuel :
 | 
			
		||||
# Pywallter est un projet pour partagé des fichiers avec ses potes.
 | 
			
		||||
Ça demande juste un identifiant et voila.
 | 
			
		||||
on pourrait ajoute de la double authentification mais bon ...
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##Pour démarrer le programme
 | 
			
		||||
 | 
			
		||||
### Sur OpenBSD (7.1)
 | 
			
		||||
Il faut installé FLask et quelques dépendances
 | 
			
		||||
pkg_add py3-werkzeug py3-jinja2 py3-Pillow py3-wtforms py3-flask-wtf py3-flask \
 | 
			
		||||
py3-bcrypt py3-markdown
 | 
			
		||||
 | 
			
		||||
### Sur Debian
 | 
			
		||||
 apt install truc_much
 | 
			
		||||
 | 
			
		||||
### Ensuite dans le dossier du projet tu fais :
 | 
			
		||||
 | 
			
		||||
    $ export FLASK_APP=pywallter.py
 | 
			
		||||
    $ flask run
 | 
			
		||||
 | 
			
		||||
Et ça devrait démarrer sans soucis.
 | 
			
		||||
 | 
			
		||||
Au premier démarage il créé un dossier pour les données et la base de données sqlite puis il s'arrête,
 | 
			
		||||
il faut donc le redémarrer (c'est un peu con faudra changer ça )
 | 
			
		||||
 | 
			
		||||
    flask run
 | 
			
		||||
 | 
			
		||||
Suffit pour le faire redémarrer
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,6 @@
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
from flask import Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape, send_from_directory
 | 
			
		||||
from werkzeug.utils import secure_filename
 | 
			
		||||
from wand.image import Image
 | 
			
		||||
from wtforms import BooleanField, StringField, IntegerField, PasswordField, validators
 | 
			
		||||
import sqlite3
 | 
			
		||||
from flask_bcrypt import Bcrypt
 | 
			
		||||
 | 
			
		||||
@ -55,11 +55,12 @@
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
            <br />
 | 
			
		||||
  <p class="lead">
 | 
			
		||||
   <form method="POST" action="{{ url_for('blog.racine_blog') }}" id="postform">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      <form method="POST" action="{{ url_for('blog.racine_blog') }}" id="postform">
 | 
			
		||||
   <!--<input type="text" name="category" id="category" placeholder="Catégorie" class="form-control"><br />-->
 | 
			
		||||
   <input type="text" name="title" id="title" placeholder="Titre" class="form-control"><br />
 | 
			
		||||
   <textarea class="form-control" form="postform" name="content" id="content" placeholder="Contenu"></textarea><br />
 | 
			
		||||
   <textarea class="form-control" form="postform" name="content" id="content" placeholder="Contenu" style="height:30vw;"></textarea><br />
 | 
			
		||||
 <div class="row">
 | 
			
		||||
  <div class="col-sm-4"></div>
 | 
			
		||||
  <div class="col-sm-1"><input type="radio" name="status" value="prive" checked>Privé</div>
 | 
			
		||||
@ -70,8 +71,8 @@
 | 
			
		||||
   <br />
 | 
			
		||||
   <button id="tada" class="btn btn-default btn-primary" type="submit">Publier</button>
 | 
			
		||||
   </form>
 | 
			
		||||
  </p>
 | 
			
		||||
  <br>
 | 
			
		||||
 | 
			
		||||
                <br>
 | 
			
		||||
{% for post in posts %}
 | 
			
		||||
<div class="well">
 | 
			
		||||
 <div class="row">
 | 
			
		||||
@ -85,7 +86,9 @@
 | 
			
		||||
   <div class="well">
 | 
			
		||||
    <h6>{{ post.time }}</h6>
 | 
			
		||||
    <h2>{{ post.title }}</h2>
 | 
			
		||||
    <p>{{ post.content }}</p>
 | 
			
		||||
 | 
			
		||||
    {{ post.content|safe }}
 | 
			
		||||
 | 
			
		||||
   </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -41,7 +41,7 @@
 | 
			
		||||
 | 
			
		||||
{% block main %}
 | 
			
		||||
 | 
			
		||||
      <!-- Main jumbotron for a primary marketing message or call to action 
 | 
			
		||||
      <!-- Main jumbotron for a primary marketing message or call to action
 | 
			
		||||
      <div class="jumbotron">
 | 
			
		||||
        <h1>Blog</h1>
 | 
			
		||||
        <p><span id="majuscule">Hello {{ session['username'] }} ! </span>Bienvenue sur ce blog communautaire. Les articles de tous les auteurs du site sont actuellement disponibles sur cette page. Une page personnelle vous est fournie à l'adresse : <a href="/blog/{{ session['username'] }}">Page perso</a></p>
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
  <p class="lead">
 | 
			
		||||
   <form action="" method="POST" id="postform">
 | 
			
		||||
   <input type="text" name="title" id="title" placeholder="Titre" class="form-control" value="{{ oldpost[0] }}"><br />
 | 
			
		||||
   <textarea class="form-control" form="postform" name="content" id="content" placeholder="Contenu">{{ oldpost[1] }}</textarea><br />
 | 
			
		||||
   <textarea class="form-control" form="postform" name="content" id="content" placeholder="Contenu" style="height: 50%;">{{ oldpost[1] }}</textarea><br />
 | 
			
		||||
 <div class="row">
 | 
			
		||||
  <div class="col-sm-4"></div>
 | 
			
		||||
  <div class="col-sm-1"><input type="radio" name="status" value="prive" checked>Privé</div>
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,9 @@
 | 
			
		||||
         <div class="well">
 | 
			
		||||
          <h6>{{ post.time }}</h6>
 | 
			
		||||
          <h2>{{ post.title }}</h2>
 | 
			
		||||
          <p>{{ post.content }}<br><h6>Auteur : {{ post.author }}</h6></p>
 | 
			
		||||
          {{ post.content|safe }}
 | 
			
		||||
 | 
			
		||||
          <h6>Auteur : {{ post.author }}</h6>
 | 
			
		||||
         </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-1">
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,9 @@
 | 
			
		||||
        <div class="col-sm-10">
 | 
			
		||||
          <h6>{{ post.time }}</h6>
 | 
			
		||||
          <h2>{{ post.title }}</h2>
 | 
			
		||||
          <p>{{ post.content }}<br><h6>Auteur : {{ post.author }}</h6></p>
 | 
			
		||||
          {{ post.content|safe }}
 | 
			
		||||
 | 
			
		||||
          <br><h6>Auteur : {{ post.author }}</h6>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-sm-1">
 | 
			
		||||
         {% if post.author == session['username'] %}
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,11 @@
 | 
			
		||||
from flask import Blueprint, escape, render_template, session, redirect, url_for, request, flash, abort
 | 
			
		||||
import time
 | 
			
		||||
import sqlite3
 | 
			
		||||
 | 
			
		||||
from markdown import markdown
 | 
			
		||||
blog = Blueprint('blog', __name__, template_folder='templates')
 | 
			
		||||
 | 
			
		||||
# Un bon gros bug de flask il ne faut pas mettre le meme nom d'une parti ici    
 | 
			
		||||
# a une fonction sinon ca fait une erreur 
 | 
			
		||||
# Un bon gros bug de flask il ne faut pas mettre le meme nom d'une parti ici
 | 
			
		||||
# a une fonction sinon ca fait une erreur
 | 
			
		||||
# k/app.py", line 958, in register_blueprint
 | 
			
		||||
#    if blueprint.name in self.blueprints:
 | 
			
		||||
#https://github.com/pallets/flask/issues/1327
 | 
			
		||||
@ -19,7 +19,7 @@ def racine_blog():
 | 
			
		||||
        UTILISATEUR='%s'% escape(session['username'])
 | 
			
		||||
        if request.method == 'POST':
 | 
			
		||||
            title= request.form['title']
 | 
			
		||||
            content = request.form['content']
 | 
			
		||||
            content = markdown(request.form['content'])
 | 
			
		||||
            #category = request.form['category']
 | 
			
		||||
            status = request.form['status']
 | 
			
		||||
            TIME=time.strftime("%A %d %B %Y %H:%M:%S")
 | 
			
		||||
@ -84,14 +84,15 @@ def edit(post):
 | 
			
		||||
    if 'username' in session :
 | 
			
		||||
        if request.method == 'POST' :
 | 
			
		||||
            newtitle = request.form['title']
 | 
			
		||||
            newcontent = request.form['content']
 | 
			
		||||
            newcontent = markdown(request.form['content'])
 | 
			
		||||
            newstatus = request.form['status']
 | 
			
		||||
            conn = sqlite3.connect('base.db')
 | 
			
		||||
            cursor = conn.cursor()
 | 
			
		||||
            cursor.execute("""UPDATE posts SET title=?, content=?, status=? WHERE title=?""", (newtitle, newcontent, newstatus, post,))
 | 
			
		||||
            cursor.execute("""UPDATE posts SET title=?, content=?, status=? WHERE title=?""",
 | 
			
		||||
                           (newtitle, newcontent, newstatus, post,))
 | 
			
		||||
            conn.commit()
 | 
			
		||||
            conn.close()
 | 
			
		||||
            return redirect(url_for('blog.racine_blog')) 
 | 
			
		||||
            return redirect(url_for('blog.racine_blog'))
 | 
			
		||||
        else:
 | 
			
		||||
            conn = sqlite3.connect('base.db') # Connexion à la base de donnée
 | 
			
		||||
            cursor = conn.cursor() # Création de l'objet "curseur"
 | 
			
		||||
@ -101,5 +102,3 @@ def edit(post):
 | 
			
		||||
            return render_template('postedit.html', oldpost=oldpost)
 | 
			
		||||
    else:
 | 
			
		||||
        return redirect(url_for('loginlogout.login', _external=True)) # sinon on redirige vers login)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user