calendar api request

This commit is contained in:
Ruidy Nemausat 2020-01-03 16:12:07 +01:00
parent eea16b3eb0
commit c9ce373a4d
7 changed files with 18 additions and 22 deletions

View file

@ -1,6 +1,6 @@
# Villafleurie : moteur de réservation autonome # Villafleurie : moteur de réservation autonome
`V 0.1 Le site est structuré. Il reste à appliquer le contenu et les visuels` `V 1.0 Le site est prêt à l'emploi`
Auteur : Ruidy Nemausat Auteur : Ruidy Nemausat
@ -46,7 +46,7 @@ Le visiteur doit pouvoir :
1. Page d'accueil 1. Page d'accueil
- Landing page - Landing page
- CTA = "Réserver maintenant" - CTA = "Réserver"
2. Page logement 2. Page logement
@ -99,8 +99,6 @@ Le visiteur doit pouvoir :
## TO DO ## TO DO
- Gestion du calendrier
- Tester la synchro avec Google calendar
- Ajouter un date picker dans le formulaire de réservation, changer les placeholders (j'ai pas envie de jouer avec JQuery) - Ajouter un date picker dans le formulaire de réservation, changer les placeholders (j'ai pas envie de jouer avec JQuery)
- Envoyer devis réservation par mail et notification aux hôtes (put it in a background process, personnaliser les htmails : contact, admin et réservation) - Envoyer devis réservation par mail et notification aux hôtes (put it in a background process, personnaliser les htmails : contact, admin et réservation)
- Ajout page/module de paiement - Ajout page/module de paiement
@ -119,7 +117,7 @@ Le visiteur doit pouvoir :
- Système de facturation: CRUD Réservations et envoi. Automatisation si possible - Système de facturation: CRUD Réservations et envoi. Automatisation si possible
- Réservation page : Ajouter des photos. Renvoyer vers la page Location onClick sur Réserver TX. Proposer Upsells : navette + location voiture. - Réservation page : Ajouter des photos. Renvoyer vers la page Location onClick sur Réserver TX. Proposer Upsells : navette + location voiture.
- Vider le contenu du folder root ? - Vider le contenu du folder root ?
- Page confirmation message contact envoyé - Pages confirmation message contact envoyé, reservations réussies ou non (expliquer pourquoi)
- SSL certificate - SSL certificate
## BUGS ## BUGS

View file

@ -19,7 +19,6 @@ services:
web: &web web: &web
build: . build: .
# command: bash -c "python manage.py migrate && python manage.py loaddata villafleurie.json && gunicorn -w 4 villafleurie.wsgi -b 0.0.0.0:8000"
command: bash -c "python manage.py migrate && gunicorn -w 4 villafleurie.wsgi -b 0.0.0.0:8000" command: bash -c "python manage.py migrate && gunicorn -w 4 villafleurie.wsgi -b 0.0.0.0:8000"
volumes: volumes:
- .:/villafleurie - .:/villafleurie

View file

@ -16,7 +16,10 @@ def build_calendar_api_service():
creds = None creds = None
# If modifying these scopes, delete the file token.pickle. # If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/calendar'] SCOPES = [
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.events'
]
# The file token.pickle stores the user's access and refresh tokens, and is # The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first # created automatically when the authorization flow completes for the first
# time. # time.
@ -42,7 +45,6 @@ def build_calendar_api_service():
'T2': "burik7aclvhc7vsboh06c179uo@group.calendar.google.com", 'T2': "burik7aclvhc7vsboh06c179uo@group.calendar.google.com",
'T3': "fu7h30p0gk4a2p4nvo7nsbgpok@group.calendar.google.com" 'T3': "fu7h30p0gk4a2p4nvo7nsbgpok@group.calendar.google.com"
} }
return service, calendars return service, calendars
@ -117,7 +119,6 @@ def get_bookings(place):
synchronize_calendars(place) synchronize_calendars(place)
booked_dates = Reservation.objects.filter(place=place) booked_dates = Reservation.objects.filter(place=place)
# if booking.place.name == f"{place.name}"]
return [booking for booking in booked_dates] return [booking for booking in booked_dates]
@ -134,7 +135,6 @@ def check_availability(place, start_date, end_date):
def update_calendar(reservation): def update_calendar(reservation):
""" push new reservation to master calendar """ """ push new reservation to master calendar """
# authenticate and build service # authenticate and build service
# event.insert(calendarId, summary="Guest", description="Message", end, start )
service, calendars = build_calendar_api_service() service, calendars = build_calendar_api_service()
start = reservation.start.strftime('%Y-%m-%d') start = reservation.start.strftime('%Y-%m-%d')
end = reservation.end.strftime('%Y-%m-%d') end = reservation.end.strftime('%Y-%m-%d')
@ -151,8 +151,8 @@ def update_calendar(reservation):
"date": end "date": end
}, },
} }
) ).execute()
if __name__ == "__main__": # if __name__ == "__main__":
update_calendar(reservation) # update_calendar(reservation)

View file

@ -54,14 +54,14 @@ class ReservationForm(forms.Form):
# min_length=4, # min_length=4,
widget=forms.DateInput(attrs={ widget=forms.DateInput(attrs={
'class': 'form-control form-control-lg form-control-a', 'class': 'form-control form-control-lg form-control-a',
'placeholder': 'Début *'}), 'placeholder': '01/01/2020 *'}),
required=True) required=True)
end = forms.DateField( end = forms.DateField(
label='', label='',
input_formats=['%d/%m/%Y'], input_formats=['%d/%m/%Y'],
widget=forms.DateInput(attrs={ widget=forms.DateInput(attrs={
'class': 'form-control form-control-lg form-control-a', 'class': 'form-control form-control-lg form-control-a',
'placeholder': 'Fin *'}), 'placeholder': '31/12/2020 *'}),
required=True) required=True)

View file

@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals
from celery import shared_task from celery import shared_task
from django.core.mail import send_mail, mail_admins from django.core.mail import send_mail, mail_admins
from villafleurie.settings import EMAIL_HOST_USER, BASE_DIR from villafleurie.settings import EMAIL_HOST_USER, BASE_DIR
from rental.bookings import build_calendar_api_service
import os import os
@ -30,7 +31,6 @@ def send_notification(subject, name, message, template="activation"):
html_path = os.path.join(BASE_DIR, 'rental/templates/rental/html/') html_path = os.path.join(BASE_DIR, 'rental/templates/rental/html/')
with open(os.path.join(html_path, f"{template}.html"), 'r') as html: with open(os.path.join(html_path, f"{template}.html"), 'r') as html:
html_message = html.read() html_message = html.read()
mail_admins( mail_admins(
f"{name} a envoyé un message", f"{name} a envoyé un message",
f"Sujet : {subject}\nMessage : {message}", f"Sujet : {subject}\nMessage : {message}",
@ -39,8 +39,6 @@ def send_notification(subject, name, message, template="activation"):
@shared_task @shared_task
def send_quotation(reservation): def send_quotation(name, email):
""" Send quotation to customer """ """ Send quotation to customer """
name = reservation.guest.name
email = list(reservation.guest.email)
send_confirmation_mail(name, email, template="welcome") send_confirmation_mail(name, email, template="welcome")

View file

@ -123,12 +123,11 @@ def reservation(request):
end=end, end=end,
price=price price=price
) )
send_quotation.delay(reservation) send_quotation.delay(name, email)
update_calendar(reservation) # add to celery tasks too update_calendar(reservation)
context = { context = {
'reservation': reservation 'reservation': reservation
} }
return render(request, 'rental/merci.html', context) return render(request, 'rental/merci.html', context)
else: else:
context = {'form': form} context = {'form': form}

View file

@ -8,6 +8,7 @@ ADMINS = [
] ]
SECRET_KEY = os.environ.get('SECRET_KEY') SECRET_KEY = os.environ.get('SECRET_KEY')
# SECRET_KEY = "q00_4wqdc^n=7)p2lm)!gy&fms8md_b4#1aqysllvqq==2c9!$"
if os.environ.get('ENV') == 'PRODUCTION': if os.environ.get('ENV') == 'PRODUCTION':
DEBUG = False DEBUG = False
@ -147,5 +148,6 @@ EMAIL_SUBJECT_PREFIX = "[VillaFleurieGuadeloupe] "
DEFAULT_FROM_EMAIL = "'Nilka, VillaFleurie' <location.villaFleurie@gmail.com>" DEFAULT_FROM_EMAIL = "'Nilka, VillaFleurie' <location.villaFleurie@gmail.com>"
EMAIL_HOST_USER = "location.villafleurie@gmail.com" EMAIL_HOST_USER = "location.villafleurie@gmail.com"
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD') EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
# EMAIL_HOST_PASSWORD = "location229818"
CELERY_BROKER_URL = "amqp://rabbitmq" CELERY_BROKER_URL = "amqp://rabbitmq"