def get_website_html(form_id, question_text, jurisdiction_id, request, mode="add"):
    requestProcessor = HttpRequestProcessor(request)
        
    data_website = {}
    data_website['value_existed'] = 'no'    
    value = ''

    #jurisdiction_id = requestProcessor.getParameter('jurisdiction_id')
    answer_reference_class_obj = AnswerReference()    
    # get current answer.  qa: u don't edit; u add a new record.
    answer = answer_reference_class_obj.get_jurisdiction_data(jurisdiction_id, question_text)
    if answer:
        data_website['value_existed'] = 'yes'        
        for answer_key in answer.keys():
            data_website[answer_key] = answer.get(answer_key)
                       
        urlUtil = UrlUtil(data_website['website'])
        value = "<a href='"+urlUtil.get_href()+"' target='_blank' >"+urlUtil.get_display_website()+"</a>"

    # info for the base_add.html
    data_website['value'] = value  # value to display
    data_website['question_label'] = 'Website'  # field label
    data_website['question_name'] = 'website'    # name used in name and id of form field
    data_website['mode'] = 'individual'         # not sure yet.
       
    # information need to configure the field, this case, a text field.
    data_form = {}               
    data_form['name'] = data_website['question_name']
    if mode == 'edit':
        data_form['value'] = data_website['website']   
    else:
        data_form['value'] = '' 
    data_form['id'] = form_id+'_field_'+ data_form['name'] 
    data_form['class'] = 'required' # for jquery validation
    data_form['style'] = 'width:210px'  # for additional styling
    data_form['attributes'] =  "maxLength='200'"   # may be needed for jquery validation
    data_form['help_text'] = 'Enter the URL of the website'       
    data_form['msg_error'] = ''     # for error msg coming back from server.
    
    form_field = requestProcessor.decode_jinga_template(request,'website/form_fields/text_field.html', data_form, '') 
    data_website['form_fields'] = form_field
    
    if mode == 'edit':
        body = requestProcessor.decode_jinga_template(request,'website/form_fields/base_edit.html', data_website, '')    
    else:
        body = requestProcessor.decode_jinga_template(request,'website/form_fields/base_add.html', data_website, '')          
    
    return body
def papers(request):
    requestProcessor = HttpRequestProcessor(request)  
    data = {}
    dajax = Dajax()
    user = request.user
    data['user'] = user
    ajax = requestProcessor.getParameter('ajax')
    if ajax == 'open_papers':         
        body = requestProcessor.decode_jinga_template(request, 'website/whitepapers/whitepapers.html', data, '') 
        dajax.assign('#fancyboxformDiv','innerHTML', body)
        script = requestProcessor.decode_jinga_template(request, 'website/whitepapers/whitepapers.js', data, '')
        dajax.script(script)

    #add script to open fancybox if command starts with 'open'
    if ajax.startswith('open'):
        dajax.script('controller.showModalDialog("#fancyboxformDiv");')
        
    return HttpResponse(dajax.json())
            
def get_email_html(form_id, question_text, jurisdiction_id, request, mode="add"):
    requestProcessor = HttpRequestProcessor(request)
        
    data_email = {}
    data_email['value_existed'] = 'no'    
    value = ''

    #jurisdiction_id = requestProcessor.getParameter('jurisdiction_id')
    answer_reference_class_obj = AnswerReference()    
    # get current answer.  qa: u don't edit; u add a new record.
    answer = answer_reference_class_obj.get_jurisdiction_data(jurisdiction_id, question_text)
    if answer:
        data_email['value_existed'] = 'yes'        
        for answer_key in answer.keys():
            data_email[answer_key] = answer.get(answer_key)
                       
        value = data_email['email']   # can do formatting here

    data_email['value'] = value  # value to display
    data_email['question_label'] = 'Email'  # field label
    data_email['question_name'] = 'email'    # name used in name and id of form field
    data_email['mode'] = 'individual'         # not sure yet.
       
    # information need to configure the field, this case, a text field.
    data_form = {}                
    data_form['name'] = data_email['question_name']
    if mode == 'edit':
        data_form['value'] = data_email['email']   
    else:
        data_form['value'] = ''
    data_form['id'] = form_id+'_field_'+ data_form['name'] 
    data_form['class'] = 'required' # for jquery validation
    data_form['style'] = 'width:210px'
    data_form['attributes'] =  "maxLength='200'"   
    data_form['help_text'] = 'Valid email address please'       
    data_form['msg_error'] = ''
    
    form_field = requestProcessor.decode_jinga_template(request,'website/form_fields/text_field.html', data_form, '') 
    data_email['form_fields'] = form_field
    body = requestProcessor.decode_jinga_template(request,'website/form_fields/base_add.html', data_email, '') 
    
    return body    
def get_info(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    dajax = Dajax()
          
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'getting_started'):
            body = requestProcessor.decode_jinga_template(request,'website/info/getting_started.html', data, '')  
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json())  
                
        if (ajax == 'about'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/about.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json())
    
        if (ajax == 'privacy_policy'):
            body = requestProcessor.decode_jinga_template(request,'website/info/privacy_policy_modal.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json())  
        
    
        if (ajax == 'terms_of_use'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_terms_of_use.html', data, '') 
            dajax.assign('#main_content','innerHTML', body)
            #dajax.assign('#fancyboxformDiv','innerHTML', body)  
            #dajax.script('controller.showModalDialog("#fancyboxformDiv");')    
            return HttpResponse(dajax.json())  
        
    
        if (ajax == 'disclaimer'):
            body = requestProcessor.decode_jinga_template(request,'website/info/disclaimer_modal.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json()) 
        
        if (ajax == 'doe_grant'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_doe_grant.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json()) 
        
        if (ajax == 'send_feedback'):
            data = {}     
            data['form_id'] = 'form_send_feedback'            
            
            data['feedback'] = requestProcessor.getParameter('feedback')    
            if data['feedback'] == None:
                data['feedback'] = ''                                                       
             
                body = requestProcessor.decode_jinga_template(request,'website/info/feedback.html', data, '') 
                dajax.assign('#fancyboxformDiv','innerHTML', body)                   
                dajax.script('controller.showModalDialog("#fancyboxformDiv");')

                return HttpResponse(dajax.json())  
            else:           
                data['email'] = settings.FEEDBACK_EMAIL
                data['user'] = request.user
                data['feedback'] = data['feedback'].lstrip('')
                orgmembers = OrganizationMember.objects.filter(user = data['user'], status = 'A')   
                user_orgs = ''
                if len(orgmembers) > 0:
                    for orgmember in orgmembers:
                        user_orgs += "," + orgmember.organization.name 
                        
                    user_orgs.lstrip(',')
                    
                data['user_orgs'] = user_orgs;
                user_details = UserDetail.objects.filter(user=data['user'])
                data['user_detail'] = user_details[0]
                email_feedback(data)
                dajax.script('jQuery.fancybox.close();')  
                dajax.script("controller.showMessage('Your feedback has been sent and will be carefully reviewed.', 'success');")                                                        
        
        return HttpResponse(dajax.json())              
    data['current_nav'] = 'home'
    return requestProcessor.render_to_response(request,'website/home.html', data, '')
def custom_field(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)  
    dajax = Dajax()
    
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'create_custom_field'):
            data['form_id'] = 'create_custom_field'      

            data['field_title'] = requestProcessor.getParameter('field_title') 
            data['field_value'] = requestProcessor.getParameter('field_value') 
            data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') 
            data['category_id'] = requestProcessor.getParameter('category_id')   
            data['current_category'] = requestProcessor.getParameter('current_category')      
            data['current_questions'] = requestProcessor.getParameter('current_questions')                                            
            
            if data['field_title'] == None:
                data['field_title'] = ''   
            if data['field_value'] == None:
                data['field_value'] = ''                      
                
            data['jurisdiction'] = Jurisdiction.objects.get(id=data['jurisdiction_id'])

            body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '') 
            dajax.assign('#fancyboxformDiv','innerHTML', body)
            script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '')
            dajax.script(script)        
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')

            return HttpResponse(dajax.json())  
        
        if (ajax == 'create_custom_field_submit'):  
            data = {}       
            data['form_id'] = 'create_custom_field'     
            data['field_title'] = requestProcessor.getParameter('field_title') 
            data['field_value'] = requestProcessor.getParameter('field_value') 
            data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') 
            data['category_id'] = requestProcessor.getParameter('category_id')     
            current_category = requestProcessor.getParameter('current_category')   
            current_questions = requestProcessor.getParameter('current_questions') 
                                                               
            error_message = {}        
            error_message = validate_create_custom_field_form_data(data, data['form_id'])

            if len(error_message) == 0:
                msg_key = data['form_id']+ '_fail_reason'               
                try:
                    jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id'])
                    
                    # look up template CF for this jurisdiction
                    templates = Template.objects.filter(jurisdiction=jurisdiction, template_type__iexact='CF')
                    if len(templates) > 0:
                        template = templates[0]
                    else:
                        template = Template()
                        template.template_type = 'CF'
                        template.name = 'Jurisdiction Custom Field Template'
                        template.jurisdiction_id = data['jurisdiction_id']
                        #template.create_datetime = datetime.datetime.now()
                        template.save()
                    # create the question

                    category_obj = QuestionCategory.objects.get(id=data['category_id'])
                    '''
                    questions = Question.objects.filter(category=category_obj, accepted=1).order_by('-display_order')
                    last_question = questions[0]
                    if last_question.display_order == None or last_question.display_order == '':
                        display_order = 0
                    else:
                        display_order = last_question.display_order
                    '''    
                    highest_display_order_obj = Question.objects.filter(category=category_obj, accepted=1).aggregate(Max('display_order'))
                    #print highest_display_order_obj
                    if highest_display_order_obj == None:
                        highest_display_order = 0
                    else:
                        highest_display_order = highest_display_order_obj['display_order__max']
                        
                    question_obj = Question();
                    question_obj.category_id = data['category_id']
                    question_obj.question = data['field_title']
                    question_obj.label = data['field_title']
                    question_obj.form_type = 'CF'
                    question_obj.qtemplate_id = template.id
                    question_obj.accepted = 1
                    question_obj.display_order = int(highest_display_order) + 5
                    #question_obj.create_datetime = datetime.datetime.now()
                    question_obj.creator_id = request.user.id
                    question_obj.save()
                    
                    template_question = TemplateQuestion()
                    template_question.template_id = template.id
                    template_question.question_id = question_obj.id
                    #template_question.create_datetime = datetime.datetime.now()
                    template_question.save()
                    # save the answer
                    data_answer = {}
                    data_answer['value'] = data['field_value']
                    answer = json.dumps(data_answer)   # to convert to json                    
                    is_callout=0           
                    answer_reference_class_obj = AnswerReference()
                    
                    #action_category_objs = ActionCategory.objects.filter(name__iexact='AddRequirement')
                    #action_category_obj = action_category_objs[0]   
                    validation_util_obj = FieldValidationCycleUtil()                    
                    arcf = validation_util_obj.save_answer(question_obj, answer, jurisdiction, 'AddRequirement', request.user, is_callout)
                    
                except Exception, e:
                    data[msg_key] = e.message
                    print e.message
        
            #else:
            if len(error_message) > 0:
                for msg_key in error_message.keys():
                    data[msg_key] = error_message.get(msg_key)  
                    
                    body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_fields.html', data, '')     
                    dajax.assign('#fancyboxformDiv','innerHTML', body)
                    script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_fields.js', data, '')
                    dajax.script(script)
            else:
                data_cf = {}
                jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id'])
                data_cf['jurisdiction'] = jurisdiction
                '''
                question_category_obj = QuestionCategory.objects.get(id=data['category_id'])  
                data['question_categories'] = QuestionCategory.objects.filter(id=data['category_id'])
                
                question_class_obj = Question()
                custom_questions = question_class_obj.get_custom_fields_by_jurisdiction_by_category(jurisdiction, data['category_id'])
                print custom_questions
                validation_util_obj = FieldValidationCycleUtil()
                data['action'] = 'refresh_ahj_qa'               

                if custom_questions != None and len(custom_questions) > 0:
                    for question in custom_questions:
                        data['question_content'][question_category_obj.id][question.id] = validation_util_obj.get_AHJ_question_data(request, jurisdiction, question, data)                
                '''
                
                '''
                validation_util_obj = FieldValidationCycleUtil()                        
                data_cf['this_question'] = question_obj               
                question_content = validation_util_obj.get_AHJ_question_data(request, jurisdiction, question_obj, data_cf)            
                for key in question_content.keys():
                    data_cf[key] = question_content.get(key)               
                                        
                body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content_authenticated.html', data_cf, '')

                dajax.assign('#div_custom_question_content_'+str(category_obj.id),'innerHTML', body)
                script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content.js', data, '')
                dajax.script(script)                        
                '''
                template_obj = Template()
                jurisdiction_templates = template_obj.get_jurisdiction_question_templates(jurisdiction)
               
                    
                data_cf['action'] = '/jurisdiction_id/'+str(jurisdiction.id)+'/'+current_category+'/'
                current_questions = current_questions.split(',')
                data_cf['custom_questions'] = Question.objects.filter(category=category_obj, accepted=1, qtemplate__in=jurisdiction_templates).exclude(id__in=(current_questions))
                body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content_ajax_call.html', data_cf, '')                        
                dajax.assign('#div_custom_question_content_'+str(category_obj.id),'innerHTML', body)
                script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/AHJ_question_content_ajax_call.js', data_cf, '')
                dajax.script(script)                                             
                        ######################################################               
                      
                #data['custom_questions'] = custom_questions
                #data['custom_questions'] = {}
                #data['custom_questions'][question_category_obj.id] = custom_questions
                
                #body = requestProcessor.decode_jinga_template(request,'website/blocks/custom_fields.html', data, '')                                   
                #dajax.assign('#custom_fields_'+str(question_category_obj.id),'innerHTML', body)
                dajax.script('jQuery.fancybox.close();')  
                dajax.script("controller.showMessage('Custom field created.', 'success')") 
                dajax.script('controller.updateUrlAnchor("#create_custom_field");')
                
                if current_category == 'all_info':
                    question_categories = QuestionCategory.objects.filter(accepted=1)
                    data['category'] = 'All categories'
                else:
                    question_categories = QuestionCategory.objects.filter(name__iexact=category_obj.name)
                    data['category'] = category_obj.name

                #data['category'] = question_obj.category.name
                data['jurisdiction'] = jurisdiction
                validation_util_obj = FieldValidationCycleUtil()   
                data['top_contributors'] = validation_util_obj.get_top_contributors(jurisdiction, question_categories)  
                body = requestProcessor.decode_jinga_template(request,'website/blocks/top_contributors.html', data, '')   
                dajax.assign('#top_contributors','innerHTML', body)                
                
            return HttpResponse(dajax.json())  
Example #6
0
def custom_field(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)  
    dajax = Dajax()
    
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'create_custom_field'):
            data['form_id'] = 'create_custom_field'      

            data['field_title'] = requestProcessor.getParameter('field_title') 
            data['field_value'] = requestProcessor.getParameter('field_value') 
            data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') 
            data['category_id'] = requestProcessor.getParameter('category_id')   
            data['current_category'] = requestProcessor.getParameter('current_category')      
            
            if data['field_title'] == None:
                data['field_title'] = ''   
            if data['field_value'] == None:
                data['field_value'] = ''                      
                
            data['jurisdiction'] = Jurisdiction.objects.get(id=data['jurisdiction_id'])

            body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '') 
            dajax.assign('#fancyboxformDiv','innerHTML', body)
            script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '')
            dajax.script(script)        
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')

            return HttpResponse(dajax.json())  
        
        if (ajax == 'create_custom_field_submit'):  
            data = {}       
            data['form_id'] = 'create_custom_field'     
            data['field_title'] = requestProcessor.getParameter('field_title') 
            data['field_value'] = requestProcessor.getParameter('field_value') 
            data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') 
            data['category_id'] = requestProcessor.getParameter('category_id')     
            current_category = requestProcessor.getParameter('current_category')   
            current_questions = requestProcessor.getParameter('current_questions') 
                                                               
            error_message = {}        
            error_message = validate_create_custom_field_form_data(data, data['form_id'])

            if len(error_message) == 0:
                msg_key = data['form_id']+ '_fail_reason'               
                try:
                    jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id'])
                    
                    # look up template CF for this jurisdiction
                    templates = Template.objects.filter(jurisdiction=jurisdiction, template_type__iexact='CF', accepted = 1)
                    if len(templates) > 0:
                        template = templates[0]
                    else:
                        template = Template()
                        template.template_type = 'CF'
                        template.name = 'Jurisdiction Custom Field Template'
                        template.jurisdiction_id = data['jurisdiction_id']
                        #template.create_datetime = datetime.datetime.now()
                        template.accepted = 1
                        template.save()
                    # create the question

                    category_obj = QuestionCategory.objects.get(id=data['category_id'])
                    '''
                    questions = Question.objects.filter(category=category_obj, accepted=1).order_by('-display_order')
                    last_question = questions[0]
                    if last_question.display_order == None or last_question.display_order == '':
                        display_order = 0
                    else:
                        display_order = last_question.display_order
                    '''    
                    highest_display_order_obj = Question.objects.filter(category=category_obj, accepted=1).aggregate(Max('display_order'))
                    if highest_display_order_obj == None:
                        highest_display_order = 0
                    else:
                        highest_display_order = highest_display_order_obj['display_order__max']
                        
                    question_obj = Question();
                    question_obj.category_id = data['category_id']
                    question_obj.question = data['field_title']
                    question_obj.label = data['field_title']
                    question_obj.form_type = 'CF'
                    question_obj.qtemplate_id = template.id
                    question_obj.accepted = 1
                    question_obj.display_order = int(highest_display_order) + 5
                    #question_obj.create_datetime = datetime.datetime.now()
                    question_obj.creator_id = request.user.id
                    question_obj.save()
                    
                    template_question = TemplateQuestion()
                    template_question.template_id = template.id
                    template_question.question_id = question_obj.id
                    #template_question.create_datetime = datetime.datetime.now()
                    template_question.save()
                    # save the answer
                    data_answer = {}
                    data_answer['value'] = data['field_value']
                    answer = json.dumps(data_answer)   # to convert to json                    
                    is_callout=0           
                    answer_reference_class_obj = AnswerReference()
                    
                    #action_category_objs = ActionCategory.objects.filter(name__iexact='AddRequirement')
                    #action_category_obj = action_category_objs[0]   
                    validation_util_obj = FieldValidationCycleUtil()                    
                    arcf = validation_util_obj.save_answer(question_obj, answer, jurisdiction, 'AddRequirement', request.user, is_callout)
                    
                except Exception, e:
                    data[msg_key] = e.message
        
            #else:
            if len(error_message) > 0:
                for msg_key in error_message.keys():
                    data[msg_key] = error_message.get(msg_key)  
                    
                    body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '')
                    dajax.assign('#fancyboxformDiv','innerHTML', body)
                    script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '')
                    dajax.script(script)
            else:
                data_cf = {}
                jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id'])
                data_cf['jurisdiction'] = jurisdiction
                template_obj = Template()
                jurisdiction_templates = template_obj.get_jurisdiction_question_templates(jurisdiction)
               
                    
                data_cf['action'] = '/jurisdiction_id/'+str(jurisdiction.id)+'/'+current_category+'/'
                  
                data_cf = get_question_data(request, jurisdiction, question_obj, data)
                body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_cqa_qa.html', data_cf, '')
                script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_cqa_qa.js' , data, '')
                dajax.script(script)                                                   
            
                dajax.assign('#div_custom_question_content_'+str(data['category_id']),'innerHTML', body)    
                        
                        ######################################################               
                      
                #data['custom_questions'] = custom_questions
                #data['custom_questions'] = {}
                #data['custom_questions'][question_category_obj.id] = custom_questions
                
                #body = requestProcessor.decode_jinga_template(request,'website/blocks/custom_fields.html', data, '')                                   
                #dajax.assign('#custom_fields_'+str(question_category_obj.id),'innerHTML', body)
                dajax.script('jQuery.fancybox.close();')  
                dajax.script("controller.showMessage('Custom field created.', 'success')") 
                dajax.script('controller.updateUrlAnchor("#create_custom_field");')
                
                data = {}
                if current_category == 'all_info':
                    question_categories = QuestionCategory.objects.filter(accepted=1)
                    data['category'] = 'All categories'
                else:
                    question_categories = QuestionCategory.objects.filter(name__iexact=category_obj.name)
                    data['category'] = category_obj.name

                #data['category'] = question_obj.category.name
                data['jurisdiction'] = jurisdiction
                
                data['top_contributors'] = get_ahj_top_contributors(jurisdiction, current_category)  
                body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_top_contributors.html', data, '')   
                dajax.assign('#top-contributor','innerHTML', body)                           
                
            return HttpResponse(dajax.json())  
def reset_password(request, reset_password_key=''):
    data = {}
    error_message = {}    
    requestProcessor = HttpRequestProcessor(request)  
        
    dajax = Dajax()
    
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'launch_reset_password'):
            data = {}
            form_name = 'form_reset_password'
            reset_password_key = requestProcessor.getParameter('reset_password_key')
            data['reset_password_key'] = reset_password_key
            user_details = UserDetail.objects.filter(reset_password_key__exact=reset_password_key)
            if user_details:
                body = requestProcessor.decode_jinga_template(request,'website/accounts/reset_password.html', data, '') 
                script = requestProcessor.decode_jinga_template(request, 'website/accounts/reset_password.js', data, '')                
            else:
                data[form_name+'_fail_reason'] = 'The reset password key is no longer valid'   
                data['site_url'] = settings.SITE_URL               
                body = requestProcessor.decode_jinga_template(request,'website/accounts/expired_reset_password_key.html', data, '') 
                script = requestProcessor.decode_jinga_template(request, 'website/accounts/expired_reset_password_key.js', data, '')
                        
                                
            dajax.assign('#fancyboxformDiv','innerHTML', body)
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            dajax.script(script)    
            
            return HttpResponse(dajax.json()) 
        
        if (ajax == 'reset_password_submit'):
            data = {}
            form_name = 'form_reset_password'
            
            reset_password_key = requestProcessor.getParameter('reset_password_key')
            data['password'] = requestProcessor.getParameter('password')
            data['verify_password'] = requestProcessor.getParameter('verify_password')
            data['reset_password_key'] = reset_password_key            
            error_message = validate_reset_password_form_data(data, form_name)  

            if len(error_message) == 0:           
                user_details = UserDetail.objects.filter(reset_password_key__exact=reset_password_key)
                if user_details:
                    user_detail = user_details[0]
                    user = User.objects.get(id=user_detail.user_id)
                    if user:
                        user.set_password(data['password'])
                        user.is_active = 1                        
                        user.save()
                        
                        user_detail.reset_password_key = ''
                        user_detail.save()
                        
                        user = authenticate(username=user.username, password=data['password'])
                        if user is not None:
                            if user.is_active:
                                login(request, user)
                                dajax.script('jQuery.fancybox.close();')  
                                add_system_message(request, 'success_reset_password')
                                dajax.script("window.location.href='"+settings.SITE_URL+"';")
                                return HttpResponse(dajax.json()) 
                            else:
                                error_message[form_name+'_fail_reason'] = 'Disabled account'  
                        else:
                            error_message[form_name+'_fail_reason'] = 'Invalid login'  
                    else:
                        error_message[form_name+'_fail_reason'] = 'The reset password key is no longer valid'                          
                else:
                    error_message[form_name+'_fail_reason'] = 'The reset password key is no longer valid'                      
                        
            
            if len(error_message) > 0:
                for msg_key in error_message.keys():
                    data[msg_key] = error_message.get(msg_key)  
               
                body = requestProcessor.decode_jinga_template(request,'website/accounts/reset_password.html', data, '') 
                script = requestProcessor.decode_jinga_template(request, 'website/accounts/reset_password.js', data, '')                         
            
            dajax.assign('#fancyboxformDiv','innerHTML', body)            
            dajax.script(script)                
            return HttpResponse(dajax.json())   
        
        #default response for all ajax
        return HttpResponse(dajax.json()) 
     
    data['reset_password_key'] = reset_password_key
    data['action_key'] = 'reset_password'
    return requestProcessor.render_to_response(request,'website/home.html', data, '')        
Example #8
0
def get_info(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    dajax = Dajax()
          
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'privacy_policy'):
            body = requestProcessor.decode_jinga_template(request,'website/info/privacy_policy_modal.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json())  
        
    
        if (ajax == 'terms_of_use'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_terms_of_use.html', data, '') 
            dajax.assign('#main_content','innerHTML', body)
            #dajax.assign('#fancyboxformDiv','innerHTML', body)  
            #dajax.script('controller.showModalDialog("#fancyboxformDiv");')    
            return HttpResponse(dajax.json())  
        
        if (ajax == 'doe_grant'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_doe_grant.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json()) 
        
        if (ajax == 'send_feedback'):
            data = {}     
            data['form_id'] = 'form_send_feedback'            
            
            data['feedback'] = requestProcessor.getParameter('feedback')    
            if data['feedback'] == None:
                data['feedback'] = ''                                                       
             
                body = requestProcessor.decode_jinga_template(request,'website/info/feedback.html', data, '') 
                script = requestProcessor.decode_jinga_template(request, 'website/info/feedback.js', data, '')   
                dajax.assign('#fancyboxformDiv','innerHTML', body)                   
                dajax.script('controller.showModalDialog("#fancyboxformDiv");')
                dajax.script(script)                  

                return HttpResponse(dajax.json())  
            else:           
                data['email'] = settings.FEEDBACK_EMAIL
                data['user'] = request.user
                data['feedback'] = data['feedback'].lstrip('')
                if request.user.is_authenticated():
                    orgmembers = OrganizationMember.objects.filter(user = data['user'], status = 'A')   
                    user_orgs = ''
                    if len(orgmembers) > 0:
                        for orgmember in orgmembers:
                            user_orgs += "," + orgmember.organization.name 
                            
                        user_orgs.lstrip(',')
                        
                    data['user_orgs'] = user_orgs;
                    user_details = UserDetail.objects.filter(user=data['user'])
                    data['user_detail'] = user_details[0]

                    data['first_name'] = data['user'].first_name     
                    data['last_name'] = data['user'].last_name
                    data['username'] = data['user'].username
                    data['title'] = data['user_detail'].title    
                    data['user_email'] = data['user'].email     
                                        
                else:
                    data['first_name'] = requestProcessor.getParameter('first_name')        # required
                    data['last_name'] = requestProcessor.getParameter('last_name')          # required
                    data['user_email'] = requestProcessor.getParameter('email')        # required
                    data['title'] = requestProcessor.getParameter('title')      
                    data['user_orgs'] = requestProcessor.getParameter('org')          # required
                    data['username'] = ''
                
                                                
                email_feedback(data)
                dajax.script('jQuery.fancybox.close();')  
                dajax.script("controller.showMessage('Your feedback has been sent and will be carefully reviewed.', 'success');")                                                        
        
        return HttpResponse(dajax.json())              
    data['current_nav'] = 'home'
    return requestProcessor.render_to_response(request,'website/home.html', data, '')
Example #9
0
def reset_password(request, reset_password_key=''):
    data = {}
    error_message = {}
    requestProcessor = HttpRequestProcessor(request)

    dajax = Dajax()

    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'launch_reset_password'):
            data = {}
            form_name = 'form_reset_password'
            reset_password_key = requestProcessor.getParameter(
                'reset_password_key')
            data['reset_password_key'] = reset_password_key
            user_details = UserDetail.objects.filter(
                reset_password_key__exact=reset_password_key)
            if user_details:
                body = requestProcessor.decode_jinga_template(
                    request, 'website/accounts/reset_password.html', data, '')
                script = requestProcessor.decode_jinga_template(
                    request, 'website/accounts/reset_password.js', data, '')
            else:
                data[
                    form_name +
                    '_fail_reason'] = 'The reset password key is no longer valid'
                data['site_url'] = settings.SITE_URL
                body = requestProcessor.decode_jinga_template(
                    request,
                    'website/accounts/expired_reset_password_key.html', data,
                    '')
                script = requestProcessor.decode_jinga_template(
                    request, 'website/accounts/expired_reset_password_key.js',
                    data, '')

            dajax.assign('#fancyboxformDiv', 'innerHTML', body)
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            dajax.script(script)

            return HttpResponse(dajax.json())

        if (ajax == 'reset_password_submit'):
            data = {}
            form_name = 'form_reset_password'

            reset_password_key = requestProcessor.getParameter(
                'reset_password_key')
            data['password'] = requestProcessor.getParameter('password')
            data['verify_password'] = requestProcessor.getParameter(
                'verify_password')
            data['reset_password_key'] = reset_password_key
            error_message = validate_reset_password_form_data(data, form_name)

            if len(error_message) == 0:
                user_details = UserDetail.objects.filter(
                    reset_password_key__exact=reset_password_key)
                if user_details:
                    user_detail = user_details[0]
                    user = User.objects.get(id=user_detail.user_id)
                    if user:
                        user.set_password(data['password'])
                        user.is_active = 1
                        user.save()

                        user_detail.reset_password_key = ''
                        user_detail.save()

                        user = authenticate(username=user.username,
                                            password=data['password'])
                        if user is not None:
                            if user.is_active:
                                login(request, user)
                                dajax.script('jQuery.fancybox.close();')
                                add_system_message(request,
                                                   'success_reset_password')
                                dajax.script("window.location.href='" +
                                             settings.SITE_URL + "';")
                                return HttpResponse(dajax.json())
                            else:
                                error_message[
                                    form_name +
                                    '_fail_reason'] = 'Disabled account'
                        else:
                            error_message[form_name +
                                          '_fail_reason'] = 'Invalid login'
                    else:
                        error_message[
                            form_name +
                            '_fail_reason'] = 'The reset password key is no longer valid'
                else:
                    error_message[
                        form_name +
                        '_fail_reason'] = 'The reset password key is no longer valid'

            if len(error_message) > 0:
                for msg_key in error_message.keys():
                    data[msg_key] = error_message.get(msg_key)

                body = requestProcessor.decode_jinga_template(
                    request, 'website/accounts/reset_password.html', data, '')
                script = requestProcessor.decode_jinga_template(
                    request, 'website/accounts/reset_password.js', data, '')

            dajax.assign('#fancyboxformDiv', 'innerHTML', body)
            dajax.script(script)
            return HttpResponse(dajax.json())

        #default response for all ajax
        return HttpResponse(dajax.json())

    data['reset_password_key'] = reset_password_key
    data['action_key'] = 'reset_password'
    return requestProcessor.render_to_response(request, 'website/home.html',
                                               data, '')
Example #10
0
def jurisdiction_comment(request):
    requestProcessor = HttpRequestProcessor(request)
    user = request.user
    data = {}
    dajax = Dajax()
    ajax = requestProcessor.getParameter('ajax')
    comments_changed = requestProcessor.getParameter('comments_changed')
    if comments_changed == 'yes':
        data['comments_changed'] = 'yes'
    else:
        data['comments_changed'] = 'no'
    if (ajax != None):
        if ajax == 'open_jurisdiction_comment':
            entity_id = requestProcessor.getParameter('entity_id')
            entity_name = requestProcessor.getParameter('entity_name')
            jid = requestProcessor.getParameter('jurisdiction_id')
            try:
                jurisdiction = Jurisdiction.objects.get(id = jid)
            except:
                jurisdiction = None
            comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, parent_comment__isnull = True).order_by('-create_datetime')
  
            userviews = UserCommentView.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, user = user)
            
            temp_comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).order_by('-create_datetime')
            last_comment = None
            if len(temp_comments) > 0 :
                last_comment = temp_comments[0]
            
            has_userview = False
            if len(userviews) > 0:
                userview = userviews[0]
                if userview.last_comment != None:
                    data['userview_last_comment'] = userview.last_comment.id
                    data['userview'] = userviews[0]
                    userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count()
                    userview.last_comment = last_comment
                    userview.view_datetime = datetime.datetime.now()
                    userview.save()
                    has_userview = True
            if has_userview == False:
                userview = None
                data['userview'] = userview
                data['userview_last_comment'] = 0
                userview = UserCommentView()
                userview.user = user
                userview.jurisdiction = jurisdiction
                userview.entity_name = entity_name
                userview.entity_id = entity_id
                userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count()
                userview.last_comment = last_comment
                userview.view_datetime = datetime.datetime.now()
                userview.save()
            
            af = AnswerReference.objects.get(id = entity_id)
            aa = ValidationUtil()
            data['answer'] = af
            data['answer_text'] = aa.get_formatted_value(af.value, af.question)
            data['jurisdiction'] = jurisdiction
            label = af.question.question
            if len(af.question.question) > 75:
                label = af.question.question[:78]+ '...'
            data['label'] = label
            
            data['commnets'] = comments
            
            others_afs = AnswerReference.objects.filter(jurisdiction = jurisdiction, question = af.question, approval_status='A').exclude(id = entity_id).order_by('-create_datetime')
            if len(others_afs) > 0 :
                old_answer = others_afs[0]
                if old_answer.id < af.id:
                    data['old_answer'] = old_answer
                    data['old_answer_text'] = aa.get_formatted_value(old_answer.value, old_answer.question)
                else:
                    data['old_answer'] = None
                    data['old_answer_text'] = ''
            else:
                data['old_answer'] = None
                data['old_answer_text'] = ''
  
            body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.html', data, '') 
            dajax.assign('#fancyboxformDiv','innerHTML', body)
            script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.js', data, '')
            dajax.script(script)
            #script = requestProcessor.decode_jinga_template(request,'website/blocks/comments_list.js', data, '')
            #dajax.script(script)
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
        
        if ajax =='create_jurisdiction_comment':
            answer_id = requestProcessor.getParameter('answer_id')
            jid = requestProcessor.getParameter('jurisdiction_id')
            comment_type = 'JC'
            
            data['answer_id'] = answer_id
            data['jurisdiction_id'] = jid
            data['comment_type'] = comment_type
            data['parent_comment'] = ''
            body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/create_comment.html', data, '')
            script =  requestProcessor.decode_jinga_template(request,'website/jurisdictions/create_comment.js', data, '')
            dajax.assign('#secondDialogDiv','innerHTML', body) 
            dajax.script(script)
            dajax.script('controller.showSecondDialog("#secondDialogDiv");')
        
        if ajax =='comment_create_submit':
            entity_id = requestProcessor.getParameter('entity_id')
            entity_name = requestProcessor.getParameter('entity_name')
            jurisdiction_id = requestProcessor.getParameter('jurisdiction_id')
            comment_type = requestProcessor.getParameter('comment_type')
            comment_text = requestProcessor.getParameter('comment')
            parent_comment = requestProcessor.getParameter('parent_comment')
            try:
                jurisdiction = Jurisdiction.objects.get(id = jurisdiction_id)
            except:
                jurisdiction = None
                
            comment = Comment()
            comment.jurisdiction = jurisdiction
            comment.entity_name = entity_name
            comment.entity_id = entity_id
            comment.user = user
            comment.comment_type = comment_type
            comment.comment = comment_text
            if parent_comment != '':
                parent = Comment.objects.get(id = parent_comment)
                comment.parent_comment = parent
            comment.save()
            
            userviews = UserCommentView.objects.filter(user = user, jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id)
            userview = userviews[0]
            userview.last_comment = comment
            userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count()
            userview.view_datetime = datetime.datetime.now()
            userview.save()
            
            
            dajax.script('controller.closeSecondDialog();')
            dajax.script('controller.postRequest("/jurisdiction_comment/", {ajax: "open_jurisdiction_comment", jurisdiction_id:'+str(jurisdiction_id)+', entity_id: "'+str(entity_id)+'", entity_name: "'+str(entity_name)+'", comments_changed: "yes"});')

            data = {}
            data['action'] = 'refresh_ahj_qa'
            answer = AnswerReference.objects.get(id=entity_id) 
            validation_util_obj = ValidationUtil()                  
            body = validation_util_obj.get_question_answers_display_data(request, answer.jurisdiction, answer.question, data)      
            dajax.assign('#div_'+str(answer.question_id),'innerHTML', body)      
                
        if ajax =='reply_comment':
            cid = requestProcessor.getParameter('cid')
            comment = Comment.objects.get(id = cid)            
            data['comment'] = comment
            body = requestProcessor.decode_jinga_template(request,'website/blocks/reply_comment_form.html', data, '')
            script = requestProcessor.decode_jinga_template(request,'website/blocks/reply_comment_form.js', data, '')
            dajax.assign('#button-div-'+str(cid),'innerHTML', body) 
            dajax.script(script)
            
        
        if ajax == 'cancel_reply':
            cid = requestProcessor.getParameter('cid')
            body = '<a class="smallbutton" href="#" onClick="controller.postRequest(\'/jurisdiction_comment/\', {ajax: \'reply_comment\', cid: '+str(cid)+'});return false;">Reply</a><a class="smallbutton" href="#">Flag</a>'
            dajax.assign('#button-div-'+str(cid),'innerHTML', body) 
            
        if ajax == 'flag_comment':
            cid = requestProcessor.getParameter('cid')
            comment = Comment.objects.get(id = cid) 
            comment.approval_status = 'F'
            comment.save()
            
            af = AnswerReference.objects.get(id = comment.entity_id)
            to_mail = [django_settings.ADMIN_EMAIL_ADDRESS]
            data['comment'] = comment
            data['user'] = user
            data['question'] = af.question.question
 
            data['site_url'] = django_settings.SITE_URL
            data['requestProcessor'] = requestProcessor
            data['request'] = request
            send_email(data, to_mail)
            
            dajax.assign('#comment_'+str(cid), 'innerHTML', '<p>This comment had been flagged as inappropriate and is hidden pending review.</p>')
        
        if ajax == 'show_old_comments':
            entity_id = requestProcessor.getParameter('answer_id')
            entity_name = 'AnswerReference'
            jid = requestProcessor.getParameter('jurisdiction_id')
            try:
                jurisdiction = Jurisdiction.objects.get(id = jid)
            except:
                jurisdiction = None
            comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, parent_comment__isnull = True).order_by('-create_datetime')
            
            userviews = UserCommentView.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, user = user)
            
            temp_comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).order_by('-create_datetime')
            last_comment = None
            if len(temp_comments) > 0 :
                last_comment = temp_comments[0]
            if len(userviews) > 0:
                userview = userviews[0]
                data['userview'] = userview
                userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count()
                userview.last_comment = last_comment
                userview.view_datetime = datetime.datetime.now()
                userview.save()
            else:
                userview = None
                data['userview'] = userview
                userview = UserCommentView()
                userview.user = user
                userview.jurisdiction = jurisdiction
                userview.entity_name = entity_name
                userview.entity_id = entity_id
                userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count()
                userview.last_comment = last_comment
                userview.view_datetime = datetime.datetime.now()
                userview.save()
            data['commnets'] = comments
            
            body = requestProcessor.decode_jinga_template(request,'website/blocks/comments_list.html', data, '')
            dajax.assign('#old_list ul', 'innerHTML', body)
            dajax.assign('#show_commnet_div', 'innerHTML', '<a id="id_a_hide" href="#"><img src="/media/images/arrow_down.png" style="vertical-align:bottom;" alt="Hide old comments" >Hide old comments </a>')
            script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.js', data, '')
            dajax.script(script)
            
        return HttpResponse(dajax.json())
    return
Example #11
0
def get_state_jurisdictions(request, state='', sort_by='', sort_dir='', page_num=''):
    data = {}
    data['get_state_jurisdiction'] = True
    requestProcessor = HttpRequestProcessor(request)
    search_str = requestProcessor.getParameter('text_2') 
    if search_str == None or search_str == 'Search':
        search_str = ''       
    filter = requestProcessor.getParameter('filter')
    if filter == None:
        filter = 'all'
        
    only_jurisditions_with_data = requestProcessor.getParameter('only_jurisditions_with_data')        
    if only_jurisditions_with_data != None:
        data['only_jurisditions_with_data'] = int(only_jurisditions_with_data)
    else:
        ajax = requestProcessor.getParameter('ajax')
        if ajax == 'filter':
            data['only_jurisditions_with_data'] = 0
        else:
            if 'only_jurisditions_with_data' in request.session:
                data['only_jurisditions_with_data'] = request.session['only_jurisditions_with_data']
            else:
                data['only_jurisditions_with_data'] = 1
    request.session['only_jurisditions_with_data'] = data['only_jurisditions_with_data']          

    if sort_by == '' or sort_by == None:
        sort_by = 'name'
    elif sort_by == 'last':
        sort_by = 'last_contributed'

    if sort_dir == '' or sort_dir == None:
        sort_dir = 'asc'
    if sort_dir == 'asc':
        order_by_str = sort_by
    else:
        order_by_str = '-'+sort_by

    data['sort_by'] = sort_by
    data['sort_dir'] = sort_dir

    data['secondary_search_str'] = search_str
    data['filter'] = filter
        
    user = request.user
    if user.is_authenticated():
        data['nav'] = 'yes'
        data['breadcrum'] = 'no'
    else:
        data['nav'] = 'no'    
        data['breadcrum'] = 'yes'  
        #return HttpResponseRedirect("/sign_in/?next=/jurisdiction_browse/"+state+"/name/asc/1_1/")  
            
    sort_desc_img = django_settings.SORT_DESC_IMG
    sort_asc_img = django_settings.SORT_ASC_IMG
    sort_class = django_settings.SORT_CLASS
    sort_columns = {}
    sort_columns['name'] = 'asc'
    sort_columns['county'] = 'asc'
    sort_columns['last_contributed'] = 'asc'
    sort_columns['last_contributed_by'] = 'asc'
   
    data['current_nav'] = 'browse'
    href = '/jurisdiction/browse/?state=' + state

    search_params = {}

    #data['page_title'] = "Browse Jurisdiction: " + state

    if state == '':
        state = 'CA'
        
    data['state'] = state
    data['state_long_name'] = dict(US_STATES)[state]
    #type = 'S'
    #data['state_list'] = Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__iexact=type)     
    
    if filter == 'county':
        type = ['CO', 'CONP', 'SC' ]
    elif filter == 'city':
        type = ['CI', 'CINP', 'SCFO', 'U']
    elif filter == 'state':
        type = ['S']        
    else:
        type = ''

    page = requestProcessor.getParameter('page')
    if page != None and page != '':
        page_number = int(page)
    else:
        page_number = 1
    range_start = (page_number - 1) * JURISDICTION_PAGE_SIZE
    range_end = page_number * JURISDICTION_PAGE_SIZE
    data['next_page_param'] = 'page='+str(page_number + 1)
    
    objects = Jurisdiction.objects.none() 
        
        
    if search_str == '':
        if filter == 'all' or filter == '' or filter == None:
            if data['only_jurisditions_with_data'] == 1:
                objects |= Jurisdiction.objects.filter(last_contributed__isnull = False, state__iexact=state)     
                objects |= Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False)   
            else:
                objects |= Jurisdiction.objects.filter(last_contributed__isnull = True, state__iexact=state)       
                    
        elif filter == 'county' or filter == 'city' or filter == 'state':
            if data['only_jurisditions_with_data'] == 1:
                objects |= Jurisdiction.objects.filter(last_contributed__isnull = False, state__iexact=state, jurisdiction_type__in=type)     
                objects |= Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False)   
            else:
                objects |= Jurisdiction.objects.filter(last_contributed__isnull = True, state__iexact=state, jurisdiction_type__in=type)                  
            
            
    else:
        if filter == 'all' or filter == '' or filter == None:
            if data['only_jurisditions_with_data'] == 1:
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, last_contributed__isnull = False, state__iexact=state)     
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False)   
            else:
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, last_contributed__isnull = True)                
                    
        elif filter == 'county' or filter == 'city' or filter == 'state':
            if data['only_jurisditions_with_data'] == 1:
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, last_contributed__isnull = False, state__iexact=state, jurisdiction_type__in=type)     
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False)   
            else:
                objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=type, last_contributed__isnull = True)  
                            
    if sort_by == '' or sort_by == None:
        objects = objects.order_by('name', 'county')
    else:                        
        objects = objects.order_by(order_by_str) 
    
    data['count'] = len(objects)    
    data['list'] = objects[range_start:range_end]


    #data['system_message_type'] = 'success'
    #data['system_message_text'] = 'A lot of data found for your consumption'    
    
    data['action'] = "/jurisdiction/browse/?state="+state
    data['home'] = '/'
    data['user'] = request.user 
    
    message_data = get_system_message(request) #get the message List
    data =  dict(data.items() + message_data.items())   #merge message list to data
    
    dajax = Dajax()
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        #handle ajax calls
        if ajax == 'filter':
            body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_list.html', data, '') 
            dajax.assign('#jurisdiction_list','innerHTML', body)
            if page_number == 1: #initialize jscroll if page 1
                script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/jurisdiction_list.js', data, '')
                dajax.script(script)
                
            if int(data['only_jurisditions_with_data'])  == 1:
                message = 'Jurisdictions without data are hidden. Uncheck to show.'
            else:
                message = 'Jurisdictions without data are visible. Check to hide.'
                
            dajax.assign('#only_jurisdictions_with_data_message','innerHTML', message)
            
            return HttpResponse(dajax.json())
        
        return HttpResponse(dajax.json())
    #data['user'] = request.user
    if page_number != 1:
        #for endless scroll next page, only render the list
        return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '')      
    else:
        return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_by_state.html', data, '')      
Example #12
0
def jurisdiction_search_improved(request):    
    requestProcessor = HttpRequestProcessor(request)

    data = {'page_class': 'meta'}
    data['breadcrum'] = 'no'
    data['nav'] = 'yes'         
    data['current_nav'] = 'browse'
    #handle ajax near the end since it needs the same query in most cases
    #but need to know if it is ajax to prevent redirect to jurisdiction page
    dajax = Dajax()
    ajax = requestProcessor.getParameter('ajax')

    caller = requestProcessor.getParameter('caller')             
    if caller == '' or caller == None:
        caller = 'general_search'   
        
    data['caller'] = caller     
   
    form = None    

    primary_search_str = requestProcessor.getParameter('q')
    text_primary_search_str = requestProcessor.getParameter('text')    

    if primary_search_str == None:        
        primary_search_str = ''
        
    if text_primary_search_str == None:        
        text_primary_search_str = ''   
        
    # replace primary_search_str with q_primary_search_str if q_primary_search_str is available
    if primary_search_str == '':
        if text_primary_search_str != '':
            primary_search_str = text_primary_search_str
                                  
    data['primary_search_str'] = primary_search_str   
    
    if caller == 'state_jurisdictions':
        data['state_long_name'] = dict(US_STATES)[primary_search_str]     
    
    
    secondary_search_str = requestProcessor.getParameter('text_2') 
    if secondary_search_str == None or secondary_search_str=='Search':
        secondary_search_str = ''                                  
    data['secondary_search_str'] = secondary_search_str      

    search_level = check_search_level(primary_search_str)
    
    primary_exclude = exclude(primary_search_str)
        
    filter = requestProcessor.getParameter('filter')
    if filter == None:
        if search_level != '':
            filter = search_level
        else:
            filter = 'all'

    data['filter'] = filter   

    sort_by = requestProcessor.getParameter('sort_by')
    if sort_by == None:
        sort_by = ''                               
    data['sort_by'] = sort_by   
    
    sort_dir = requestProcessor.getParameter('sort_dir') 

    #order_by_str = pagingation_obj.get_order_by_str(sort_by, sort_dir)   
    if sort_dir == '' or sort_dir == None:
        sort_dir = 'asc'
    data['sort_dir'] = sort_dir   
  
    sort_desc_img = django_settings.SORT_DESC_IMG
    sort_asc_img = django_settings.SORT_ASC_IMG
    
    page = requestProcessor.getParameter('page')
    if page != None and page != '':
        page_number = int(page)
    else:
        page_number = 1
    range_start = (page_number - 1) * JURISDICTION_PAGE_SIZE
    range_end = page_number * JURISDICTION_PAGE_SIZE
    data['next_page_param'] = 'page='+str(page_number + 1)
    
    data['message'] = ''
    mathUtil = MathUtil()
    if mathUtil.is_number(primary_search_str) == False:
        if sort_by == '' or sort_by == None:
            sort_by = 'name'
        else:
            if sort_by == 'name':
                sort_by = 'name'
            elif sort_by == 'last':
                sort_by = 'last_contributed'
            else:
                sort_by = 'last_contributed_by'
        data['sort_by'] = sort_by

        if sort_dir == 'asc':           
            order_by_str = sort_by
            data['image_src'] = sort_asc_img
            data['sort_dir_txt'] = 'ascending' 
            data['sort_dir'] = 'asc'       
        else:
            order_by_str = '-'+sort_by
            data['image_src'] = sort_desc_img
            data['sort_dir_txt'] = 'descending'
            data['sort_dir'] = 'desc'

        data['search_by'] = 'search_by_name';
        scrubbed_primary_search_str = scrub_text_search_str(primary_search_str)
        
        sec_exclude = exclude(secondary_search_str)
            
        if primary_search_str.__len__() >= 2:
            objects_all_types = jurisdiction_text_search(primary_search_str, scrubbed_primary_search_str, secondary_search_str,filter, order_by_str, range_start, range_end, primary_exclude, sec_exclude)
            redirect_url = '/jurisdiction/'
                
            if len(objects_all_types) == 1 and ajax == None: #don't redirect if ajax
                redirect_url = redirect_url + str(objects_all_types[0].get_name_for_url()) + '/'
                return redirect(redirect_url)
            else:
                data['list'] = objects_all_types
        else:
            data['message'] = 'This search field requires at least 2 alphabetic (a-z) characters.';
    else:
        if sort_by == '' or sort_by == None or sort_by == 'distance':
            sort_by = 'distance'
        else:
            if sort_by == 'name':
                sort_by = 'name'
            elif sort_by == 'last':
                sort_by = 'last_contributed'
            else:
                sort_by = 'last_contributed_by'
        data['sort_by'] = sort_by

        if sort_dir == 'asc':           
            data['image_src'] = sort_asc_img
            data['sort_dir_txt'] = 'ascending' 
            data['sort_dir'] = 'asc'       
        else:
            data['image_src'] = sort_desc_img
            data['sort_dir_txt'] = 'descending'
            data['sort_dir'] = 'desc'

        data['search_by'] = 'search_by_zip'
        if page_number != 1:
            #for zip search, currently doesn't have endless scroll next page, return blank
            data['list'] = []
            return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '')
        nearbyJs = {}
        #geo based approach
        zipcodes = Zipcode.objects.filter(zip_code=primary_search_str)
        
        #TODO: if zip code not found, look for next zip code up
        if len(zipcodes) < 1:
            zipcodes = Zipcode.objects.filter(zip_code__gt=primary_search_str)[0:1]
        
        if len(zipcodes) > 0:
            zipcode = zipcodes[0] #should be only one anyway
            
            geoHelper = GeoHelper()
            center = {}
            center['lat'] = zipcode.latitude
            center['lon'] = zipcode.longitude
            #zip code data problem - longitude needs to be inverted:
            center['lon'] = float(-center['lon'])
            
            nearbyJs = getNearbyJs(geoHelper, center, geoHelper.initialDistance, 1)

            nearbyJs = addDistanceToJs(geoHelper, center, nearbyJs)
            nearbyJs = sortJs(nearbyJs, sort_by, sort_dir)
            
            data['list'] = nearbyJs
        
    request.session['primary_search_str'] = primary_search_str 
    data['user'] = request.user 
    
    message_data = get_system_message(request) #get the message List
    data =  dict(data.items() + message_data.items())   #merge message list to data
       
    if (ajax != None):
        #handle ajax calls
        if ajax == 'filter':
            body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_list.html', data, '') 
            dajax.assign('#jurisdiction_list','innerHTML', body)
            if page_number == 1: #initialize jscroll if page 1
                script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/jurisdiction_list.js', data, '')
                dajax.script(script)
            return HttpResponse(dajax.json())
        
        return HttpResponse(dajax.json())

    if page_number != 1:
        #for endless scroll next page, only render the list
        return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '')      
    else:
        return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_search_results.html', data, '')