initial upload

This commit is contained in:
2022-04-21 13:49:31 +02:00
parent fc93b5552a
commit e3d4616e62
51 changed files with 1677 additions and 54 deletions

View File

68
cao_blogr/views/blog.py Normal file
View File

@@ -0,0 +1,68 @@
from pyramid.view import view_config
from pyramid.httpexceptions import HTTPNotFound, HTTPFound
from ..models.blog_record import BlogRecord
from ..services.blog_record import BlogRecordService
from ..forms import BlogCreateForm, BlogUpdateForm
@view_config(route_name='blog',
renderer='cao_blogr:templates/blog.jinja2')
def blog(request):
# get post id from request
blog_id = request.matchdict['id']
entry = BlogRecordService.by_id(request, blog_id)
# just created ? convert body to html
if entry.body_html == '':
BlogRecordService.proc_after_create(request, blog_id)
if not entry:
request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('home'))
return {
'page_title': entry.title,
'entry': entry
}
@view_config(route_name='blog_edit',
renderer='cao_blogr:templates/blog_edit.jinja2',
permission='view')
def blog_edit(request):
# get post id from request
blog_id = request.matchdict['id']
url = request.route_url('blog_edit',id=blog_id)
if blog_id == '0':
# create a new post
entry = BlogRecord()
form = BlogCreateForm(request.POST)
else:
# modify post
entry = BlogRecordService.by_id(request, blog_id)
if not entry:
request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('home'))
form = BlogUpdateForm(request.POST, entry)
if 'form.submitted' in request.params and form.validate():
if blog_id == '0':
form.populate_obj(entry)
request.dbsession.add(entry)
return HTTPFound(location=request.route_url('home'))
else:
del form.id # SECURITY: prevent overwriting of primary key
form.populate_obj(entry)
# after update procedure
BlogRecordService.proc_after_update(request, blog_id)
return HTTPFound(location=request.route_url('blog', id=entry.id, slug=entry.slug))
return {
'page_title': entry.title,
'url': url,
'form': form,
}

116
cao_blogr/views/default.py Normal file
View File

@@ -0,0 +1,116 @@
from pyramid.view import view_config
from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember, forget
from ..services.user import UserService
from ..services.blog_record import BlogRecordService
from ..forms import UserCreateForm
from ..models.user import User
@view_config(route_name='home',
renderer='cao_blogr:templates/home.jinja2')
def home(request):
page = int(request.params.get('page', 1))
paginator = BlogRecordService.get_paginator(request, page)
return {
'page_title': "Bienvenue sur mon blog",
'paginator': paginator
}
@view_config(route_name='apropos',
renderer='cao_blogr:templates/apropos.jinja2')
def apropos(request):
return {
'page_title': "A propos",
}
@view_config(route_name='login',
renderer='cao_blogr:templates/login.jinja2')
def login(request):
username = request.POST.get('username')
if username:
user = UserService.by_name(request, username)
if user and user.verify_password(request.POST.get('password')):
headers = remember(request, user.name)
request.session.flash("Bienvenue %s !" % username, 'success')
return HTTPFound(location=request.route_url('home'), headers=headers)
else:
headers = forget(request)
request.session.flash("Login et mot de passe invalides. La connexion a échoué.", "danger")
return {
'page_title': "",
}
@view_config(route_name='logout', renderer='string')
def logout(request):
headers = forget(request)
request.session.flash('Vous avez bien été déconnecté.', 'success')
return HTTPFound(location=request.route_url('home'), headers=headers)
@view_config(route_name='users',
renderer='cao_blogr:templates/users.jinja2', permission='manage')
def users(request):
# get all users
users = UserService.all(request)
return {
'page_title': "Liste des utilisateurs",
'users': users
}
@view_config(route_name='user_add',
renderer='cao_blogr:templates/user_add.jinja2', permission='manage')
def user_add(request):
name = request.matchdict['name']
# nouveau
form = UserCreateForm(request.POST)
if 'form.submitted' in request.params and form.validate():
# créer nouveau
new_user = User(name=form.username.data)
new_user.set_password(form.password.data.encode('utf8'))
request.dbsession.add(new_user)
return HTTPFound(location=request.route_url('users'))
return {
'page_title': 'Nouvel utilsateur',
'form': form,
'name': name,
}
@view_config(route_name='user_pwd',
renderer='cao_blogr:templates/user_pwd.jinja2', permission='manage')
def user_pwd(request):
# reset password or delete user
name = request.matchdict['name']
# lire la fiche du membre
entry = UserService.by_name(request, name)
if not entry:
request.session.flash(u"Utilisateur non trouvé : %s" % name, 'warning')
return HTTPFound(location=request.route_url('users'))
if 'form.submitted' in request.params:
mdp = request.params["new_password"]
entry.set_password(mdp.encode('utf8'))
return HTTPFound(location=request.route_url('users'))
if 'form.deleted' in request.params:
UserService.delete(request, entry.id)
request.session.flash("La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=request.route_url('users'))
return {
'page_title': "Utilisateur : %s" %(entry.name),
'entry': entry,
}

View File

@@ -0,0 +1,7 @@
from pyramid.view import notfound_view_config
@notfound_view_config(renderer='../templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}