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, '')
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, '')
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"
def delete_organization(request): requestProcessor = HttpRequestProcessor(request) user = request.user output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided.' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization does not exist.' return HttpResponse(json.dumps(output)) try: owner = OrganizationMember.objects.get(organization=organization, role__name='Owner', status='A') except: owner = None #is user the owner or admin? if user.is_staff != True: if owner != None: if user != owner.user: output['e'] = True output[ 'm'] = 'You do not have the access right to delete this organization.' return HttpResponse(json.dumps(output)) #does org has other members besides owner members = OrganizationMember.objects.filter( organization=organization, status='A').exclude(user=owner.user) if len(members) > 0: output['e'] = True output[ 'm'] = 'You cannot delete an organization that has other active members.' return HttpResponse(json.dumps(output)) organization.delete() output['m'] = 'Organization deleted.' return HttpResponse(json.dumps(output))
def 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))
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>'
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))
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
def get_organization(request): requestProcessor = HttpRequestProcessor(request) output = {} output['organizations'] = [] text = requestProcessor.getParameter('text') if text == None: return HttpResponse(json.dumps(output)) #only if text is at least 2 chars if len(text) > 1: orgs = Organization.objects.filter( Q(name__icontains=text)).order_by('name')[0:20] for org in orgs: org_item = {} org_item['id'] = org.id org_item['name'] = org.name output['organizations'].append(org_item) return HttpResponse(json.dumps(output))
def 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 top_org_contributors(request): requestProcessor = HttpRequestProcessor(request) number = requestProcessor.getParameter('number') if number == None: number = 3 jid = requestProcessor.getParameter('jid') if jid != None: jurisdiction = Jurisdiction.objects.get(id=jid) current_site = get_current_site(request) logo_src = str(current_site.name) + str(django_settings.MEDIA_URL) top_org_contributors = [] rating_category = RatingCategory.objects.get(id=1) if jid == None: top_org_contributors_qryset = OrganizationRating.objects.filter( category__exact=rating_category).order_by('-scale')[:number] else: top_org_contributors_qryset = JurisdictionContributor.objects.filter( jurisdiction__exact=jurisdiction, question_category__isnull=True, user__isnull=True).order_by('-points')[:number] if top_org_contributors_qryset: for org in top_org_contributors_qryset: top_org_contributor = {} top_org_contributor['id'] = org.organization_id org = Organization.objects.get(id=org.organization_id) top_org_contributor['name'] = org.name top_org_contributor['logo_src'] = str(logo_src) + str(org.logo) top_org_contributors.append(top_org_contributor) return HttpResponse(json.dumps(top_org_contributors))
def set_member(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided' return HttpResponse(json.dumps(output)) username = requestProcessor.getParameter('username') if username == None: output['e'] = True output['m'] = 'No username provided' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization not found.' return HttpResponse(json.dumps(output)) try: user = User.objects.get(username=username) except: output['e'] = True output['m'] = 'User not found.' return HttpResponse(json.dumps(output)) organization.set_member(user) return HttpResponse(json.dumps(output))
def 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 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 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())