diff --git a/cao_sunyata/views/blog.py b/cao_sunyata/views/blog.py
index da7a3c3..1e83a02 100644
--- a/cao_sunyata/views/blog.py
+++ b/cao_sunyata/views/blog.py
@@ -3,8 +3,7 @@ from pyramid.httpexceptions import HTTPNotFound, HTTPFound
import markdown
import datetime #<- will be used to set default dates on models
-from ..models.blog_record import BlogRecord
-from ..services.blog_record import BlogRecordService
+from ..models.entries import *
from ..forms import BlogCreateForm, BlogUpdateForm, BlogSearchForm
@@ -12,7 +11,7 @@ from ..forms import BlogCreateForm, BlogUpdateForm, BlogSearchForm
def blog(request):
# get post id from request
blog_id = request.matchdict['id']
- entry = BlogRecordService.by_id(request, blog_id)
+ entry = get_entries_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'))
@@ -36,7 +35,7 @@ def blog_copy(request):
blog_id = request.matchdict['id']
# get the post
- entry = BlogRecordService.by_id(request, blog_id)
+ entry = get_entries_by_id(request, blog_id)
if not entry:
request.session.flash("Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('topic', topic=topic))
@@ -65,7 +64,7 @@ def blog_edit(request):
url = request.route_url('blog_edit',topic=topic, id=blog_id)
# get the list of tags of this topic
- tags = BlogRecordService.get_tags_byTopic(request, topic)
+ tags = get_tags_byTopic(request, topic)
if blog_id == '0':
# create a new post
@@ -78,7 +77,7 @@ def blog_edit(request):
else:
# modify post
- entry = BlogRecordService.by_id(request, blog_id)
+ entry = get_entries_by_id(request, blog_id)
if not entry:
request.session.flash("Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('topic', topic=topic))
@@ -139,7 +138,7 @@ def blog_search(request):
if tags:
liste += '
'
for tag in tags:
- count = len(BlogRecordService.by_topic(request, tag.topic, tag.tag))
+ count = len(get_entries_by_topic(request, tag.topic, tag.tag))
liste += ' '.format(
tag.tag_name, count)
liste += '
'
@@ -149,7 +148,7 @@ def blog_search(request):
if 'form.submitted' in request.params and form.validate():
criteria = request.params['criteria']
# si afficher tous les fiches ?
- items = BlogRecordService.by_criteria(request, criteria)
+ items = get_entries_by_criteria(request, criteria)
return {
'page_title': "Rechercher",
@@ -179,7 +178,7 @@ def topic(request):
for tag in tags:
liste += '
' + tag.tag_name + '
'
# lire toutes les docs du topic
- items = BlogRecordService.by_topic(request, topic, tag.tag)
+ items = get_entries_by_topic(request, topic, tag.tag)
if items:
liste += '
'
for item in items:
diff --git a/cao_sunyata/views/default.py b/cao_sunyata/views/default.py
index b90cb63..2f2d6c1 100644
--- a/cao_sunyata/views/default.py
+++ b/cao_sunyata/views/default.py
@@ -7,23 +7,25 @@ from pyramid.httpexceptions import HTTPFound
from pyramid.security import remember, forget
from pyramid_mailer.message import Message, Attachment
-from ..services.user import UserService
-from ..services.blog_record import BlogRecordService
from ..forms import UserCreateForm, TopicForm, TagForm
-from ..models.user import User
-from ..models.blog_record import Topics, Tags
-import os
+from ..models.users import *
+from ..models.entries import *
+from datetime import datetime
from PIL import Image
+from urllib import request, parse
+from passlib.apps import custom_app_context as blogger_pwd_context
+
+import os
import shutil
import magic
import json
-from urllib import request, parse
import pkg_resources
import sys
import sqlite3
+import transaction
-@view_config(route_name='home',
- renderer='cao_sunyata:templates/home.jinja2')
+
+@view_config(route_name='home', renderer='cao_sunyata:templates/home.jinja2')
def home(request):
# images list for the carousel
dir = request.static_url('cao_sunyata:static/carousel')
@@ -40,16 +42,18 @@ def home(request):
dir + '/S25.jpg']
# get the Activities section
- activ = BlogRecordService.get_activities(request)
+ activ = get_activities(request)
# insèrer le path de static/img
activities = activ.body.replace('static/', "%s/static/" % request.application_url)
# get the last created posts
- last_ten = BlogRecordService.get_last_created(request)
+ last_ten = get_last_created(request)
name = ''
email = ''
comments = ''
+
+ # import pdb;pdb.set_trace()
- if 'form.submitted' in request.params :
+ if 'form.submitted' in request.params :
name = request.params['name']
email = request.params['email']
comments = request.params['comments']
@@ -117,7 +121,7 @@ def settings(request):
# lire toutes les docs du topic
topic = '_admin'
- items = BlogRecordService.get_last_edited(request)
+ items = get_last_edited(request)
# informations sur les versions
pyramid_version = pkg_resources.get_distribution("pyramid").version
@@ -154,14 +158,20 @@ def login(request):
if 'form.submitted' in request.params:
username = request.POST.get('username')
userpwd = request.POST.get('password')
- user = UserService.by_name(request, username)
- if user and user.verify_password(userpwd):
- headers = remember(request, username)
- request.session.flash("Bienvenue %s !" % username, 'success')
- return HTTPFound(location=came_from, headers=headers)
- else:
- headers = forget(request)
- request.session.flash("Login et mot de passe invalides. La connexion a échoué.", "danger")
+ user = get_users_by_name(request, username)
+ # Is user existed ?
+ if user :
+ if blogger_pwd_context.verify(userpwd, user.password):
+ # pwd OK, set last login date
+ update_last_connection(request, user.id)
+ # force le commit car il ne se fait pas automatiquement après l'update
+ transaction.commit()
+ headers = remember(request, username)
+ request.session.flash("Bienvenue %s !" % username, 'success')
+ return HTTPFound(location=came_from, headers=headers)
+ # pwd NOK, error message
+ headers = forget(request)
+ request.session.flash("Login et mot de passe invalides. La connexion a échoué.", "danger")
return {
'page_title': "",
@@ -183,7 +193,7 @@ def logout(request):
@view_config(route_name='users', renderer='cao_sunyata:templates/users.jinja2', permission='manage')
def users(request):
# get all users
- users = UserService.all(request)
+ users = get_users_all(request)
return {
'page_title': "Liste des utilisateurs",
'users': users
@@ -202,66 +212,53 @@ def user_edit(request):
if name == '0':
# nouvel utilisateur
- user = User()
- form = UserCreateForm(request.POST, user)
+ user = {}
+ user['id'] = 0
+ user['name'] = ''
+ user['password'] = ''
+ user['last_logged'] = None
page_title = "Nouvel utilisateur"
else:
# lire la fiche du user
- user = UserService.by_name(request, name)
+ user = get_users_by_name(request, name)
if not user:
request.session.flash("Utilisateur non trouvé : %s" % name, 'danger')
return HTTPFound(location=url_retour)
- form = UserCreateForm(request.POST, user)
page_title = "Modification utilisateur"
+ if 'form.submitted' in request.params:
+ new_values = {}
+ for param in user.keys():
+ if param in request.params and request.params[param] != user[param]:
+ new_values[param] = request.params[param]
+
+ if new_values:
+ update_user(request, name, new_values)
+ request.session.flash(u"La fiche a été mise à jour avec succès.", 'success')
+ return HTTPFound(location=url_retour)
- if 'form.submitted' in request.params and form.validate():
- # controle que le password a moins 6 car
- if len(form.password.data) < 6 :
- message = "Le mot de passe doit avoir au moins 6 caractères"
- else:
- if name == '0':
- # création user
- # controler que le nouvel user n'existe pas dans la BD
- new_user = UserService.by_name(request, form.name.data)
- if new_user:
- message = "Utilisateur déjà créé : %s" % form.name.data
- else:
- form.populate_obj(user)
- user.set_password(form.password.data.encode('utf8'))
- # créer le nouveau
- request.dbsession.add(user)
- request.session.flash("La fiche a été créée avec succès.", 'success')
- return HTTPFound(location=url_retour)
-
- else:
- # modification user
- del form.name # SECURITY: prevent overwriting of primary key
- form.populate_obj(user)
- user.set_password(form.password.data.encode('utf8'))
- request.session.flash("La fiche a été modifiée avec succès.", 'success')
- return HTTPFound(location=url_retour)
if 'form.deleted' in request.params:
- UserService.delete(request, user.id)
+ import pdb;pdb.set_trace()
+ delete_user(request, user.id)
request.session.flash("La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=url_retour)
return {
'page_title': page_title,
'message': message,
- 'form': form,
'url': url,
'url_retour': url_retour,
'name': name,
+ 'user': user,
}
@view_config(route_name='topics', renderer='cao_sunyata:templates/topics.jinja2', permission='view')
def topics(request):
# get all topics
- topics = BlogRecordService.get_topics(request)
+ topics = get_topics(request)
return {
'page_title': "Liste des Topics",
'topics': topics
@@ -275,7 +272,7 @@ def topic_edit(request):
url = request.route_url('topic_edit',topic=topic)
# get the list of tags of this topic
- tags = BlogRecordService.get_tags_byTopic(request, topic)
+ tags = get_tags_byTopic(request, topic)
if topic == '0':
# create a new topic
@@ -285,7 +282,7 @@ def topic_edit(request):
else:
# modify post
- entry = BlogRecordService.get_topic_byTopic(request, topic)
+ entry = get_topic_byTopic(request, topic)
if not entry:
request.session.flash(u"Topic non trouvé : %s" % topic, 'warning')
return HTTPFound(location=request.route_url('topics'))
@@ -304,7 +301,7 @@ def topic_edit(request):
return HTTPFound(location=request.route_url('topics'))
if 'form.deleted' in request.params:
- BlogRecordService.topic_delete(request, entry.topic)
+ topic_delete(request, entry.topic)
request.session.flash("La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=request.route_url('topics'))
@@ -331,7 +328,7 @@ def tag_edit(request):
else:
# modify post
- entry = BlogRecordService.get_tags_byId(request, tag_id)
+ entry = get_tags_byId(request, tag_id)
if not entry:
request.session.flash(u"Tag non trouvé : %s" % tag_id, 'warning')
return HTTPFound(location=request.route_url('topic_edit', topic=topic))
@@ -350,7 +347,7 @@ def tag_edit(request):
return HTTPFound(location=request.route_url('topic_edit', topic=topic))
if 'form.deleted' in request.params:
- BlogRecordService.tag_delete(request, entry.id)
+ tag_delete(request, entry.id)
request.session.flash("La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=request.route_url('topic_edit', topic=topic))
diff --git a/setup.py b/setup.py
index 6fba21f..3c5a855 100644
--- a/setup.py
+++ b/setup.py
@@ -18,9 +18,9 @@ requires = [
'pyramid_mailer',
'pyramid_retry',
'pyramid_tm',
- 'SQLAlchemy==1.4.49',
+ 'SQLAlchemy==1.4.54',
'transaction',
- 'zope.sqlalchemy',
+ 'zope.sqlalchemy==2.0',
'wtforms', # form library
'webhelpers2', # various web building related helpers
'passlib',