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(
--- /dev/null
+# Generated by Django 2.2.28 on 2022-10-06 10:12
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('newsletter', '0003_newsletter'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='newsletter',
+ name='crm_id',
+ field=models.IntegerField(blank=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name='newsletter',
+ name='phplist_id',
+ field=models.IntegerField(blank=True, null=True),
+ ),
+ ]
class Newsletter(models.Model):
slug = models.SlugField(blank=True)
page_title = models.CharField(max_length=255, blank=True)
- phplist_id = models.IntegerField()
+ phplist_id = models.IntegerField(null=True, blank=True)
+ crm_id = models.IntegerField(null=True, blank=True)
#
import requests
from django.conf import settings
+from club.civicrm import civicrm
def subscribe(email, newsletter):
- list_id = newsletter.phplist_id
+ if newsletter.crm_id:
+ subscribe_crm(email, newsletter.crm_id)
+ if newsletter.phplist_id:
+ subscribe_phplist(email, newsletter.phplist_id)
+
+def subscribe_crm(email, group_id):
+ civicrm.add_email_to_group(email, group_id)
+
+def subscribe_phplist(email, list_id):
data = {
"email": email,
"emailconfirm": email,
"NEWSLETTER_PHPLIST_SUBSCRIBE_URL not set. "
f"Trying to subscribe email: {email} to newsletter: {list_id}."
)
-