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

@@ -0,0 +1,8 @@
{% extends "layout.jinja2" %}
{% block content %}
<div class="content">
<h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}

View File

@@ -0,0 +1,33 @@
{% extends "layout.jinja2" %}
{% block content %}
<br />
<div class="row">
<div class="col-sm-6">
<div class="panel panel-default text-center">
<div class="panel-body">
<blockquote>
L'argent qu'on possède est l'instrument de la liberté; celui qu'on pourchasse est celui de la servitude.
</blockquote>
</div>
<div class="panel-footer">
<h4>Rousseau</h4>
</div>
</div>
</div>
<div class="col-sm-5">
<div class="panel panel-default text-center">
<div class="panel-body">
<blockquote>
L'intelligence ce n'est pas ce que l'on sait mais ce que l'on fait quand on ne sait pas.
<br />
</blockquote>
</div>
<div class="panel-footer">
<h4>Jean Piaget</h4>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,31 @@
{% extends "cao_blogr:templates/layout.jinja2" %}
{% block content %}
{% if request.authenticated_userid %}
<p>
<a href="{{ request.route_url('home') }}">[ Retour ]</a>
<a href="{{ request.route_url('blog_edit', id=entry.id) }}">[ Modifier ]</a>
</p>
{% endif %}
<hr/>
<p>{{ entry.body_html | safe }}</p>
<hr/>
{% if request.authenticated_userid %}
<p>
Topic : <strong>{{ entry.topic }}</strong>
&nbsp;|&nbsp;
Tag : <strong>{{ entry.tag }}</strong>
&nbsp;|&nbsp;
Créé le : <strong>{{ entry.created.strftime("%d-%m-%Y - %H:%M") }}</strong>
&nbsp;|&nbsp;
Modifié le : <strong>{{ entry.edited.strftime("%d-%m-%Y - %H:%M") }}</strong>
</p>
{% else %}
<p>
Créé : <strong title="{{ entry.created }}">{{ entry.created_in_words }}</strong>
</p>
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,51 @@
{% extends "cao_blogr:templates/layout.jinja2" %}
{% block content %}
<form action="{{ url }}" method="post" class="form">
{% for error in form.title.errors %}
<div class="error">{{ error }}</div>
{% endfor %}
<div class="form-group">
<label for="title">{{ form.title.label }}</label>
{{ form.title(class_='form-control') }}
</div>
{% for error in form.body.errors %}
<div class="error">{{ error }}</div>
{% endfor %}
<div class="form-group">
<label for="body">{{ form.body.label }}</label>
{{ form.body(class_='form-control', cols="35", rows="20") }}
</div>
{% for error in form.topic.errors %}
<div class="error">{{ error }}</div>
{% endfor %}
<div class="form-group">
<label for="title">{{ form.topic.label }}</label>
{{ form.topic(class_='form-control') }}
</div>
{% for error in form.tag.errors %}
<div class="text-danger">{{ error }}</div>
{% endfor %}
<div class="form-group">
<label for="title">{{ form.tag.label }}</label>
{{ form.tag(class_='form-control') }}
</div>
<div class="form-group">
<a class="btn btn-default" href="{{ request.route_url('home') }}"><span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
{% if action == 'edit' %}
<button class="btn btn-warning" type="submit" name="form.deleted">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
{% endif %}
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,34 @@
{% extends "layout.jinja2" %}
{% block content %}
{% if request.authenticated_userid %}
<p><a href="{{ request.route_url('blog_edit', id='0') }}">
[Nouveau post]</a>
</p>
{% endif%}
{% if paginator.items %}
{% for entry in paginator.items %}
<div class="col-xs-10">
{{ entry.created.strftime("%d-%m-%Y") }}&nbsp;&nbsp;
<a href="{{ request.route_url('blog', id=entry.id, slug=entry.slug) }}">
<span class="glyphicon glyphicon-triangle-right"></span>&nbsp;{{ entry.title }}
</a>
</div>
<div class="col-xs-2">
<span class="glyphicon glyphicon-triangle-left"></span>&nbsp;{{ entry.tag }}
</div>
{% endfor %}
{{ paginator.pager() |safe }}
{% else %}
<p>No blog entries found.</p>
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="pyramid web application">
<link rel="shortcut icon" href="{{request.static_url('cao_blogr:static/pyramid-16x16.png')}}">
<title>{{page_title}}</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Custom styles for this scaffold -->
<link href="{{request.static_url('cao_blogr:static/theme.css')}}" rel="stylesheet">
<!-- HTML5 shiv and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js" integrity="sha384-0s5Pv64cNZJieYFkXYOTId2HMA2Lfb6q2nAcx2n0RTLUnCAoTTsS0nKEO27XyKcY" crossorigin="anonymous"></script>
<script src="//oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js" integrity="sha384-ZoaMbDF+4LeFxg6WdScQ9nnR1QC2MIRxA1O9KWEXQwns1G8UNyIEZIQidzb0T1fo" crossorigin="anonymous"></script>
<![endif]-->
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{ request.route_url('home') }}">CTP Blog</a>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav navbar-right">
<li><a href="#band">TAGS</a></li>
<li><a href="{{ request.route_url('apropos')}}">A PROPOS</a></li>
<li><a href="{{ request.route_url('page_search') }}"><span class="glyphicon glyphicon-search"></span></a></li>
<!-- si anonyme, lien pour se connecter -->
{% if request.authenticated_userid %}
<li><a href="{{request.route_url('logout')}}">
<span class="glyphicon glyphicon-log-out"></span>&nbsp{{request.authenticated_userid}}</a></li>
{% else %}
<li><a href="{{request.route_url('login')}}"><span class="glyphicon glyphicon-log-in"></span></a></li>
{% endif %}
</ul>
</div>
</div>
</nav>
<!-- Container (The Page Template Section) -->
<div class="container">
<div class="row">
<!-- Display Page Title -->
{% if page_title %}
<h1>{{ page_title }}</h1>
{% endif %}
<br />
<div id="messages">
{% for queue in ['', 'info', 'success', 'warning', 'danger'] %}
{% for message in request.session.pop_flash(queue) %}
<div class="alert alert-{{queue}}">
<button type="button" class="close" data-dismiss="alert">&times;</button>
{{ message }}
</div>
{% endfor %}
{% endfor %}
</div>
<!-- display page content-->
{% block content %}
<p>No content</p>
{% endblock content %}
<br />
<br />
</div>
</div>
<!-- Footer -->
<footer class="text-center">
<div class="row">
<p class="text-center">&copy; 2017&nbsp;-&nbsp;Phuoc Cao
{% if request.authenticated_userid == 'admin' %}
&nbsp|&nbsp<a href="{{request.route_url('users')}}" alt = "Utilisateurs">
<span class="glyphicon glyphicon-user"></span></a>
{% endif %}
</p>
</div>
</footer>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,28 @@
{% extends "layout.jinja2" %}
{% block content %}
<div class="row">
<div class="col-md-offset-4 col-md-5 well">
<form action="{{request.route_url('login')}}" method="post">
<h2>Se connecter</h2>
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="Identifiant">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="Mot de passe">
</div>
<div class="form-group">
<input type="submit" value="Se connecter" class="btn btn-primary">
</div>
</form>
</div>
</div>
<br />
<br />
<br />
<br />
{% endblock %}

View File

@@ -0,0 +1,34 @@
{% extends "cao_blogr:templates/layout.jinja2" %}
{% block content %}
<form action="{{request.route_url('user_add', name=name)}}" method="post" class="form">
{% for error in form.username.errors %}
<div class="error">{{ error }}</div>
{% endfor %}
<div class="form-group">
<label for="title">{{form.username.label}}</label>
{{form.username(class_='form-control')}}
</div>
{% for error in form.password.errors %}
<div class="error">{{error}}</div>
{% endfor %}
<div class="form-group">
<label for="body">{{form.password.label}}</label>
{{form.password(class_='form-control')}}
</div>
<div class="form-group">
<a class="btn btn-default" href="{{ request.route_url('users') }}"><span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,30 @@
{% extends "cao_blogr:templates/layout.jinja2" %}
{% block content %}
<form action="{{ request.route_url('user_pwd', name=entry.name) }}" method="post" class="form">
<div class="form-group">
<label for="password">Nouveau mot de passe</label></label>
<input type="password" name="new_password" class="form-control">
</div>
<div class="form-group">
<div class="form-control-static text-success">
<strong>Dernière connexion</strong> :
{{ entry.last_logged.strftime("%d-%m-%Y - %H:%M") }}</div>
</div>
<div class="form-group">
<a class="btn btn-default" href="{{ request.route_url('users') }}"><span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
{% if name != 'new' %}
<button class="btn btn-warning" type="submit" name="form.deleted">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
{% endif %}
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,32 @@
{% extends "layout.jinja2" %}
{% block content %}
<p>
<a href="{{ request.route_url('home' ) }}" class="btn btn-default" role="button">
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<a href="{{ request.route_url('user_add', name='new') }}" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-plus"></span> Nouvel utilisateur</a>
</p>
<table id="users_list" class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th>No Id</th>
<th>Nom</th>
<th>Dernière connexion</th>
</tr>
</thead>
{% for entry in users %}
<tr>
<td>{{ entry.id }}</td>
<td>
<a href="{{ request.route_url('user_pwd', name=entry.name) }}">
{{ entry.name }}
</a>
</td>
<td>{{ entry.last_logged.strftime("%d-%m-%Y - %H:%M") }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}