Skip to content

Instantly share code, notes, and snippets.

@mkangia
Last active January 17, 2020 13:48
Show Gist options
  • Save mkangia/ea68dade74518e74bc732013152226bf to your computer and use it in GitHub Desktop.
Save mkangia/ea68dade74518e74bc732013152226bf to your computer and use it in GitHub Desktop.
Get SMS count based on content sent monthly in an year
import csv
import calendar
import datetime
from datetime import date, timedelta
from django.db.models import Q
from corehq.apps.sms.models import SMS
DOMAIN = 'icds-cas'
message_content = {
'asm': 'ওজন যোৱা মাহৰ হৈতে একে আছে। অনুগ্ৰহ কৰি প্ৰয়োজনীয় পৰামৰ্শ বাবে আপোনাৰ অংগনবাড়ী কৰ্মীৰ লগত আলোচনা কৰক',
'ben': 'শিশুটির ওজন গত মাসে একই রয়ে গেছে । প্রয়োজনীয় পরামর্শ দানের বিষয়ে অনুগ্রহ করে অঙ্গনওয়াড়ি কর্মীর সাথে আলোচনা করু',
'en': 'has remained static in the last month. Please consult your AWW for necessary advice.',
'grt': 'ni jrimani re·anggipa ja baksa apsan ong·a. Ka·sapae nang·ni AWW-ni nangchongmotgipa ku·pattianiko ra·bo.',
'guj': 'નું વજન છેલ્લા મહિનામાં સ્થિર રહ્યું છે. જરૂરી માર્ગદર્શન માટે આંગણવાડીનો કાર્યકરનો સંપર્ક કરો',
'hin': 'के वजन में पिछले महीने में वृद्धि नहीं हुई हैं| कृपया अपने आंगनवाड़ी केंद्र पर तुरंत संपर्क करें',
'kan': 'ಕಳೆದ ತಿಂಗಳಲ್ಲಿ ಹಾಗೆಯೇ ಇದೆ. ದಯವಿಟ್ಟು ಅಗತ್ಯವಾದ ಸಲಹೆಗಾಗಿ ನಿಮ್ಮ ಅಂಗನವಾಡಿ ಕೇಂದ್ರವನ್ನು ಸಂಪರ್ಕಿಸಿ.',
'kha': 'ka sah kumjuh ha u bnai ba lah leit. Sngewbha ia kren bad i AWW jong phi ban ioh jingbthah kiba dei.',
'lus': 'AWC a chhinchhiah dan hnuhnung bera a a lan dan chuan, thla hmasa chhung khan he i naute rih zawng hi',
'mal': 'ന്‍റെ തൂക്കം കഴിഞ്ഞ മാസത്തേതില്‍ നിന്നും മാറ്റമില്ല. അവശ്യനിര്‍ദ്ദേശങ്ങള്‍ക്കായി ദയവായി അങ്കണവാടിയുമായി ബന്ധപ്പെടുക',
'mar': 'वजन गेल्या महिन्यात स्थिर राहिले आहे. आवश्यक सल्ला घेण्यासाठी कृपया आपल्या अंगणवाडी सेविकेशी संपर्क साधा',
'mni': 'গী অরুম্বগী চাং অসি মমাং থাদগী লেংদনা লৈ॥ চান্বীদুনা নঙগী আঙ্গনৱাডি ',
'pan': 'ਦੇ ਭਾਰ ਵਿੱਚ ਪਿਛਲੇ ਮਹੀਨੇ ਦੇ ਭਾਰ ਨਾਲੋ ਕੋਈ ਵਾਧਾ ਨਹੀ ਹੋਇਆ ਹੈ। ਕ੍ਰਿਪਾ ਕਰਕੇ ਜਰੂਰੀ ਸਲਾਹ ਲਈ ਆਂਗਣਵਾੜੀ ਵਰਕਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ',
'tam': 'உங்கள் AWC இன் சமீபத்திய பதிவுகளின் படி, உங்கள் குழந்தையின் எடையை ',
'tel': 'బరువు పెరగలేదు. దయచేసి వెంటనే అంగన్ వాడీ కార్యకర్తని సంప్రదించండి'
}
or_q = Q(text__contains=message_content['en'])
for lang_code, content in message_content.items():
if lang_code != 'en':
or_q = or_q | Q(text__contains=content)
number_of_months = 12
for year in [2016, 2017, 2018, 2019]:
print(year)
with open("SMS_counts_%s.csv" % year, "w") as _output:
writer = csv.writer(_output)
writer.writerow(['from', 'to', 'count'])
for month in range(1, number_of_months + 1):
print(month)
_, num_days_in_month = calendar.monthrange(year, month)
first_day = datetime.date(year, month, 1)
last_day = datetime.date(year, month, num_days_in_month)
and_q = Q(domain=DOMAIN, date__gte=first_day, date__lte=last_day)
writer.writerow([
str(first_day),
str(last_day),
SMS.objects.filter(and_q, or_q).count()
])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment