def jurisdiction_browse_improved(request): requestProcessor = HttpRequestProcessor(request) state = requestProcessor.getParameter('state') q_state = requestProcessor.getParameter('q') if state ==None or state =='': if q_state !=None and q_state !='': state = q_state if state ==None or state =='': #no state provided, go to US map return jurisdiction_browse_by_states(request) else: #go to state listing sort_by = requestProcessor.getParameter('sort_by') sort_dir = requestProcessor.getParameter('sort_dir') page_num = requestProcessor.getParameter('page') if sort_by == '' or sort_by == None: sort_by = 'name' else: if sort_by == 'name': sort_by = 'name' elif sort_by == 'last': sort_by = 'last_contributed' else: sort_by = 'last_contributed_by' return get_state_jurisdictions(request, state, sort_by, sort_dir, page_num)
def home(request): user = request.user requestProcessor = HttpRequestProcessor(request) data = {} data['accept_tou'] = '' data['home'] = 'True' dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): #default response for all ajax return HttpResponse(dajax.json()) data['login'] = '******' if user.is_authenticated(): data['login'] = '******' elif user.is_active == False: data['login_status'] = 'account_locked' message_data = get_system_message(request) #get the message List data = dict(data.items() + message_data.items()) #merge message list to data data['recently_updated_jurs'] = JurisdictionRating.recently_updated() data['popular_jurs'] = JurisdictionRating.most_popular() invitation_key = requestProcessor.getParameter('invitation_key') if invitation_key != '' and invitation_key != None: data['action_key'] = 'create_account' data['invitation_key'] = invitation_key if user.is_authenticated(): logout(request) return requestProcessor.render_to_response(request, 'website/home.html', data, '') action = requestProcessor.getParameter('action') if action != '' and action != None: data['action_key'] = action next_url = requestProcessor.getParameter('next') data['caller'] = 'sign_in_home' data['current_nav'] = 'home' if user.is_authenticated() and (next_url != None and next_url != ''): return redirect(next_url) else: return requestProcessor.render_to_response(request, 'website/home.html', data, '')
def process_request(self, request): """Enables anonymous users to receive messages the same way as authenticated users, and sets the anonymous user greeting, if it should be shown""" requestProcessor = HttpRequestProcessor(request) username = requestProcessor.getParameter('username') if username == None: username = '' password = requestProcessor.getParameter('password') if password == None: password = '' #print "username :: " + str(username) #print "password :: " + str(password) authentication = True if username != '' and password != '': users_by_username = User.objects.filter(username__exact=username) users_by_email = User.objects.filter(email__exact=username) if users_by_username: user = users_by_username[0] elif users_by_email: user = users_by_email[0] else: authentication = False if authentication: if user.password == '': user_details = UserDetail.objects.filter(user__exact=user) if user_details: user_detail = user_details[0] if user_detail.old_password != '': print "old_password :: " + str( user_detail.old_password) salt = 'W3yZmDNLeykU2GHmPS4K3Rx40T2Q7VlC7Y5P7wi5McL5YvfzGNOahshX2lta1PbP' #print "set_password :: " + password salt_password = password + ':' + salt md5_password = hashlib.md5( salt_password).hexdigest() print "md5_password :: " + str(md5_password) if md5_password == user_detail.old_password: #print "validated against md5. ok!. save the sha1 version." user.set_password(password) user.save() user_detail.old_password = '' user_detail.save() else: print "validated against md5. NOT OK! not save the sha1 version"
def search_general(request): requestProcessor = HttpRequestProcessor(request) output = '' text = requestProcessor.getParameter('text') if text == None: return HttpResponse(output) output += '<div>' #a div to enclose everything #jurisdictions output += '<ul id="cities">' jurisdictions = Jurisdiction.objects.filter(name__icontains=text).order_by('name', 'state')[:10] for jurisdiction in jurisdictions: output += '<li><a href="/jurisdiction/'+str(jurisdiction.id)+'">'+jurisdiction.show_jurisdiction()+'</a></li>' output += '</ul>' #zipcodes for testing output += '<ul id="zipcodes">' zipcodes = Zipcode.objects.filter(zip_code__contains=text).order_by('zip_code')[:10] for zipcode in zipcodes: output += '<li>'+zipcode.city+', '+zipcode.state+' '+str(zipcode.zip_code)+'</li>' output += '</ul>' output += '</div>' return HttpResponse(output)
def get_user(request): requestProcessor = HttpRequestProcessor(request) output = {} output['users'] = [] text = requestProcessor.getParameter('text') if text == None: return HttpResponse(json.dumps(output)) #only if text is at least 3 chars if len(text) > 2: users = User.objects.filter(Q(username__icontains=text) | Q(first_name__icontains=text) | Q(last_name__icontains=text)).order_by('username')[0:20] for user in users: user_item = {} user_item['id'] = user.id user_item['username'] = user.username user_item['name'] = '' if user.first_name != None: user_item['name'] += user.first_name + ' ' if user.last_name != None: user_item['name'] += user.last_name output['users'].append(user_item) return HttpResponse(json.dumps(output))
def get_user(request): requestProcessor = HttpRequestProcessor(request) output = {} output['users'] = [] text = requestProcessor.getParameter('text') if text == None: return HttpResponse(json.dumps(output)) #only if text is at least 3 chars if len(text) > 2: users = User.objects.filter( Q(username__icontains=text) | Q(first_name__icontains=text) | Q(last_name__icontains=text)).order_by('username')[0:20] for user in users: user_item = {} user_item['id'] = user.id user_item['username'] = user.username user_item['name'] = '' if user.first_name != None: user_item['name'] += user.first_name + ' ' if user.last_name != None: user_item['name'] += user.last_name output['users'].append(user_item) return HttpResponse(json.dumps(output))
def search_general(request): requestProcessor = HttpRequestProcessor(request) output = '' text = requestProcessor.getParameter('text') if text == None: return HttpResponse(output) output += '<div>' #a div to enclose everything #jurisdictions output += '<ul id="cities">' jurisdictions = Jurisdiction.objects.filter(name__icontains=text).order_by( 'name', 'state')[:10] for jurisdiction in jurisdictions: output += '<li><a href="/jurisdiction/' + str( jurisdiction.id) + '">' + jurisdiction.show_jurisdiction( ) + '</a></li>' output += '</ul>' #zipcodes for testing output += '<ul id="zipcodes">' zipcodes = Zipcode.objects.filter( zip_code__contains=text).order_by('zip_code')[:10] for zipcode in zipcodes: output += '<li>' + zipcode.city + ', ' + zipcode.state + ' ' + str( zipcode.zip_code) + '</li>' output += '</ul>' output += '</div>' return HttpResponse(output)
def process_request(self, request): """Enables anonymous users to receive messages the same way as authenticated users, and sets the anonymous user greeting, if it should be shown""" requestProcessor = HttpRequestProcessor(request) username = requestProcessor.getParameter('username') if username == None: username = '' password = requestProcessor.getParameter('password') if password == None: password = '' #print "username :: " + str(username) #print "password :: " + str(password) authentication = True if username != '' and password != '': users_by_username = User.objects.filter(username__exact=username) users_by_email = User.objects.filter(email__exact=username) if users_by_username: user = users_by_username[0] elif users_by_email: user = users_by_email[0] else: authentication = False if authentication: if user.password == '': user_details = UserDetail.objects.filter(user__exact=user) if user_details: user_detail = user_details[0] if user_detail.old_password != '': print "old_password :: " + str(user_detail.old_password) salt = 'W3yZmDNLeykU2GHmPS4K3Rx40T2Q7VlC7Y5P7wi5McL5YvfzGNOahshX2lta1PbP' #print "set_password :: " + password salt_password = password + ':' + salt md5_password = hashlib.md5(salt_password).hexdigest() print "md5_password :: " + str(md5_password) if md5_password == user_detail.old_password: #print "validated against md5. ok!. save the sha1 version." user.set_password(password) user.save() user_detail.old_password = '' user_detail.save() else: print "validated against md5. NOT OK! not save the sha1 version"
def jurisdiction_autocomplete(request): MAX_RESULT_COUNT = 7 requestProcessor = HttpRequestProcessor(request) output = '' text = requestProcessor.getParameter('q') if text == None or text == '': return HttpResponse(output) output += '<div>' #a div to enclose everything output += '<ul id="search_results">' jurisdictions = [] mathUtil = MathUtil() if mathUtil.is_number(text) == False: jurisdictions = jurisdiction_text_search(text, scrub_text_search_str(text), "", check_search_level(text) or 'all', 'name', 0, MAX_RESULT_COUNT, exclude(text), '') else: #is number, so zipcode based search zipcodes = Zipcode.objects.filter(zip_code__startswith=text)[0:1] #if zip code not found, look for next zip code up if len(zipcodes) < 1: zipcodes = Zipcode.objects.filter(zip_code__gt=text)[0:1] if len(zipcodes) > 0: zipcode = zipcodes[0] #should be only one anyway geoHelper = GeoHelper() geoHelper.targetCount = MAX_RESULT_COUNT #target number of nearby items to get geoHelper.targetMargin = 2 #+ and - this number of items from the target number to stop center = {} center['lat'] = zipcode.latitude center['lon'] = zipcode.longitude #zip code data problem - longitude needs to be inverted: center['lon'] = float(-center['lon']) jurisdictions = getNearbyJs(geoHelper, center, geoHelper.initialDistance, 1) jurisdictions = addDistanceToJs(geoHelper, center, jurisdictions) jurisdictions = sortJs(jurisdictions, '', '') jurisdictions = jurisdictions[:MAX_RESULT_COUNT] for jurisdiction in jurisdictions: output += '<li><a href="/jurisdiction/'+str(jurisdiction.name_for_url)+'/">'+jurisdiction.show_jurisdiction()+'</a></li>' output += '</ul>' output += '</div>' return HttpResponse(output)
def auto_search(request): requestProcessor = HttpRequestProcessor(request) s = requestProcessor.getParameter('s') gid = requestProcessor.getParameter('gid') if gid > 0: acg = AnswerChoiceGroup.objects.get(id = gid) acs = AnswerChoice.objects.filter(label__istartswith = s, answer_choice_group = acg) else: acs = AnswerChoice.objects.filter(label__istartswith = s) output1 = [{'label':'-----', 'value':'0'}] for ac in acs: ja = {} ja['label'] = ac.label ja['value'] = ac.value output1.append(ja) output = {'output': output1} return HttpResponse(json.dumps(output))
def test_edit(request): requestProcessor = HttpRequestProcessor(request) jurisdiction_id = 130732 dajax = Dajax() data = {} data['jurisdiction_id'] = jurisdiction_id answer_reference_class_obj = AnswerReference() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'jurisdiction_website_submit'): data['website'] = requestProcessor.getParameter('website') jurisdiction_website_div = requestProcessor.getParameter('jurisdiction_website_div') form_id = 'form_website' question_text = 'website' jurisdiction_id = requestProcessor.getParameter('jurisdiction_id') process_answer(data, question_text, jurisdiction_id, request.user) question_text = "website" body = get_website_html(form_id, question_text, jurisdiction_id, request, 'edit') dajax.assign('#'+str(jurisdiction_website_div),'innerHTML', body) return HttpResponse(dajax.json()) if (ajax == 'jurisdiction_email_submit'): data['email'] = requestProcessor.getParameter('email') jurisdiction_website_div = requestProcessor.getParameter('jurisdiction_email_div') form_id = 'form_email' question_text = 'website' jurisdiction_id = requestProcessor.getParameter('jurisdiction_id') process_answer(data, question_text, jurisdiction_id, request.user) question_text = "website" body = get_email_html(form_id, question_text, jurisdiction_id, request, 'edit') dajax.assign('#'+str(jurisdiction_website_div),'innerHTML', body) return HttpResponse(dajax.json()) return HttpResponse(dajax.json()) ############### website - start ##################### data['jurisdiction_website_div'] = 'jurisdiction_website_div' data['form_website'] = 'form_website' question_text = "website" body = get_website_html(data['form_website'], question_text, jurisdiction_id, request, 'edit') data['body_website'] = body return requestProcessor.render_to_response(request,'website/test/test_edit.html', data, '')
def home(request): user = request.user requestProcessor = HttpRequestProcessor(request) data = {} data['accept_tou'] = '' data['home'] = 'True' dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): #default response for all ajax return HttpResponse(dajax.json()) data['login'] = '******' if user.is_authenticated(): data['login'] = '******' elif user.is_active == False: data['login_status'] = 'account_locked' message_data = get_system_message(request) #get the message List data = dict(data.items() + message_data.items()) #merge message list to data invitation_key = requestProcessor.getParameter('invitation_key') if invitation_key != '' and invitation_key != None: data['action_key'] = 'create_account' data['invitation_key'] = invitation_key action = requestProcessor.getParameter('action') if action != '' and action != None: data['action_key'] = action next_url = requestProcessor.getParameter('next') data['caller'] = 'sign_in_home' data['current_nav'] = 'home' if user.is_authenticated() and (next_url != None and next_url != ''): return redirect(next_url) else: return requestProcessor.render_to_response(request,'website/home.html', data, '')
def test_ie(request): requestProcessor = HttpRequestProcessor(request) dajax = Dajax() data = {} ajax = requestProcessor.getParameter('ajax') if ajax != None: if ajax == 'action1': dajax.assign('#test_div','innerHTML', ajax) return HttpResponse(dajax.json()) return requestProcessor.render_to_response(request, 'website/test/test_ie.html', data, '')
def test_newsite(request): requestProcessor = HttpRequestProcessor(request) dajax = Dajax() data = {} ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'editmode'): formtype = requestProcessor.getParameter('formtype') name = requestProcessor.getParameter('name') value = requestProcessor.getParameter('value') div = requestProcessor.getParameter('div') help = requestProcessor.getParameter('help') data['formtype'] = formtype data['name'] = name data['help'] = help tp = get_template('website/blocks/form_field.html') c = Context(data) aa = tp.render(c) #aa = '<div class="input"><input type="text" id="id_'+name+'" name="'+name+'"></div>' #aa += '<label class="helptext">'+help+'</label>' dajax.assign('#'+div+'','innerHTML', aa) #dajax.script('alert("'+formtype+'")') return HttpResponse(dajax.json()) return render_to_response('website/test_newsite.html', data, context_instance=RequestContext(request))
def jurisdiction_browse_by_states(request): data = {} requestProcessor = HttpRequestProcessor(request) message_key = requestProcessor.getParameter('message_key') messageUtil = MessageUtil(message_key) data['system_message_type'] = messageUtil.get_system_message_type() # optional data['system_message_text'] = messageUtil.get_system_message_text() data['page_title'] = "Browse Jurisdictions" #data['state_list'] = US_STATES return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_state_browse.html', data, '')
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 top_org_contributors(request): requestProcessor = HttpRequestProcessor(request) number = requestProcessor.getParameter('number') if number == None: number = 3 jid = requestProcessor.getParameter('jid') if jid != None: jurisdiction = Jurisdiction.objects.get(id=jid) current_site = get_current_site(request) logo_src = str(current_site.name) + str(django_settings.MEDIA_URL) top_org_contributors = [] rating_category = RatingCategory.objects.get(id=1) if jid == None: top_org_contributors_qryset = OrganizationRating.objects.filter( category__exact=rating_category).order_by('-scale')[:number] else: top_org_contributors_qryset = JurisdictionContributor.objects.filter( jurisdiction__exact=jurisdiction, question_category__isnull=True, user__isnull=True).order_by('-points')[:number] if top_org_contributors_qryset: for org in top_org_contributors_qryset: top_org_contributor = {} top_org_contributor['id'] = org.organization_id org = Organization.objects.get(id=org.organization_id) top_org_contributor['name'] = org.name top_org_contributor['logo_src'] = str(logo_src) + str(org.logo) top_org_contributors.append(top_org_contributor) return HttpResponse(json.dumps(top_org_contributors))
def top_org_contributors(request): requestProcessor = HttpRequestProcessor(request) number = requestProcessor.getParameter('number') if number == None: number = 3 jid = requestProcessor.getParameter('jid') if jid != None: jurisdiction = Jurisdiction.objects.get(id=jid) current_site = get_current_site(request) logo_src = str(current_site.name) + str(django_settings.MEDIA_URL) top_org_contributors = [] rating_category = RatingCategory.objects.get(id=1) if jid == None: top_org_contributors_qryset = OrganizationRating.objects.filter(category__exact=rating_category).order_by('-scale')[:number] else: top_org_contributors_qryset = JurisdictionContributor.objects.filter(jurisdiction__exact=jurisdiction, question_category__isnull=True, user__isnull=True).order_by('-points')[:number] if top_org_contributors_qryset: for org in top_org_contributors_qryset: top_org_contributor = {} top_org_contributor['id'] = org.organization_id org = Organization.objects.get(id=org.organization_id) top_org_contributor['name'] = org.name top_org_contributor['logo_src'] = str(logo_src) + str(org.logo) top_org_contributors.append(top_org_contributor) return HttpResponse(json.dumps(top_org_contributors))
def delete_organization(request): requestProcessor = HttpRequestProcessor(request) user = request.user output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided.' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization does not exist.' return HttpResponse(json.dumps(output)) try: owner = OrganizationMember.objects.get(organization=organization, role__name='Owner', status='A') except: owner = None #is user the owner or admin? if user.is_staff != True: if owner != None: if user != owner.user: output['e'] = True output[ 'm'] = 'You do not have the access right to delete this organization.' return HttpResponse(json.dumps(output)) #does org has other members besides owner members = OrganizationMember.objects.filter( organization=organization, status='A').exclude(user=owner.user) if len(members) > 0: output['e'] = True output[ 'm'] = 'You cannot delete an organization that has other active members.' return HttpResponse(json.dumps(output)) organization.delete() output['m'] = 'Organization deleted.' return HttpResponse(json.dumps(output))
def set_member(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided' return HttpResponse(json.dumps(output)) username = requestProcessor.getParameter('username') if username == None: output['e'] = True output['m'] = 'No username provided' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization not found.' return HttpResponse(json.dumps(output)) try: user = User.objects.get(username=username) except: output['e'] = True output['m'] = 'User not found.' return HttpResponse(json.dumps(output)) organization.set_member(user) return HttpResponse(json.dumps(output))
def set_member(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided' return HttpResponse(json.dumps(output)) username = requestProcessor.getParameter('username') if username == None: output['e'] = True output['m'] = 'No username provided' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization not found.' return HttpResponse(json.dumps(output)) try: user = User.objects.get(username=username) except: output['e'] = True output['m'] = 'User not found.' return HttpResponse(json.dumps(output)) organization.set_member(user) return HttpResponse(json.dumps(output))
def delete_organization(request): requestProcessor = HttpRequestProcessor(request) user = request.user output = {} output['e'] = False output['m'] = '' org_id = requestProcessor.getParameter('org_id') if org_id == None: output['e'] = True output['m'] = 'No org_id provided.' return HttpResponse(json.dumps(output)) try: organization = Organization.objects.get(id=org_id) except: output['e'] = True output['m'] = 'Organization does not exist.' return HttpResponse(json.dumps(output)) try: owner = OrganizationMember.objects.get(organization=organization, role__name='Owner', status='A') except: owner = None #is user the owner or admin? if user.is_staff != True: if owner != None: if user != owner.user: output['e'] = True output['m'] = 'You do not have the access right to delete this organization.' return HttpResponse(json.dumps(output)) #does org has other members besides owner members = OrganizationMember.objects.filter(organization=organization, status='A').exclude(user=owner.user) if len(members) > 0: output['e'] = True output['m'] = 'You cannot delete an organization that has other active members.' return HttpResponse(json.dumps(output)) organization.delete() output['m'] = 'Organization deleted.' return HttpResponse(json.dumps(output))
def get_system_message(request): requestProcessor = HttpRequestProcessor(request) message_list = request.session.get('message_list', []) if message_list == None: message_list = [] message_key = requestProcessor.getParameter('message_key') if message_key != None: message_list.append(message_key) request.session['message_list'] = None data = {} data['system_message_type'] = '' data['system_message_text'] = '' if len(message_list) > 0: messageUtil = MessageUtil(message_list[0]) data['system_message_type'] = messageUtil.get_system_message_type( ) # optional data['system_message_text'] = messageUtil.get_system_message_text() return data
def papers(request): requestProcessor = HttpRequestProcessor(request) data = {} dajax = Dajax() user = request.user data['user'] = user ajax = requestProcessor.getParameter('ajax') if ajax == 'open_papers': body = requestProcessor.decode_jinga_template(request, 'website/whitepapers/whitepapers.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/whitepapers/whitepapers.js', data, '') dajax.script(script) #add script to open fancybox if command starts with 'open' if ajax.startswith('open'): dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json())
def get_system_message(request): requestProcessor = HttpRequestProcessor(request) message_list = request.session.get('message_list', []) if message_list == None: message_list = [] message_key = requestProcessor.getParameter('message_key') if message_key !=None: message_list.append(message_key) request.session['message_list'] = None data = {} data['system_message_type'] = '' data['system_message_text'] = '' if len(message_list) > 0: messageUtil = MessageUtil(message_list[0]) data['system_message_type'] = messageUtil.get_system_message_type() # optional data['system_message_text'] = messageUtil.get_system_message_text() return data
def get_organization(request): requestProcessor = HttpRequestProcessor(request) output = {} output['organizations'] = [] text = requestProcessor.getParameter('text') if text == None: return HttpResponse(json.dumps(output)) #only if text is at least 2 chars if len(text) > 1: orgs = Organization.objects.filter(Q(name__icontains=text)).order_by('name')[0:20] for org in orgs: org_item = {} org_item['id'] = org.id org_item['name'] = org.name output['organizations'].append(org_item) return HttpResponse(json.dumps(output))
def get_organization(request): requestProcessor = HttpRequestProcessor(request) output = {} output['organizations'] = [] text = requestProcessor.getParameter('text') if text == None: return HttpResponse(json.dumps(output)) #only if text is at least 2 chars if len(text) > 1: orgs = Organization.objects.filter( Q(name__icontains=text)).order_by('name')[0:20] for org in orgs: org_item = {} org_item['id'] = org.id org_item['name'] = org.name output['organizations'].append(org_item) return HttpResponse(json.dumps(output))
def getTutorial(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' '''sid = requestProcessor.getParameter('sid') if sid == None: output['e'] = True output['m'] = 'No sid provided' return HttpResponse(json.dumps(output)) sessionHelper = SessionHelper() sessionHelper.checkSession(sid) if sessionHelper.error == True: output['e'] = True output['m'] = sessionHelper.message return HttpResponse(json.dumps(output))''' try: #get session user's email user = request.user userEmail = user.email except: output['e'] = True output['m'] = 'Invalid user.' return HttpResponse(json.dumps(output)) action = requestProcessor.getParameter('action') if action == None: output['e'] = True output['m'] = 'No action provided' return HttpResponse(json.dumps(output)) force = requestProcessor.getParameter('force') now = datetime.now() dayStart = now.replace(hour=0, minute=0, second=0, microsecond=0) dayEnd = dayStart + timedelta(days=1) actionTutorials = ActionTutorial.objects.filter( action_identifier=action, tutorial__active=True).exclude( tutorial__start_datetime__gt=now).exclude( tutorial__end_datetime__lt=now) if len(actionTutorials) == 0: return HttpResponse(json.dumps(output)) tutorial = actionTutorials[0].tutorial #just get the 1st #has this user already seen this tutorial today? '''histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial, view_datetime__gte=dayStart, view_datetime__lt=dayEnd) if len(histories) > 0: return HttpResponse(json.dumps(output)) else: #now remember this use has seen this tutorial today history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial, view_datetime=now) history.save()''' histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial) if len(histories) > 0: history = histories[0] if force != 'true': #show only if user has not seen it today if history.view_datetime >= dayStart and history.view_datetime < dayEnd: return HttpResponse(json.dumps(output)) else: history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial) #update or save history since we are going to show it history.view_datetime = now history.save() output['d'] = {} output['d']['tid'] = tutorial.id output['d']['tips'] = [] tutorialPages = TutorialPage.objects.filter( tutorial=tutorial).order_by('display_order') pages = UserTutorialPageHistory.objects.filter(user_email=userEmail, tutorial=tutorial) checked_pages = UserTutorialPageHistory.objects.filter( user_email=userEmail, tutorial=tutorial, checked=1) all_checked = False if len(pages) == len(checked_pages): all_checked = True i = 0 for page in tutorialPages: pageObj = {} pageObj['s'] = page.selector pageObj['t'] = page.tip pageObj['id'] = page.id #get page status from user tutorial page history try: pageHistory = UserTutorialPageHistory.objects.get( user_email=userEmail, tutorial=tutorial, page=page) if pageHistory.checked == True: if all_checked == True and i == 0 and force == 'true': pageObj['c'] = False else: pageObj['c'] = True else: pageObj['c'] = False except: pageObj['c'] = False output['d']['tips'].append(pageObj) i = i + 1 return HttpResponse(json.dumps(output))
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 jurisdiction_search_improved(request): requestProcessor = HttpRequestProcessor(request) data = {'page_class': 'meta'} data['breadcrum'] = 'no' data['nav'] = 'yes' data['current_nav'] = 'browse' #handle ajax near the end since it needs the same query in most cases #but need to know if it is ajax to prevent redirect to jurisdiction page dajax = Dajax() ajax = requestProcessor.getParameter('ajax') caller = requestProcessor.getParameter('caller') if caller == '' or caller == None: caller = 'general_search' data['caller'] = caller form = None primary_search_str = requestProcessor.getParameter('q') text_primary_search_str = requestProcessor.getParameter('text') if primary_search_str == None: primary_search_str = '' if text_primary_search_str == None: text_primary_search_str = '' # replace primary_search_str with q_primary_search_str if q_primary_search_str is available if primary_search_str == '': if text_primary_search_str != '': primary_search_str = text_primary_search_str data['primary_search_str'] = primary_search_str if caller == 'state_jurisdictions': data['state_long_name'] = dict(US_STATES)[primary_search_str] secondary_search_str = requestProcessor.getParameter('text_2') if secondary_search_str == None or secondary_search_str=='Search': secondary_search_str = '' data['secondary_search_str'] = secondary_search_str search_level = check_search_level(primary_search_str) primary_exclude = exclude(primary_search_str) filter = requestProcessor.getParameter('filter') if filter == None: if search_level != '': filter = search_level else: filter = 'all' data['filter'] = filter sort_by = requestProcessor.getParameter('sort_by') if sort_by == None: sort_by = '' data['sort_by'] = sort_by sort_dir = requestProcessor.getParameter('sort_dir') #order_by_str = pagingation_obj.get_order_by_str(sort_by, sort_dir) if sort_dir == '' or sort_dir == None: sort_dir = 'asc' data['sort_dir'] = sort_dir sort_desc_img = django_settings.SORT_DESC_IMG sort_asc_img = django_settings.SORT_ASC_IMG page = requestProcessor.getParameter('page') if page != None and page != '': page_number = int(page) else: page_number = 1 range_start = (page_number - 1) * JURISDICTION_PAGE_SIZE range_end = page_number * JURISDICTION_PAGE_SIZE data['next_page_param'] = 'page='+str(page_number + 1) data['message'] = '' mathUtil = MathUtil() if mathUtil.is_number(primary_search_str) == False: if sort_by == '' or sort_by == None: sort_by = 'name' else: if sort_by == 'name': sort_by = 'name' elif sort_by == 'last': sort_by = 'last_contributed' else: sort_by = 'last_contributed_by' data['sort_by'] = sort_by if sort_dir == 'asc': order_by_str = sort_by data['image_src'] = sort_asc_img data['sort_dir_txt'] = 'ascending' data['sort_dir'] = 'asc' else: order_by_str = '-'+sort_by data['image_src'] = sort_desc_img data['sort_dir_txt'] = 'descending' data['sort_dir'] = 'desc' data['search_by'] = 'search_by_name'; scrubbed_primary_search_str = scrub_text_search_str(primary_search_str) sec_exclude = exclude(secondary_search_str) if primary_search_str.__len__() >= 2: objects_all_types = jurisdiction_text_search(primary_search_str, scrubbed_primary_search_str, secondary_search_str,filter, order_by_str, range_start, range_end, primary_exclude, sec_exclude) redirect_url = '/jurisdiction/' if len(objects_all_types) == 1 and ajax == None: #don't redirect if ajax redirect_url = redirect_url + str(objects_all_types[0].get_name_for_url()) + '/' return redirect(redirect_url) else: data['list'] = objects_all_types else: data['message'] = 'This search field requires at least 2 alphabetic (a-z) characters.'; else: if sort_by == '' or sort_by == None or sort_by == 'distance': sort_by = 'distance' else: if sort_by == 'name': sort_by = 'name' elif sort_by == 'last': sort_by = 'last_contributed' else: sort_by = 'last_contributed_by' data['sort_by'] = sort_by if sort_dir == 'asc': data['image_src'] = sort_asc_img data['sort_dir_txt'] = 'ascending' data['sort_dir'] = 'asc' else: data['image_src'] = sort_desc_img data['sort_dir_txt'] = 'descending' data['sort_dir'] = 'desc' data['search_by'] = 'search_by_zip' if page_number != 1: #for zip search, currently doesn't have endless scroll next page, return blank data['list'] = [] return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '') nearbyJs = {} #geo based approach zipcodes = Zipcode.objects.filter(zip_code=primary_search_str) #TODO: if zip code not found, look for next zip code up if len(zipcodes) < 1: zipcodes = Zipcode.objects.filter(zip_code__gt=primary_search_str)[0:1] if len(zipcodes) > 0: zipcode = zipcodes[0] #should be only one anyway geoHelper = GeoHelper() center = {} center['lat'] = zipcode.latitude center['lon'] = zipcode.longitude #zip code data problem - longitude needs to be inverted: center['lon'] = float(-center['lon']) nearbyJs = getNearbyJs(geoHelper, center, geoHelper.initialDistance, 1) nearbyJs = addDistanceToJs(geoHelper, center, nearbyJs) nearbyJs = sortJs(nearbyJs, sort_by, sort_dir) data['list'] = nearbyJs request.session['primary_search_str'] = primary_search_str data['user'] = request.user message_data = get_system_message(request) #get the message List data = dict(data.items() + message_data.items()) #merge message list to data if (ajax != None): #handle ajax calls if ajax == 'filter': body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_list.html', data, '') dajax.assign('#jurisdiction_list','innerHTML', body) if page_number == 1: #initialize jscroll if page 1 script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/jurisdiction_list.js', data, '') dajax.script(script) return HttpResponse(dajax.json()) return HttpResponse(dajax.json()) if page_number != 1: #for endless scroll next page, only render the list return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '') else: return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_search_results.html', data, '')
def get_state_jurisdictions(request, state='', sort_by='', sort_dir='', page_num=''): data = {} data['get_state_jurisdiction'] = True requestProcessor = HttpRequestProcessor(request) search_str = requestProcessor.getParameter('text_2') if search_str == None or search_str == 'Search': search_str = '' filter = requestProcessor.getParameter('filter') if filter == None: filter = 'all' only_jurisditions_with_data = requestProcessor.getParameter('only_jurisditions_with_data') if only_jurisditions_with_data != None: data['only_jurisditions_with_data'] = int(only_jurisditions_with_data) else: ajax = requestProcessor.getParameter('ajax') if ajax == 'filter': data['only_jurisditions_with_data'] = 0 else: if 'only_jurisditions_with_data' in request.session: data['only_jurisditions_with_data'] = request.session['only_jurisditions_with_data'] else: data['only_jurisditions_with_data'] = 1 request.session['only_jurisditions_with_data'] = data['only_jurisditions_with_data'] if sort_by == '' or sort_by == None: sort_by = 'name' elif sort_by == 'last': sort_by = 'last_contributed' if sort_dir == '' or sort_dir == None: sort_dir = 'asc' if sort_dir == 'asc': order_by_str = sort_by else: order_by_str = '-'+sort_by data['sort_by'] = sort_by data['sort_dir'] = sort_dir data['secondary_search_str'] = search_str data['filter'] = filter user = request.user if user.is_authenticated(): data['nav'] = 'yes' data['breadcrum'] = 'no' else: data['nav'] = 'no' data['breadcrum'] = 'yes' #return HttpResponseRedirect("/sign_in/?next=/jurisdiction_browse/"+state+"/name/asc/1_1/") sort_desc_img = django_settings.SORT_DESC_IMG sort_asc_img = django_settings.SORT_ASC_IMG sort_class = django_settings.SORT_CLASS sort_columns = {} sort_columns['name'] = 'asc' sort_columns['county'] = 'asc' sort_columns['last_contributed'] = 'asc' sort_columns['last_contributed_by'] = 'asc' data['current_nav'] = 'browse' href = '/jurisdiction/browse/?state=' + state search_params = {} #data['page_title'] = "Browse Jurisdiction: " + state if state == '': state = 'CA' data['state'] = state data['state_long_name'] = dict(US_STATES)[state] #type = 'S' #data['state_list'] = Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__iexact=type) if filter == 'county': type = ['CO', 'CONP', 'SC' ] elif filter == 'city': type = ['CI', 'CINP', 'SCFO', 'U'] elif filter == 'state': type = ['S'] else: type = '' page = requestProcessor.getParameter('page') if page != None and page != '': page_number = int(page) else: page_number = 1 range_start = (page_number - 1) * JURISDICTION_PAGE_SIZE range_end = page_number * JURISDICTION_PAGE_SIZE data['next_page_param'] = 'page='+str(page_number + 1) objects = Jurisdiction.objects.none() if search_str == '': if filter == 'all' or filter == '' or filter == None: if data['only_jurisditions_with_data'] == 1: objects |= Jurisdiction.objects.filter(last_contributed__isnull = False, state__iexact=state) objects |= Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False) else: objects |= Jurisdiction.objects.filter(last_contributed__isnull = True, state__iexact=state) elif filter == 'county' or filter == 'city' or filter == 'state': if data['only_jurisditions_with_data'] == 1: objects |= Jurisdiction.objects.filter(last_contributed__isnull = False, state__iexact=state, jurisdiction_type__in=type) objects |= Jurisdiction.objects.filter(state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False) else: objects |= Jurisdiction.objects.filter(last_contributed__isnull = True, state__iexact=state, jurisdiction_type__in=type) else: if filter == 'all' or filter == '' or filter == None: if data['only_jurisditions_with_data'] == 1: objects |= Jurisdiction.objects.filter(name__icontains=search_str, last_contributed__isnull = False, state__iexact=state) objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False) else: objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, last_contributed__isnull = True) elif filter == 'county' or filter == 'city' or filter == 'state': if data['only_jurisditions_with_data'] == 1: objects |= Jurisdiction.objects.filter(name__icontains=search_str, last_contributed__isnull = False, state__iexact=state, jurisdiction_type__in=type) objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=('U', 'SCFO'), parent__last_contributed__isnull=False) else: objects |= Jurisdiction.objects.filter(name__icontains=search_str, state__iexact=state, jurisdiction_type__in=type, last_contributed__isnull = True) if sort_by == '' or sort_by == None: objects = objects.order_by('name', 'county') else: objects = objects.order_by(order_by_str) data['count'] = len(objects) data['list'] = objects[range_start:range_end] #data['system_message_type'] = 'success' #data['system_message_text'] = 'A lot of data found for your consumption' data['action'] = "/jurisdiction/browse/?state="+state data['home'] = '/' data['user'] = request.user message_data = get_system_message(request) #get the message List data = dict(data.items() + message_data.items()) #merge message list to data dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): #handle ajax calls if ajax == 'filter': body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_list.html', data, '') dajax.assign('#jurisdiction_list','innerHTML', body) if page_number == 1: #initialize jscroll if page 1 script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/jurisdiction_list.js', data, '') dajax.script(script) if int(data['only_jurisditions_with_data']) == 1: message = 'Jurisdictions without data are hidden. Uncheck to show.' else: message = 'Jurisdictions without data are visible. Check to hide.' dajax.assign('#only_jurisdictions_with_data_message','innerHTML', message) return HttpResponse(dajax.json()) return HttpResponse(dajax.json()) #data['user'] = request.user if page_number != 1: #for endless scroll next page, only render the list return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_list.html', data, '') else: return requestProcessor.render_to_response(request,'website/jurisdictions/jurisdiction_by_state.html', data, '')
def jurisdiction_comment(request): requestProcessor = HttpRequestProcessor(request) user = request.user data = {} dajax = Dajax() ajax = requestProcessor.getParameter('ajax') comments_changed = requestProcessor.getParameter('comments_changed') if comments_changed == 'yes': data['comments_changed'] = 'yes' else: data['comments_changed'] = 'no' if (ajax != None): if ajax == 'open_jurisdiction_comment': entity_id = requestProcessor.getParameter('entity_id') entity_name = requestProcessor.getParameter('entity_name') jid = requestProcessor.getParameter('jurisdiction_id') try: jurisdiction = Jurisdiction.objects.get(id = jid) except: jurisdiction = None comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, parent_comment__isnull = True).order_by('-create_datetime') userviews = UserCommentView.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, user = user) temp_comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).order_by('-create_datetime') last_comment = None if len(temp_comments) > 0 : last_comment = temp_comments[0] has_userview = False if len(userviews) > 0: userview = userviews[0] if userview.last_comment != None: data['userview_last_comment'] = userview.last_comment.id data['userview'] = userviews[0] userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count() userview.last_comment = last_comment userview.view_datetime = datetime.datetime.now() userview.save() has_userview = True if has_userview == False: userview = None data['userview'] = userview data['userview_last_comment'] = 0 userview = UserCommentView() userview.user = user userview.jurisdiction = jurisdiction userview.entity_name = entity_name userview.entity_id = entity_id userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count() userview.last_comment = last_comment userview.view_datetime = datetime.datetime.now() userview.save() af = AnswerReference.objects.get(id = entity_id) aa = ValidationUtil() data['answer'] = af data['answer_text'] = aa.get_formatted_value(af.value, af.question) data['jurisdiction'] = jurisdiction label = af.question.question if len(af.question.question) > 75: label = af.question.question[:78]+ '...' data['label'] = label data['commnets'] = comments others_afs = AnswerReference.objects.filter(jurisdiction = jurisdiction, question = af.question, approval_status='A').exclude(id = entity_id).order_by('-create_datetime') if len(others_afs) > 0 : old_answer = others_afs[0] if old_answer.id < af.id: data['old_answer'] = old_answer data['old_answer_text'] = aa.get_formatted_value(old_answer.value, old_answer.question) else: data['old_answer'] = None data['old_answer_text'] = '' else: data['old_answer'] = None data['old_answer_text'] = '' body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.js', data, '') dajax.script(script) #script = requestProcessor.decode_jinga_template(request,'website/blocks/comments_list.js', data, '') #dajax.script(script) dajax.script('controller.showModalDialog("#fancyboxformDiv");') if ajax =='create_jurisdiction_comment': answer_id = requestProcessor.getParameter('answer_id') jid = requestProcessor.getParameter('jurisdiction_id') comment_type = 'JC' data['answer_id'] = answer_id data['jurisdiction_id'] = jid data['comment_type'] = comment_type data['parent_comment'] = '' body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/create_comment.html', data, '') script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/create_comment.js', data, '') dajax.assign('#secondDialogDiv','innerHTML', body) dajax.script(script) dajax.script('controller.showSecondDialog("#secondDialogDiv");') if ajax =='comment_create_submit': entity_id = requestProcessor.getParameter('entity_id') entity_name = requestProcessor.getParameter('entity_name') jurisdiction_id = requestProcessor.getParameter('jurisdiction_id') comment_type = requestProcessor.getParameter('comment_type') comment_text = requestProcessor.getParameter('comment') parent_comment = requestProcessor.getParameter('parent_comment') try: jurisdiction = Jurisdiction.objects.get(id = jurisdiction_id) except: jurisdiction = None comment = Comment() comment.jurisdiction = jurisdiction comment.entity_name = entity_name comment.entity_id = entity_id comment.user = user comment.comment_type = comment_type comment.comment = comment_text if parent_comment != '': parent = Comment.objects.get(id = parent_comment) comment.parent_comment = parent comment.save() userviews = UserCommentView.objects.filter(user = user, jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id) userview = userviews[0] userview.last_comment = comment userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count() userview.view_datetime = datetime.datetime.now() userview.save() dajax.script('controller.closeSecondDialog();') dajax.script('controller.postRequest("/jurisdiction_comment/", {ajax: "open_jurisdiction_comment", jurisdiction_id:'+str(jurisdiction_id)+', entity_id: "'+str(entity_id)+'", entity_name: "'+str(entity_name)+'", comments_changed: "yes"});') data = {} data['action'] = 'refresh_ahj_qa' answer = AnswerReference.objects.get(id=entity_id) validation_util_obj = ValidationUtil() body = validation_util_obj.get_question_answers_display_data(request, answer.jurisdiction, answer.question, data) dajax.assign('#div_'+str(answer.question_id),'innerHTML', body) if ajax =='reply_comment': cid = requestProcessor.getParameter('cid') comment = Comment.objects.get(id = cid) data['comment'] = comment body = requestProcessor.decode_jinga_template(request,'website/blocks/reply_comment_form.html', data, '') script = requestProcessor.decode_jinga_template(request,'website/blocks/reply_comment_form.js', data, '') dajax.assign('#button-div-'+str(cid),'innerHTML', body) dajax.script(script) if ajax == 'cancel_reply': cid = requestProcessor.getParameter('cid') body = '<a class="smallbutton" href="#" onClick="controller.postRequest(\'/jurisdiction_comment/\', {ajax: \'reply_comment\', cid: '+str(cid)+'});return false;">Reply</a><a class="smallbutton" href="#">Flag</a>' dajax.assign('#button-div-'+str(cid),'innerHTML', body) if ajax == 'flag_comment': cid = requestProcessor.getParameter('cid') comment = Comment.objects.get(id = cid) comment.approval_status = 'F' comment.save() af = AnswerReference.objects.get(id = comment.entity_id) to_mail = [django_settings.ADMIN_EMAIL_ADDRESS] data['comment'] = comment data['user'] = user data['question'] = af.question.question data['site_url'] = django_settings.SITE_URL data['requestProcessor'] = requestProcessor data['request'] = request send_email(data, to_mail) dajax.assign('#comment_'+str(cid), 'innerHTML', '<p>This comment had been flagged as inappropriate and is hidden pending review.</p>') if ajax == 'show_old_comments': entity_id = requestProcessor.getParameter('answer_id') entity_name = 'AnswerReference' jid = requestProcessor.getParameter('jurisdiction_id') try: jurisdiction = Jurisdiction.objects.get(id = jid) except: jurisdiction = None comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, parent_comment__isnull = True).order_by('-create_datetime') userviews = UserCommentView.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id, user = user) temp_comments = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).order_by('-create_datetime') last_comment = None if len(temp_comments) > 0 : last_comment = temp_comments[0] if len(userviews) > 0: userview = userviews[0] data['userview'] = userview userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count() userview.last_comment = last_comment userview.view_datetime = datetime.datetime.now() userview.save() else: userview = None data['userview'] = userview userview = UserCommentView() userview.user = user userview.jurisdiction = jurisdiction userview.entity_name = entity_name userview.entity_id = entity_id userview.comments_count = Comment.objects.filter(jurisdiction = jurisdiction, entity_name = entity_name, entity_id = entity_id).count() userview.last_comment = last_comment userview.view_datetime = datetime.datetime.now() userview.save() data['commnets'] = comments body = requestProcessor.decode_jinga_template(request,'website/blocks/comments_list.html', data, '') dajax.assign('#old_list ul', 'innerHTML', body) dajax.assign('#show_commnet_div', 'innerHTML', '<a id="id_a_hide" href="#"><img src="/media/images/arrow_down.png" style="vertical-align:bottom;" alt="Hide old comments" >Hide old comments </a>') script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/jurisdiction_comment.js', data, '') dajax.script(script) return HttpResponse(dajax.json()) return
def custom_field(request): data = {} requestProcessor = HttpRequestProcessor(request) dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'create_custom_field'): data['form_id'] = 'create_custom_field' data['field_title'] = requestProcessor.getParameter('field_title') data['field_value'] = requestProcessor.getParameter('field_value') data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') data['category_id'] = requestProcessor.getParameter('category_id') data['current_category'] = requestProcessor.getParameter('current_category') data['current_questions'] = requestProcessor.getParameter('current_questions') if data['field_title'] == None: data['field_title'] = '' if data['field_value'] == None: data['field_value'] = '' data['jurisdiction'] = Jurisdiction.objects.get(id=data['jurisdiction_id']) body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '') dajax.script(script) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'create_custom_field_submit'): data = {} data['form_id'] = 'create_custom_field' data['field_title'] = requestProcessor.getParameter('field_title') data['field_value'] = requestProcessor.getParameter('field_value') data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') data['category_id'] = requestProcessor.getParameter('category_id') current_category = requestProcessor.getParameter('current_category') current_questions = requestProcessor.getParameter('current_questions') error_message = {} error_message = validate_create_custom_field_form_data(data, data['form_id']) if len(error_message) == 0: msg_key = data['form_id']+ '_fail_reason' try: jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id']) # look up template CF for this jurisdiction templates = Template.objects.filter(jurisdiction=jurisdiction, template_type__iexact='CF') if len(templates) > 0: template = templates[0] else: template = Template() template.template_type = 'CF' template.name = 'Jurisdiction Custom Field Template' template.jurisdiction_id = data['jurisdiction_id'] #template.create_datetime = datetime.datetime.now() template.save() # create the question category_obj = QuestionCategory.objects.get(id=data['category_id']) ''' questions = Question.objects.filter(category=category_obj, accepted=1).order_by('-display_order') last_question = questions[0] if last_question.display_order == None or last_question.display_order == '': display_order = 0 else: display_order = last_question.display_order ''' highest_display_order_obj = Question.objects.filter(category=category_obj, accepted=1).aggregate(Max('display_order')) #print highest_display_order_obj if highest_display_order_obj == None: highest_display_order = 0 else: highest_display_order = highest_display_order_obj['display_order__max'] question_obj = Question(); question_obj.category_id = data['category_id'] question_obj.question = data['field_title'] question_obj.label = data['field_title'] question_obj.form_type = 'CF' question_obj.qtemplate_id = template.id question_obj.accepted = 1 question_obj.display_order = int(highest_display_order) + 5 #question_obj.create_datetime = datetime.datetime.now() question_obj.creator_id = request.user.id question_obj.save() template_question = TemplateQuestion() template_question.template_id = template.id template_question.question_id = question_obj.id #template_question.create_datetime = datetime.datetime.now() template_question.save() # save the answer data_answer = {} data_answer['value'] = data['field_value'] answer = json.dumps(data_answer) # to convert to json is_callout=0 answer_reference_class_obj = AnswerReference() #action_category_objs = ActionCategory.objects.filter(name__iexact='AddRequirement') #action_category_obj = action_category_objs[0] validation_util_obj = FieldValidationCycleUtil() arcf = validation_util_obj.save_answer(question_obj, answer, jurisdiction, 'AddRequirement', request.user, is_callout) except Exception, e: data[msg_key] = e.message print e.message #else: if len(error_message) > 0: for msg_key in error_message.keys(): data[msg_key] = error_message.get(msg_key) body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_fields.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_fields.js', data, '') dajax.script(script) else: data_cf = {} jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id']) data_cf['jurisdiction'] = jurisdiction ''' question_category_obj = QuestionCategory.objects.get(id=data['category_id']) data['question_categories'] = QuestionCategory.objects.filter(id=data['category_id']) question_class_obj = Question() custom_questions = question_class_obj.get_custom_fields_by_jurisdiction_by_category(jurisdiction, data['category_id']) print custom_questions validation_util_obj = FieldValidationCycleUtil() data['action'] = 'refresh_ahj_qa' if custom_questions != None and len(custom_questions) > 0: for question in custom_questions: data['question_content'][question_category_obj.id][question.id] = validation_util_obj.get_AHJ_question_data(request, jurisdiction, question, data) ''' ''' validation_util_obj = FieldValidationCycleUtil() data_cf['this_question'] = question_obj question_content = validation_util_obj.get_AHJ_question_data(request, jurisdiction, question_obj, data_cf) for key in question_content.keys(): data_cf[key] = question_content.get(key) body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content_authenticated.html', data_cf, '') dajax.assign('#div_custom_question_content_'+str(category_obj.id),'innerHTML', body) script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content.js', data, '') dajax.script(script) ''' template_obj = Template() jurisdiction_templates = template_obj.get_jurisdiction_question_templates(jurisdiction) data_cf['action'] = '/jurisdiction_id/'+str(jurisdiction.id)+'/'+current_category+'/' current_questions = current_questions.split(',') data_cf['custom_questions'] = Question.objects.filter(category=category_obj, accepted=1, qtemplate__in=jurisdiction_templates).exclude(id__in=(current_questions)) body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_question_content_ajax_call.html', data_cf, '') dajax.assign('#div_custom_question_content_'+str(category_obj.id),'innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/jurisdictions/AHJ_question_content_ajax_call.js', data_cf, '') dajax.script(script) ###################################################### #data['custom_questions'] = custom_questions #data['custom_questions'] = {} #data['custom_questions'][question_category_obj.id] = custom_questions #body = requestProcessor.decode_jinga_template(request,'website/blocks/custom_fields.html', data, '') #dajax.assign('#custom_fields_'+str(question_category_obj.id),'innerHTML', body) dajax.script('jQuery.fancybox.close();') dajax.script("controller.showMessage('Custom field created.', 'success')") dajax.script('controller.updateUrlAnchor("#create_custom_field");') if current_category == 'all_info': question_categories = QuestionCategory.objects.filter(accepted=1) data['category'] = 'All categories' else: question_categories = QuestionCategory.objects.filter(name__iexact=category_obj.name) data['category'] = category_obj.name #data['category'] = question_obj.category.name data['jurisdiction'] = jurisdiction validation_util_obj = FieldValidationCycleUtil() data['top_contributors'] = validation_util_obj.get_top_contributors(jurisdiction, question_categories) body = requestProcessor.decode_jinga_template(request,'website/blocks/top_contributors.html', data, '') dajax.assign('#top_contributors','innerHTML', body) return HttpResponse(dajax.json())
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 custom_field(request): data = {} requestProcessor = HttpRequestProcessor(request) dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'create_custom_field'): data['form_id'] = 'create_custom_field' data['field_title'] = requestProcessor.getParameter('field_title') data['field_value'] = requestProcessor.getParameter('field_value') data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') data['category_id'] = requestProcessor.getParameter('category_id') data['current_category'] = requestProcessor.getParameter('current_category') if data['field_title'] == None: data['field_title'] = '' if data['field_value'] == None: data['field_value'] = '' data['jurisdiction'] = Jurisdiction.objects.get(id=data['jurisdiction_id']) body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '') dajax.script(script) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'create_custom_field_submit'): data = {} data['form_id'] = 'create_custom_field' data['field_title'] = requestProcessor.getParameter('field_title') data['field_value'] = requestProcessor.getParameter('field_value') data['jurisdiction_id'] = requestProcessor.getParameter('jurisdiction_id') data['category_id'] = requestProcessor.getParameter('category_id') current_category = requestProcessor.getParameter('current_category') current_questions = requestProcessor.getParameter('current_questions') error_message = {} error_message = validate_create_custom_field_form_data(data, data['form_id']) if len(error_message) == 0: msg_key = data['form_id']+ '_fail_reason' try: jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id']) # look up template CF for this jurisdiction templates = Template.objects.filter(jurisdiction=jurisdiction, template_type__iexact='CF', accepted = 1) if len(templates) > 0: template = templates[0] else: template = Template() template.template_type = 'CF' template.name = 'Jurisdiction Custom Field Template' template.jurisdiction_id = data['jurisdiction_id'] #template.create_datetime = datetime.datetime.now() template.accepted = 1 template.save() # create the question category_obj = QuestionCategory.objects.get(id=data['category_id']) ''' questions = Question.objects.filter(category=category_obj, accepted=1).order_by('-display_order') last_question = questions[0] if last_question.display_order == None or last_question.display_order == '': display_order = 0 else: display_order = last_question.display_order ''' highest_display_order_obj = Question.objects.filter(category=category_obj, accepted=1).aggregate(Max('display_order')) if highest_display_order_obj == None: highest_display_order = 0 else: highest_display_order = highest_display_order_obj['display_order__max'] question_obj = Question(); question_obj.category_id = data['category_id'] question_obj.question = data['field_title'] question_obj.label = data['field_title'] question_obj.form_type = 'CF' question_obj.qtemplate_id = template.id question_obj.accepted = 1 question_obj.display_order = int(highest_display_order) + 5 #question_obj.create_datetime = datetime.datetime.now() question_obj.creator_id = request.user.id question_obj.save() template_question = TemplateQuestion() template_question.template_id = template.id template_question.question_id = question_obj.id #template_question.create_datetime = datetime.datetime.now() template_question.save() # save the answer data_answer = {} data_answer['value'] = data['field_value'] answer = json.dumps(data_answer) # to convert to json is_callout=0 answer_reference_class_obj = AnswerReference() #action_category_objs = ActionCategory.objects.filter(name__iexact='AddRequirement') #action_category_obj = action_category_objs[0] validation_util_obj = FieldValidationCycleUtil() arcf = validation_util_obj.save_answer(question_obj, answer, jurisdiction, 'AddRequirement', request.user, is_callout) except Exception, e: data[msg_key] = e.message #else: if len(error_message) > 0: for msg_key in error_message.keys(): data[msg_key] = error_message.get(msg_key) body = requestProcessor.decode_jinga_template(request,'website/blocks/create_custom_field.html', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) script = requestProcessor.decode_jinga_template(request, 'website/blocks/create_custom_field.js', data, '') dajax.script(script) else: data_cf = {} jurisdiction = Jurisdiction.objects.get(id=data['jurisdiction_id']) data_cf['jurisdiction'] = jurisdiction template_obj = Template() jurisdiction_templates = template_obj.get_jurisdiction_question_templates(jurisdiction) data_cf['action'] = '/jurisdiction_id/'+str(jurisdiction.id)+'/'+current_category+'/' data_cf = get_question_data(request, jurisdiction, question_obj, data) body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_cqa_qa.html', data_cf, '') script = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_cqa_qa.js' , data, '') dajax.script(script) dajax.assign('#div_custom_question_content_'+str(data['category_id']),'innerHTML', body) ###################################################### #data['custom_questions'] = custom_questions #data['custom_questions'] = {} #data['custom_questions'][question_category_obj.id] = custom_questions #body = requestProcessor.decode_jinga_template(request,'website/blocks/custom_fields.html', data, '') #dajax.assign('#custom_fields_'+str(question_category_obj.id),'innerHTML', body) dajax.script('jQuery.fancybox.close();') dajax.script("controller.showMessage('Custom field created.', 'success')") dajax.script('controller.updateUrlAnchor("#create_custom_field");') data = {} if current_category == 'all_info': question_categories = QuestionCategory.objects.filter(accepted=1) data['category'] = 'All categories' else: question_categories = QuestionCategory.objects.filter(name__iexact=category_obj.name) data['category'] = category_obj.name #data['category'] = question_obj.category.name data['jurisdiction'] = jurisdiction data['top_contributors'] = get_ahj_top_contributors(jurisdiction, current_category) body = requestProcessor.decode_jinga_template(request,'website/jurisdictions/AHJ_top_contributors.html', data, '') dajax.assign('#top-contributor','innerHTML', body) return HttpResponse(dajax.json())
def get_info(request): data = {} requestProcessor = HttpRequestProcessor(request) dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'privacy_policy'): body = requestProcessor.decode_jinga_template(request,'website/info/privacy_policy_modal.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'terms_of_use'): body = requestProcessor.decode_jinga_template(request,'website/blocks/text_terms_of_use.html', data, '') dajax.assign('#main_content','innerHTML', body) #dajax.assign('#fancyboxformDiv','innerHTML', body) #dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'doe_grant'): body = requestProcessor.decode_jinga_template(request,'website/blocks/text_doe_grant.html', data, '') #dajax.assign('#main_content','innerHTML', body) dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') return HttpResponse(dajax.json()) if (ajax == 'send_feedback'): data = {} data['form_id'] = 'form_send_feedback' data['feedback'] = requestProcessor.getParameter('feedback') if data['feedback'] == None: data['feedback'] = '' body = requestProcessor.decode_jinga_template(request,'website/info/feedback.html', data, '') script = requestProcessor.decode_jinga_template(request, 'website/info/feedback.js', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') dajax.script(script) return HttpResponse(dajax.json()) else: data['email'] = settings.FEEDBACK_EMAIL data['user'] = request.user data['feedback'] = data['feedback'].lstrip('') if request.user.is_authenticated(): orgmembers = OrganizationMember.objects.filter(user = data['user'], status = 'A') user_orgs = '' if len(orgmembers) > 0: for orgmember in orgmembers: user_orgs += "," + orgmember.organization.name user_orgs.lstrip(',') data['user_orgs'] = user_orgs; user_details = UserDetail.objects.filter(user=data['user']) data['user_detail'] = user_details[0] data['first_name'] = data['user'].first_name data['last_name'] = data['user'].last_name data['username'] = data['user'].username data['title'] = data['user_detail'].title data['user_email'] = data['user'].email else: data['first_name'] = requestProcessor.getParameter('first_name') # required data['last_name'] = requestProcessor.getParameter('last_name') # required data['user_email'] = requestProcessor.getParameter('email') # required data['title'] = requestProcessor.getParameter('title') data['user_orgs'] = requestProcessor.getParameter('org') # required data['username'] = '' email_feedback(data) dajax.script('jQuery.fancybox.close();') dajax.script("controller.showMessage('Your feedback has been sent and will be carefully reviewed.', 'success');") return HttpResponse(dajax.json()) data['current_nav'] = 'home' return requestProcessor.render_to_response(request,'website/home.html', data, '')
def pageStatus(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' '''sid = requestProcessor.getParameter('sid') if sid == None: output['e'] = True output['m'] = 'No sid provided' return HttpResponse(json.dumps(output)) sessionHelper = SessionHelper() sessionHelper.checkSession(sid) if sessionHelper.error == True: output['e'] = True output['m'] = sessionHelper.message return HttpResponse(json.dumps(output))''' try: #get session user's email user = request.user userEmail = user.email except: output['e'] = True output['m'] = 'Invalid user.' return HttpResponse(json.dumps(output)) tutorialId = requestProcessor.getParameter('tid') if tutorialId == None: output['e'] = True output['m'] = 'No tid provided' return HttpResponse(json.dumps(output)) pageId = requestProcessor.getParameter('pid') if pageId == None: output['e'] = True output['m'] = 'No pid provided' return HttpResponse(json.dumps(output)) checked = requestProcessor.getParameter('c') if checked == None: output['e'] = True output['m'] = 'No c provided' return HttpResponse(json.dumps(output)) try: tutorial = Tutorial.objects.get(id=tutorialId) except: output['e'] = True output['m'] = 'Tutorial does not exist.' return HttpResponse(json.dumps(output)) try: tutorialPage = TutorialPage.objects.get(id=pageId) except: output['e'] = True output['m'] = 'Tutorial page does not exist.' return HttpResponse(json.dumps(output)) #add or update user tutorial page history try: pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail, tutorial=tutorial, page=tutorialPage) except: pageHistory = UserTutorialPageHistory(user_email=userEmail, tutorial=tutorial, page=tutorialPage) if checked == '1': pageHistory.checked = True else: pageHistory.checked = False pageHistory.save() return HttpResponse(json.dumps(output))
def reset_password(request, reset_password_key=''): data = {} error_message = {} requestProcessor = HttpRequestProcessor(request) dajax = Dajax() ajax = requestProcessor.getParameter('ajax') if (ajax != None): if (ajax == 'launch_reset_password'): data = {} form_name = 'form_reset_password' reset_password_key = requestProcessor.getParameter('reset_password_key') data['reset_password_key'] = reset_password_key user_details = UserDetail.objects.filter(reset_password_key__exact=reset_password_key) if user_details: body = requestProcessor.decode_jinga_template(request,'website/accounts/reset_password.html', data, '') script = requestProcessor.decode_jinga_template(request, 'website/accounts/reset_password.js', data, '') else: data[form_name+'_fail_reason'] = 'The reset password key is no longer valid' data['site_url'] = settings.SITE_URL body = requestProcessor.decode_jinga_template(request,'website/accounts/expired_reset_password_key.html', data, '') script = requestProcessor.decode_jinga_template(request, 'website/accounts/expired_reset_password_key.js', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script('controller.showModalDialog("#fancyboxformDiv");') dajax.script(script) return HttpResponse(dajax.json()) if (ajax == 'reset_password_submit'): data = {} form_name = 'form_reset_password' reset_password_key = requestProcessor.getParameter('reset_password_key') data['password'] = requestProcessor.getParameter('password') data['verify_password'] = requestProcessor.getParameter('verify_password') data['reset_password_key'] = reset_password_key error_message = validate_reset_password_form_data(data, form_name) if len(error_message) == 0: user_details = UserDetail.objects.filter(reset_password_key__exact=reset_password_key) if user_details: user_detail = user_details[0] user = User.objects.get(id=user_detail.user_id) if user: user.set_password(data['password']) user.is_active = 1 user.save() user_detail.reset_password_key = '' user_detail.save() user = authenticate(username=user.username, password=data['password']) if user is not None: if user.is_active: login(request, user) dajax.script('jQuery.fancybox.close();') add_system_message(request, 'success_reset_password') dajax.script("window.location.href='"+settings.SITE_URL+"';") return HttpResponse(dajax.json()) else: error_message[form_name+'_fail_reason'] = 'Disabled account' else: error_message[form_name+'_fail_reason'] = 'Invalid login' else: error_message[form_name+'_fail_reason'] = 'The reset password key is no longer valid' else: error_message[form_name+'_fail_reason'] = 'The reset password key is no longer valid' if len(error_message) > 0: for msg_key in error_message.keys(): data[msg_key] = error_message.get(msg_key) body = requestProcessor.decode_jinga_template(request,'website/accounts/reset_password.html', data, '') script = requestProcessor.decode_jinga_template(request, 'website/accounts/reset_password.js', data, '') dajax.assign('#fancyboxformDiv','innerHTML', body) dajax.script(script) return HttpResponse(dajax.json()) #default response for all ajax return HttpResponse(dajax.json()) data['reset_password_key'] = reset_password_key data['action_key'] = 'reset_password' return requestProcessor.render_to_response(request,'website/home.html', data, '')
def pageStatus(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' '''sid = requestProcessor.getParameter('sid') if sid == None: output['e'] = True output['m'] = 'No sid provided' return HttpResponse(json.dumps(output)) sessionHelper = SessionHelper() sessionHelper.checkSession(sid) if sessionHelper.error == True: output['e'] = True output['m'] = sessionHelper.message return HttpResponse(json.dumps(output))''' try: #get session user's email user = request.user userEmail = user.email except: output['e'] = True output['m'] = 'Invalid user.' return HttpResponse(json.dumps(output)) tutorialId = requestProcessor.getParameter('tid') if tutorialId == None: output['e'] = True output['m'] = 'No tid provided' return HttpResponse(json.dumps(output)) pageId = requestProcessor.getParameter('pid') if pageId == None: output['e'] = True output['m'] = 'No pid provided' return HttpResponse(json.dumps(output)) checked = requestProcessor.getParameter('c') if checked == None: output['e'] = True output['m'] = 'No c provided' return HttpResponse(json.dumps(output)) try: tutorial = Tutorial.objects.get(id=tutorialId) except: output['e'] = True output['m'] = 'Tutorial does not exist.' return HttpResponse(json.dumps(output)) try: tutorialPage = TutorialPage.objects.get(id=pageId) except: output['e'] = True output['m'] = 'Tutorial page does not exist.' return HttpResponse(json.dumps(output)) #add or update user tutorial page history try: pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail, tutorial=tutorial, page=tutorialPage) except: pageHistory = UserTutorialPageHistory(user_email=userEmail, tutorial=tutorial, page=tutorialPage) if checked == '1': pageHistory.checked = True else: pageHistory.checked = False pageHistory.save() return HttpResponse(json.dumps(output))
def getTutorial(request): requestProcessor = HttpRequestProcessor(request) output = {} output['e'] = False output['m'] = '' '''sid = requestProcessor.getParameter('sid') if sid == None: output['e'] = True output['m'] = 'No sid provided' return HttpResponse(json.dumps(output)) sessionHelper = SessionHelper() sessionHelper.checkSession(sid) if sessionHelper.error == True: output['e'] = True output['m'] = sessionHelper.message return HttpResponse(json.dumps(output))''' try: #get session user's email user = request.user userEmail = user.email except: output['e'] = True output['m'] = 'Invalid user.' return HttpResponse(json.dumps(output)) action = requestProcessor.getParameter('action') if action == None: output['e'] = True output['m'] = 'No action provided' return HttpResponse(json.dumps(output)) force = requestProcessor.getParameter('force') now = datetime.now() dayStart = now.replace(hour=0, minute=0, second=0, microsecond=0) dayEnd = dayStart + timedelta(days=1) actionTutorials = ActionTutorial.objects.filter(action_identifier=action, tutorial__active=True).exclude(tutorial__start_datetime__gt=now).exclude(tutorial__end_datetime__lt=now) if len(actionTutorials) == 0: return HttpResponse(json.dumps(output)) tutorial = actionTutorials[0].tutorial #just get the 1st #has this user already seen this tutorial today? '''histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial, view_datetime__gte=dayStart, view_datetime__lt=dayEnd) if len(histories) > 0: return HttpResponse(json.dumps(output)) else: #now remember this use has seen this tutorial today history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial, view_datetime=now) history.save()''' histories = UserTutorialHistory.objects.filter(user_email=userEmail, tutorial=tutorial) if len(histories) > 0: history = histories[0] if force != 'true': #show only if user has not seen it today if history.view_datetime >= dayStart and history.view_datetime < dayEnd: return HttpResponse(json.dumps(output)) else: history = UserTutorialHistory(user_email=userEmail, tutorial=tutorial) #update or save history since we are going to show it history.view_datetime = now history.save() output['d'] = {} output['d']['tid'] = tutorial.id output['d']['tips'] = [] tutorialPages = TutorialPage.objects.filter(tutorial=tutorial).order_by('display_order') pages = UserTutorialPageHistory.objects.filter(user_email=userEmail, tutorial=tutorial) checked_pages = UserTutorialPageHistory.objects.filter(user_email=userEmail, tutorial=tutorial, checked = 1) all_checked = False if len(pages) == len(checked_pages): all_checked = True i = 0 for page in tutorialPages: pageObj = {} pageObj['s'] = page.selector pageObj['t'] = page.tip pageObj['id'] = page.id #get page status from user tutorial page history try: pageHistory = UserTutorialPageHistory.objects.get(user_email=userEmail, tutorial=tutorial, page=page) if pageHistory.checked == True: if all_checked == True and i == 0 and force == 'true': pageObj['c'] = False else: pageObj['c'] = True else: pageObj['c'] = False except: pageObj['c'] = False output['d']['tips'].append(pageObj) i = i + 1 return HttpResponse(json.dumps(output))