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): # get the last created posts last_ten = BlogRecordService.get_last_created(request) return { 'page_title': "Bienvenue sur mon blog", 'last_ten': last_ten, } @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, }