forked from AFPy/afpy.org
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:
commit
1efdc9f2a9
7
afpy.py
7
afpy.py
|
@ -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
|
||||
|
|
31
data_xml.py
31
data_xml.py
|
@ -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 d’emploi"}
|
|||
|
||||
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)
|
||||
|
|
|
@ -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>
|
||||
|
|
9
templates/already_trashed.rst
Normal file
9
templates/already_trashed.rst
Normal 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>`_.
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue
Block a user