Merge pull request #41 from Canardout/master

Bouton de suppression, pour les admins et pour les utilisateurs possédant le lien avec token, closes #31, #8
This commit is contained in:
Guillaume Ayoub 2018-10-05 18:06:59 +02:00 committed by GitHub
commit 1efdc9f2a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 57 additions and 9 deletions

View File

@ -110,8 +110,8 @@ def edit_post(name, token=None):
abort(404)
else:
post = {data.STATE: data.STATE_WAITING}
if post[data.STATE] != data.STATE_WAITING:
return redirect(url_for('rest', name='already_published'))
if post[data.STATE] == data.STATE_TRASHED:
return redirect(url_for('rest', name='already_trashed'))
return render_template(
'edit_post.html',
body_id='edit-post',
@ -159,6 +159,9 @@ def save_post(name, token=None):
edit_post_url = url_for(
'edit_post', name=name, token=signer.dumps(post['_timestamp'])
)
if post[data.STATE] == data.STATE_TRASHED:
return redirect(url_for('rest', name='already_trashed'))
return render_template(
'confirmation.html',
edit_post_url=edit_post_url

View File

@ -1,6 +1,5 @@
import email
import time
import os
from pathlib import Path
from xml.etree import ElementTree
from werkzeug.utils import secure_filename
@ -12,14 +11,25 @@ POSTS = {POST_ACTUALITIES: "Actualités", POST_JOBS: "Offres demploi"}
STATE_WAITING = 'waiting'
STATE_PUBLISHED = 'published'
STATES = {STATE_WAITING: "En attente", STATE_PUBLISHED: "Publié"}
STATE_TRASHED = 'trashed'
STATES = {
STATE_WAITING: "En attente",
STATE_PUBLISHED: "Publié",
STATE_TRASHED: "À la corbeille"
}
ACTION_PUBLISH = 'publish'
ACTION_UNPUBLISH = 'unpublish'
ACTION_REPUBLISH = 'republish'
ACTION_TRASH = 'trash'
ACTION_EDIT = 'edit'
ACTION_DELETE_IMAGE = 'delete_image'
ACTIONS = {
ACTION_PUBLISH: "Publier",
ACTION_UNPUBLISH: "Dépublier",
ACTION_REPUBLISH: "Republier",
ACTION_TRASH: "Supprimer",
ACTION_EDIT: 'Editer',
ACTION_DELETE_IMAGE: "Supprimer l'image"
}
@ -104,9 +114,11 @@ def save_post(category, timestamp, admin, form, files):
status = STATE_WAITING
elif get_path(category, STATE_PUBLISHED, timestamp, BASE_FILE).is_file():
status = STATE_PUBLISHED
elif get_path(category, STATE_TRASHED, timestamp, BASE_FILE).is_file():
status = STATE_TRASHED
else:
raise DataException(http_code=404)
if status == STATE_PUBLISHED and not admin:
if status == STATE_TRASHED and not admin:
raise DataException(http_code=401)
post = get_path(category, status, timestamp, BASE_FILE, create_dir=True)
@ -139,6 +151,15 @@ def save_post(category, timestamp, admin, form, files):
)
ElementTree.ElementTree(tree).write(post)
if ACTION_TRASH in form and status == STATE_PUBLISHED:
(root / category / STATE_PUBLISHED / timestamp).rename(
root / category / STATE_TRASHED / timestamp
)
if not admin and ACTION_EDIT in form and status == STATE_PUBLISHED:
(root / category / STATE_PUBLISHED / timestamp).rename(
root / category / STATE_WAITING / timestamp
)
if admin:
if ACTION_PUBLISH in form and status == STATE_WAITING:
(root / category / STATE_WAITING / timestamp).rename(
@ -148,5 +169,9 @@ def save_post(category, timestamp, admin, form, files):
(root / category / STATE_PUBLISHED / timestamp).rename(
root / category / STATE_WAITING / timestamp
)
elif ACTION_REPUBLISH in form and status == STATE_TRASHED:
(root / category / STATE_TRASHED / timestamp).rename(
root / category / STATE_PUBLISHED / timestamp
)
return get_post(category, timestamp)

View File

@ -8,7 +8,13 @@
<article>
<h2>{{ label }}</h2>
{% for state, timestamps in posts.items() %}
{% set state_label = 'En attente' if state == 'waiting' else 'Publiés' %}
{% if state == 'waiting' %}
{% set state_label= 'En attente' %}
{% elif state == 'published' %}
{% set state_label= 'Publiés' %}
{% else %}
{% set state_label= 'Supprimés' %}
{% endif %}
<h3>{{ state_label }}</h3>
{% if timestamps %}
<table>

View File

@ -0,0 +1,9 @@
===================================
Cet article ne peut plus être édité
===================================
Article supprimé
===================
Seuls les administrateurs ont le droit d'éditer un article supprimé.
En cas de besoin, n'hésitez pas à nous contacter sur la page `Discussion </discussion>`_.

View File

@ -58,14 +58,19 @@
<label>Adresse e-mail
<input name="email" type="email" value="{{ post.email }}" />
</label>
<input type="submit" value="Enregistrer" class="button" />
<input type="submit" name="edit" value="Enregistrer" />
{% if admin %}
{% if post._state == 'waiting' %}
<input type="submit" name="publish" value="Publier" class="button" />
<input type="submit" name="publish" value="Publier" />
{% elif post._state == 'published' %}
<input type="submit" name="unpublish" value="Dépublier" />
{% else %}
<input type="submit" name="unpublish" value="Dépublier" class="button" />
<input type="submit" name="republish" value="Republier" />
{% endif %}
{% endif %}
{% if post._state == 'published' %}
<input type="submit" name="trash" value="Supprimer" />
{% endif %}
</form>
{% if name == 'actualites' %}
<p>