Commit e374e1d7 authored by fred.lpo07's avatar fred.lpo07

update

parent 7cd9f6d6
......@@ -10,7 +10,6 @@ from flask_admin.base import MenuLink
from flask import url_for
def create_app():
app = Flask(__name__)
app.config.from_object(conf)
......@@ -26,14 +25,13 @@ def create_app():
admin = Admin(app, name=app.config["APP_NAME"], template_mode='bootstrap3')
from app.models import TerritoryUnit, PositionType,Person, Recipient, RecipientAdmin, PersonAdmin
from app.models import TerritoryUnit, PositionType, Person, Recipient, RecipientAdmin, PersonAdmin, ContractType
admin.add_view(PersonAdmin(Person, db.session))
admin.add_view(ModelView(TerritoryUnit, db.session))
admin.add_view(ModelView(ContractType, db.session))
admin.add_view(ModelView(PositionType, db.session))
admin.add_view(RecipientAdmin(Recipient, db.session))
admin.add_link(MenuLink(name='Site publique', category='', url='/'))
with app.app_context():
db.create_all()
......
......@@ -5,11 +5,11 @@ from wtforms.fields import DateField
from wtforms.fields.html5 import EmailField
from wtforms.validators import DataRequired, Email
from app.models import TerritoryUnit, PositionType
from app.models import TerritoryUnit, PositionType, ContractType
common_input = {'class': 'form-control'}
datepicker = {'class': 'form-control datepicker'}
big_textarea_input= common_input
big_textarea_input= common_input.copy()
big_textarea_input['rows']=20
......@@ -20,6 +20,9 @@ def get_territory_unit():
def get_position_type():
return PositionType.query
def get_contract_type():
return ContractType.query
class PersonForm(FlaskForm):
email_declarator = EmailField("Votre email (pour envoie d'une confirmation)", validators=[DataRequired(), Email()],
......@@ -39,6 +42,10 @@ class PersonForm(FlaskForm):
render_kw=common_input)
workplace_city = StringField('Ville du lieu de travail', validators=[DataRequired()], render_kw=common_input)
phone_number = StringField('Numéro de téléphone', render_kw=common_input)
contract_type = QuerySelectField('Type de contrat', validators=[DataRequired()], query_factory=get_contract_type,
get_label='name',
get_pk=lambda a: a.name,
render_kw=common_input)
position_type = QuerySelectField('Type de poste', validators=[DataRequired()], query_factory=get_position_type,
get_label='name',
get_pk=lambda a: a.name,
......
......@@ -14,6 +14,10 @@ class PositionType(db.Model, SaveMixin):
id_position_type = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(256), nullable=False, unique=True)
class ContractType(db.Model, SaveMixin):
id_contract_type = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(256), nullable=False, unique=True)
class Recipient(db.Model, SaveMixin):
id_email_received_model = db.Column(db.Integer, primary_key=True)
......@@ -48,6 +52,7 @@ class Person(db.Model, SaveMixin):
workplace_address = db.Column(db.String(1000), nullable=True)
workplace_city = db.Column(db.String(256), nullable=True)
phone_number = db.Column(db.String(256), nullable=False)
contract_type = db.Column(db.String(256), db.ForeignKey('contract_type.name'), nullable=False)
position_type = db.Column(db.String(256), db.ForeignKey('position_type.name'), nullable=False)
job_title = db.Column(db.String(256), nullable=True)
comment = db.Column(db.String(), nullable=True)
......
......@@ -7,6 +7,7 @@ from app.utils import sendmail
main_bp = Blueprint('main', __name__, template_folder='templates')
@main_bp.context_processor
def global_variables():
values = {}
......@@ -23,6 +24,7 @@ def home():
@main_bp.route("/person/add", methods=["GET", "POST"])
def person_add():
person_form = PersonForm()
recipient_list = Recipient.query.all()
print('<person_add Method>', request.method)
if request.method == 'POST':
data = request.form
......@@ -43,10 +45,24 @@ def person_add():
new_person.save_to_db()
id = new_person.id_person
print('<person_add id>', id)
print('<person_row>', new_person)
flash('Merci pour cette participation')
recipient_list = Recipient.query.all()
new_person_dict = dict((col, getattr(new_person, col)) for col in new_person.__table__.columns.keys())
print('<new_person_dict 1>', type(new_person_dict), new_person_dict)
for k, v in new_person_dict.items():
print(k, v)
if new_person_dict[k] == None:
print(k)
new_person_dict[k] = 'Non défini'
print('<new_person_dict 2>', new_person_dict)
for recipient in recipient_list:
sendmail(recipient.subject, recipient.body, recipient.email, person_data)
sendmail(recipient.subject, recipient.body, recipient.email, new_person_dict)
sendmail("Déclaration d'une nouvelle arrivée",
"Votre déclaration pour {} {} a bien été transmise. \n\n[Ceci est un message automatique]".format(
new_person.name, new_person.surname), new_person.email_referent, person_data)
......@@ -54,11 +70,11 @@ def person_add():
except Exception as e:
flash(e)
print("<person_add error>", e)
return render_template("person_form.html", form=person_form)
return render_template("person_form.html", form=person_form, recipients=recipient_list)
return redirect(url_for('main.person', id=id))
return render_template("person_form.html", form=person_form)
return render_template("person_form.html", form=person_form, recipients=recipient_list)
@main_bp.route('/person/<int:id>')
......@@ -111,7 +127,6 @@ def recipient_add():
return render_template("recipient_form.html", form=recipient_form)
@main_bp.route('/recipients')
def recipients_list():
try:
......
......@@ -98,7 +98,7 @@
<footer class="footer mt-auto py-3 bg-dark text-center">
<div class="container text-muted text-monospace">
<p>Application OpenSource développée avec <i class="far fa-heart"></i> en <i class="fab fa-python"></i> par &
<p>Application OpenSource développée avec <i class="far fa-heart"></i> en <i class="fab fa-python"></i> par Frédéric CLOITRE &
pour la LPO Auvergne-Rhône-Alpes<br>
2019<br>
<a href="https://framagit.org/lpoaura/auto_email_sender" targer="_blank" title="Lien vers le code source"><i
......
......@@ -4,14 +4,14 @@
<div class="row">
<h1><i class="fa fa-user-plus"></i> {% block title %}Ajout d'un nouvel arrivant{% endblock %}</h1>
{% endblock %}
<!-- {% from "_helpers.html" import render_field %}-->
<!-- {% with messages = get_flashed_messages() %}-->
<!-- {% if messages %}-->
<!-- {% for message in messages %}-->
<!-- <div class="alert alert-danger">{{ message }}</div>-->
<!-- {% endfor %}-->
<!-- {% endif %}-->
<!-- {% endwith %}-->
<!-- {% from "_helpers.html" import render_field %}-->
<!-- {% with messages = get_flashed_messages() %}-->
<!-- {% if messages %}-->
<!-- {% for message in messages %}-->
<!-- <div class="alert alert-danger">{{ message }}</div>-->
<!-- {% endfor %}-->
<!-- {% endif %}-->
<!-- {% endwith %}-->
</div>
<div class="row">
......@@ -23,9 +23,9 @@
remplissage permet
la génération automatique de messages pour:
<ul>
<li>créer l'adresse mail;</li>
<li>créer les accès informatiques;</li>
<li>informer Eléonore de l'arrivée de la personne.</li>
{% for recipient in recipients %}
<li>{{recipient.email}} : {{recipient.subject}}</li>
{% endfor %}
</ul>
</p>
</div>
......
......@@ -24,6 +24,9 @@
<li>
Nom: <code>{name}</code>
</li>
<li>
Prénom: <code>{surname}</code>
</li>
<li>
Email: <code>{email}</code>
</li>
......
......@@ -59,7 +59,8 @@ def sendmail(subject, body, recipient, datas):
print('content', body)
msg = MIMEMultipart()
msg['From'] = datas['email_declarator']
msg['reply-to'] = datas['email_declarator']
msg['From'] = config.SMTP_LOGIN
msg['To'] = recipient
msg['Subject'] = title
message = MIMEText(body)
......
version: '3'
services:
aes:
image: lpoaura/aes:latest
container_name: lpoaura_aes
ports:
- 1234:5555
volumes:
- /tmp/data:/data
\ No newline at end of file
......@@ -20,8 +20,10 @@ else
echo "config file already exists"
fi
rm -f /app/config.py
ln -s /data/config.py /app/config.py
if [ -f /app/config.py ]; then
rm -f /app/config.py
ln -s /data/config.py /app/config.py
fi
export FLASK_APP=app
cat /app/config.py
......@@ -30,9 +32,20 @@ flask db init
flask db migrate
flask db upgrade
mv /app/db.sqlite /data/db.sqlite
if [ ! -f /data/db.sqlite ]; then
mv /app/db.sqlite /data/db.sqlite
fi
rm -f /app/db.sqlite
ln -s /data/db.sqlite /app/db.sqlite
if [ ! -d /data/migrations ]; then
mv /app/migrations /data/migrations
fi
rm -f /app/migrations
ln -s /data/migrations /app/migrations
python -m server
......
Destinataire: RH
Sujet: Arrivée d'un nouveau collègue
Bonjour,
Il est prévu que {name} {surname} rejoigne l'équipe à compter du {arrival_date} pour un {contract_type} dont l'intitulé est {position_type} jusqu'au {departure_date}.
Voici les informations principales :
- Délégation territoriale : {territory_unit}
- Service : {service}
- Adresse du lieu de travail : {workplace_address}
- Ville du lieu de travail : {workplace_city}
- Numéro de téléphone : {phone_number}
Merci d'avance
La LPO AuRA
[Ceci est un message généré automatiquement]
--
Destinataire: Support technique
Sujet: Demande de création de compte AD
Bonjour,
Il est prévu que {name} {surname} rejoigne l'équipe à compter du {arrival_date} pour un {contract_type} dont l'intitulé est {position_type} jusqu'au {departure_date}.
Voici les informations principales :
- Délégation territoriale : {territory_unit}
- Service : {service}
- Adresse du lieu de travail : {workplace_address}
- Ville du lieu de travail : {workplace_city}
- Numéro de téléphone : {phone_number}
Merci d'avance
La LPO AuRA
[Ceci est un message généré automatiquement]
--
Destinataire: Service mail
Sujet: Demande de création d'adresse mail
Bonjour,
Pouvez-vous créer l'adresse mail de {surname} {name} ({email})
Voici les informations à affecter au compte :
- Délégation territoriale : {territory_unit}
- Service : {service}
- Adresse du lieu de travail : {workplace_address}
- Ville du lieu de travail : {workplace_city}
- Numéro de téléphone : {phone_number}
Merci d'avance
La LPO AuRA
[Ceci est un message généré automatiquement]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment