Skip to content

Instantly share code, notes, and snippets.

View jeznag's full-sized avatar

Jeremy Nagel jeznag

View GitHub Profile
@jeznag
jeznag / gist:4b69e454c980bc494cfe09f7619427a1
Created January 26, 2022 22:07
manipulate timezones in deluge script
contact_data = zoho.crm.getRecordById("Contacts", contact_id);
owner_id = contact_data.get("Owner").get("id");
user_response = zoho.crm.getRecordById("users", owner_id);
user_data = user_response.get("users").get(0);
timezone = user_data.get("time_zone");
appointment_time = contact_data.get("Modified_Time");
appointment_time_in_user_timezone = appointment_time.toDateTime("yyyy-MM-dd'T'HH:mm:ss").toString("MMM dd hh:mm a", timezone);
return appointment_time_in_user_timezone;
@jeznag
jeznag / client_script_using_zoho_crm_api.js
Created October 24, 2021 23:33
Using client script to retrieve data from the Zoho CRM API
const userId = $Crm.user.id;
const userData = ZDK.Apps.CRM.Users.fetchById(userId);
let phoneNumber = userData._phone;
const twilioFromNumberRecords = ZDK.Apps.CRM.Twiliosmsextension0__Twilio_From_Numbers.searchByCriteria(`Owner:equals:${userId}`);
if (twilioFromNumberRecords.length > 0) {
phoneNumber = twilioFromNumberRecords[0]._Name;
}
@jeznag
jeznag / add_notes_when_sms_is_received_or_sent.ds
Created October 24, 2021 22:14
Add notes to Zoho CRM lead/contact when an SMS is received or sent
sms_record = zoho.crm.getRecordById("twiliosmsextension0__Sent_SMS", sms_record_id);
if (sms_record.get("Message_Type").startsWith("out")) {
note_title = "Outbound SMS";
note_content = "Outbound SMS sent by " + sms_record.get("Owner").get("name") + ": " + sms_record.get("Message");
} else {
note_title = "Inbound SMS";
note_content = "Inbound SMS received: " + sms_record.get("Message");
}
@jeznag
jeznag / send_emails_standalone_function.ds
Created October 12, 2021 04:28
Send templated emails from Zoho CRM using deluge script
config_map = configuration.toMap();
template_id = config_map.get("template_id");
to_email = config_map.get("to_email");
subject = config_map.get("subject");
from_name = config_map.get("from_name");
from_email = config_map.get("from_email");
module_name = config_map.get("module_name");
record_id = config_map.get("record_id");
org_email_address = config_map.get("org_email_address");
@jeznag
jeznag / fetch_unopened_zoho_sign_docs.ds
Created October 2, 2021 07:57
Fetch unopened Zoho Sign docs deluge script
inprogress_document_results = invokeurl
[
url :"https://sign.zoho.com/api/v1/requests?request_status=inprogress"
type :GET
connection: "zohosignconnection"
];
requests = inprogress_document_results.get("requests");
unopened_documents = list();
for each request in requests
{
@jeznag
jeznag / log_to_sentry.ds
Created September 17, 2021 20:38
log deluge errors to sentry
try
{
if(error_message == null || error_message == "" || error_message.toString().length() < 5)
{
return;
}
// Put your DSN here
dsn = "https://****@sentry.delugeonaluge.com/2";
processed_dsn = dsn.replaceAll("https://","").replaceAll("@","");
// Replace with the base URL (e.g. sentry.io/ )
@jeznag
jeznag / GhostStack
Created August 17, 2021 07:43
CDK for Ghost CMS on Fargate with EFS for persistent attachments
import { Dictionary } from './utility/Dictionary'
import { Secret } from '@aws-cdk/aws-secretsmanager'
import { LogDriver } from '@aws-cdk/aws-ecs'
import { LogGroup } from './constructs/LogGroup'
import { Alarm } from '@aws-cdk/aws-cloudwatch'
import { AwsAccount } from './OkraInfra'
import cdk = require('@aws-cdk/core')
import ec2 = require('@aws-cdk/aws-ec2')
import ecs = require('@aws-cdk/aws-ecs')
import ecs_patterns = require('@aws-cdk/aws-ecs-patterns')
@jeznag
jeznag / gist:3dc00c7c8bfbb7c1f1ad20e3208b9b3a
Created October 26, 2020 03:53
merge parquet files in S3
import pyarrow
import pyarrow.parquet as pq
import signal
import tarfile
import sys
import boto3
import io
import json
import re
import pandas as pd
@jeznag
jeznag / stack.ts
Created October 16, 2020 08:46
ApplicationLoadBalancedFargateService with two SSL certs
const grafanaService = new ecs_patterns.ApplicationLoadBalancedFargateService(this, 'Grafana', {
cluster: this.props.ecsCluster,
taskDefinition: taskdef,
domainZone: this.props.hostedZone,
domainName: this.grafanaDns,
publicLoadBalancer: true
})
const sslListener = grafanaService.loadBalancer.addListener('SSL', {
port: 443,
@jeznag
jeznag / LambdaFunctions.ts
Created October 2, 2020 05:50
CDK for tagging model lambda
function setupAutoTripTagging(parentStack: BackendAPIStack) {
const databaseUsernameSecret = new Secret(parentStack, 'databaseUsername');
const databasePasswordSecret = new Secret(parentStack, 'databasePassword');
const tripTaggingModelBucket = new Bucket(parentStack, 'gofar-auto-trip-tag-models');
// sklearn etc. are MASSIVE and therefore exceed the lambda
// limit (250MB). We upload the dependencies to S3 instead and the lambda will pull it down
const rebuildModelDependencies = new Asset(parentStack, 'rebuildAutoTaggingModelLambdaDependencies', {
path: './handlers/auto_trip_tagging_model_builder/dist/lambda_dependencies.tar.gz'