diff --git a/__manifest__.py b/__manifest__.py
index 8d08163..8d50f1f 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -20,7 +20,7 @@
'version': '0.1',
# any module necessary for this one to work correctly
- 'depends': ['base','mail','donation'],
+ 'depends': ['base','mail','donation','event'],
# always loaded
'data': [
@@ -33,9 +33,10 @@
# 'views/partnerimport.xml',
'report/report_donationtax.xml',
'report/report.xml',
- 'views/website_participation.xml'
+ 'views/website_participation.xml',
#'report/report_donationtax.xml',
#'report/report.xml'
+ 'views/event.xml'
],
# only loaded in demonstration mode
diff --git a/models/__init__.py b/models/__init__.py
index 1a1dd6e..f9a8345 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -3,4 +3,5 @@
from . import models
from . import partnerimport
from . import donation
+from . import event
#from . import partner
\ No newline at end of file
diff --git a/models/creds.json b/models/creds.json
new file mode 100644
index 0000000..81e5711
--- /dev/null
+++ b/models/creds.json
@@ -0,0 +1,12 @@
+{
+ "type": "service_account",
+ "project_id": "kalachakra-351613",
+ "private_key_id": "eb90d78fb9f871dc161296f2a115de14565f7379",
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCvqyF41buR5hDo\nvgJiipT5WM3HO75dG7ZefQobcfYO6JbX3Agsgmt8EN/y+L5xgmA4/+LLmc/UJFJs\nb2+GCK+nSZ6Akmu8eo2BM08lofgVT4IO2uJW4DW/2Hkp1WHelcIdvgH6Ak0fg2kV\ngv6H7mi6GGqVFa/ZL/qECEQFl/3Cby3jzX7Jku7oF/juobafyMmigVGm3F8t7ug6\n5RcYYhNwS+oSGZ+saEyDu8GQ5B5JqBMStwI+LvDZoSWWg0y0iRqWmqsOl/ElcQCm\nnvZgzoNLmT/1NbPq9aNG96vZuKsS67MiiW4hahXJBjOygOqV4L+kOBQ6l1oimFmH\n8GYWQqR/AgMBAAECggEAF5lBsd3kiMEDXIDKCTrcsHKBklYwSInEggUCKpWwnGga\ne30PjAspLU2HCDjqPI1rJ70YVomfJbyLZg3CSZs5HZwCMvt4haVhBQ5Df6a2kQZR\nTnWRGmKcVd1ayYfk0eYEYcJ4uYE9oxIgN8eVMeWRJA7LoqN7MA4F9V625Jl6eXgE\nc7oAx7FLDq5pql8O12QQsAKtaJaYZ15cpM5HFFjUm1B5xBZ0EyiHgbUWZn1o3ZfV\nMZNv9SwzgLtWEFDFhweT7cF/wIwcpoB7Hi5MXqSwHY9V2cy4zSHB1w+COvVpwbKT\nfWOaG+G+Qj5A9XQyr5nVj2k2lNxc/X4+qiGK/kPjAQKBgQD17urHjcS2l6DN1FzP\nGVVclixyh6eCxUZ9McivdXjrXMfWCjwMcGCq3nUluWUTPvmFq4XddM+jirrllKd8\nr1aLmJDkQIKDad/Cl9JPUnVq/cID8ldRKLV/CFB1CiRccRggq8nHmzSb5tFkJsvZ\n39QOizE8HtpqSSWlCHDIJyw+oQKBgQC22+x4m+8sGjjQ0pnGp4PS0WFkUa9sdfQF\nDiTIVKLginhqbukVzft1Jl0NuOl8eUXobvdoscGuZotUfPMFaahpYpsBP/S14rsu\n+fBJKnboFgcOJtmoYAKG2jzeV8ojY/B/vSSfcb4UOnikorQDsK8k6DY9tCLFdVOl\nQBpk1LevHwKBgBvG0kmbn34n/geBVsIlUFjWtUpyO98vPNjjCJGYqQGcRw3LtiCJ\niMGDwqNyHxJfaHtKdiIfEVydTKKleY1BmHrHzoWZK6SADr/BugUvgQeGhaVAd9A4\n0tb4L24oqRavx1PZUz7yLqz1Eu1G3HtNJnxGCFeL/ItIm7HaFDLnCb5BAoGAaga6\n5nQECh5qMyrp3zXiSar+PZzfipQaGZRJ356zkl63037bx7jXxOWprvs45uOqlUtC\nSYJIO0daInMQtmK9M93o4qCi05PT1Tk3CjWFHK0pChucuPRygp6oDIP6wOqB2I9j\nXNAm1rPQoCV3G2ynIU9DpCN+xd9x0K+Knkx49SECgYBnekMxReycVU3mowP+PAWR\nR3/+Z8egxqynDKIF4HQ7amOKPuGvH0xle+EacUNPK3griylV+jBd6rKAdGGZ5bKZ\nDXbB81DQ9OvfI8nugL/n+kQ42NwB2gMa23xFG9whjfDPice5qndPAC9vZXVr+iX8\nQ+LVZ9iLobW+AhqtXjokig==\n-----END PRIVATE KEY-----\n",
+ "client_email": "kalachakra-srv@kalachakra-351613.iam.gserviceaccount.com",
+ "client_id": "117984242661766518148",
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+ "token_uri": "https://oauth2.googleapis.com/token",
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/kalachakra-srv%40kalachakra-351613.iam.gserviceaccount.com"
+ }
\ No newline at end of file
diff --git a/models/event.py b/models/event.py
new file mode 100644
index 0000000..65b74d6
--- /dev/null
+++ b/models/event.py
@@ -0,0 +1,88 @@
+
+
+
+from odoo import models, fields, api
+from odoo.exceptions import UserError, ValidationError,Warning
+from psycopg2 import sql, DatabaseError
+
+from werkzeug import utils
+
+
+import os.path
+from google.oauth2 import service_account
+from googleapiclient.discovery import build
+from datetime import datetime, timedelta
+
+
+# IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE
+SCOPES = ['https://www.googleapis.com/auth/calendar']
+SERVICE_ACCOUNT_FILE = '/usr/lib/python3/dist-packages/odoo/kalachakra_module/kalachakra/models/creds.json' # You should make it an environment variable
+SUBJECT = 'kalachakra-srv@kalachakra-351613.iam.gserviceaccount.com'
+
+
+class EventTagCategory(models.Model):
+ _inherit = "event.tag.category"
+ _description = 'Event tag category'
+
+ calendar_id=fields.Char('google calendar id')
+
+class EventEvent(models.Model):
+ _inherit = "event.event"
+ _description = 'Event'
+
+ calendar_id=fields.Char('calendar id')
+ event_id=fields.Char('event id')
+
+ def add_event_to_google_agenda(self):
+ credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
+ delegated_credentials = credentials.with_subject(SUBJECT)
+ service = build('calendar', 'v3', credentials=delegated_credentials)
+
+ d = datetime.utcnow().date()
+ tomorrow = datetime(d.year, d.month, d.day, 10)+timedelta(days=1)
+ start = tomorrow.isoformat()
+ end = (tomorrow + timedelta(hours=1)).isoformat()
+
+ start=self.date_begin.isoformat()
+ end=self.date_end.isoformat()
+ diff_date=self.date_end-self.date_begin
+ if diff_date.days>0:
+ date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+self.date_end.strftime('%Y-%m-%d')
+ else:
+ date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+str(self.id)
+
+ name_param=self.name.replace(' ','-')
+ name_param=name_param.replace('\'','-')
+ description='Click here to register'
+ #str(self.date_begin.year())+'-'+str(self.date_begin.month())+'-'+self.date_begin.day()
+
+ body={"summary": self.name,
+ "description": description,
+ "start": {"dateTime": start, "timeZone": 'Asia/Karachi'},
+ "end": {"dateTime": end, "timeZone": 'Asia/Karachi'},
+ }
+
+ #recherche de l'id calendar lié à l'étiquette de l'événément
+ calendar_id=self.tag_ids.category_id.calendar_id
+ if calendar_id:
+ event = service.events().insert(calendarId=calendar_id, body=body).execute()
+
+ self.event_id=event['id']
+ else:
+ raise Warning('no calendar id, please check configuration tags')
+
+ def remove_event_to_google_agenda(self):
+ credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
+ delegated_credentials = credentials.with_subject(SUBJECT)
+ service = build('calendar', 'v3', credentials=delegated_credentials)
+
+
+ #recherche de l'id calendar lié à l'étiquette de l'événément
+ calendar_id=self.tag_ids.category_id.calendar_id
+ if calendar_id:
+ service.events().delete(calendarId=calendar_id, eventId=self.event_id).execute()
+
+ self.event_id=False
+ else:
+ raise Warning('no calendar id, please check configuration tags')
+
\ No newline at end of file
diff --git a/models/token.txt b/models/token.txt
new file mode 100644
index 0000000..e69de29
diff --git a/views/event.xml b/views/event.xml
new file mode 100644
index 0000000..e9b7ff5
--- /dev/null
+++ b/views/event.xml
@@ -0,0 +1,32 @@
+
+
+
+
+ event_tag_category_view_form_inherit_kalachakra
+ event.tag.category
+
+
+
+
+
+
+
+
+
+
+
+
+ event.view.form.inherit.kalachakra
+ event.event
+
+
+
+
+
+
+
+
+
+
+
+