def campaign_list(request):
"""List all campaigns for the logged in user
**Attributes**:
* ``template`` - dialer_campaign/campaign/list.html
**Logic Description**:
* List all campaigns belonging to the logged in user
"""
form = CampaignSearchForm(request.user, request.POST or None)
request.session['pagination_path'] = request.META['PATH_INFO'] + '?' + request.META['QUERY_STRING']
sort_col_field_list = ['id', 'name', 'startingdate', 'status', 'totalcontact']
pag_vars = get_pagination_vars(request, sort_col_field_list, default_sort_field='id')
phonebook_id = ''
status = 'all'
post_var_with_page = 0
if form.is_valid():
field_list = ['phonebook_id', 'status']
unset_session_var(request, field_list)
phonebook_id = getvar(request, 'phonebook_id', setsession=True)
status = getvar(request, 'status', setsession=True)
post_var_with_page = 1
# This logic to retain searched result set while accessing pagination or sorting on column
# post_var_with_page will check following thing
# 1) if page has previously searched value, then post_var_with_page become 1
# 2) if not then post_var_with_page remain 0 & flush the session variables' value
if request.GET.get('page') or request.GET.get('sort_by'):
post_var_with_page = 1
phonebook_id = request.session.get('session_phonebook_id')
status = request.session.get('session_status')
form = CampaignSearchForm(request.user, initial={'status': status, 'phonebook_id': phonebook_id})
if post_var_with_page == 0:
# default / unset session var
field_list = ['status', 'phonebook_id']
unset_session_var(request, field_list)
# Set search on user as default
kwargs = {'user': request.user}
if phonebook_id and phonebook_id != '0':
kwargs['phonebook__id__in'] = [int(phonebook_id)]
if status and status != 'all':
kwargs['status'] = status
all_campaign_list = Campaign.objects.filter(**kwargs).order_by(pag_vars['sort_order'])
campaign_list = all_campaign_list[pag_vars['start_page']:pag_vars['end_page']]
campaign_count = all_campaign_list.count()
data = {
'form': form,
'all_campaign_list': all_campaign_list,
'campaign_list': campaign_list,
'total_campaign': campaign_count,
'CAMPAIGN_COLUMN_NAME': CAMPAIGN_COLUMN_NAME,
'col_name_with_order': pag_vars['col_name_with_order'],
'msg': request.session.get('msg'),
'error_msg': request.session.get('error_msg'),
'info_msg': request.session.get('info_msg'),
'Pending': Pending,
}
request.session['msg'] = ''
request.session['error_msg'] = ''
request.session['info_msg'] = ''
return render_to_response('dialer_campaign/campaign/list.html', data, context_instance=RequestContext(request))
def pending(campaign_id):
A = Campaign_phonebook.objects.values_list('phonebook_id').filter(campaign_id = campaign_id)
## getting all contact_id of campaign_id = campaign_id in phonebook
B = Contact.objects.filter(phonebook_id__in=A).count()
## Check How many Contacts in Subscriber of "campaign_id = campaign_id"
C = Subscriber.objects.filter(campaign_id = campaign_id).exclude(status = 1).count()
Result = B - C
return Result
Sir Mandeep This is my full code When i give specific value instead of A it works,but when i give value through loop it did't Work