Example #1
0
def jurisdiction_browse_improved(request):
    requestProcessor = HttpRequestProcessor(request)
    state = requestProcessor.getParameter('state')
    q_state = requestProcessor.getParameter('q')    
    if state ==None or state =='':
        if q_state !=None and q_state !='':    
            state = q_state
                
    if state ==None or state =='':
        #no state provided, go to US map
        return jurisdiction_browse_by_states(request)
    else:
        #go to state listing
        sort_by = requestProcessor.getParameter('sort_by')
        sort_dir = requestProcessor.getParameter('sort_dir')
        page_num = requestProcessor.getParameter('page')
        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'
        return get_state_jurisdictions(request, state, sort_by, sort_dir, page_num)
Example #2
0
def home(request):
    user = request.user
    requestProcessor = HttpRequestProcessor(request)
    data = {}
    data['accept_tou'] = ''
    data['home'] = 'True'
    dajax = Dajax()

    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):

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

    data['login'] = '******'

    if user.is_authenticated():
        data['login'] = '******'
    elif user.is_active == False:
        data['login_status'] = 'account_locked'

    message_data = get_system_message(request)  #get the message List
    data = dict(data.items() +
                message_data.items())  #merge message list to data

    data['recently_updated_jurs'] = JurisdictionRating.recently_updated()

    data['popular_jurs'] = JurisdictionRating.most_popular()

    invitation_key = requestProcessor.getParameter('invitation_key')
    if invitation_key != '' and invitation_key != None:
        data['action_key'] = 'create_account'
        data['invitation_key'] = invitation_key
        if user.is_authenticated():
            logout(request)

        return requestProcessor.render_to_response(request,
                                                   'website/home.html', data,
                                                   '')

    action = requestProcessor.getParameter('action')
    if action != '' and action != None:
        data['action_key'] = action
    next_url = requestProcessor.getParameter('next')
    data['caller'] = 'sign_in_home'
    data['current_nav'] = 'home'

    if user.is_authenticated() and (next_url != None and next_url != ''):
        return redirect(next_url)
    else:
        return requestProcessor.render_to_response(request,
                                                   'website/home.html', data,
                                                   '')
    def process_request(self, request):
        """Enables anonymous users to receive messages
        the same way as authenticated users, and sets
        the anonymous user greeting, if it should be shown"""
        requestProcessor = HttpRequestProcessor(request)
        username = requestProcessor.getParameter('username')
        if username == None:
            username = ''
        password = requestProcessor.getParameter('password')
        if password == None:
            password = ''
        #print "username :: " + str(username)
        #print "password :: " + str(password)

        authentication = True
        if username != '' and password != '':
            users_by_username = User.objects.filter(username__exact=username)
            users_by_email = User.objects.filter(email__exact=username)
            if users_by_username:
                user = users_by_username[0]
            elif users_by_email:
                user = users_by_email[0]
            else:
                authentication = False

            if authentication:
                if user.password == '':
                    user_details = UserDetail.objects.filter(user__exact=user)
                    if user_details:
                        user_detail = user_details[0]
                        if user_detail.old_password != '':
                            print "old_password :: " + str(
                                user_detail.old_password)
                            salt = 'W3yZmDNLeykU2GHmPS4K3Rx40T2Q7VlC7Y5P7wi5McL5YvfzGNOahshX2lta1PbP'

                            #print "set_password :: " + password
                            salt_password = password + ':' + salt
                            md5_password = hashlib.md5(
                                salt_password).hexdigest()

                            print "md5_password :: " + str(md5_password)
                            if md5_password == user_detail.old_password:
                                #print "validated against md5.  ok!. save the sha1 version."
                                user.set_password(password)
                                user.save()
                                user_detail.old_password = ''
                                user_detail.save()
                            else:
                                print "validated against md5.  NOT OK!  not save the sha1 version"
def search_general(request):
    requestProcessor = HttpRequestProcessor(request)
    output = ''
    
    text = requestProcessor.getParameter('text')
    if text == None: 
        return HttpResponse(output)
    
    output += '<div>' #a div to enclose everything
    
    #jurisdictions
    output += '<ul id="cities">'
    jurisdictions = Jurisdiction.objects.filter(name__icontains=text).order_by('name', 'state')[:10]
    for jurisdiction in jurisdictions:
        output += '<li><a href="/jurisdiction/'+str(jurisdiction.id)+'">'+jurisdiction.show_jurisdiction()+'</a></li>'
    output += '</ul>'
    
    #zipcodes for testing
    output += '<ul id="zipcodes">'
    zipcodes = Zipcode.objects.filter(zip_code__contains=text).order_by('zip_code')[:10]
    for zipcode in zipcodes:
        output += '<li>'+zipcode.city+', '+zipcode.state+'  '+str(zipcode.zip_code)+'</li>'
    output += '</ul>'
    
    output += '</div>'
    
    return HttpResponse(output)
def get_user(request):
    requestProcessor = HttpRequestProcessor(request)
    
    output = {}
    output['users'] = []
    
    text = requestProcessor.getParameter('text')
    if text == None: 
       return HttpResponse(json.dumps(output))
    
    #only if text is at least 3 chars
    if len(text) > 2:
        users = User.objects.filter(Q(username__icontains=text) | Q(first_name__icontains=text) | Q(last_name__icontains=text)).order_by('username')[0:20]
        for user in users:
            user_item = {}
            user_item['id'] = user.id
            user_item['username'] = user.username
            user_item['name'] = ''
            if user.first_name != None:
                user_item['name'] += user.first_name + ' '
            if user.last_name != None:
                user_item['name'] += user.last_name
            output['users'].append(user_item)
        
    return HttpResponse(json.dumps(output))
    
Example #6
0
def get_user(request):
    requestProcessor = HttpRequestProcessor(request)

    output = {}
    output['users'] = []

    text = requestProcessor.getParameter('text')
    if text == None:
        return HttpResponse(json.dumps(output))

    #only if text is at least 3 chars
    if len(text) > 2:
        users = User.objects.filter(
            Q(username__icontains=text) | Q(first_name__icontains=text)
            | Q(last_name__icontains=text)).order_by('username')[0:20]
        for user in users:
            user_item = {}
            user_item['id'] = user.id
            user_item['username'] = user.username
            user_item['name'] = ''
            if user.first_name != None:
                user_item['name'] += user.first_name + ' '
            if user.last_name != None:
                user_item['name'] += user.last_name
            output['users'].append(user_item)

    return HttpResponse(json.dumps(output))
def search_general(request):
    requestProcessor = HttpRequestProcessor(request)
    output = ''

    text = requestProcessor.getParameter('text')
    if text == None:
        return HttpResponse(output)

    output += '<div>'  #a div to enclose everything

    #jurisdictions
    output += '<ul id="cities">'
    jurisdictions = Jurisdiction.objects.filter(name__icontains=text).order_by(
        'name', 'state')[:10]
    for jurisdiction in jurisdictions:
        output += '<li><a href="/jurisdiction/' + str(
            jurisdiction.id) + '">' + jurisdiction.show_jurisdiction(
            ) + '</a></li>'
    output += '</ul>'

    #zipcodes for testing
    output += '<ul id="zipcodes">'
    zipcodes = Zipcode.objects.filter(
        zip_code__contains=text).order_by('zip_code')[:10]
    for zipcode in zipcodes:
        output += '<li>' + zipcode.city + ', ' + zipcode.state + '  ' + str(
            zipcode.zip_code) + '</li>'
    output += '</ul>'

    output += '</div>'

    return HttpResponse(output)
 def process_request(self, request):
     """Enables anonymous users to receive messages
     the same way as authenticated users, and sets
     the anonymous user greeting, if it should be shown"""
     requestProcessor = HttpRequestProcessor(request)      
     username = requestProcessor.getParameter('username')
     if username == None:
         username = ''
     password = requestProcessor.getParameter('password')  
     if password == None:
         password = ''
     #print "username :: " + str(username)
     #print "password :: " + str(password)
     
     authentication = True
     if username != '' and password != '':
         users_by_username = User.objects.filter(username__exact=username)
         users_by_email = User.objects.filter(email__exact=username)
         if users_by_username:
             user = users_by_username[0]
         elif users_by_email:
             user = users_by_email[0]
         else:
             authentication = False
             
         if authentication:
             if user.password == '':
                 user_details = UserDetail.objects.filter(user__exact=user)
                 if user_details:
                     user_detail = user_details[0]
                     if user_detail.old_password != '':
                         print "old_password :: " + str(user_detail.old_password)
                         salt = 'W3yZmDNLeykU2GHmPS4K3Rx40T2Q7VlC7Y5P7wi5McL5YvfzGNOahshX2lta1PbP'
                         
                         #print "set_password :: " + password
                         salt_password = password + ':' + salt
                         md5_password = hashlib.md5(salt_password).hexdigest()
         
                         print "md5_password :: " + str(md5_password)
                         if md5_password == user_detail.old_password:
                             #print "validated against md5.  ok!. save the sha1 version."
                             user.set_password(password)
                             user.save()
                             user_detail.old_password = ''
                             user_detail.save()
                         else:
                             print "validated against md5.  NOT OK!  not save the sha1 version"
Example #9
0
def jurisdiction_autocomplete(request):
    MAX_RESULT_COUNT = 7
    
    requestProcessor = HttpRequestProcessor(request)
    output = ''
    
    text = requestProcessor.getParameter('q')
    if text == None or text == '': 
        return HttpResponse(output)
    
    output += '<div>' #a div to enclose everything
    output += '<ul id="search_results">'
    
    jurisdictions = []
    
    mathUtil = MathUtil()
    if mathUtil.is_number(text) == False:
        jurisdictions = jurisdiction_text_search(text,
                                                 scrub_text_search_str(text),
                                                 "",
                                                 check_search_level(text) or 'all',
                                                 'name',
                                                 0,
                                                 MAX_RESULT_COUNT,
                                                 exclude(text),
                                                 '')
    else:
        #is number, so zipcode based search
        zipcodes = Zipcode.objects.filter(zip_code__startswith=text)[0:1]
        
        #if zip code not found, look for next zip code up
        if len(zipcodes) < 1:
            zipcodes = Zipcode.objects.filter(zip_code__gt=text)[0:1]
        
        if len(zipcodes) > 0:
            zipcode = zipcodes[0] #should be only one anyway
            
            geoHelper = GeoHelper()
            geoHelper.targetCount = MAX_RESULT_COUNT #target number of nearby items to get
            geoHelper.targetMargin = 2 #+ and - this number of items from the target number to stop
            
            center = {}
            center['lat'] = zipcode.latitude
            center['lon'] = zipcode.longitude
            #zip code data problem - longitude needs to be inverted:
            center['lon'] = float(-center['lon'])
            
            jurisdictions = getNearbyJs(geoHelper, center, geoHelper.initialDistance, 1)
            jurisdictions = addDistanceToJs(geoHelper, center, jurisdictions)
            jurisdictions = sortJs(jurisdictions, '', '')
            jurisdictions = jurisdictions[:MAX_RESULT_COUNT]
    
    for jurisdiction in jurisdictions:
        output += '<li><a href="/jurisdiction/'+str(jurisdiction.name_for_url)+'/">'+jurisdiction.show_jurisdiction()+'</a></li>'
    
    output += '</ul>'
    output += '</div>'
    
    return HttpResponse(output)
Example #10
0
def auto_search(request):
    requestProcessor = HttpRequestProcessor(request)
    s = requestProcessor.getParameter('s')
    gid = requestProcessor.getParameter('gid')
    if gid > 0:
        acg =  AnswerChoiceGroup.objects.get(id = gid)
        acs =  AnswerChoice.objects.filter(label__istartswith = s, answer_choice_group = acg)
    else:
        acs =  AnswerChoice.objects.filter(label__istartswith = s)
    output1 = [{'label':'-----', 'value':'0'}]
    for ac in acs:
        ja = {}
        ja['label'] = ac.label
        ja['value'] = ac.value
        output1.append(ja)
    output = {'output': output1}   
    return HttpResponse(json.dumps(output))
    
def test_edit(request):
    requestProcessor = HttpRequestProcessor(request)
    jurisdiction_id = 130732   
    dajax = Dajax()    
    data = {}
    data['jurisdiction_id'] = jurisdiction_id
    answer_reference_class_obj = AnswerReference()
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):    
        if (ajax == 'jurisdiction_website_submit'):     
            data['website'] = requestProcessor.getParameter('website')        

            jurisdiction_website_div = requestProcessor.getParameter('jurisdiction_website_div')   
            
            form_id = 'form_website'                
            question_text = 'website'       
            jurisdiction_id = requestProcessor.getParameter('jurisdiction_id')             
            process_answer(data, question_text, jurisdiction_id, request.user)                
                
            question_text = "website"
               
            body = get_website_html(form_id, question_text, jurisdiction_id, request, 'edit')
            dajax.assign('#'+str(jurisdiction_website_div),'innerHTML', body)
            
            return HttpResponse(dajax.json())  
        
        if (ajax == 'jurisdiction_email_submit'):     
            data['email'] = requestProcessor.getParameter('email')        

            jurisdiction_website_div = requestProcessor.getParameter('jurisdiction_email_div')   
            
            form_id = 'form_email'                
            question_text = 'website'       
            jurisdiction_id = requestProcessor.getParameter('jurisdiction_id')             
            process_answer(data, question_text, jurisdiction_id, request.user)                
                
            question_text = "website"
               
            body = get_email_html(form_id, question_text, jurisdiction_id, request, 'edit')
            dajax.assign('#'+str(jurisdiction_website_div),'innerHTML', body)
            
            return HttpResponse(dajax.json())         
        
        
        
        return HttpResponse(dajax.json())              
    ############### website - start #####################
    data['jurisdiction_website_div'] = 'jurisdiction_website_div'   
    data['form_website'] = 'form_website'   
    question_text = "website"
       
    body = get_website_html(data['form_website'], question_text, jurisdiction_id, request, 'edit')
     

    
    data['body_website'] = body

        
    return requestProcessor.render_to_response(request,'website/test/test_edit.html', data, '')    
Example #12
0
def home(request):
    user = request.user
    requestProcessor = HttpRequestProcessor(request)
    data = {}
    data['accept_tou'] = '' 
    data['home'] = 'True' 
    dajax = Dajax()
    
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
              
        
        #default response for all ajax
        return HttpResponse(dajax.json())  

    data['login'] = '******'

    if user.is_authenticated():
        data['login'] = '******'
    elif user.is_active == False:
        data['login_status'] = 'account_locked'
        
    
    message_data = get_system_message(request) #get the message List
    data =  dict(data.items() + message_data.items())   #merge message list to data
    
    
    invitation_key = requestProcessor.getParameter('invitation_key')    
    if invitation_key != '' and invitation_key != None:
        data['action_key'] = 'create_account'
        data['invitation_key'] = invitation_key
        
    action = requestProcessor.getParameter('action')    
    if action != '' and action != None:
        data['action_key'] = action       
    next_url = requestProcessor.getParameter('next')    
    data['caller'] = 'sign_in_home'
    data['current_nav'] = 'home'
    
    if user.is_authenticated() and (next_url != None and next_url != ''):
        return redirect(next_url)
    else:
        return requestProcessor.render_to_response(request,'website/home.html', data, '')
def test_ie(request):
    requestProcessor = HttpRequestProcessor(request)
    dajax = Dajax()
    data = {}
    
    ajax = requestProcessor.getParameter('ajax')
    if ajax != None:    
        if ajax == 'action1':
            dajax.assign('#test_div','innerHTML', ajax)
            return HttpResponse(dajax.json())
            
    return requestProcessor.render_to_response(request, 'website/test/test_ie.html', data, '')
def test_newsite(request):
    requestProcessor = HttpRequestProcessor(request)
    dajax = Dajax()
    data = {}
    
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'editmode'):
            formtype = requestProcessor.getParameter('formtype')
            name = requestProcessor.getParameter('name')
            value = requestProcessor.getParameter('value')
            div = requestProcessor.getParameter('div')
            help = requestProcessor.getParameter('help')
            data['formtype'] = formtype
            data['name'] = name
            data['help'] = help
            
            tp = get_template('website/blocks/form_field.html')
            c = Context(data)
            aa = tp.render(c)
            #aa = '<div class="input"><input type="text" id="id_'+name+'" name="'+name+'"></div>'
            #aa += '<label class="helptext">'+help+'</label>'
            dajax.assign('#'+div+'','innerHTML', aa)
            #dajax.script('alert("'+formtype+'")')
            return HttpResponse(dajax.json())
    return render_to_response('website/test_newsite.html', data, context_instance=RequestContext(request))
def jurisdiction_browse_by_states(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    
    message_key = requestProcessor.getParameter('message_key')
    messageUtil = MessageUtil(message_key)
    data['system_message_type'] = messageUtil.get_system_message_type()   # optional
    data['system_message_text'] = messageUtil.get_system_message_text()   
            
    data['page_title'] = "Browse Jurisdictions"
      
    #data['state_list'] = US_STATES
    return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_state_browse.html', data, '')
Example #16
0
def j_search(request):
    requestProcessor = HttpRequestProcessor(request)
    s = requestProcessor.getParameter('s')    
    js = Jurisdiction.objects.filter(name__istartswith = s).order_by('name','city', 'county', 'state')
    if len(js) > 20:
        js = js[0:20]
    output1 = [{'label':'-----', 'value':'0'}]
    for j in js:
        ja = {}
        ja['label'] = j.show_jurisdiction()
        ja['value'] = j.id
        output1.append(ja)
    output = {'output': output1}   
    return HttpResponse(json.dumps(output))
Example #17
0
def top_org_contributors(request):
    requestProcessor = HttpRequestProcessor(request)

    number = requestProcessor.getParameter('number')
    if number == None:
        number = 3

    jid = requestProcessor.getParameter('jid')
    if jid != None:
        jurisdiction = Jurisdiction.objects.get(id=jid)

    current_site = get_current_site(request)

    logo_src = str(current_site.name) + str(django_settings.MEDIA_URL)

    top_org_contributors = []
    rating_category = RatingCategory.objects.get(id=1)

    if jid == None:
        top_org_contributors_qryset = OrganizationRating.objects.filter(
            category__exact=rating_category).order_by('-scale')[:number]
    else:
        top_org_contributors_qryset = JurisdictionContributor.objects.filter(
            jurisdiction__exact=jurisdiction,
            question_category__isnull=True,
            user__isnull=True).order_by('-points')[:number]

    if top_org_contributors_qryset:
        for org in top_org_contributors_qryset:
            top_org_contributor = {}
            top_org_contributor['id'] = org.organization_id
            org = Organization.objects.get(id=org.organization_id)
            top_org_contributor['name'] = org.name
            top_org_contributor['logo_src'] = str(logo_src) + str(org.logo)
            top_org_contributors.append(top_org_contributor)

    return HttpResponse(json.dumps(top_org_contributors))
def top_org_contributors(request):
    requestProcessor = HttpRequestProcessor(request)

    number = requestProcessor.getParameter('number')
    if number == None:
        number = 3
        
    jid = requestProcessor.getParameter('jid')
    if jid != None:
        jurisdiction = Jurisdiction.objects.get(id=jid)       

    current_site = get_current_site(request)

    logo_src = str(current_site.name) + str(django_settings.MEDIA_URL) 

    top_org_contributors = []        
    rating_category = RatingCategory.objects.get(id=1)

    
    if jid == None:
        top_org_contributors_qryset = OrganizationRating.objects.filter(category__exact=rating_category).order_by('-scale')[:number]
    else:
        top_org_contributors_qryset = JurisdictionContributor.objects.filter(jurisdiction__exact=jurisdiction, question_category__isnull=True, user__isnull=True).order_by('-points')[:number]


    if top_org_contributors_qryset:
        for org in top_org_contributors_qryset:
            top_org_contributor = {}
            top_org_contributor['id'] = org.organization_id
            org = Organization.objects.get(id=org.organization_id)
            top_org_contributor['name'] = org.name
            top_org_contributor['logo_src'] = str(logo_src) + str(org.logo)
            top_org_contributors.append(top_org_contributor)

    return HttpResponse(json.dumps(top_org_contributors))
    
    
Example #19
0
def delete_organization(request):
    requestProcessor = HttpRequestProcessor(request)
    user = request.user

    output = {}
    output['e'] = False
    output['m'] = ''

    org_id = requestProcessor.getParameter('org_id')
    if org_id == None:
        output['e'] = True
        output['m'] = 'No org_id provided.'
        return HttpResponse(json.dumps(output))

    try:
        organization = Organization.objects.get(id=org_id)
    except:
        output['e'] = True
        output['m'] = 'Organization does not exist.'
        return HttpResponse(json.dumps(output))

    try:
        owner = OrganizationMember.objects.get(organization=organization,
                                               role__name='Owner',
                                               status='A')
    except:
        owner = None

    #is user the owner or admin?
    if user.is_staff != True:
        if owner != None:
            if user != owner.user:
                output['e'] = True
                output[
                    'm'] = 'You do not have the access right to delete this organization.'
                return HttpResponse(json.dumps(output))

    #does org has other members besides owner
    members = OrganizationMember.objects.filter(
        organization=organization, status='A').exclude(user=owner.user)
    if len(members) > 0:
        output['e'] = True
        output[
            'm'] = 'You cannot delete an organization that has other active members.'
        return HttpResponse(json.dumps(output))

    organization.delete()
    output['m'] = 'Organization deleted.'
    return HttpResponse(json.dumps(output))
def set_member(request):
    requestProcessor = HttpRequestProcessor(request)
    
    output = {}
    output['e'] = False
    output['m'] = ''
    
    org_id = requestProcessor.getParameter('org_id')
    if org_id == None: 
        output['e'] = True
        output['m'] = 'No org_id provided'
        return HttpResponse(json.dumps(output))
    
    username = requestProcessor.getParameter('username')
    if username == None: 
        output['e'] = True
        output['m'] = 'No username provided'
        return HttpResponse(json.dumps(output))
    
    try:
        organization = Organization.objects.get(id=org_id)
    except:
        output['e'] = True
        output['m'] = 'Organization not found.'
        return HttpResponse(json.dumps(output))
    
    try:
        user = User.objects.get(username=username)
    except:
        output['e'] = True
        output['m'] = 'User not found.'
        return HttpResponse(json.dumps(output))
    
    organization.set_member(user)
        
    return HttpResponse(json.dumps(output))
Example #21
0
def set_member(request):
    requestProcessor = HttpRequestProcessor(request)

    output = {}
    output['e'] = False
    output['m'] = ''

    org_id = requestProcessor.getParameter('org_id')
    if org_id == None:
        output['e'] = True
        output['m'] = 'No org_id provided'
        return HttpResponse(json.dumps(output))

    username = requestProcessor.getParameter('username')
    if username == None:
        output['e'] = True
        output['m'] = 'No username provided'
        return HttpResponse(json.dumps(output))

    try:
        organization = Organization.objects.get(id=org_id)
    except:
        output['e'] = True
        output['m'] = 'Organization not found.'
        return HttpResponse(json.dumps(output))

    try:
        user = User.objects.get(username=username)
    except:
        output['e'] = True
        output['m'] = 'User not found.'
        return HttpResponse(json.dumps(output))

    organization.set_member(user)

    return HttpResponse(json.dumps(output))
def delete_organization(request):
    requestProcessor = HttpRequestProcessor(request)
    user = request.user
    
    output = {}
    output['e'] = False
    output['m'] = ''
    
    org_id = requestProcessor.getParameter('org_id')
    if org_id == None: 
        output['e'] = True
        output['m'] = 'No org_id provided.'
        return HttpResponse(json.dumps(output))
    
    try:
        organization = Organization.objects.get(id=org_id)
    except:
        output['e'] = True
        output['m'] = 'Organization does not exist.'
        return HttpResponse(json.dumps(output))
        
    try:
        owner = OrganizationMember.objects.get(organization=organization, role__name='Owner', status='A')
    except:
        owner = None
    
    #is user the owner or admin?
    if user.is_staff != True:
        if owner != None:
            if user != owner.user:
                output['e'] = True
                output['m'] = 'You do not have the access right to delete this organization.'
                return HttpResponse(json.dumps(output))
    
    #does org has other members besides owner
    members = OrganizationMember.objects.filter(organization=organization, status='A').exclude(user=owner.user)
    if len(members) > 0:
        output['e'] = True
        output['m'] = 'You cannot delete an organization that has other active members.'
        return HttpResponse(json.dumps(output))
        
    organization.delete()
    output['m'] = 'Organization deleted.'
    return HttpResponse(json.dumps(output))
Example #23
0
def get_system_message(request):
    requestProcessor = HttpRequestProcessor(request)
    message_list = request.session.get('message_list', [])
    if message_list == None:
        message_list = []
    message_key = requestProcessor.getParameter('message_key')
    if message_key != None:
        message_list.append(message_key)
    request.session['message_list'] = None

    data = {}
    data['system_message_type'] = ''
    data['system_message_text'] = ''
    if len(message_list) > 0:
        messageUtil = MessageUtil(message_list[0])
        data['system_message_type'] = messageUtil.get_system_message_type(
        )  # optional
        data['system_message_text'] = messageUtil.get_system_message_text()
    return data
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_system_message(request):
    requestProcessor = HttpRequestProcessor(request)
    message_list = request.session.get('message_list', [])
    if message_list == None:
        message_list = []
    message_key = requestProcessor.getParameter('message_key')
    if message_key !=None:
        message_list.append(message_key)
    request.session['message_list'] = None
    
    data = {}
    data['system_message_type'] = ''
    data['system_message_text'] = ''
    if len(message_list) > 0:
        messageUtil = MessageUtil(message_list[0])
        data['system_message_type'] = messageUtil.get_system_message_type()   # optional
        data['system_message_text'] = messageUtil.get_system_message_text() 
    return data
        
        
def get_organization(request):
    requestProcessor = HttpRequestProcessor(request)
    
    output = {}
    output['organizations'] = []
    
    text = requestProcessor.getParameter('text')
    if text == None: 
       return HttpResponse(json.dumps(output))
    
    #only if text is at least 2 chars
    if len(text) > 1:
        orgs = Organization.objects.filter(Q(name__icontains=text)).order_by('name')[0:20]
        for org in orgs:
            org_item = {}
            org_item['id'] = org.id
            org_item['name'] = org.name
            output['organizations'].append(org_item)
        
    return HttpResponse(json.dumps(output))
Example #27
0
def get_organization(request):
    requestProcessor = HttpRequestProcessor(request)

    output = {}
    output['organizations'] = []

    text = requestProcessor.getParameter('text')
    if text == None:
        return HttpResponse(json.dumps(output))

    #only if text is at least 2 chars
    if len(text) > 1:
        orgs = Organization.objects.filter(
            Q(name__icontains=text)).order_by('name')[0:20]
        for org in orgs:
            org_item = {}
            org_item['id'] = org.id
            org_item['name'] = org.name
            output['organizations'].append(org_item)

    return HttpResponse(json.dumps(output))
def getTutorial(request):
    requestProcessor = HttpRequestProcessor(request)

    output = {}
    output['e'] = False
    output['m'] = ''
    '''sid = requestProcessor.getParameter('sid')
    if sid == None: 
        output['e'] = True
        output['m'] = 'No sid provided'
        return HttpResponse(json.dumps(output))
    
    sessionHelper = SessionHelper()
    sessionHelper.checkSession(sid)
    
    if sessionHelper.error == True:
        output['e'] = True
        output['m'] = sessionHelper.message
        return HttpResponse(json.dumps(output))'''

    try:  #get session user's email
        user = request.user
        userEmail = user.email
    except:
        output['e'] = True
        output['m'] = 'Invalid user.'
        return HttpResponse(json.dumps(output))

    action = requestProcessor.getParameter('action')
    if action == None:
        output['e'] = True
        output['m'] = 'No action provided'
        return HttpResponse(json.dumps(output))

    force = requestProcessor.getParameter('force')

    now = datetime.now()
    dayStart = now.replace(hour=0, minute=0, second=0, microsecond=0)
    dayEnd = dayStart + timedelta(days=1)

    actionTutorials = ActionTutorial.objects.filter(
        action_identifier=action, tutorial__active=True).exclude(
            tutorial__start_datetime__gt=now).exclude(
                tutorial__end_datetime__lt=now)
    if len(actionTutorials) == 0:
        return HttpResponse(json.dumps(output))

    tutorial = actionTutorials[0].tutorial  #just get the 1st

    #has this user already seen this tutorial today?
    '''histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial, view_datetime__gte=dayStart, view_datetime__lt=dayEnd)
    if len(histories) > 0:
        return HttpResponse(json.dumps(output))
    else:
        #now remember this use has seen this tutorial today
        history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial, view_datetime=now)
        history.save()'''

    histories = UserTutorialHistory.objects.filter(user_email=userEmail,
                                                   tutorial=tutorial)
    if len(histories) > 0:
        history = histories[0]
        if force != 'true':
            #show only if user has not seen it today
            if history.view_datetime >= dayStart and history.view_datetime < dayEnd:
                return HttpResponse(json.dumps(output))
    else:
        history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial)
    #update or save history since we are going to show it
    history.view_datetime = now
    history.save()

    output['d'] = {}
    output['d']['tid'] = tutorial.id
    output['d']['tips'] = []
    tutorialPages = TutorialPage.objects.filter(
        tutorial=tutorial).order_by('display_order')
    pages = UserTutorialPageHistory.objects.filter(user_email=userEmail,
                                                   tutorial=tutorial)
    checked_pages = UserTutorialPageHistory.objects.filter(
        user_email=userEmail, tutorial=tutorial, checked=1)
    all_checked = False
    if len(pages) == len(checked_pages):
        all_checked = True
    i = 0
    for page in tutorialPages:
        pageObj = {}
        pageObj['s'] = page.selector
        pageObj['t'] = page.tip
        pageObj['id'] = page.id

        #get page status from user tutorial page history
        try:
            pageHistory = UserTutorialPageHistory.objects.get(
                user_email=userEmail, tutorial=tutorial, page=page)
            if pageHistory.checked == True:
                if all_checked == True and i == 0 and force == 'true':
                    pageObj['c'] = False
                else:
                    pageObj['c'] = True
            else:
                pageObj['c'] = False
        except:
            pageObj['c'] = False

        output['d']['tips'].append(pageObj)
        i = i + 1

    return HttpResponse(json.dumps(output))
Example #29
0
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, '')
Example #30
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, '')      
Example #31
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 #32
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
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 #34
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 #35
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())  
Example #36
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, '')
def pageStatus(request):
    requestProcessor = HttpRequestProcessor(request)

    output = {}
    output['e'] = False
    output['m'] = ''
    '''sid = requestProcessor.getParameter('sid')
    if sid == None: 
        output['e'] = True
        output['m'] = 'No sid provided'
        return HttpResponse(json.dumps(output))
    
    sessionHelper = SessionHelper()
    sessionHelper.checkSession(sid)
    
    if sessionHelper.error == True:
        output['e'] = True
        output['m'] = sessionHelper.message
        return HttpResponse(json.dumps(output))'''

    try:  #get session user's email
        user = request.user
        userEmail = user.email
    except:
        output['e'] = True
        output['m'] = 'Invalid user.'
        return HttpResponse(json.dumps(output))

    tutorialId = requestProcessor.getParameter('tid')
    if tutorialId == None:
        output['e'] = True
        output['m'] = 'No tid provided'
        return HttpResponse(json.dumps(output))

    pageId = requestProcessor.getParameter('pid')
    if pageId == None:
        output['e'] = True
        output['m'] = 'No pid provided'
        return HttpResponse(json.dumps(output))

    checked = requestProcessor.getParameter('c')
    if checked == None:
        output['e'] = True
        output['m'] = 'No c provided'
        return HttpResponse(json.dumps(output))

    try:
        tutorial = Tutorial.objects.get(id=tutorialId)
    except:
        output['e'] = True
        output['m'] = 'Tutorial does not exist.'
        return HttpResponse(json.dumps(output))
    try:
        tutorialPage = TutorialPage.objects.get(id=pageId)
    except:
        output['e'] = True
        output['m'] = 'Tutorial page does not exist.'
        return HttpResponse(json.dumps(output))

    #add or update user tutorial page history
    try:
        pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail,
                                                          tutorial=tutorial,
                                                          page=tutorialPage)
    except:
        pageHistory = UserTutorialPageHistory(user_email=userEmail,
                                              tutorial=tutorial,
                                              page=tutorialPage)
    if checked == '1':
        pageHistory.checked = True
    else:
        pageHistory.checked = False
    pageHistory.save()

    return HttpResponse(json.dumps(output))
Example #38
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, '')        
def pageStatus(request):
    requestProcessor = HttpRequestProcessor(request)
    
    output = {}
    output['e'] = False
    output['m'] = ''
    
    '''sid = requestProcessor.getParameter('sid')
    if sid == None: 
        output['e'] = True
        output['m'] = 'No sid provided'
        return HttpResponse(json.dumps(output))
    
    sessionHelper = SessionHelper()
    sessionHelper.checkSession(sid)
    
    if sessionHelper.error == True:
        output['e'] = True
        output['m'] = sessionHelper.message
        return HttpResponse(json.dumps(output))'''

    try: #get session user's email
        user = request.user
        userEmail = user.email
    except:
        output['e'] = True
        output['m'] = 'Invalid user.'
        return HttpResponse(json.dumps(output))
    
    tutorialId = requestProcessor.getParameter('tid')
    if tutorialId == None: 
        output['e'] = True
        output['m'] = 'No tid provided'
        return HttpResponse(json.dumps(output))
    
    pageId = requestProcessor.getParameter('pid')
    if pageId == None: 
        output['e'] = True
        output['m'] = 'No pid provided'
        return HttpResponse(json.dumps(output))
   
    checked = requestProcessor.getParameter('c')
    if checked == None: 
        output['e'] = True
        output['m'] = 'No c provided'
        return HttpResponse(json.dumps(output))
    
    try:
        tutorial = Tutorial.objects.get(id=tutorialId)
    except:
        output['e'] = True
        output['m'] = 'Tutorial does not exist.'
        return HttpResponse(json.dumps(output))
    try:
        tutorialPage = TutorialPage.objects.get(id=pageId)
    except:
        output['e'] = True
        output['m'] = 'Tutorial page does not exist.'
        return HttpResponse(json.dumps(output))
    
    #add or update user tutorial page history
    try:
        pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail, tutorial=tutorial, page=tutorialPage)
    except:
        pageHistory = UserTutorialPageHistory(user_email=userEmail, tutorial=tutorial, page=tutorialPage)
    if checked == '1':
        pageHistory.checked = True
    else:
        pageHistory.checked = False
    pageHistory.save()
   
    return HttpResponse(json.dumps(output))
    
def getTutorial(request):
    requestProcessor = HttpRequestProcessor(request)
    
    output = {}
    output['e'] = False
    output['m'] = ''
    
    '''sid = requestProcessor.getParameter('sid')
    if sid == None: 
        output['e'] = True
        output['m'] = 'No sid provided'
        return HttpResponse(json.dumps(output))
    
    sessionHelper = SessionHelper()
    sessionHelper.checkSession(sid)
    
    if sessionHelper.error == True:
        output['e'] = True
        output['m'] = sessionHelper.message
        return HttpResponse(json.dumps(output))'''

    try: #get session user's email
        user = request.user
        userEmail = user.email
    except:
        output['e'] = True
        output['m'] = 'Invalid user.'
        return HttpResponse(json.dumps(output))
    
    action = requestProcessor.getParameter('action')
    if action == None: 
        output['e'] = True
        output['m'] = 'No action provided'
        return HttpResponse(json.dumps(output))
    
    force = requestProcessor.getParameter('force')
    
    now = datetime.now()
    dayStart = now.replace(hour=0, minute=0, second=0, microsecond=0)
    dayEnd = dayStart + timedelta(days=1)
    
    actionTutorials = ActionTutorial.objects.filter(action_identifier=action, tutorial__active=True).exclude(tutorial__start_datetime__gt=now).exclude(tutorial__end_datetime__lt=now)
    if len(actionTutorials) == 0:
        return HttpResponse(json.dumps(output))
    
    tutorial = actionTutorials[0].tutorial #just get the 1st
    
    #has this user already seen this tutorial today?
    '''histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial, view_datetime__gte=dayStart, view_datetime__lt=dayEnd)
    if len(histories) > 0:
        return HttpResponse(json.dumps(output))
    else:
        #now remember this use has seen this tutorial today
        history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial, view_datetime=now)
        history.save()'''
    
    histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial)
    if len(histories) > 0:
        history = histories[0]
        if force != 'true':
        #show only if user has not seen it today
            if history.view_datetime >= dayStart and history.view_datetime < dayEnd:
                return HttpResponse(json.dumps(output))
    else:
        history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial)
    #update or save history since we are going to show it
    history.view_datetime = now
    history.save()
    
    output['d'] = {}
    output['d']['tid'] = tutorial.id
    output['d']['tips'] = []    
    tutorialPages = TutorialPage.objects.filter(tutorial=tutorial).order_by('display_order')
    pages = UserTutorialPageHistory.objects.filter(user_email=userEmail, tutorial=tutorial)
    checked_pages = UserTutorialPageHistory.objects.filter(user_email=userEmail, tutorial=tutorial, checked = 1)
    all_checked = False
    if len(pages) == len(checked_pages):
        all_checked = True
    i = 0
    for page in tutorialPages:
        pageObj = {}
        pageObj['s'] = page.selector
        pageObj['t'] = page.tip
        pageObj['id'] = page.id
        
        #get page status from user tutorial page history
        try:
            pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail, tutorial=tutorial, page=page)
            if pageHistory.checked == True:
                if all_checked == True and i == 0 and force == 'true':
                    pageObj['c'] = False
                else:
                    pageObj['c'] = True
            else:
                pageObj['c'] = False
        except:
            pageObj['c'] = False
        
        output['d']['tips'].append(pageObj)
        i = i + 1
        
    return HttpResponse(json.dumps(output))