users must login
This commit is contained in:
68
cao_osint.egg-info/PKG-INFO
Normal file
68
cao_osint.egg-info/PKG-INFO
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: cao_osint
|
||||||
|
Version: 1.0
|
||||||
|
Summary: cao_osint
|
||||||
|
Home-page:
|
||||||
|
Author:
|
||||||
|
Author-email:
|
||||||
|
Keywords: web pyramid pylons
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Framework :: Pyramid
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||||
|
Requires-Dist: plaster_pastedeploy
|
||||||
|
Requires-Dist: pyramid
|
||||||
|
Requires-Dist: pyramid_jinja2
|
||||||
|
Requires-Dist: pyramid_debugtoolbar
|
||||||
|
Requires-Dist: waitress
|
||||||
|
Requires-Dist: alembic
|
||||||
|
Requires-Dist: pyramid_retry
|
||||||
|
Requires-Dist: pyramid_layout
|
||||||
|
Requires-Dist: pyramid_tm
|
||||||
|
Requires-Dist: python-magic
|
||||||
|
Requires-Dist: SQLAlchemy
|
||||||
|
Requires-Dist: transaction
|
||||||
|
Requires-Dist: zope.sqlalchemy
|
||||||
|
Requires-Dist: wtforms
|
||||||
|
Requires-Dist: webhelpers2
|
||||||
|
Requires-Dist: passlib
|
||||||
|
Requires-Dist: markdown
|
||||||
|
Provides-Extra: testing
|
||||||
|
Requires-Dist: WebTest>=1.3.1; extra == "testing"
|
||||||
|
Requires-Dist: pytest>=3.7.4; extra == "testing"
|
||||||
|
Requires-Dist: pytest-cov; extra == "testing"
|
||||||
|
|
||||||
|
# README #
|
||||||
|
|
||||||
|
**cao_osint** est une application pour créer un blog simple. Elle est inspirée du tutorial [**pyramid_blogr**](https://docs.pylonsproject.org/projects/pyramid-blogr/en/latest/index.html).
|
||||||
|
|
||||||
|
## Fonctionnalités ##
|
||||||
|
|
||||||
|
Bien que **cao_osint** soit une application minimale et simple, elle possède toutes les fonctions nécessaire pour gérer un blog :
|
||||||
|
|
||||||
|
- Gestion des utilisateurs du blog (admin ou rédacteur)
|
||||||
|
- Authentification et autorisation des utilisateurs
|
||||||
|
- Gestion des posts du blog avec des statuts : *publié, brouillon ou privé*
|
||||||
|
- Gestion des tags (un post peut avoir un tag)
|
||||||
|
- Les posts sont rédigé avec le langage *Markdown*
|
||||||
|
- Possibilité de faire des recherches sur le titre et le corps des posts
|
||||||
|
|
||||||
|
## Add-on requis ##
|
||||||
|
|
||||||
|
- Python 3.7.1
|
||||||
|
- Pyramid 1.10
|
||||||
|
- SQLite 3.35.5
|
||||||
|
- pyramid-jinja2 2.7 : view templating
|
||||||
|
- wtforms 2.2.1 : form library
|
||||||
|
- webhelpers2 2.0 : various web building related helpers
|
||||||
|
- Markdown 3.4.1 :
|
||||||
|
|
||||||
|
|
||||||
|
### 1.0 (22.01.2023)
|
||||||
|
|
||||||
|
- version initiale
|
||||||
|
|
||||||
|
0.1
|
||||||
|
---
|
||||||
|
|
||||||
|
- Initial version.
|
||||||
55
cao_osint.egg-info/SOURCES.txt
Normal file
55
cao_osint.egg-info/SOURCES.txt
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
CHANGES.txt
|
||||||
|
MANIFEST.in
|
||||||
|
README.md
|
||||||
|
development.ini
|
||||||
|
production.ini
|
||||||
|
pytest.ini
|
||||||
|
rtd.txt
|
||||||
|
setup.py
|
||||||
|
cao_osint/__init__.py
|
||||||
|
cao_osint/forms.py
|
||||||
|
cao_osint/pshell.py
|
||||||
|
cao_osint/routes.py
|
||||||
|
cao_osint/security.py
|
||||||
|
cao_osint/tests.py
|
||||||
|
cao_osint.egg-info/PKG-INFO
|
||||||
|
cao_osint.egg-info/SOURCES.txt
|
||||||
|
cao_osint.egg-info/dependency_links.txt
|
||||||
|
cao_osint.egg-info/entry_points.txt
|
||||||
|
cao_osint.egg-info/not-zip-safe
|
||||||
|
cao_osint.egg-info/requires.txt
|
||||||
|
cao_osint.egg-info/top_level.txt
|
||||||
|
cao_osint/alembic/script.py.mako
|
||||||
|
cao_osint/alembic/versions/README.txt
|
||||||
|
cao_osint/models/__init__.py
|
||||||
|
cao_osint/models/blog_record.py
|
||||||
|
cao_osint/models/meta.py
|
||||||
|
cao_osint/models/user.py
|
||||||
|
cao_osint/scripts/__init__.py
|
||||||
|
cao_osint/scripts/initialize_db.py
|
||||||
|
cao_osint/services/__init__.py
|
||||||
|
cao_osint/services/blog_record.py
|
||||||
|
cao_osint/services/user.py
|
||||||
|
cao_osint/static/favicon.ico
|
||||||
|
cao_osint/static/pyramid-16x16.png
|
||||||
|
cao_osint/static/pyramid.png
|
||||||
|
cao_osint/static/theme.css
|
||||||
|
cao_osint/static/uploads/dolibarr-psw.txt
|
||||||
|
cao_osint/templates/404.jinja2
|
||||||
|
cao_osint/templates/apropos.jinja2
|
||||||
|
cao_osint/templates/blog.jinja2
|
||||||
|
cao_osint/templates/blog_edit.jinja2
|
||||||
|
cao_osint/templates/blog_search.jinja2
|
||||||
|
cao_osint/templates/home.jinja2
|
||||||
|
cao_osint/templates/layout.jinja2
|
||||||
|
cao_osint/templates/login.jinja2
|
||||||
|
cao_osint/templates/tag_edit.jinja2
|
||||||
|
cao_osint/templates/tags.jinja2
|
||||||
|
cao_osint/templates/upload_edit.jinja2
|
||||||
|
cao_osint/templates/uploads.jinja2
|
||||||
|
cao_osint/templates/user_edit.jinja2
|
||||||
|
cao_osint/templates/users.jinja2
|
||||||
|
cao_osint/views/__init__.py
|
||||||
|
cao_osint/views/blog.py
|
||||||
|
cao_osint/views/default.py
|
||||||
|
cao_osint/views/notfound.py
|
||||||
1
cao_osint.egg-info/dependency_links.txt
Normal file
1
cao_osint.egg-info/dependency_links.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
5
cao_osint.egg-info/entry_points.txt
Normal file
5
cao_osint.egg-info/entry_points.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[console_scripts]
|
||||||
|
initialize_cao_osint_db = cao_osint.scripts.initialize_db:main
|
||||||
|
|
||||||
|
[paste.app_factory]
|
||||||
|
main = cao_osint:main
|
||||||
1
cao_osint.egg-info/not-zip-safe
Normal file
1
cao_osint.egg-info/not-zip-safe
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
22
cao_osint.egg-info/requires.txt
Normal file
22
cao_osint.egg-info/requires.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
plaster_pastedeploy
|
||||||
|
pyramid
|
||||||
|
pyramid_jinja2
|
||||||
|
pyramid_debugtoolbar
|
||||||
|
waitress
|
||||||
|
alembic
|
||||||
|
pyramid_retry
|
||||||
|
pyramid_layout
|
||||||
|
pyramid_tm
|
||||||
|
python-magic
|
||||||
|
SQLAlchemy
|
||||||
|
transaction
|
||||||
|
zope.sqlalchemy
|
||||||
|
wtforms
|
||||||
|
webhelpers2
|
||||||
|
passlib
|
||||||
|
markdown
|
||||||
|
|
||||||
|
[testing]
|
||||||
|
WebTest>=1.3.1
|
||||||
|
pytest>=3.7.4
|
||||||
|
pytest-cov
|
||||||
1
cao_osint.egg-info/top_level.txt
Normal file
1
cao_osint.egg-info/top_level.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
cao_osint
|
||||||
BIN
cao_osint.sqlite
BIN
cao_osint.sqlite
Binary file not shown.
@@ -29,12 +29,12 @@
|
|||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="{{ request.route_url('home') }}">CAO Blogr</a>
|
<a class="navbar-brand" href="{{ request.route_url('home') }}">CAOSInt</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse navbar-collapse" id="myNavbar">
|
<div class="collapse navbar-collapse" id="myNavbar">
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li><a href="{{ request.route_url('blog_search') }}"><span class="glyphicon glyphicon-search"></span></a></li>
|
|
||||||
{% if request.authenticated_userid %}
|
{% if request.authenticated_userid %}
|
||||||
|
<li><a href="{{ request.route_url('blog_search') }}"><span class="glyphicon glyphicon-search"></span></a></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">{{request.authenticated_userid}}
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#">{{request.authenticated_userid}}
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ from ..forms import BlogCreateForm, BlogUpdateForm, BlogSearchForm, TagForm
|
|||||||
import markdown
|
import markdown
|
||||||
import datetime #<- will be used to set default dates on models
|
import datetime #<- will be used to set default dates on models
|
||||||
|
|
||||||
@view_config(route_name='blog',
|
@view_config(route_name='blog', renderer='../templates/blog.jinja2', permission='view')
|
||||||
renderer='cao_osint:templates/blog.jinja2')
|
|
||||||
def blog(request):
|
def blog(request):
|
||||||
# get post id from request
|
# get post id from request
|
||||||
blog_id = request.matchdict['id']
|
blog_id = request.matchdict['id']
|
||||||
@@ -29,7 +28,7 @@ def blog(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='blog_edit', renderer='cao_osint:templates/blog_edit.jinja2', permission='view')
|
@view_config(route_name='blog_edit', renderer='../templates/blog_edit.jinja2', permission='view')
|
||||||
def blog_edit(request):
|
def blog_edit(request):
|
||||||
# get post id from request
|
# get post id from request
|
||||||
blog_id = request.matchdict['id']
|
blog_id = request.matchdict['id']
|
||||||
@@ -87,8 +86,7 @@ def blog_edit(request):
|
|||||||
'entry': entry, }
|
'entry': entry, }
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='blog_search',
|
@view_config(route_name='blog_search', renderer='../templates/blog_search.jinja2', permission='view')
|
||||||
renderer='cao_osint:templates/blog_search.jinja2')
|
|
||||||
def blog_search(request):
|
def blog_search(request):
|
||||||
|
|
||||||
criteria = ''
|
criteria = ''
|
||||||
@@ -106,7 +104,7 @@ def blog_search(request):
|
|||||||
'criteria': criteria,
|
'criteria': criteria,
|
||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='tags', renderer='cao_osint:templates/tags.jinja2', permission='view')
|
@view_config(route_name='tags', renderer='../templates/tags.jinja2', permission='view')
|
||||||
def tags(request):
|
def tags(request):
|
||||||
|
|
||||||
# get the list of tags of this topic
|
# get the list of tags of this topic
|
||||||
@@ -117,7 +115,7 @@ def tags(request):
|
|||||||
'tags': tags,
|
'tags': tags,
|
||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='tag_edit', renderer='cao_osint:templates/tag_edit.jinja2', permission='view')
|
@view_config(route_name='tag_edit', renderer='../templates/tag_edit.jinja2', permission='view')
|
||||||
def tag_edit(request):
|
def tag_edit(request):
|
||||||
# get tag parameters from request
|
# get tag parameters from request
|
||||||
tag_id = request.matchdict['id']
|
tag_id = request.matchdict['id']
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import magic
|
import magic
|
||||||
|
|
||||||
@view_config(route_name='home',
|
@view_config(route_name='home', renderer='../templates/home.jinja2', permission='view')
|
||||||
renderer='cao_osint:templates/home.jinja2')
|
|
||||||
def home(request):
|
def home(request):
|
||||||
# get the last created posts
|
# get the last created posts
|
||||||
last_ten = BlogRecordService.get_last_created(request)
|
last_ten = BlogRecordService.get_last_created(request)
|
||||||
@@ -23,15 +22,14 @@ def home(request):
|
|||||||
form = BlogSearchForm(request.POST)
|
form = BlogSearchForm(request.POST)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': "Bienvenue sur mon blog",
|
'page_title': "",
|
||||||
'last_ten': last_ten,
|
'last_ten': last_ten,
|
||||||
'form': form,
|
'form': form,
|
||||||
'criteria': criteria,
|
'criteria': criteria,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='apropos',
|
@view_config(route_name='apropos', renderer='../templates/apropos.jinja2')
|
||||||
renderer='cao_osint:templates/apropos.jinja2')
|
|
||||||
def apropos(request):
|
def apropos(request):
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -39,8 +37,8 @@ def apropos(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='login', renderer='cao_osint:templates/login.jinja2')
|
@view_config(route_name='login', renderer='../templates/login.jinja2')
|
||||||
@forbidden_view_config(renderer='cao_osint:templates/login.jinja2')
|
@forbidden_view_config(renderer='../templates/login.jinja2')
|
||||||
def login(request):
|
def login(request):
|
||||||
username = ''
|
username = ''
|
||||||
login_url = request.route_url('login')
|
login_url = request.route_url('login')
|
||||||
@@ -77,7 +75,7 @@ def logout(request):
|
|||||||
return HTTPFound(location=request.route_url('home'), headers=headers)
|
return HTTPFound(location=request.route_url('home'), headers=headers)
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='users', renderer='cao_osint:templates/users.jinja2', permission='manage')
|
@view_config(route_name='users', renderer='../templates/users.jinja2', permission='manage')
|
||||||
def users(request):
|
def users(request):
|
||||||
# get all users
|
# get all users
|
||||||
users = UserService.all(request)
|
users = UserService.all(request)
|
||||||
@@ -87,7 +85,7 @@ def users(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='user_edit', renderer='cao_osint:templates/user_edit.jinja2', permission='view')
|
@view_config(route_name='user_edit', renderer='../templates/user_edit.jinja2', permission='view')
|
||||||
def user_edit(request):
|
def user_edit(request):
|
||||||
message = ''
|
message = ''
|
||||||
name = request.matchdict['name']
|
name = request.matchdict['name']
|
||||||
@@ -154,7 +152,7 @@ def user_edit(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='uploads', renderer='cao_osint:templates/uploads.jinja2', permission='view')
|
@view_config(route_name='uploads', renderer='../templates/uploads.jinja2', permission='view')
|
||||||
def uploads(request):
|
def uploads(request):
|
||||||
message = ''
|
message = ''
|
||||||
folder_path = request.registry.settings['uploads_dir']
|
folder_path = request.registry.settings['uploads_dir']
|
||||||
@@ -163,7 +161,7 @@ def uploads(request):
|
|||||||
# récupérer tous les fichiers contenus dans dossier static/uploads
|
# récupérer tous les fichiers contenus dans dossier static/uploads
|
||||||
for f in os.scandir(folder_path):
|
for f in os.scandir(folder_path):
|
||||||
file = []
|
file = []
|
||||||
file_url = request.static_url('cao_osint:static/uploads/') + f.name
|
file_url = request.static_url('../static/uploads/') + f.name
|
||||||
file_path = folder_path + f.name
|
file_path = folder_path + f.name
|
||||||
file.append(f.name)
|
file.append(f.name)
|
||||||
file.append('%s Ko' % round(os.path.getsize(file_path) / 1024))
|
file.append('%s Ko' % round(os.path.getsize(file_path) / 1024))
|
||||||
@@ -214,7 +212,7 @@ def uploads(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='upload_edit', renderer='cao_osint:templates/upload_edit.jinja2')
|
@view_config(route_name='upload_edit', renderer='../templates/upload_edit.jinja2', permission='view')
|
||||||
def upload_edit(request):
|
def upload_edit(request):
|
||||||
filename = request.matchdict['filename']
|
filename = request.matchdict['filename']
|
||||||
|
|
||||||
@@ -240,6 +238,6 @@ def upload_edit(request):
|
|||||||
'page_title': "Modifier : " + filename,
|
'page_title': "Modifier : " + filename,
|
||||||
'message': message,
|
'message': message,
|
||||||
'filename': filename,
|
'filename': filename,
|
||||||
'file_url': request.static_url('cao_osint:static/uploads/') + filename,
|
'file_url': request.static_url('../static/uploads/') + filename,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user