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 information_accuracy_disclaimer(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response( request, 'website/info/information_accuracy_disclaimer.html', data, '')
def task_list(request): requestProcessor = HttpRequestProcessor(request) user = request.user data = {} return requestProcessor.render_to_response( request, 'website/siteadmin/task_list.html', data, '')
def state_jurisdictions(request, abbreviation): data = { 'groups': [], 'state_name': dict(US_STATES)[abbreviation] } requestProcessor = HttpRequestProcessor(request) jurisdiction_type_groups = [{ 'name': 'State', 'ids': ['S'], 'label': 'State Locations' }, { 'name': 'County', 'ids': ['CO', 'SC', 'CONP', 'CC'], 'label': 'County Locations' }, { 'name': 'County Field Offices', 'ids': ['SCFO'], 'label': 'County Field Offices' }, { 'name': 'Cities', 'ids': ['CI', 'CINP', 'IC'], 'label': 'City Locations'}, { 'name': 'Unincorporated', 'ids': ['U'], 'label': 'Unincorporated Locations' }] any_exist = False for group in jurisdiction_type_groups: jurisdictions = Jurisdiction.objects.filter(state = abbreviation, jurisdiction_type__in = group['ids']).order_by('name') if len(jurisdictions) > 0: any_exist = True items_per_column = int(math.ceil(float(len(jurisdictions)) / settings.PAGE_COLUMNS)) group['columns'] = [jurisdictions[i:i+items_per_column] for i in xrange(0, len(jurisdictions), items_per_column)] data['groups'].append(group) data['any_exist'] = any_exist return requestProcessor.render_to_response(request, 'website/site_map_state.html', data, '')
def list_states(request): data = {} 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() cursor.execute( "SELECT DISTINCT(state) FROM website_jurisdiction ORDER BY state ASC") rows = cursor.fetchall() output = "<result>\n" output += "\t<states>\n" for value in rows: 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>" #finish up data['xml'] = mark_safe(output) if 'conn' in locals() and conn.open: cursor.close() conn.close() requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request, 'website/api.xml', data, 'application/xml')
def privacy_policy(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response( request, 'website/info/privacy_policy.html', data, '')
def page_404(request): data = {} requestProcessor = HttpRequestProcessor(request) #return HttpResponseNotFound('<h1>Page not found</h1>') print 8898999999999999999999999999 return requestProcessor.render_to_response(request,'website/info/404.html', data, '')
def terms_of_use(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response( request, 'website/info/terms_of_use.html', data, '')
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, '')
def grant_info(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request, 'website/info/grant_info.html', data, '')
def test_org(request): requestProcessor = HttpRequestProcessor(request) data = {} organizations = Organization.objects.all().order_by('name')[:10] data['organizations'] = organizations return requestProcessor.render_to_response(request, 'website/test/test_organization.html', data, '')
def test_cron_validate_answers(request): requestProcessor = HttpRequestProcessor(request) user = request.user field_validation_cycle_util = FieldValidationCycleUtil() field_validation_cycle_util.cron_validate_answers() data = {} return requestProcessor.render_to_response(request,'website/test/test_cron_validate_answers.html', data, '')
def site_map(request): data = {} requestProcessor = HttpRequestProcessor(request) template_util = TemplateUtil() data['list_exist'] = template_util.generated_template_exist('site_map_list.html') return requestProcessor.render_to_response(request,'website/site_map.html', data, '')
def page_404(request): data = {} requestProcessor = HttpRequestProcessor(request) #return HttpResponseNotFound('<h1>Page not found</h1>') print 8898999999999999999999999999 return requestProcessor.render_to_response(request, 'website/info/404.html', data, '')
def getting_started_page(request): data = {} data['current_nav'] = '' 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/getting_started_page.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 site_map(request): data = {} requestProcessor = HttpRequestProcessor(request) template_util = TemplateUtil() data['list_exist'] = template_util.generated_template_exist( 'site_map_list.html') return requestProcessor.render_to_response(request, 'website/site_map.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 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 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 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, '')
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 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 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 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 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 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, '')
def information_accuracy_disclaimer(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/information_accuracy_disclaimer.html', data, '')
def grant_info(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/grant_info.html', data, '')
def privacy_policy(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/privacy_policy.html', data, '')
def upload(request): data = {} data['current_nav'] = 'upload' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/upload.html', data, '')
def task_list(request): requestProcessor = HttpRequestProcessor(request) user = request.user data = {} return requestProcessor.render_to_response(request,'website/siteadmin/task_list.html', data, '')
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 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("&", "&") 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("&", "&") 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("&", "&") 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')
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: # print queryComments 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: # print "in the try" if jurisdictionQuestions: for key, value in jurisdictionQuestions[buildInc].items(): raw = str(jurisdictionQuestions[buildInc][key]) phased = raw.replace("&", "&") 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("&", "&") output += ( str(buildDescriptionAnswers[key]) + saxutils.escape(saxutils.unescape(phased)) + "</" + saxutils.escape(saxutils.unescape(key)) + ">\n" ) # print "done with try" commentInc = 0 commentCount = len(jurisdictionComments) # print commentCount # print "second nasty loop" while commentInc < commentCount: try: # print "in the 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("&", "&") output += ( str(buildDescriptionComments[key]) + saxutils.escape(saxutils.unescape(phased)) + "</" + saxutils.escape(saxutils.unescape(key)) + ">\n" ) output += "\t\t\t\t</comments>\n" # print "finished the try" except IndexError: pass commentInc = commentInc + 1 output += "\t\t\t</answer>\n" except IndexError: print "passed on " + str(buildInc) pass output += "\t\t</question>\n" buildInc = buildInc + 1 else: # print "nothing here" 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")
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 site_map(request): data = {} requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request, 'website/site_map.html', {}, '')
def maintenace_mode(request): data = {} requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'maintenance.html', data, '')
def terms_of_use(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/terms_of_use.html', data, '')
def test_search(request): requestProcessor = HttpRequestProcessor(request) data = {} return requestProcessor.render_to_response(request, 'website/test/test_search.html', data, '')
def submit_suggestion(request): validation_util_obj = FieldValidationCycleUtil() from website.models.questionAnswer import Question from website.models import Jurisdiction data = {} errors = [] # convert POST to a string for parsing xml post_string = request.raw_post_data # strip extra whitespace while post_string != re.sub("\s<", "<", post_string): post_string = re.sub("\s<", "<", post_string) while post_string != re.sub("\s>", ">", post_string): post_string = re.sub("\s>", ">", post_string) while post_string != re.sub(">\s", ">", post_string): post_string = re.sub(">\s", ">", post_string) while post_string != re.sub("<\s", "<", post_string): post_string = re.sub("<\s", "<", post_string) try: xmlDoc = minidom.parseString(post_string) except Exception: errors.append("Could not Parse XML") del post_string if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += "\t<error>" + this_error + "</error>\n" output += '</errors>' else: # define directives directives = dict() directive_names = [ 'api_username', 'api_key', 'question_id', 'jurisdiction_id', 'answer_value', ] try: temp = xmlDoc.getElementsByTagName('request')[0] except Exception: errors.append( "Could not find 'request' node - please see documentation at https://github.com/solarpermit/solarpermit/wiki" ) else: temp = None for node in xmlDoc.getElementsByTagName('request')[0].childNodes: if node.nodeType == 1: #element type if node.localName in directive_names and node.firstChild is not None: directives[ node.localName] = node.firstChild.data.strip() else: if node.firstChild is None: errors.append( node.localName + ' is empty. Please declare a value for ' + node.localName + '.') else: errors.append(' is an unknown directive') # error testing if int(len(directives)) != 5: errors.append( 'Incorrect number of Directive values - either something is empty, or something is missing (' + str(len(directives)) + ' != 5).') if 'api_username' not in directives: errors.append('Your api_username must be provided in the request.') if 'api_key' not in directives: errors.append('Your api_key must be provided in the request.') if 'question_id' not in directives: errors.append('You must declare a question_id.') if 'question_id' in directives and ( not is_numeric(directives['question_id']) or int(directives['question_id']) < 1): errors.append( 'QuestinID must be a positive integer greater than zero.') if 'jurisdiction_id' not in directives: errors.append('You must declare a jurisdiction_id') if 'jurisdiction_id' in directives and ( not is_numeric(directives['jurisdiction_id']) or int(directives['jurisdiction_id']) < 1): errors.append( 'jurisdiction_id must be a positive integer greater than zero.' ) if 'answer_value' not in directives: errors.append( 'You can not suggest an answer without the data for that answer declared as an answer_value.' ) # user validation pre-work try: # get the user id of this user thisUserId = int( User.objects.get(username=directives['api_username']).pk) # get the api key for this user apiKeys = API_Keys.objects.filter(user_id=thisUserId) for row in apiKeys: thisApiKey = row.key except Exception: errors.append('Failed to look up your username.') if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += '\t<error>' + this_error + '</error>\n' output += '</errors>' else: # validate user if directives['api_key'] != thisApiKey: output = '<errors>\n\t<error>User validation failure - check api_key for accuracy</error>\n</errors>' else: ## validate jurisdiction_id try: jurisdiction = Jurisdiction.objects.get( id=directives['jurisdiction_id']) except Exception: errors.append( 'The jurisdiction_id you have declared does not exist, or is invalid.' ) if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += '\t<error>' + this_error + '</error>\n' output += '</errors>' else: ### validate question_id try: question = Question.objects.get( id=directives['question_id']) except Exception: errors.append( 'The question_id you have declared does not exist, or is invalid.' ) if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += '\t<error>' + this_error + '</error>\n' output += '</errors>' else: #### validate answer format can be parsed as json if question.default_value is None or len( question.default_value) < 1: default_format = json.loads('{"value":""}') else: default_format = json.loads(question.default_value) try: this_format = json.loads( directives['answer_value']) except Exception: errors.append('Cannot parse answer_value as JSON') if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += '\t<error>' + this_error + '</error>\n' output += '</errors>' else: output = '' #### validate answer format has matching keys if not ((all(key in this_format for key in default_format)) and (all(key in default_format for key in this_format))): if int(directives['question_id']) != 16: errors.append( 'answer_value (JSON) does not match format of default_value for this question.' ) else: # for pricing formula # check to make sure each key is a direct, or regex match to an incremented key name. suspect_keys = [] valid_keys = [ 'percentage_of_total_system_cost_cap_amt', 'percentage_of_total_system_cost', 'flat_rate_amt', ] for key in this_format: # strip trailing underscores and digits new_item = re.sub( '[_]\d*[_]\d*$', '', key) if new_item not in suspect_keys: suspect_keys.append(new_item) for key in default_format: # strip trailing underscores and digits new_item = re.sub( '[_]\d*[_]\d*$', '', key) if new_item not in valid_keys: valid_keys.append(new_item) if not ((all(item in suspect_keys for item in valid_keys)) and (all(item in valid_keys for item in suspect_keys))): error_string = 'answer_value (JSON) has unrecognized keys for this question.' error_string += ' ... invalid keys (does not include incremented portion key names): ' for item in suspect_keys: if item not in valid_keys: error_string += ' ' + item + ', ' error_string += ' ... missingkeys (does not include incremented portion of key names): ' for item in valid_keys: if item not in suspect_keys: error_string += item + ', ' errors.append(error_string) if len(errors) > 0: output = '<errors>\n' for this_error in errors: output += '\t<error>' + this_error + '</error>\n' output += '</errors>' else: user = User.objects.get(id=thisUserId) is_callout = 0 try: arcf = validation_util_obj.save_answer( question, directives['answer_value'], jurisdiction, 'AddRequirement', user, is_callout) output = '<Result>' + str( arcf) + '</Result>' except Exception as inst: output = '<errors>\n\t<error>Failed to save answer suggestion.</error><detail>\n' output += str( type(inst)) # the exception instance output += str(inst.args) output += '</detail></errors>' ''' question_id = 93 question = Question.objects.get(id=question_id) answer = '{"value":"Written Via API x?"}' jurisdiction_id = 1 jurisdiction = Jurisdiction.objects.get(id=jurisdiction_id) user_id = 3 user = User.objects.get(id=user_id) is_callout = 0 answer_id = None #arcf = validation_util_obj.save_answer(question, answer, jurisdiction, 'AddRequirement', user, is_callout, answer_id) arcf = 'foo' output = '<testing>\n\n' output += str(arcf) output += '\n\n</testing>' ''' #finish up data['xml'] = mark_safe(output) requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request, 'website/api.xml', data, 'application/xml')
def maintenace_mode(request): data = {} requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request, 'maintenance.html', data, '')
def get_info(request): data = {} requestProcessor = HttpRequestProcessor(request) dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'getting_started'): body = requestProcessor.decode_jinga_template(request,'website/info/getting_started.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'about'): body = requestProcessor.decode_jinga_template(request,'website/blocks/about.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'privacy_policy'): body = requestProcessor.decode_jinga_template(request,'website/info/privacy_policy_modal.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'terms_of_use'): body = requestProcessor.decode_jinga_template(request,'website/blocks/text_terms_of_use.html', data, '') dajax.assign('#main_content','innerHTML', body) #dajax.assign('#fancyboxformDiv','innerHTML', body) #dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'disclaimer'): body = requestProcessor.decode_jinga_template(request,'website/info/disclaimer_modal.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'doe_grant'): body = requestProcessor.decode_jinga_template(request,'website/blocks/text_doe_grant.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'send_feedback'): data = {} data['form_id'] = 'form_send_feedback' data['feedback'] = requestProcessor.getParameter('feedback') if data['feedback'] == None: data['feedback'] = '' body = requestProcessor.decode_jinga_template(request,'website/info/feedback.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) else: data['email'] = settings.FEEDBACK_EMAIL data['user'] = request.user data['feedback'] = data['feedback'].lstrip('') orgmembers = OrganizationMember.objects.filter(user = data['user'], status = 'A') user_orgs = '' if len(orgmembers) > 0: for orgmember in orgmembers: user_orgs += "," + orgmember.organization.name user_orgs.lstrip(',') data['user_orgs'] = user_orgs; user_details = UserDetail.objects.filter(user=data['user']) data['user_detail'] = user_details[0] email_feedback(data) dajax.script('jQuery.fancybox.close();') dajax.script("controller.showMessage('Your feedback has been sent and will be carefully reviewed.', 'success');") return HttpResponse(dajax.json()) data['current_nav'] = 'home' return requestProcessor.render_to_response(request,'website/home.html', data, '')
def contributions(request): data = {} data['current_nav'] = 'home' requestProcessor = HttpRequestProcessor(request) return requestProcessor.render_to_response(request,'website/info/contribution.html', data, '')