from datetime import datetime
import json
-from celery.task import task
+from celery import shared_task
from django.conf import settings
import requests
import yaml
d = response.json()
return d
- def create_or_update_contact(self, email, key):
+ def create_or_update_contact(self, email, key=None):
contact_id = self.get_contact_id(email)
if contact_id is None:
contact_id = self.create_contact(email, key)
- else:
+ elif key:
self.update_contact(contact_id, key)
return contact_id
if result:
return result[0]['id']
- def create_contact(self, email, key):
- result = self.request(
- 'Contact',
- 'create',
- {
- 'values': {
- 'WL.TPWL_key': key,
- },
- 'chain': {
- 'email': [
- 'Email',
- 'create',
- {
- 'values': {
- 'email': email,
- 'contact_id': '$id'
- }
+ def create_contact(self, email, key=None):
+ data = {
+ 'values': {},
+ 'chain': {
+ 'email': [
+ 'Email',
+ 'create',
+ {
+ 'values': {
+ 'email': email,
+ 'contact_id': '$id'
}
- ]
- }
+ }
+ ]
}
- )
- return result[0]['id']
+ }
+ if key:
+ data['values']['WL.TPWL_key'] = key
+ result = self.request('Contact', 'create', data)
+ return result['values'][0]['id']
def update_contact(self, contact_id, key):
return self.request(
}
)
- #do we create a civicontribution?
+ def add_email_to_group(self, email, group_id):
+ contact_id = self.create_or_update_contact(email)
+ self.add_contact_to_group(contact_id, group_id)
+
+ def add_contact_to_group(self, contact_id, group_id):
+ self.request(
+ 'GroupContact',
+ 'create',
+ {
+ "values": {
+ "group_id": group_id,
+ "contact_id": contact_id,
+ }
+ }
+ )
civicrm = CiviCRM(
settings.CIVICRM_KEY,
)
-@task(ignore_result=True)
+@shared_task(ignore_result=True)
def report_activity(*args, **kwargs):
civicrm.report_activity(*args, **kwargs)