def get(self): locales = { 'title': 'Developer Documentation', 'description': 'Documentation on how to build your own provider', 'user': users.get_current_user(), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('developer/about.html') self.response.out.write(template.render(locales))
def get(self): locales = { 'title': 'List of Providers', 'description': 'Get the API', 'user': users.get_current_user(), 'section': 'listing', 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('developer/providers.html') self.response.out.write(template.render(locales))
def get(self): locales = { 'title': 'Details on Searches', 'description': 'Get Details on searches that occured for your Provider', 'user': users.get_current_user(), 'section': 'details', 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('developer/details.html') self.response.out.write(template.render(locales))
def get(self): locales = { 'title': 'Searching with our API', 'description': 'Learn how to use our API to include searching in your Application', 'user': users.get_current_user(), 'section': 'search', 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('developer/search.html') self.response.out.write(template.render(locales))
def get(self): # Create the locales locales = { 'title': 'About', 'description': 'Who we are and what we do to search all the registered providers', 'user': users.get_current_user(), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Parse and send template template = jinja_environment.get_template('about.html') self.response.out.write(template.render(locales))
def get(self): # Locales locales = { 'title': 'Privacy Policy', 'description': 'How we handle data from our users and partners', 'user': users.get_current_user(), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Parse and output template template = jinja_environment.get_template('privacy_statement.html') self.response.out.write(template.render(locales))
def get(self): # Locales locales = { 'title': 'Terms of Service', 'description': 'On what basis is this service provided. Please read this carefully.', 'user': users.get_current_user(), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Render and send the template template = jinja_environment.get_template('terms_of_service.html') self.response.out.write(template.render(locales))
def get(self): # Get the current logged-in user user = users.get_current_user() locales = { 'title': 'Registering a Provider', 'description': 'Browse all our Registered Providers. These providers have been approved by us and they had to pass numerous requirements to be considered valid.', 'user': user, 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('provider/checks.html') self.response.out.write(template.render(locales))
def get(self): # Get the Session session = dal.return_and_global_session_update(self) # Locales locales = { 'title': 'Welcome', 'description': 'Search Microchips', 'user': users.get_current_user(), 'homepage': True, 'session': session, 'is_current_user_admin': users.is_current_user_admin() } # Render the template template = jinja_environment.get_template('homepage.html') self.response.out.write(template.render(locales))
def get(self): # Get the user user = users.get_current_user() # Check if the user is logged-in if user: # Lists from DAL providers = dal.providers_by_user(user) clients = dal.get_clients_by_user(user) searches = dal.get_user_searches(user, 5, 2) # Locales of the Template locales = { 'title': user.nickname(), 'description': 'Search Microchips', 'user': user, 'providers': providers, 'provider_count': len(providers), 'clients': clients, 'client_count': clients.count(), 'searches': searches, 'search_count': len(searches), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Create our template template = jinja_environment.get_template('user/profile.html') # Render Template self.response.out.write(template.render(locales)) else: # Redirect to login self.redirect('/signin')
def get(self, uid, result_number=0): if uid: # Get the search object and responses (search_obj, search_responses) = dal.search_by_token(uid) # Check if the search exists and if any responses are associated with it. if search_obj and search_responses and search_obj.expires > datetime.datetime.now(): # Get the current logged-in user user = users.get_current_user() # Update the expiring date. We allow anyone to view the search x minutes after it's been searched search_obj.expires = datetime.datetime.now() + datetime.timedelta( minutes=runner.EXPIRES_AFTER ) search_obj.put() # Filter the Results to what we need success_results = [] failure_results = [] for response in search_responses: if response.status == runner.ProviderResponse.STATUS_FOUND: success_results.append(response) elif response.status not in [runner.ProviderResponse.STATUS_FOUND, runner.ProviderResponse.STATUS_NOTFOUND]: failure_results.append(response) # Get the current provider, chip and owner to show if len(success_results) > 0: # What response should we look at ? current_index = 0 if self.request.get('provider'): # Only executed if the user provided a provider to check for. # This is used when multiple provider gave a response. # So we can list all the responses for the user. try: # Assign custom index from request requested_provider_uid = int(self.request.get('provider')) # Get the index of a the provider with that id current_index = [int(y.provider.key().id()) for y in success_results].index(requested_provider_uid) except Exception as ex: # Just use the default value current_index = 0 # Check that the index is sane else we make it the first one if current_index > (len(success_results)): current_index = 0 # Single Response Object single_response = success_results[current_index] # Get the provider provider = success_results[current_index].provider # Get the Chip Details chip = json.loads(success_results[current_index].parsed_response) # Section of the Result Page to show. section = 'info' # Set section according to request if self.request.get('section'): # Parse the string as a section requested_section_str = str(self.request.get('section').strip().lower()) # Is this a valid Section if requested_section_str in ['info', 'result', 'contact']: # Then we assign it section = requested_section_str # ######## # Handle Posts if any # ######## # success_message_flags contact_form_success = False # Errors contact_form_error = False # Handle Contact Form if self.request.POST.get('form_contact'): # Set section as they will want to see their response section = 'contact' # Handle the contact form contact_name = self.request.POST.get('form_contact_name') contact_email = self.request.POST.get('form_contact_email') contact_message = self.request.POST.get('form_contact_message') # Validate contact_form_error = None if single_response.email_sent == True: # We can't send multiple E-Mails to the same user on the same search contact_form_error = 'An E-Mail has already been sent to the user. We do not allow multiple E-Mails to prevent spamming. Please give the user some time to response to your E-Mail after which you\'ll be able to communicate directly.' elif not contact_name or len(str(contact_name).strip()) == 0: # Name is Required contact_form_error = 'Your name is Required' elif not contact_email or len(str(contact_email).strip()) == 0 or not re.match(r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", contact_email): # An Valid E-Mail is Required contact_form_error = 'A Valid E-Mail by which the user can reach you again.' elif not contact_message or len(str(contact_message).strip()) == 0: # Message is required contact_form_error = 'We need a message which we will send to the user. This should include basic details such as where you found the pet and your location' else: # Generate Template to send template_locales = { 'title': 'Search for #' + str(search_obj.uid), 'description': 'Contact message by User who searched for #' + str(search_obj.uid), 'chip': chip, 'subject': 'Contact message by User who searched for #' + str(search_obj.uid), 'sender_name': str(contact_name).strip(), 'sender_email': str(contact_email).strip(), 'message': str(contact_message).strip(), 'provider': provider } # The Form parameters were validated mailer.send( to=str(chip['owner']['email']), reply_to=str(template_locales['sender_email']), subject=str(template_locales['subject']), view='mail/contact_from_search.html', locales=template_locales) # Update to show that the E-Mail was sent single_response.email_sent = True single_response.email_sent_from = str(contact_email).strip() single_response.email_sent_name = str(contact_name).strip() single_response.email_sent_text = str(contact_message).strip() single_response.put() section = 'info' contact_form_success = 'true' # Create the Locales for the Page to use locales = { 'title': 'Search for #' + str(search_obj.uid), 'description': 'The results of the search for the Unique Number #' + str(search_obj.uid), 'chip': chip, 'current_response': single_response, 'search': search_obj, 'provider': provider, 'success_results': search_obj.provider_success_responses, 'failure_results': search_obj.provider_failure_responses, 'notfound_results': search_obj.provider_notfound_responses, 'total_providers_asked': search_obj.provider_total_requests, 'search_obj': search_obj, 'search_responses': search_responses, 'search_success_responses': success_results, 'search_failure_responses': failure_results, 'user': user, 'contact_form_error': contact_form_error, 'contact_form_success': contact_form_success, 'section': section, 'post_params': self.request.POST, 'contact_post_url': '/view/' + search_obj.token + "?provider=" + str(provider.key().id()) + "&response=" + str(single_response.key().id()), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Render the Template with those Values template = jinja_environment.get_template('search/result.html') self.response.out.write(template.render(locales)) else: session_store = sessions.get_store(request=self.request) session = session_store.get_session() if 'search_token' not in session: session['search_token'] = str(uuid.uuid1()) session_store.save_sessions(self.response) # Well if their was not result we redirect to homepage # Create the Locales for the Page to use locales = { 'title': 'No Results found for #' + str(search_obj.uid), 'description': 'The results of the search for the Unique Number #' + str(search_obj.uid), 'success_results': search_obj.provider_success_responses, 'failure_results': search_obj.provider_failure_responses, 'notfound_results': search_obj.provider_notfound_responses, 'total_providers_asked': search_obj.provider_total_requests, 'search_obj': search_obj, 'search': search_obj, 'search_responses': search_responses, 'search_success_responses': success_results, 'search_failure_responses': failure_results, 'user': user, 'session': session, 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # self.response.out.write("<li>" + detail.provider.name + " <-> <img src=\"" + images.get_serving_url(detail.provider.logo.key(), 32) + "\" /></li>") # Render the Template with those Values template = jinja_environment.get_template('search/notfound.html') self.response.out.write(template.render(locales)) else: # That search does not exist. Redirect them to the homepage. self.redirect('/') else: # They did not give a search uid redirect them to the homepage self.redirect('/')
def get(self): session = dal.return_and_global_session_update(self) year = int(time.strftime("%Y")) if self.request.get('year'): try: year = int(self.request.get('year')) except: pass search_count = memcache.get("search_count_" + str(year)) if search_count is None: search_count = db.GqlQuery("SELECT * FROM UserSearch WHERE created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31)", year, year).count() if not memcache.add("search_count_" + str(year), search_count, 60*10): pass success_search_count = memcache.get("success_search_count_" + str(year)) if success_search_count is None: success_search_count = db.GqlQuery("SELECT * FROM UserSearch WHERE success_status = True AND created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31)", year, year).count() if not memcache.add("success_search_count_" + str(year), success_search_count, 60*10): pass search_contact_count = memcache.get("search_contact_count_" + str(year)) if search_contact_count is None: search_contact_count = db.GqlQuery("SELECT * FROM UserSearchDetail WHERE email_sent = True AND created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31)", year, year).count() if not memcache.add("search_contact_count_" + str(year), search_contact_count, 60*10): pass stats = memcache.get("stat_page_" + str(year)) if stats is None: stats = [] responses = dal.get_stats({ 'year': int(year) }) stat = { 'year': int(year), 'countries': dal.parse_out_countries(responses), 'cities': dal.parse_out_cities(responses) } stats.insert(0, stat) if not memcache.add("stat_page_" + str(year), stats, 60*10): pass locales = { 'title': 'Statistics', 'description': 'Some Statistics about Searches that were performed on our website and where they came from.', 'user': users.get_current_user(), 'stats': stats, 'years': xrange(2012, int(time.strftime("%Y"))+1), 'current_year': year, 'search_count': search_count, 'search_contact_count': search_contact_count, 'success_search_count': success_search_count, 'session': session, 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('stats.html') self.response.out.write(template.render(locales))
def get(self): user = users.get_current_user() if user: if 'USER_ORGANIZATION' in os.environ: user.organization = os.environ['USER_ORGANIZATION'] session_store = sessions.get_store(request=self.request) session = session_store.get_session() # Error to show if any register_form_error = False # Check if this is a form post if self.request.POST.get('form_register'): # Assign Local cleaned parameters provider_name = str(self.request.POST.get('form_provider_name')).strip() provider_description = str(self.request.POST.get('form_provider_description')).strip() provider_website = str(self.request.POST.get('form_provider_website')).strip() # Valdidate if not self.request.POST.get('form_provider_name') or len(provider_name) == 0: # Name is Required register_form_error = 'Name of your Provider is Required' elif not self.request.POST.get('form_provider_website') or len(provider_website) == 0 or (not 'http://' in provider_website or 'https://' in provider_website): # Website is Required. # We check for http:// or https:// register_form_error = 'Website of your Provider is Required. The Path must include http:// or https://' else: # Handle Logo Uploads logo = None try: logo = self.get_uploads()[0] except: register_form_error = 'Error while uploading Logo' # Create our API Secret Key d = date.today() value_key = str(str(d.year) + "-" + str(d.month) + "-" + str(d.day)) + provider_name + provider_description + provider_website provider_secret = hashlib.sha1(value_key).hexdigest() # Create the Provider Object and Populate provider_obj = schemas.Provider( name=provider_name, description=provider_description, website=provider_website, approved=False, tested=False, logo=logo, secret=provider_secret) # Save that sucker provider_obj.put() if self.request.POST.get('form_provider_name') == 'yes' and user.organization and len(user.organization) > 0: if 'members' in session: for member in session['members']: if 'admin' in member and member['admin'] == 'true': # Add the current user as the first member new_member = users.User(member['email']) membership_obj = schemas.ProviderMember(provider=provider_obj,user=new_member) membership_obj.put() else: # Add the current user as the first member membership_obj = schemas.ProviderMember(provider=provider_obj,user=user) membership_obj.put() # The Form parameters were validated mailer.send_admin( subject='New Provider registered ' + str(provider_obj.name), body='New Provider registered ' + str(provider_obj.name)) # Text text_str = 'New Provider Registration Received for IdentiChip' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj, 'user': user } # Send to Current User mailer.send( to=str(user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_new.html', locales=template_locales) # Redirect to the new Registered Provider self.redirect('/provider/' + str(provider_obj.key().id())) # Count of the Admins in the Group admin_member_count = 0 if 'members' in session: for member in json.loads(str(session['members'])): if 'admin' in member and member['admin'] == 'true': admin_member_count = admin_member_count + 1 # Create the registration layout locales = { 'register_form_error': register_form_error, 'title': 'Register a New Provider', 'description': 'Search Microchips', 'user': user, 'admin_member_count': admin_member_count, 'session': session, 'post_params': self.request.POST, 'upload_url': blobstore.create_upload_url('/provider/register'), 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } template = jinja_environment.get_template('provider/create.html') self.response.out.write(template.render(locales)) else: self.redirect(users.create_login_url('/provider/register'))
def get(self, provider_uid): provider_obj = schemas.Provider.get_by_id(int(provider_uid)) user = users.get_current_user() if provider_obj is not None and provider_obj is not False: locales = { 'title': provider_obj.name, 'description': 'Dashboard for Provider', 'user': user, 'provider': provider_obj, 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Ok so Provider exists. # Now check if this is a logged in user and if they are a member of this provider. # If so we rather so a dashboard and edit properties and controls. if user: # Ok so let's check if they are a member membership_obj = dal.membership_by_user(provider_obj, user) if membership_obj is not None and membership_obj is not False: # Assign post variables locales['post_params'] = self.request.POST # Provider Information form_test_error = False form_test_success = False # Testing Tool Response form_test_response = False # Provider response form_test_provide_response = False # Check if they want to do a form post if self.request.POST.get('form_test_tool'): # Check the API Url if not self.request.POST.get('form_test_api_url'): form_test_error = 'Url of the API Endpoint is Required.' elif 'http://' not in self.request.POST.get('form_test_api_url') and 'https://' not in self.request.POST.get('form_test_api_url'): # Url where we send the information form_test_error = 'Url of the API Endpoint is Required. This must include either http:// or https:// and of course we recommend https to keep it secure.' elif not self.request.POST.get('form_test_search_uid') or len(str(self.request.POST.get('form_test_search_uid')).lower().strip()) == 0: # Search UID is Required form_test_error = 'Please provide a valid Search UID to check the endpoint for' else: # Assign the test url provider_obj.api_url = str(self.request.POST.get('form_test_api_url')).strip() # Post Params search_uid = str(self.request.POST.get('form_test_search_uid')).lower().strip() # Ok so run the test search_response = runner.search(self.request, str(search_uid), [ provider_obj ]) # Show the output form_test_response = search_response # Assign the provider response form_test_provide_response = search_response.responses[0] # Check if the result is true, if so we update them as tested if form_test_provide_response.status == runner.ProviderResponse.STATUS_FOUND: # Assign the Boolean provider_obj.tested = True provider_obj.put() # Success ! form_test_success = 'We tested the new Url and we got a valid response from the server. After which we set the new url as the default one.' else: form_test_error = 'Response from Server was not a successfull response. Please check the response that was returned and verify that everthing is working and setup. We will not update the API url until this test is passed.' # Param Assignment locales['form_test_error'] = form_test_error locales['form_test_success'] = form_test_success locales['form_test_response'] = form_test_response locales['form_test_provide_response'] = form_test_provide_response if provider_obj.approved and provider_obj.tested: register_form_error = False register_form_success = False # Check if this is a form post if self.request.POST.get('form_provider_update'): # Assign Local cleaned parameters provider_name = str(self.request.POST.get('form_provider_name')).strip() provider_description = str(self.request.POST.get('form_provider_description')).strip() provider_website = str(self.request.POST.get('form_provider_website')).strip() # Valdidate if not self.request.POST.get('form_provider_name') or len(provider_name) == 0: # Name is Required register_form_error = 'Name of your Provider is Required' elif not self.request.POST.get('form_provider_website') or len(provider_website) == 0 or (not 'http://' in provider_website or 'https://' in provider_website): # Website is Required. # We check for http:// or https:// register_form_error = 'Website of your Provider is Required. The Path must include http:// or https://' else: provider_obj.name = provider_name provider_obj.description = provider_description provider_obj.website = provider_website # Handle Logo Uploads if len(self.get_uploads()) > 0: try: logo = self.get_uploads()[0] # provider_obj.logo.delete() provider_obj.logo = logo except Exception as e: print e register_form_error = 'Error while uploading Logo' # Save that sucker provider_obj.put() self.redirect('/provider/' + str(provider_obj.key().id()) + "?section=profile") register_form_success = 'Provider was updated succesfully.' locales["register_form_error"] = register_form_error locales['register_form_success'] = register_form_success locales['upload_url'] = blobstore.create_upload_url('/provider/' + str(provider_obj.key().id()) + "?section=profile") # Statistics year = int(time.strftime("%Y")) if self.request.get('year'): try: year = int(self.request.get('year')) except: pass search_count = memcache.get("search_count_" + str(year)) if search_count is None: search_count = db.GqlQuery("SELECT * FROM UserSearchDetail WHERE created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31) AND provider = :3", year, year, provider_obj).count() if not memcache.add("search_count_" + str(year), search_count, 60*10): pass success_search_count = memcache.get("success_search_count_" + str(year)) if success_search_count is None: success_search_count = db.GqlQuery("SELECT * FROM UserSearchDetail WHERE success_status = True AND created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31) AND provider = :3", year, year, provider_obj).count() if not memcache.add("success_search_count_" + str(year), success_search_count, 60*10): pass search_contact_count = memcache.get("search_contact_count_" + str(year)) if search_contact_count is None: search_contact_count = db.GqlQuery("SELECT * FROM UserSearchDetail WHERE email_sent = True AND created > DATE(:1, 1, 1) AND created < DATE(:2, 12, 31) AND provider = :3", year, year, provider_obj).count() if not memcache.add("search_contact_count_" + str(year), search_contact_count, 60*10): pass stats = memcache.get("stat_page_" + str(year)) if stats is None: stats = [] responses = dal.get_stats({ 'year': int(year), 'provider': provider_obj }) stat = { 'year': int(year), 'countries': dal.parse_out_countries(responses), 'cities': dal.parse_out_cities(responses) } stats.insert(0, stat) if not memcache.add("stat_page_" + str(year), stats, 60*10): pass locales['stats' ] = stats locales['current_year' ] = year locales['search_count'] = search_count locales['search_contact_count'] = search_contact_count locales['success_search_count'] = success_search_count # Show the Dashboard section = 'dashboard' if self.request.get('section'): section = str(self.request.get('section')).strip().lower() user.organization = os.environ['USER_ORGANIZATION'] session_store = sessions.get_store(request=self.request) session = session_store.get_session() locales['user'] = user locales['members'] = dal.memberships_by_provider(provider_obj) if 'members' in session: list_of_member_emails = [] for cmember in locales['members']: list_of_member_emails.append(cmember.user.email()) domain_members = [] for dmember in json.loads(str(session['members'])): if dmember['email'] not in list_of_member_emails: domain_members.append(dmember) locales['domain_members'] = domain_members else: locales['domain_members'] = False locales['request'] = self.request locales['section'] = section locales['user_org'] = os.environ['USER_ORGANIZATION'] locales['years'] = xrange(provider_obj.created.year, int(time.strftime("%Y"))+1) locales['current_year'] = year locales['membership'] = membership_obj clients = dal.get_clients_by_provider(provider_obj) locales['clients'] = clients locales['client_count'] = clients.count() template = jinja_environment.get_template('provider/dashboard.html') self.response.out.write(template.render(locales)) elif not provider_obj.approved: # Show the Approval Waiting Page template = jinja_environment.get_template('provider/being_approved.html') self.response.out.write(template.render(locales)) elif not provider_obj.tested: # Show the Approval Waiting Page template = jinja_environment.get_template('provider/not_tested.html') self.response.out.write(template.render(locales)) else: self.redirect('/') else: template = jinja_environment.get_template('provider/detail.html') self.response.out.write(template.render(locales)) else: # We used to show a Public Profile but decided against this. self.redirect('/providers') else: self.redirect('/providers')
def post(self): provider_obj = schemas.Provider.get_by_id(int(self.request.get('provider'))) user = users.get_current_user() if provider_obj is not None and provider_obj is not False: locales = { 'title': provider_obj.name, 'description': provider_obj.description, 'user': user, 'provider': provider_obj, 'session': dal.return_and_global_session_update(self), 'is_current_user_admin': users.is_current_user_admin() } # Ok so Provider exists. # Now check if this is a logged in user and if they are a member of this provider. # If so we rather so a dashboard and edit properties and controls. if user: # Ok so let's check if they are a member membership_obj = dal.membership_by_user(provider_obj, user) if membership_obj is not None and membership_obj is not False: # Get the UID uid = self.request.get('uid') # Check the UID if uid: test_url = self.request.get('test_url') if test_url or provider_obj.api_url: if test_url: # Set it for now provider_obj.api_url = test_url # Ok so run the test search_response = runner.search(self.request, uid, [ provider_obj ]) # Take the only response response_obj = search_response.responses[0] # Our Local Copy of errors parse_errors = [] if response_obj.parse_errors is not None: parse_errors = response_obj.parse_errors # Now output result self.response.out.write(repr({ 'status': response_obj.status, 'response': response_obj.raw_response, 'url': test_url, 'data': response_obj.data_sent_to_server, 'parse_errors': parse_errors })) # If the result was success we set the details api url of this provider to that url if provider_obj.approved and response_obj.status == runner.ProviderResponse.STATUS_FOUND and test_url: # Save and update to tested provider_obj.tested = True provider_obj.put() else: self.response.out.write({ 'errors': [ 'Test Url to test again must be provided' ] }) else: self.response.out.write({ 'errors': [ 'UID to search for must be presented' ] }) else: self.response.out.write({ 'errors': ['Current user must be a member of the provider to access the test tool'] }) else: self.response.out.write({ 'errors': ['Authenticated Session required'] }) else: self.response.out.write({ 'errors': ['Not a Valid Provider'] })
def get(self): # Get the current logged-in user user = users.get_current_user() # Get the Session session = dal.return_and_global_session_update(self) # Check Login if not user: self.redirect(users.create_login_url('/admin/providers')) # Check if they are a admin if users.is_current_user_admin() == False: self.redirect('/') # Check Provider if self.request.get('provider') and self.request.get('action'): # Get ID's provider_id = int(self.request.get('provider')) action_str = self.request.get('action') # Provider Object provider_obj = schemas.Provider.get_by_id(int(self.request.get('provider'))) # Check if it's a Valid Provider if provider_obj is not None and provider_obj is not False: # What action if action_str == "remove" or action_str == "delete": # Get the members to send the Mail to members = dal.memberships_by_provider(provider_obj) # Loop and Mail the Members for member in members: # Send Mail to Member template_locales = { 'title': str(provider_obj.name) + ' has been removed from IdentiChip.org', 'description': str(provider_obj.name) + ' has been removed from IdentiChip.org', 'subject': str(provider_obj.name) + ' has been removed from IdentiChip.org', 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_deleted.html', locales=template_locales) # Remove Members db.delete(dal.memberships_by_provider(provider_obj)) # Delete the Provider db.delete(provider_obj) elif action_str == "approve": # Set Settings provider_obj.approved = self.request.get('flag') == "on" # Get the members to send the Mail to members = dal.memberships_by_provider(provider_obj) # Loop and Mail the Members for member in members: # Is on if self.request.get('flag') == "on": # Text text_str = str(provider_obj.name) + ' has been Approved' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_approved.html', locales=template_locales) else: # Text text_str = str(provider_obj.name) + ' has had it\'s approval status removed' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_not_approved.html', locales=template_locales) # Save provider_obj.put() elif action_str == "tested": # Set Settings provider_obj.tested = self.request.get('flag') == "on" # Get the members to send the Mail to members = dal.memberships_by_provider(provider_obj) # Loop and Mail the Members for member in members: # Is on if self.request.get('flag') == "on": # Text text_str = str(provider_obj.name) + ' has been Marked as Tested by a Administrator' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_tested.html', locales=template_locales) else: # Text text_str = str(provider_obj.name) + ' has been had it\'s tested status removed by a Administrator' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_not_tested.html', locales=template_locales) # Save provider_obj.put() # Tell the Provider they have been included in the searches if provider_obj.approved and provider_obj.tested: # Get the members to send the Mail to members = dal.memberships_by_provider(provider_obj) # Loop and Mail the Members for member in members: # Text text_str = str(provider_obj.name) + ' is now regonized as a trusted provider on Identichip.org' # Send Mail to Member template_locales = { 'title': text_str, 'description': text_str, 'subject': text_str, 'provider': provider_obj } # The Form parameters were validated mailer.send( to=str(member.user.email()), reply_to='*****@*****.**', subject=template_locales['subject'], view='mail/provider/provider_included.html', locales=template_locales) # Redirect self.redirect('/admin/providers#provider_block_' + str(provider_obj.key().id())) # Else redirect else: self.redirect('/admin/providers') # Get Providers providers_list = dal.get_list_of_providers() # Counters approved_providers_count = 0 accepted_providers_count = 0 tested_providers_count = 0 # Count for provider_list_obj in providers_list: # Count Approved if provider_list_obj.approved and provider_list_obj.tested: # Count accepted_providers_count += 1 # Count Approved elif not provider_list_obj.approved: # Count approved_providers_count += 1 # Counter elif not provider_list_obj.tested: # Count tested_providers_count += 1 # Locales locales = { 'title': 'Manage Approved Providers', 'description': 'Providers', 'user': users.get_current_user(), 'session': session, 'providers': providers_list, 'approved_providers_count': approved_providers_count, 'accepted_providers_count': accepted_providers_count, 'tested_providers_count': tested_providers_count, 'is_current_user_admin': users.is_current_user_admin() } # Render the template template = jinja_environment.get_template('admin/providers.html') self.response.out.write(template.render(locales))