url(r'^$', views.index, name='index'),
url(r'^mail_send_next/', views.mail_send_next, name='mail_send_next'),
url(r'^mail_send_all/', views.mail_send_all, name='mail_send_all'),
- url(r'^msgs_still_to_send/', views.msgs_still_to_send, name='msgs_still_to_send'),
- url(r'^letters_still_to_send/', views.letters_still_to_send, name='letters_still_to_send'),
- url(r'^mail_still_to_send/', views.mail_still_to_send, name='mail_still_to_send'),
+ url(r'^msg_stats/', views.msg_stats, name='msgs_still_to_send'),
url(r'^generate_letters/', views.generate_letters, name='generate_letters'),
url(r'^billing_cycle/', views.billing_cycle, name='billing_cycle'),
url(r'^member_info/', views.member_info, name='member_info'),
return response
-def msgs_still_to_send(_):
- number_of_msgs = EmailToMember.objects.all().count()
- return HttpResponse(json.dumps({'numberOfMsgsToSend': number_of_msgs}), content_type='application/json')
+def msg_stats(_):
+ stats = {}
+ msgs = EmailToMember.objects.all()
+ stats['msgInQ'] = msgs.count()
+ stats['mail'] = msgs.filter(member__emailaddress__isnull=False,
+ member__address_unknown__lt=settings.ADDRESS_RETURNS).distinct().count()
-def mail_still_to_send(_):
- number_of_mails = EmailToMember.objects.all().filter(member__emailaddress__isnull=False).distinct().count()
- return HttpResponse(json.dumps({'numberOfMailsToSend': number_of_mails}), content_type='application/json')
+ stats['letters'] = msgs.filter(member__emailaddress__isnull=True,
+ member__address_unknown__lt=settings.ADDRESS_RETURNS).distinct().count()
+ stats['unreachable'] = msgs.filter(member__emailaddress__isnull=True,
+ member__address_unknown__gte=settings.ADDRESS_RETURNS).distinct().count()
-def letters_still_to_send(_):
- number_of_letters = EmailToMember.objects.all().filter(member__emailaddress__isnull=True).distinct().count()
- return HttpResponse(json.dumps({'numberOfLettersToSend': number_of_letters}), content_type='application/json')
+ return HttpResponse(json.dumps(stats), content_type='application/json')
def search_member_db(request):
function getPendingMails() {
- var con1 = $('#msgInQFieldAnchor');
jQuery.ajax({
type: 'GET',
- url: '/api/msgs_still_to_send',
- dataType: 'json', // ** ensure you add this line **
+ url: '/api/msg_stats',
+ dataType: 'json',
success: function(data) {
- con1.text('Messages in queue: ' + data['numberOfMsgsToSend']);
+ for (field in data) {
+ $('#' + field + 'FieldAnchor').text(data[field]);
+ }
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
- alert("ERROR: '" + textStatus + "' error thrown: '" + errorThrown + "'");
- }
- });
-
- var con2 = $('#lettersFieldAnchor');
- jQuery.ajax({
- type: 'GET',
- url: '/api/letters_still_to_send',
- dataType: 'json', // ** ensure you add this line **
- success: function(data) {
- con2.text('- Letters: ' + data['numberOfLettersToSend']);
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- alert("ERROR: '" + textStatus + "' error thrown: '" + errorThrown + "'");
- }
- });
-
- var con3 = $('#mailFieldAnchor');
- jQuery.ajax({
- type: 'GET',
- url: '/api/mail_still_to_send',
- dataType: 'json', // ** ensure you add this line **
- success: function(data) {
- con3.text('- Mails: ' + data['numberOfMailsToSend']);
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- alert("ERROR: '" + textStatus + "' error thrown: '" + errorThrown + "'");
+ alert("ERROR in message stats: '" + textStatus + "' error thrown: '" + errorThrown + "'");
}
});
}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true" onclick="getPendingMails();">Mails<span class="caret"></span></a>
<ul class="dropdown-menu">
- <li class="dropdown-header" id="msgInQField"><a id="msgInQFieldAnchor" href="#">Messages in queue: -</a></li>
- <li class="dropdown-header" id="lettersField"><a id="lettersFieldAnchor" href="#">- Letters: -</a></li>
- <li class="dropdown-header" id="mailField"><a id="mailFieldAnchor" href="#">- Mails: -</a></li>
+ <li class="dropdown-header" id="msgInQField">Messages in queue: <span id="msgInQFieldAnchor">-</span></li>
+ <li class="dropdown-header" id="mailField">- Mails: <span id="mailFieldAnchor">-</span></li>
+ <li class="dropdown-header" id="lettersField">- Letters: <span id="lettersFieldAnchor">-</span></li>
+ <li class="dropdown-header" id="unreachableField">- Unreachable: <span id="unreachableFieldAnchor">-</span></li>
<li><a href="/admin/members/emailtomember/">Show Emails in Queue</a></li>
<li><a href="{% url 'api:mail_send_all' %}">Send All Emails</a></li>
<li><a href="{% url 'api:get_erfa_statistics' %}">Send Erfastatistik</a></li>