Example #1
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 state_jurisdictions(request, abbreviation):
    data = {}
    requestProcessor = HttpRequestProcessor(request)

    template_util = TemplateUtil()
    data['state_name'] = dict(US_STATES)[abbreviation]
    data['list_exist'] = template_util.generated_state_exist(abbreviation)
    data['list_template'] = template_util.generated_state_template_path(
        abbreviation)
    return requestProcessor.render_to_response(request,
                                               'website/site_map_state.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, '')
Example #4
0
def news(request):
    data = {}
    data['current_nav'] = 'news'
    data['pressreleases'] = PressRelease.objects.all().order_by('published')
    data['articles'] = Article.objects.all().order_by('published')
    data['events'] = Event.objects.all().filter(expiration__gte=datetime.now()).order_by('published')

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

    requestProcessor = HttpRequestProcessor(request)
    return requestProcessor.render_to_response(request,'website/info/news.html', data, '')
def about(request):
    data = {}
    data['current_nav'] = 'about'

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

    requestProcessor = HttpRequestProcessor(request)
    return requestProcessor.render_to_response(request,
                                               'website/info/about.html', data,
                                               '')
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 #7
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))
    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 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 #10
0
def user_page_views(request):
    requestProcessor = HttpRequestProcessor(request)
    user = request.user
    data = {}

    # get orgs that have members
    members_orgs = OrganizationMember.objects.filter(
        status__iexact='A', organization__status__iexact='A').values(
            'organization__id',
            'organization__name').order_by('organization__name')
    data['members_orgs'] = members_orgs

    # get members for each org
    org_members = {}
    orgs_members = OrganizationMember.objects.filter(
        status__iexact='A', organization__status__iexact='A').values(
            'organization__id', 'user__id',
            'user__username').order_by('organization__name', 'user__username')

    for org in orgs_members:
        if org['organization__id'] not in org_members:
            org_members[org['organization__id']] = {}

        org_members[org['organization__id']][
            org['user__id']] = org['user__username']

    data['org_members'] = org_members

    # get user page viewings
    user_pages = {}
    user_page_views = UserPageView.objects.all().order_by(
        'user__username', 'url', 'last_page_view_date')
    for user_page_view in user_page_views:
        user_pages[user_page_view.user_id] = user_page_views

    data['user_pages'] = user_pages
    #orgmembers = OrganizationMember.objects.filter(status__iexact='A', organization__status__iexact='A').order_by('organization__name', 'user__username')

    # get non-affiliated users
    members = OrganizationMember.objects.filter(
        status__iexact='A',
        organization__status__iexact='A').values_list('user__id')
    users_with_orgs = User.objects.filter(id__in=members)
    users = User.objects.exclude(id__in=users_with_orgs).order_by('username')

    data['users'] = users

    return requestProcessor.render_to_response(
        request, 'website/siteadmin/user_page_views.html', data, '')
def test_timezone(request):
    requestProcessor = HttpRequestProcessor(request)
    data = {}
    #from django.utils.timezone import localtime
    #bb = pytz.timezone('Asia/Shanghai')
    
    
    omr = Organization.objects.get(id = 43)
    dh = DatetimeHelper(omr.create_datetime, 'Asia/Shanghai')
    data['omr'] = dh.showTimeFormat()
    dh1 = DatetimeHelper(omr.create_datetime)
    data['omr1'] = dh1.showTimeFormat()
    data['omr2'] = dh.showStateTimeFormat('DC')
    
    return requestProcessor.render_to_response(request, 'website/test/test_timezone.html', data, '')
def get_website_html(form_id, question_text, jurisdiction_id, request, mode="add"):
    requestProcessor = HttpRequestProcessor(request)
        
    data_website = {}
    data_website['value_existed'] = 'no'    
    value = ''

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

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

    most_popular_jurs = []
    most_popular_jurs_qryset = EntityViewCount.objects.filter(
        entity_name__iexact='jurisdiction').order_by('-count_30_days')[:10]
    if most_popular_jurs_qryset:
        for jur in most_popular_jurs_qryset:
            most_popular_jur = {}
            most_popular_jur['id'] = jur.entity_id
            most_popular_jur['name'] = Jurisdiction.objects.get(
                id=jur.entity_id).show_jurisdiction()
            most_popular_jurs.append(most_popular_jur)
            #most_popular_jurs.append([jur.entity_id, Jurisdiction.objects.get(id=jur.entity_id).show_jurisdiction()])

    return HttpResponse(json.dumps(most_popular_jurs))
Example #14
0
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()   
    
    message_data = get_system_message(request) #get the message List
    data =  dict(data.items() + message_data.items())   #merge message list to data
            
    data['page_title'] = "Browse Jurisdictions"
      
    #data['state_list'] = US_STATES
    return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_state_browse.html', data, '')
def db_check(request):
    requestProcessor = HttpRequestProcessor(request)
    output = {}

    now = datetime.now()
    output['t'] = now.isoformat()

    jurisdictions = Jurisdiction.objects.filter(name__contains='San Francisco')
    if len(jurisdictions) == 0:
        output['e'] = True
        output['m'] = 'Database is not working!'
        return HttpResponse(json.dumps(output))

    output['e'] = False
    output['m'] = 'Server and database are working.'
    return HttpResponse(json.dumps(output))
def run_test(request, test=None):
    requestProcessor = HttpRequestProcessor(request)
    #test = requestProcessor.getParameter('test')

    #allow run test only if DEBUG is on
    html = ''
    if settings.DEBUG == True:
        model_unit_tests = ModelUnitTests()
        if test == None:
            html += '<p>Running All Tests</p>'
            try:
                model_unit_tests.runTest()  #run all tests
                html += '<p>Test Passed</p>'
            except Exception, e:
                html += '<p>' + str(e) + '</p>'
                html += '<p>Test Failed</p>'
        else:
            html += '<p>Test "' + test + '" not found.</p>'
Example #17
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 get_state_jurisdictions(request, state='', sort_by='', sort_dir='', page_num=''):
    requestProcessor = HttpRequestProcessor(request)
    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'

    if sort_by == '':
        sort_by = 'name'
    if sort_dir == '':
        sort_dir = 'asc'
    
    href = '/jurisdiction/browse/?state=' + state

    search_params = {}
    pagingation_obj = PaginationUtil('get', search_params, href)
    pagingation_obj.set_up_sorting_by_columns(sort_columns, sort_desc_img, sort_asc_img, sort_class)

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

    if state == '':
        state = 'CA'
        
    type = 'CI'

    if sort_by == '' or sort_by == None:
        objects = Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__iexact=type).order_by('name', 'county')
    else:                        
        order_by_str = pagingation_obj.get_order_by_str(sort_by, sort_dir) 
        objects = Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__iexact=type).order_by(order_by_str)   
                
    pagingation_obj.set_up_pagination(objects, page_num, django_settings.MAX_REC_PER_PAGE)   
    data['city_list'] = pagingation_obj.getCurrentPageItems()
    data['pagination'] = pagingation_obj.getPaginationData()
    data['sort'] = pagingation_obj.get_sorting_html_all_columns()   

    data['system_message_type'] = 'success'
    data['system_message_text'] = 'A lot of data found for your consumption'    

    #return render(request,'website/jurisdictions/jurisdiction_browse.html', data)
    return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_browse.html', data, '')
def most_recent(request):
    requestProcessor = HttpRequestProcessor(request)
    js = AnswerReference.objects.order_by('-create_datetime')
    js = js.values('jurisdiction__id', 'jurisdiction__name', 'create_datetime')
    output1 = []
    temp = []
    for j in js:
        if temp.count(j['jurisdiction__id']) == 0:
            ja = {}
            ja['id'] = j['jurisdiction__id']
            ja['name'] = Jurisdiction.objects.get(
                id=j['jurisdiction__id']).show_jurisdiction()

            #ja['time'] = str(j['create_datetime'])
            temp.append(j['jurisdiction__id'])
            output1.append(ja)
        if len(temp) == 10:
            break
    return HttpResponse(json.dumps(output1))
Example #20
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_email_html(form_id, question_text, jurisdiction_id, request, mode="add"):
    requestProcessor = HttpRequestProcessor(request)
        
    data_email = {}
    data_email['value_existed'] = 'no'    
    value = ''

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

    data_email['value'] = value  # value to display
    data_email['question_label'] = 'Email'  # field label
    data_email['question_name'] = 'email'    # name used in name and id of form field
    data_email['mode'] = 'individual'         # not sure yet.
       
    # information need to configure the field, this case, a text field.
    data_form = {}                
    data_form['name'] = data_email['question_name']
    if mode == 'edit':
        data_form['value'] = data_email['email']   
    else:
        data_form['value'] = ''
    data_form['id'] = form_id+'_field_'+ data_form['name'] 
    data_form['class'] = 'required' # for jquery validation
    data_form['style'] = 'width:210px'
    data_form['attributes'] =  "maxLength='200'"   
    data_form['help_text'] = 'Valid email address please'       
    data_form['msg_error'] = ''
    
    form_field = requestProcessor.decode_jinga_template(request,'website/form_fields/text_field.html', data_form, '') 
    data_email['form_fields'] = form_field
    body = requestProcessor.decode_jinga_template(request,'website/form_fields/base_add.html', data_email, '') 
    
    return body    
Example #23
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))
Example #24
0
def states(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    
    state_all = US_STATES
    items_per_column = math.ceil(float(len(state_all)) / settings.PAGE_COLUMNS)
    
    columns = []
    count = 0
    column = []
    for state_obj in state_all:
        column.append(state_obj)
        count += 1
        if count >= items_per_column:
            columns.append(column)
            column = []
            count = 0
    if count > 0: #if there's remaining items in last column
        columns.append(column)
    data['columns'] = columns
    
    return requestProcessor.render_to_response(request,'website/states.html', data, '') 
Example #25
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))
Example #26
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))
Example #27
0
def get_info(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    dajax = Dajax()
          
    ajax = requestProcessor.getParameter('ajax')
    if (ajax != None):
        if (ajax == 'privacy_policy'):
            body = requestProcessor.decode_jinga_template(request,'website/info/privacy_policy_modal.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json())  
        
    
        if (ajax == 'terms_of_use'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_terms_of_use.html', data, '') 
            dajax.assign('#main_content','innerHTML', body)
            #dajax.assign('#fancyboxformDiv','innerHTML', body)  
            #dajax.script('controller.showModalDialog("#fancyboxformDiv");')    
            return HttpResponse(dajax.json())  
        
        if (ajax == 'doe_grant'):
            body = requestProcessor.decode_jinga_template(request,'website/blocks/text_doe_grant.html', data, '') 
            #dajax.assign('#main_content','innerHTML', body)    
            dajax.assign('#fancyboxformDiv','innerHTML', body)  
            dajax.script('controller.showModalDialog("#fancyboxformDiv");')
            return HttpResponse(dajax.json()) 
        
        if (ajax == 'send_feedback'):
            data = {}     
            data['form_id'] = 'form_send_feedback'            
            
            data['feedback'] = requestProcessor.getParameter('feedback')    
            if data['feedback'] == None:
                data['feedback'] = ''                                                       
             
                body = requestProcessor.decode_jinga_template(request,'website/info/feedback.html', data, '') 
                script = requestProcessor.decode_jinga_template(request, 'website/info/feedback.js', data, '')   
                dajax.assign('#fancyboxformDiv','innerHTML', body)                   
                dajax.script('controller.showModalDialog("#fancyboxformDiv");')
                dajax.script(script)                  

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

                    data['first_name'] = data['user'].first_name     
                    data['last_name'] = data['user'].last_name
                    data['username'] = data['user'].username
                    data['title'] = data['user_detail'].title    
                    data['user_email'] = data['user'].email     
                                        
                else:
                    data['first_name'] = requestProcessor.getParameter('first_name')        # required
                    data['last_name'] = requestProcessor.getParameter('last_name')          # required
                    data['user_email'] = requestProcessor.getParameter('email')        # required
                    data['title'] = requestProcessor.getParameter('title')      
                    data['user_orgs'] = requestProcessor.getParameter('org')          # required
                    data['username'] = ''
                
                                                
                email_feedback(data)
                dajax.script('jQuery.fancybox.close();')  
                dajax.script("controller.showMessage('Your feedback has been sent and will be carefully reviewed.', 'success');")                                                        
        
        return HttpResponse(dajax.json())              
    data['current_nav'] = 'home'
    return requestProcessor.render_to_response(request,'website/home.html', data, '')
Example #28
0
def site_map(request):
    data = {}
    requestProcessor = HttpRequestProcessor(request)
    return requestProcessor.render_to_response(request, 'website/site_map.html', {}, '') 
Example #29
0
def searchState(request):
    conn = MySQLdb.connect(host=settings.DATABASES['default']['HOST'],
                           user=settings.DATABASES['default']['USER'],
                           passwd=settings.DATABASES['default']['PASSWORD'],
                           db=settings.DATABASES['default']['NAME'],
                           cursorclass=MySQLdb.cursors.DictCursor)
    cursor = conn.cursor()

    error = None

    #state = request.args.get('state')
    #parent_id = request.args.get('parent_id')
    #jurisdiction_id = request.args.get('jurisdiction_id')
    state = request.GET.get('state', False)
    parent_id = request.GET.get('parent_id', False)
    jurisdiction_id = request.GET.get('jurisdiction_id', False)
    jurisdiction_type = request.GET.get('jurisdiction_type', False)
    if state:
        if jurisdiction_type:
            query = "select id,name,jurisdiction_type,parent_id,state,latitude,longitude from website_jurisdiction where `state` = '" + conn.escape_string(
                str(state)
            ) + "' AND `jurisdiction_type` = '" + conn.escape_string(
                str(jurisdiction_type)) + "'"
        else:
            query = "select id,name,jurisdiction_type,parent_id,state,latitude,longitude from website_jurisdiction where `state` = '" + conn.escape_string(
                str(state)) + "'"
        cursor.execute(query)

        output = "<result>\n"

        # we need to account for empty result sets.
        if cursor.fetchone():
            row = cursor.fetchall()
            for value in row:
                output += "\t<jurisdiction>\n"
                for key, value2 in value.items():
                    output += "\t\t<" + saxutils.escape(
                        saxutils.unescape(str(key))) + ">" + saxutils.escape(
                            saxutils.unescape(
                                str(value2))) + "</" + saxutils.escape(
                                    saxutils.unescape(str(key))) + ">\n"
                output += "\t</jurisdiction>\n"
        else:
            output += "\t<error>Jurisdictions Matching Your Criteria Were Not Found</error>"

        output += "</result>"

    elif parent_id:
        cursor.execute(
            "SELECT * FROM website_jurisdiction where `parent_id` = " +
            conn.escape_string(str(parent_id)))
        if cursor.fetchone():
            row = cursor.fetchall()
            output = "<result>\n"
            for value in row:
                output += "\t<jurisdiction>\n"
                for key, value2 in value.items():
                    output += "\t\t<" + saxutils.escape(
                        saxutils.unescape(str(key))) + ">" + saxutils.escape(
                            saxutils.unescape(
                                str(value2))) + "</" + saxutils.escape(
                                    saxutils.unescape(str(key))) + ">\n"
                output += "\t</jurisdiction>\n"
            output += "</result>"
        else:
            output = "<result>\n"
            output += "\t<error>No Jurisdictions Matching Your Criteria Were Found</error>"
            output += "</result>"

    elif jurisdiction_id:
        strippedDescriptionJurisdiction = {}
        strippedDescriptionQuestions = {}
        strippedDescriptionAnswers = {}
        strippedDescriptionComments = {}
        strippedDescriptionVotes = {}
        buildDescriptionJurisdiction = {}
        buildDescriptionAnswers = {}
        buildDescriptionQuestions = {}
        buildDescriptionComments = {}
        buildDescriptionVotes = {}
        buildAnswerID = []
        buildQuestionID = []
        buildRelationID = {}
        buildJurisdictionAnswers = {}
        jurisdictionQuestions = AutoVivification()
        oldkey = []
        newkey = []
        queryJurisdiction = "SELECT * FROM website_jurisdiction where `id` = '" + conn.escape_string(
            str(jurisdiction_id)) + "'"
        cursor.execute(queryJurisdiction)

        jurisdictionInfo = cursor.fetchone()
        if jurisdictionInfo != None:

            ##cursor.execute ("SELECT * FROM website_answerreference where `jurisdiction_id` = '" + conn.escape_string(str(jurisdiction_id)) + "'")
            #queryAnswers = "SELECT website_answerreference.id AS id, website_answerreference.question_id AS question_id, website_answerreference.value AS value, website_answerreference.file_upload AS file_upload, website_answerreference.create_datetime AS create_datetime, website_answerreference.modify_datetime AS modify_datetime, website_answerreference.jurisdiction_id AS jurisdiction_id, website_answerreference.is_current AS is_current, website_answerreference.rating AS rating, website_answerreference.is_callout AS is_callout, website_answerreference.rating_status AS rating_status, website_answerreference.approval_status AS approval_status, website_answerreference.creator_id AS creator_id, website_answerreference.migrated_answer_id AS migrated_answer_id, website_answerreference.status_datetime AS status_datetime, website_answerreference.organization_id AS organization_id FROM website_answerreference, website_question WHERE (website_question.id = website_answerreference.question_id) AND jurisdiction_id = '" + conn.escape_string(str(jurisdiction_id)) + "' AND website_question.form_type != 'CF'"
            queryAnswers = "SELECT * FROM (SELECT website_answerreference.id AS id, website_answerreference.question_id AS question_id, website_answerreference.value AS value, website_answerreference.file_upload AS file_upload, website_answerreference.create_datetime AS create_datetime, website_answerreference.modify_datetime AS modify_datetime, website_answerreference.jurisdiction_id AS jurisdiction_id, website_answerreference.is_current AS is_current, website_answerreference.rating AS rating, website_answerreference.is_callout AS is_callout, website_answerreference.rating_status AS rating_status, website_answerreference.approval_status AS approval_status, website_answerreference.creator_id AS creator_id, website_answerreference.migrated_answer_id AS migrated_answer_id, website_answerreference.status_datetime AS status_datetime, website_answerreference.organization_id AS organization_id FROM website_answerreference, website_question WHERE (website_question.id = website_answerreference.question_id) AND jurisdiction_id = '" + conn.escape_string(
                str(jurisdiction_id)
            ) + "' AND approval_status = 'A' AND website_question.form_type != 'CF' ORDER BY question_id ASC, modify_datetime DESC) as tempTable GROUP BY question_id ASC"
            cursor.execute(queryAnswers)

            jurisdictionAnswers = cursor.fetchall()
            #find the table describers
            cursor.execute("DESCRIBE website_jurisdiction")
            descriptionJurisdiction = cursor.fetchall()
            cursor.execute("DESCRIBE website_answerreference")
            descriptionAnswers = cursor.fetchall()
            cursor.execute("DESCRIBE website_comment")
            descriptionComments = cursor.fetchall()
            cursor.execute("DESCRIBE website_question")
            descriptionQuestions = cursor.fetchall()
            output = "<result>\n"
            output += "\t<jurisdiction>\n"
            c = 0
            i = len(descriptionJurisdiction)
            while c < i:
                strippedDescriptionJurisdiction[descriptionJurisdiction[c][
                    "Field"]] = descriptionJurisdiction[c]["Type"]
                c = c + 1
            c = 0
            i = len(strippedDescriptionJurisdiction)

            #            data = {}
            #            data['xml'] = jurisdictionInfo
            #            cursor.close()
            #            conn.close()
            #            requestProcessor = HttpRequestProcessor(request)
            #            return requestProcessor.render_to_response(request,'website/api.xml', data, 'application/xml')

            for key, value in strippedDescriptionJurisdiction.items():
                buildDescriptionJurisdiction[key] = "\t\t<" + str(
                    key) + " type='" + str(value) + "'>"
                c = c + 1
            for key in jurisdictionInfo.keys():
                output += str(
                    buildDescriptionJurisdiction[key]) + saxutils.escape(
                        saxutils.unescape(str(
                            jurisdictionInfo[key]))) + "</" + saxutils.escape(
                                saxutils.unescape(key)) + ">\n"
            if jurisdictionAnswers:
                for value in jurisdictionAnswers:
                    buildQuestionID.append(value.get('question_id'))
                    buildRelationID[value.get('id')] = value.get('question_id')
            else:
                pass
            #build question query
            queryQuestions = "SELECT * FROM website_question WHERE "
            count = 0
            for value in buildQuestionID:
                if count < 1:
                    queryQuestions += "`id` = '" + conn.escape_string(
                        str(value)) + "'"
                    count = 1
                else:
                    queryQuestions += " OR `id` = '" + conn.escape_string(
                        str(value)) + "'"
            if buildQuestionID:
                cursor.execute(queryQuestions)
                jurisdictionQuestions = cursor.fetchall()
            else:
                pass
            #build comment query
            queryComments = "SELECT * FROM website_comment WHERE "
            count = 0
            for value in buildRelationID:
                if count < 1:
                    queryComments += "`entity_id` = '" + conn.escape_string(
                        str(value)) + "'"
                    count = 1
                else:
                    queryComments += " OR `entity_id` = '" + conn.escape_string(
                        str(value)) + "'"
            if buildRelationID:
                cursor.execute(queryComments)
                jurisdictionComments = cursor.fetchall()
            else:

                pass
            if buildQuestionID:
                c = 0
                i = len(descriptionQuestions)
                while c < i:
                    strippedDescriptionQuestions[descriptionQuestions[c][
                        "Field"]] = descriptionQuestions[c]["Type"]
                    c = c + 1
                c = 0
                i = len(descriptionAnswers)
                while c < i:
                    strippedDescriptionAnswers[descriptionAnswers[c][
                        "Field"]] = descriptionAnswers[c]["Type"]
                    c = c + 1

                c = 0
                i = len(descriptionComments)
                while c < i:
                    strippedDescriptionComments[descriptionComments[c][
                        "Field"]] = descriptionComments[c]["Type"]
                    c = c + 1

                c = 0
                i = len(strippedDescriptionAnswers)
                for key, value in strippedDescriptionAnswers.items():
                    buildDescriptionAnswers[key] = "\t\t\t\t<" + str(
                        key) + " type='" + str(value) + "'>"
                    c = c + 1
                c = 0
                i = len(strippedDescriptionQuestions)
                for key, value in strippedDescriptionQuestions.items():
                    buildDescriptionQuestions[key] = "\t\t\t<" + str(
                        key) + " type='" + str(value) + "'>"
                    c = c + 1

                c = 0
                i = len(strippedDescriptionComments)
                for key, value in strippedDescriptionComments.items():
                    buildDescriptionComments[key] = "\t\t\t\t\t<" + str(
                        key) + " type='" + str(value) + "'>"
                    c = c + 1
                buildCount = len(buildRelationID)
                buildInc = 0

                while buildCount > buildInc:
                    output += "\t\t<question>\n"
                    try:
                        if jurisdictionQuestions:
                            for key, value in jurisdictionQuestions[
                                    buildInc].items():
                                raw = str(jurisdictionQuestions[buildInc][key])
                                phased = raw.replace("&", "&amp;")
                                output += str(
                                    buildDescriptionQuestions[key]
                                ) + saxutils.escape(saxutils.unescape(
                                    phased)) + "</" + saxutils.escape(
                                        saxutils.unescape(key)) + ">\n"
                        output += "\t\t\t<answer>\n"
                        if jurisdictionAnswers:
                            for key, value in jurisdictionAnswers[
                                    buildInc].items():
                                if key == "id":
                                    entity_id = value
                                raw = str(jurisdictionAnswers[buildInc][key])
                                phased = raw.replace("&", "&amp;")
                                output += str(
                                    buildDescriptionAnswers[key]
                                ) + saxutils.escape(saxutils.unescape(
                                    phased)) + "</" + saxutils.escape(
                                        saxutils.unescape(key)) + ">\n"

                        commentInc = 0
                        commentCount = len(jurisdictionComments)
                        while commentInc < commentCount:
                            try:
                                if jurisdictionComments[commentInc][
                                        "entity_id"] == entity_id:
                                    output += "\t\t\t\t<comments>\n"
                                    for key, value in jurisdictionComments[
                                            commentInc].items():
                                        raw = str(
                                            jurisdictionComments[commentInc]
                                            [key])
                                        phased = raw.replace("&", "&amp;")
                                        output += str(
                                            buildDescriptionComments[key]
                                        ) + saxutils.escape(
                                            saxutils.unescape(phased)
                                        ) + "</" + saxutils.escape(
                                            saxutils.unescape(key)) + ">\n"
                                    output += "\t\t\t\t</comments>\n"
                            except IndexError:
                                pass
                            commentInc = commentInc + 1
                        output += "\t\t\t</answer>\n"
                    except IndexError:
                        pass
                    output += "\t\t</question>\n"
                    buildInc = buildInc + 1
            else:
                pass

            output += "\t</jurisdiction>\n"
            output += "</result>"
            output = output.replace(
                "\t\t</question>\n\t\t<question>\n\t</jurisdiction>\n</result>",
                "\t\t</question>\n\t</jurisdiction>\n</result>")

        else:
            #jurisdiction does not exist
            output = "<result>\n"
            output += "\t<error>No Jurisdictions Matching Your Criteria Were Found</error>"
            output += "</result>"

    else:
        cursor.execute("SELECT DISTINCT(state) FROM website_zipcode")
        row = cursor.fetchall()
        output = "<result>\n"
        output += "\t<states>\n"
        for value in row:
            for key, value2 in value.items():
                output += "\t\t<" + saxutils.escape(saxutils.unescape(
                    str(key))) + ">" + saxutils.escape(
                        saxutils.unescape(
                            str(value2))) + "</" + saxutils.escape(
                                saxutils.unescape(str(key))) + ">\n"
        output += "\t</states>\n"
        output += "</result>"

    data = {}
    data['xml'] = output

    cursor.close()
    conn.close()

    requestProcessor = HttpRequestProcessor(request)
    return requestProcessor.render_to_response(request, 'website/api.xml',
                                               data, 'application/xml')
Example #30
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())