def list_page(): """ Using the data layer, Jinja2, and the list.html template this function EITHER returns the default list page (containing all the projects) OR if it has been requested using a POST it instead returns the list page containing a list of projects that fit the search parameters contained in the POST. This function is called when the URL '/list' is requested. :return: The list page of our portfolio(containing all or some projects from the data layer). """ db = data.load("data.json") full_list = data.search(db) techniques = data.get_technique_stats(db) if request.method == "POST": requested_technique_list = request.form.getlist("technique") requested_search_fields_list = request.form.getlist("search_fields") if not requested_search_fields_list: requested_search_fields_list = None requested_order = request.form["sort_order"] requested_sort_field = request.form["sort_field"] requested_text_search = request.form["text_search"] if requested_text_search == "": requested_text_search = None search_results = data.search( full_list, techniques=requested_technique_list, search_fields=requested_search_fields_list, sort_order=requested_order, sort_by=requested_sort_field, search=requested_text_search, ) return render_template( "list.html", page_name="List Page", sortable_fields=sortable_fields, searchable_fields=searchable_fields, project_list=search_results, previous_search_fields=requested_search_fields_list or [], previous_text_search=requested_text_search or "", previous_techniques=requested_technique_list, previous_sort_field=requested_sort_field, techniques=sorted(techniques.keys()), stylesheets=["list.css", "project-item.css", "search-box.css"], ) else: return render_template( "list.html", page_name="List Page", sortable_fields=sortable_fields, searchable_fields=searchable_fields or [], project_list=full_list, techniques=sorted(techniques.keys()), stylesheets=["list.css", "project-item.css", "search-box.css"], )
def search(): if request.method == 'POST': # if we are in a post requst: searchfor= request.form['searchfor'] if searchfor== '': # if user just pressed enter searchfor_db= None else: searchfor_db = searchfor sel_techniques = request.form.getlist("techniques") app.logger.info('sökte efter: "%s" med "%s"', searchfor, sel_techniques) return render_template('search.html', config= config_load(), all_techniques= data.get_techniques(data_load()), sel_techniques= sel_techniques, searchfor= searchfor, data= data.search(data_load(), sort_by='start_date', sort_order='desc', techniques=sel_techniques, search=searchfor_db, search_fields=None)) # after logging send the page to the user else: # we are in a post; first page view, non enter press. # render default page return render_template('search.html', config= config_load(), all_techniques= data.get_techniques(data_load()))
def projects(): projects = data.load("data.json") if request.method == "GET": return render_template('list.html', projectlist=projects, listlength=len(projects)) elif request.method == "POST": searchedlist = data.search(projects, search=request.form["searchstr"]) return render_template('list.html', projectlist=searchedlist, listlength=len(searchedlist))
def get(self, query): print "searching" data.createNewMathOut() book = data.readBook() results = data.search(query,book) print "here" self.write(json.dumps(results))
def search(self): t = self.t1.get() info = dt.search([t]) lst = info if len(lst) > 9: lst = lst[0:9] self.showImg(lst)
def search_results(): """Both the result page for searches and the page for advanced searches. The global quicksearch-form leads here with a simple search performed. The "Avancerad sökning"-link also leads here (with an empty search resulting in a list of all projects performed)""" available_fields = [] available_techniques = data.get_techniques(db) args = {} #Get all keys from the first project in db, so the page can list all available fields. for key in db[0].keys(): available_fields.append(key) for argument in ['sort_by', 'sort_order', 'search']: try: val = request.args[argument].encode('utf-8') except: if argument == 'sort_by': val = 'start_date' elif argument == 'sort_order': val = 'desc' else: val = None args.update({argument: val}) #The for-loops above and below this comment parses all search arguments from the url and saves them to the args-dict. for argument in ['techniques', 'search_fields']: try: val = request.args.getlist(argument) except: val = None if val == [] and argument == 'search_fields': val = None args.update({argument: val}) #Makes a search with the given parameters and saves the resulting list to results results = data.search(db, args['sort_by'], args['sort_order'], args['techniques'], args['search'], args['search_fields']) return render_template("search.html", title = u"Portfolio - sökning", projects = results, fields=available_fields, techniques=available_techniques)
def list(): """ Renders list.html based on a set of GET-arguments """ #Call load() in the data layer to load the database and store it's contents in the variable db db = data.load('data.json') #If there are GET-arguments: #Call search() in the data layer with the arguments and store the results in the variable project_lst if request.args: sort_by = request.args.get('sort_by', 'project_id') sort_order = request.args.get('sort_order', 'desc') techniques = request.args.getlist('techniques') if not techniques: techniques = None search = request.args.get('search', None) search_fields = request.args.getlist('search_fields') if not search_fields: search_fields = None project_lst = data.search(db, sort_by=sort_by, sort_order=sort_order, techniques=techniques, search=search, search_fields=search_fields) #Else: #Store all data in the database, i.e. all projects, in the variable project_lst, else: project_lst = db #Call get_techniques() in the datalayer and store the results in the variable technique_lst technique_lst = data.get_techniques(db) #Render list.html with: #project_lst --> used to display a list of projects #technique_lst --> used to display techniques available to filter by in the search-form on the webpage return render_template('list.html', project_lst=project_lst, technique_lst=technique_lst)
def fun(fnum,time1,time2): if fnum == "反馈统计": result = fun1(data.search(time1,time2)) elif fnum == "社区事件统计": result = fun2(data.search(time1, time2)) elif fnum == "热点社区": result = fun3(data.search(time1, time2)) elif fnum == "事件及处理": result = fun4(data.search(time1, time2)) elif fnum == 5: import datetime time2=str(datetime.datetime.now().replace(year=2018,month=10,day=30,microsecond=0)) time1='2018-10-30 00:00:00' result = fun5(data.search(time1, time2)) return result
def edit(): """Edit view Returns a view of the edit page. The edit page is a list of all the currently existing projects in the database. Returns ------- render_template """ db = data.load("data.json") # Delete project if request.method == "POST": p_id = request.form["delete"] data.remove_project(db, int(p_id)) data.save(db, "data.json") # Remove file if os.path.isdir(app.config["PROJECT_IMAGE_DIR"] + p_id + "/"): rmtree(app.config["PROJECT_IMAGE_DIR"] + p_id + "/") flash("Project deleted.", "success") all_projects = data.search(db, search="") table_fields = [ "project_id", "project_name", "short_description", "course_id" ] return render_template("add.html", **locals())
def search1(): print(Style.DIM + "inside GET") print(Style.RESET_ALL) pn = request.args.get('pn') print(Fore.RED + "Provider : " + pn) print(Style.RESET_ALL) rn = request.args.get('rn') print(Fore.RED + "Reciver : " + rn) page1 = int(request.args.get('page')) print(Style.RESET_ALL) global l1 l1 = search(pn, rn) l2, p, s, e, next, pre, page = give(page1, l1) ###################################################### if page1 > p or page1 <= 0: return render_template('404.html', v='Something Wrong') ########################################################## else: return render_template('table.html', l=l2, p=p, start1=s, end1=e, next=next, pre=pre, active1=page, url='search1')
def get(self, query): print "searching" data.createNewMathOut() book = data.readBook() results = data.search(query, book) print "here" self.write(json.dumps(results))
def listPage(): if request.method == 'GET': db=load() srch=True techniques=get_techniques(db) projects=search(db, sort_by='start_date',sort_order='desc',techniques=None,search=None,search_fields=None) field=get_fields(db) return render_template('list.html',srch=srch,projects=projects, field=field, techniques=techniques)
def show_project(pid): try: db = data.load('data.json') project_var = data.search(db, search=str(pid), search_fields=['project_no']) print(project_var) return render_template("project.html", title="project <pid>", projectid = pid, project = project_var) except: abort(404) #give error 404
def index(): last_project= data.search(data_load(), sort_by='start_date', sort_order='desc', techniques=None, search=None, search_fields=None)[-1] # get the last projects from the projects. return render_template("index.html", db = data_load(), config= config_load(), data= last_project )
def index(): """ Renders index.html with the latest project """ #Call load() in the data layer to load the database and store it's contents in the variable db db = data.load('data.json') #Call search() in the data layer to get a list sorted by end_date in descending order, and pick the first project to get the latest project project_lst = data.search(db, sort_by='end_date') latest_project = project_lst[0] #Render index.html with: #latest_project --> used to display information about the latest project return render_template('index.html', latest_project=latest_project)
def test_search(self): self.assertEqual(len(data.search(self.loaded_data)), 4) self.assertEqual(len(data.search(self.loaded_data, techniques=['csv'])), 1) res = data.search(self.loaded_data, sort_order='asc',techniques=["python"]) #Hur avgör vi ordningen i detta fall? Jo genom start_date # self.assertEqual(res[0]['project_no'], 2) #2 # self.assertEqual(res[1]['project_no'], 3) #3 # self.assertEqual(res[2]['project_no'], 1) #1 self.assertEqual(res[0]['start_date'], '2009-09-05') self.assertEqual(res[1]['start_date'], '2009-09-07') self.assertEqual(res[2]['start_date'], '2009-09-08') res = data.search(self.loaded_data, sort_by="end_date", search='okänt', search_fields=['project_no','project_name','course_name']) self.assertEqual(len(res), 3) self.assertEqual(res[0]['project_no'], 2) self.assertEqual(res[1]['project_no'], 3) self.assertEqual(res[2]['project_no'], 1) print('here') res = data.search(self.loaded_data, search="okänt", search_fields=["project_no","project_name","course_name"]) self.assertEqual(len(res), 3) res = data.search(self.loaded_data, techniques=[], search="okänt", search_fields=["project_no","project_name","course_name"]) self.assertEqual(len(res), 3) res = data.search(self.loaded_data, search="okänt", search_fields=[]) self.assertEqual(len(res), 0) res = data.search(self.loaded_data, sort_by='group_size') # print('loaded:') # for d in self.loaded_data: # print('no:',d['project_no'], 'size:', d['group_size']) # print('expected:') # for d in self.expected_data: # print('no:',d['project_no'], 'size:', d['group_size']) # print('search result:') # for d in res: # print('no:',d['project_no'], 'size:', d['group_size']) #default is descending order self.assertEqual(res[0]['project_no'], 4) #1 self.assertEqual(res[1]['project_no'], 2) #2 self.assertEqual(res[2]['project_no'], 3) #3 self.assertEqual(res[3]['project_no'], 1) #4
def get_contact_options(): params = {} params['size'] = request.args.get('pageSize') params['from'] = request.args.get('page') params['query'] = request.args.get('query') res_obj = elasticsearch.search(name=None, args=params) return jsonify(res_obj)
def search(): projects = data.load("data.json") retrived_techniques = data.get_technique_stats(projects) if request.method == "GET": return render_template('search.html', keys=retrived_techniques.keys()) elif request.method == "POST": searchfields = request.form.getlist("searchfields") if len(searchfields) == 0: searchfields = None foundprojects = data.search(projects, sort_by=request.form.getlist("sortby")[0], sort_order=request.form.getlist("sortorder")[0], techniques=request.form.getlist("techniques"), search=request.form.getlist("searchstr")[0], search_fields=searchfields) return render_template('search.html', keys=retrived_techniques.keys(), projectlist=foundprojects, matches=len(foundprojects))
def list(): ''' Function that uses the search-function from the API and lists all project that match the search the user input. Can also sort by different fields and can present the list in ascending or descending order. Parameters: None Returns: Render the list-page. ''' # global db db = load_json() # get the search from the user using GET method search_project = request.args.get("search", "") # sort by has default value of None it crashes sort_byf = request.args.get("sort_by", "start_date") sort_order = request.args.get("sort_order", "desc") # get a list of all selected search fields that the user selected search_fields = request.args.getlist("search_fields") # if no search fields are selected from the user then search through all search fields if bool(search_fields) is False: search_fields = None # if no sort by is selected then use default as start date if bool(sort_byf) is False: sort_byf = "start_date" # uses the search funtion from the API and searches thorugh each project depending on the user input found_projects = data.search(db, sort_by=sort_byf, sort_order=sort_order, techniques=None, search=search_project, search_fields=search_fields) # if no project are found with the given search then render list.html with a message to the user that no project could be found with that search if len(found_projects) == 0: return render_template("list.html", search=search_project, projects=found_projects, sort_by=sort_byf, empty_list=True) # found_projects = data.search(db, sort_by=sort_byf, sort_order=sort_order, # techniques=None, search=search_project, search_fields=search_fields) return render_template("list.html", search=search_project, projects=found_projects, sort_by=sort_byf)
def list(): """List view Returns a view of the list page. Utilises the HTML POST method to request data from user for use in database search. If the method is POST the function will request projects from the data.search function and pass them on to the render_template method. If the method is GET it will simply return all projects from data.search to render_template. Returns -------- render_template """ db = data.load("data.json") technique_data = data.get_techniques(db) search_fields = data.get_searchfields(db) if request.method == "POST": search = request.form["search"] techniques = request.form.getlist("techniques") searched_fields = request.form.getlist("searched_fields") if request.form["sort"]: sort = request.form["sort"] else: sort = "start_date" order = request.form["order"] requested_projects = data.search(db, search=search, search_fields=searched_fields, techniques=techniques, sort_by=sort, sort_order=order) return render_template("list.html", **locals()) else: requested_projects = data.search(db) return render_template("list.html", **locals())
def search(): db = data.load("data.json") if request.form["search_word"] == "": search_word = None else: search_word = request.form["search_word"] fields = request.form.getlist("field_checkbox") #List of all checked search_fields techniques = request.form.getlist("technique_checkbox") #List of all checked techniques sort_order = request.form.get("sort_order") sort_by = request.form.get("sort_by") data_search = data.search(db, search=search_word, search_fields=fields, techniques=techniques, sort_order=sort_order, sort_by=sort_by) return render_template("list.html", data=[data_search, data.get_techniques(db)])
def main_page(): """ Using the data layer, Jinja2, and the start.html template this function returns the main page of the portfolio to whoever sent the request. This function is called when the URL '/' is requested. :return: The main page HTML of our portfolio. """ db = data.load("data.json") example_project = choice(data.search(db)) return render_template( "start.html", page_name="Homepage", project_data=example_project, stylesheets=["full-project.css", "start.css"] )
def home_page(): """Home Page""" #Initiate DataFile db = data.init() #Code for Last Updated projects sorted_list = data.search(db, sort_by="end_date") x = 0 udb = [] for proj in sorted_list: udb.append(proj) x += 1 #Only add three last updated then break if x == 3: break return render_template("home.html", dataB = db, updatedPro = udb)
def search_results(): """ Visa sökresultat """ db = data_load() # Fånga input från användaren search_string = request.form["key"] search_fields = request.form.getlist("search_fields") if search_fields == []: search_fields = None # konvertera så att datalagret förstår sort_order = request.form["sort_order"] sort_by = request.form["sort_by"] techs = request.form.getlist("techniques") # Sammanfatta och sök m.h.a. data.py search_res = data.search( db, search=search_string, sort_order=sort_order, sort_by=sort_by, techniques=techs, search_fields=search_fields ) return render_template("search_results.html", search_res=search_res, db=db, search=search_string)
def add_film_with_session(pathname, session): """Adds a film to the database, using the given session. This function looks at the pathname to determine the title and (optionally) the year of the film. Retrieves data via the data module, and adds the data along with the pathname to the database. """ title = splitext(pathname)[0] d = data.search(title) if isinstance(d, data.MovieData): entry = Movie(pathname=pathname, **d.basic_info()) else: entry = TV(pathname=pathname, **d.basic_info()) for genre_name in d.genres(): genre = session.query(Genre).filter_by(name=genre_name).first() if not genre: genre = Genre(name=genre_name) entry.genres.append(genre) # TODO: Remove duplicates from d.cast() # Test with add_film("Seven Samurai") for order, actor_name, role in d.cast(): with session.no_autoflush: actor = session.query(Actor).filter_by(name=actor_name).first() if not actor: actor = Actor(name=actor_name) performance = Performance(role=role) performance.actor = actor entry.performances.append(performance) session.flush() session.add(entry) # FIXME: poster_url() might be None url = d.poster_url() r = requests.get(url) r.raise_for_status() session.commit() # FIXME: We need to commit session in order to access entry.id, # but that means we can't rollback() if the below lines throws an error with open(app.config['IMAGE_DIR'] + '/%s.jpg' % entry.id, 'wb') as f: f.write(r.content)
def test_search(self): self.assertEqual(len(data.search(self.loaded_data)), 4) self.assertEqual( len(data.search(self.loaded_data, techniques=['csv'])), 1) res = data.search(self.loaded_data, sort_order='asc', techniques=["python"]) self.assertEqual(res[0]['start_date'], '2009-09-05') self.assertEqual(res[1]['start_date'], '2009-09-07') self.assertEqual(res[2]['start_date'], '2009-09-08') res = data.search( self.loaded_data, sort_by="end_date", search='okänt', search_fields=['project_id', 'project_name', 'course_name']) self.assertEqual(len(res), 3) self.assertEqual(res[0]['project_id'], 2) self.assertEqual(res[1]['project_id'], 3) self.assertEqual(res[2]['project_id'], 1) res = data.search( self.loaded_data, search="okänt", search_fields=["project_id", "project_name", "course_name"]) self.assertEqual(len(res), 3) res = data.search( self.loaded_data, techniques=[], search="okänt", search_fields=["project_id", "project_name", "course_name"]) self.assertEqual(len(res), 3) res = data.search(self.loaded_data, search="okänt", search_fields=[]) self.assertEqual(len(res), 0) res = data.search(self.loaded_data, sort_by='group_size') #default is descending order self.assertEqual(res[0]['project_id'], 4) #1 self.assertEqual(res[1]['project_id'], 2) #2 self.assertEqual(res[2]['project_id'], 3) #3 self.assertEqual(res[3]['project_id'], 1) #4
def techniques(): ''' Function that lists project based of the selected techniques. Can also sort the list by different fields. Parameter: None Return: Render the techniques-page ''' # global db db = load_json() # get a list of all unique techniques that are being used by every project and capitalize the first character all_tech = data.get_techniques(db) for index, tech in enumerate(all_tech): all_tech[index] = tech.capitalize() # get the techniques that the user has selected using POST method, if the user selects no techniques then list all projects if request.method == "POST": requested_tech = request.form.getlist("technique") else: requested_tech = None sort_byf = request.args.get("sort_byf", "start_date") # find the projects with the selected techniques using the search method from the API found_projects = data.search(db, sort_by=sort_byf, sort_order='desc', techniques=requested_tech, search="", search_fields=None) # if no projects matches the selected techniques render the HTML page techniques.html with an error message notifying it if len(found_projects) == 0: return render_template("techniques.html", all_tech=all_tech, projects=found_projects, empty_list=True) return render_template("techniques.html", all_tech=all_tech, projects=found_projects)
def index(): """ Index view Returns a view for the index page. Fetches all the projects in the database and passes them on to render_template function together with the index.html template page. Returns ------- render_template """ db = data.load("data.json") latest_projects = data.search(db, sort_by='end_date') return render_template("index.html", database=db, latest_projects=latest_projects)
def talk(self): if self.talk_count == 0: return self.talk_first() last_response = '' # natural language understanding. if self.last_msg == None: return None color.beginComment() keywords = list(jieba.cut(self.last_msg)) # self.display(keywords) color.end() self.buildKeywordDict(keywords) if self.classifyYesNo() and len(self.yesno_list) > 0: keywords = keywords+self.yesno_list self.buildKeywordDict(keywords) self.yesno_list = [] # print self.yesno_list if self.active_class != None: # downward search. values = [self.current_db[ind] for ind in self.active_piece] self.state_vspecific = None # upward search. else: # rebuild. # knoledge acquisition. (keys, values) = data.search(data.db_keys, data.db_values, keywords) self.active_piece = range(len(values)) self.state_key = keys self.current_db = values self.dim = len(self.state_key)-1 values = self.current_db # produce output. # print values piece = self.answer(values) if piece != None: last_response = last_response+piece question = self.ask() if question != None: last_response = last_response+'\n'+question return last_response
def list_page(): """List Page""" db = data.init() fields = data.get_fields(db) #If user is searhing (POST) if request.method == 'POST': search_list = [] for x in data.get_fields(db): #only add to list if x exists otherwise pass try: search_list.append(request.form[x]) except: pass if search_list == []: search_list = None #Selects how it should sort the list sort_order = request.form["sort_order"] db = data.search(db, search=request.form["search"],sort_order=sort_order, search_fields=search_list) return render_template("list.html",dataB = db, _fields = fields)
def test_search(self): self.assertEqual(len(data.search(self.loaded_data)), 4) self.assertEqual(len(data.search(self.loaded_data, techniques=['csv'])), 1) res = data.search(self.loaded_data, sort_order='asc',techniques=["python"]) self.assertEqual(res[0]['project_no'], 1) self.assertEqual(res[1]['project_no'], 3) self.assertEqual(res[2]['project_no'], 2) res = data.search(self.loaded_data, sort_by="end_date", search='okänt', search_fields=['project_no','project_name','course_name']) self.assertEqual(len(res), 3) self.assertEqual(res[0]['project_no'], 2) self.assertEqual(res[1]['project_no'], 3) self.assertEqual(res[2]['project_no'], 1) res = data.search(self.loaded_data, search="okänt", search_fields=["project_no","project_name","course_name"]) self.assertEqual(len(res), 3) res = data.search(self.loaded_data, techniques=[], search="okänt", search_fields=["project_no","project_name","course_name"]) self.assertEqual(len(res), 3) res = data.search(self.loaded_data, search="okänt", search_fields=[]) self.assertEqual(len(res), 0) res = data.search(self.loaded_data, sort_by='group_size') self.assertEqual(res[0]['project_no'], 4) self.assertEqual(res[1]['project_no'], 2) self.assertEqual(res[2]['project_no'], 3) self.assertEqual(res[3]['project_no'], 1)
def show(): s = flask.request.args.get('q') if not s: return flask.render_template('search_result.html', result = None, page_title = u'Поиск', search_str = '', message = s ) res = data.search(s) if not res: msg = u'Ничего не найдено, попробуйте изменить запрос' else: msg = u'Найдено подходящих товаров: ' + str(len(res)) return flask.render_template('search_result.html', results = res, page_title = u'Поиск ' + s, search_str = s, message = msg )
def search(): projects = data.load("data.json") retrived_techniques = data.get_technique_stats(projects) if request.method == "GET": return render_template('search.html', keys=retrived_techniques.keys()) elif request.method == "POST": searchfields = request.form.getlist("searchfields") if len(searchfields) == 0: searchfields = None foundprojects = data.search( projects, sort_by=request.form.getlist("sortby")[0], sort_order=request.form.getlist("sortorder")[0], techniques=request.form.getlist("techniques"), search=request.form.getlist("searchstr")[0], search_fields=searchfields) return render_template('search.html', keys=retrived_techniques.keys(), projectlist=foundprojects, matches=len(foundprojects))
def list_tech(): """ Techniques page """ db = data.init() techs = data.get_techniques(db) all_techniques = techs #If user is searching (post) if request.method == 'POST': tech_list = [] for x in all_techniques: #only add to list if x exist otherwise pas try: if not request.form[x] in tech_list: tech_list.append(request.form[x]) except: pass if not tech_list == []: #To display all the techniques in a good way db = data.search(db, techniques = tech_list) techs = data.get_techniques(db) return render_template("list_techniques.html", dataB = db, techniques = techs, all_tech = all_techniques, selected_tech = tech_list) return render_template("list_techniques.html", dataB = db, techniques = techs, all_tech = all_techniques, selected_tech = techs)
def set_text(name_edit, fruit_label1, fruit_label2): # get "Fruit Name" from screen by "get" function # รับ "ชื่อผลไม้" จากหน้าต่าง โดยฟังก์ชั่น "get" fruit_name = name_edit.get() # search the fruit information by using "Fruit Name" # ค้นหาข้อมูลผลไม้โดยใช้ "ชื่อผลไม้" fruit = data.search(fruit_name) if fruit is None: # if couldn't find fruit information (when "data.search" return None), # show empty in screen # หากไม่พบข้อมูลผลไม้ (เมื่อ "data.search" ส่งคืน None), # แสดงที่ว่างในหน้าต่าง fruit_label1['text'] = '' fruit_label2['text'] = '' else: # if found fruit information, # show "Color(=fruit[1])" & "Price(=fruit[2])" # หากพบข้อมูลผลไม้ # แสดง "สี (=fruit[1])" & "ราคา (=fruit[2])" fruit_label1['text'] = fruit[1] fruit_label2['text'] = fruit[2]
def index(): ''' Function that displays the homepage. Parameters: None Returns: Render the homepage ''' db = data.load("data.json") all_projects = data.search(db, sort_by='end_date', sort_order='descending', techniques=None, search="", search_fields=None) latest_project = all_projects[0] return render_template("index.html", l_project=latest_project)
def search_results(): """ Counts objects in search results and returns search results page """ appdata = data_json() query = request.form['key'] techs = request.form.getlist('techfield') technologies = techs if techs else "" fields = request.form.getlist('search_field') search_fields = fields if fields else None sortby = request.form.get('sort_field', 'start_date') sort_order = request.form.get('sort', 'desc') search_function = data.search(appdata, sort_order=sort_order, sort_by=sortby, techniques=technologies, search=query, search_fields=search_fields) results_count = len(search_function) print("Search details: sort_order=%s, sort_by=%s, techniques=%s, \ search=%s, search_fields=%s" % (sort_order, sortby, str(technologies), query, str(search_fields))) return render_template("search.html", data=search_function, count=results_count, term=query, fields=fields, techs=techs, sort=sort_order, sortby=sortby, info=main_json())
def search(): """Redirects to search.html and sends a list with projects that's given from the search form""" key = request.form['key'].encode('UTF-8').upper() if key == '': key = None search_fields = request.form.getlist('search_fields') if search_fields == []: search_fields = None techniques = request.form.getlist('techniques') if techniques == []: techniques = None sort_by = request.form['sort_by'] sort_order = request.form['sort_order'].encode('UTF-8') logtext = [key, search_fields, techniques, sort_by, sort_order] log('search.html', ('parameters: ' + str(logtext))) lst = data.search(db, search=key, search_fields=search_fields, techniques=techniques, sort_by=sort_by, sort_order=sort_order) return render_template('search.html', data=data, db=db, lst=lst)
def techniques(): """ Technique view Returns a view of the technique page with each technique on its own row, together with its relevant projects. Returns ------- render_template """ db = data.load("data.json") master_list = [] technique_list = data.get_techniques(db) for e in technique_list: temp_list = [e] temp_list.append(data.search(db, techniques=[e])) master_list.append(temp_list) for i in master_list: if len(i[1]) > len(master_list[0][1]): new_pos = master_list.pop(master_list.index(i)) master_list.insert(0, new_pos) return render_template("techniques.html", master_list=master_list)
def index(): db = data.load('data.json') project_list = data.search(db, sort_by='start_date') return render_template("index.html", title = 'Hem', project = project_list[0])
print "更新硬件资源信息:\n",lib.updateInterfInfos() num=lib.getInterfNumFromIp(IP) print '根据ip获取板卡类型个数:\n',num interName="s"*128 info="s"*128 print "*"*20 for i in range(num): lib.getInterfInfo(IP,i,interName,len(interName),info,len(info)) print '板卡名称:',interName.strip(a) print '板卡信息:',info.strip(a) print "*"*20 print "获取当前平台的工程数量:\n",lib.getProjectCount() p_Num=lib.getProjectCount() cmd='SELECT Name FROM mydb.tbl_project order by Name; ' _list=data.search(cmd) # print json.dumps(_list[142][0],encoding='utf-8',ensure_ascii=False) print (len(_list)) if int(p_Num) == int(len(_list)): print('获取当前平台的总工程数量测试结果:Pass') else: print('获取当前平台的总工程数量测试结果:Fail') pN="s"*128 p=[] # lib.getProjectName(1,pN,len(pN)) for i in range(p_Num): #查询所有工程名称 lib.getProjectName(i,pN,len(pN)) print pN p.append(pN.split(a)[0]) #过去输出字符串中的a(空格) # print(json.dumps(_list[i][0],encoding='utf-8',ensure_ascii=False).strip('"').encode('GB18030'))
def modify(project_id): """Modify view Returns a view of the modify page. The modify page supports both HTML GET and POST methods. The GET method is used to request the desired project, and is passed into the modify function through Flask's routing method. This data is then used to populate the fields on the page. The POST method is used to populate the WTForm instance, which is then used to edit the actual database. Parameters ---------- project_id : int The integer representing the desired project_id key in the database. Returns ---------- render_template """ def allowed_file(filename): """ Decide if the file extension is acceptable Determines whether or not a filename is valid, based upon the ALLOWED_EXTENSIONS field in app.config. Parameters ---------- filename : str The name of the file to check. Return --------- bool """ if filename.rsplit(".", 1)[1] in app.config["ALLOWED_EXTENSIONS"]: return True def file_upload(): """ Save the file and make directories Function handles all of the os file path and os file saving implementations. It will return the name of all of the files so they can be put in a list within the project. Returns --------- list : list A list of all the filenames of the uploaded files. """ if request.files: files = request.files.getlist("images") for f in files: if allowed_file(f.filename): sec_filename = secure_filename(f.filename) # Check if the project path exists, create it if it doesn't if not os.path.isdir(app.config["PROJECT_IMAGE_DIR"] + str(form.project_id.data) + "/"): os.mkdir(app.config["PROJECT_IMAGE_DIR"] + str(form.project_id.data) + "/") # Save the file f.save((os.path.join( app.config["PROJECT_IMAGE_DIR"] + str(form.project_id.data) + "/", sec_filename))) flash("File " + sec_filename + " uploaded successfully.", "success") else: flash( "Invalid file format. Valid formats are: " + app.config["ALLOWED_EXTENSIONS"], "danger") return [f.filename for f in files] db = data.load("data.json") if project_id == "add": form = forms.ModifyFormAdd(request.form, database=db) # Add new project. if request.method == "POST" and form.validate(): filenames = file_upload() db.append({}) for k, v in form.data.items(): if k == "techniques_used": v = v.split(" ") v = [x for x in v if x != ""] db[-1][k] = v elif k == "images": db[-1][k] = filenames else: db[-1][k] = v data.save(db, "data.json") flash("Project modified successfully.", "success") elif (project_id.isdigit() and int(project_id) in [x["project_id"] for x in db]): # Get current project and its index project = data.search(db, search=project_id, search_fields=["project_id"]) p_index = db.index(project[0]) form = forms.ModifyForm(request.form, data=project[0], database=db) file_upload() # Modify the project. if request.method == "POST" and form.validate(): flash("Project modified successfully.", "success") for k, v in form.data.items(): if project[0][k] != v: if k == "techniques_used": v = v.split(" ") v = [x for x in v if x != ""] project[0][k] = v data.save(db, "data.json") else: abort(404) # Instantiated WTForm of ModifyForm type class_kw = forms.class_kw return render_template("modify.html", **locals())
def listSearch(): db=load() srch=True field=get_fields(db) techniques=get_techniques(db) Search=request.form['Search'] techniqs=request.form.getlist('filters') sorting=request.form.getlist('Sort') fields=request.form.getlist('search_fields') if Search== '': Search=None if sorting[0] == 'date': date=True else: date=False if sorting[0] == 'etad': etad=True else: etad=False if sorting[0] == 'abcd': abcd=True else: abcd=False if sorting[0] == 'project_no': count=True else: count=False Stext=' ' projects=[] if fields==[]: if techniqs==[]: if Search == None: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=None,search=None,search_fields=None) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=None,search=None,search_fields=None) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=None,search=None,search_fields=None) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=None,search=None,search_fields=None) if search(db, sort_by='start_date',sort_order='desc',techniques=None,search=Search,search_fields=None) == 'error': Stext='Couldn\'t find what you were looking for, please try again.' srch=False else: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=None,search=Search,search_fields=None) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=None,search=Search,search_fields=None) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=None,search=Search,search_fields=None) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=None,search=Search,search_fields=None) return render_template('list.html',srch=srch, projects=projects, Stext=Stext, field=field, techniques=techniques) else: if Search == None: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=techniqs,search=None,search_fields=None) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=techniqs,search=None,search_fields=None) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=techniqs,search=None,search_fields=None) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=None,search_fields=None) if search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=Search,search_fields=None) == 'error': Stext='Couldn\'t find what you were looking for, please try again.' srch=False else: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=techniqs,search=Search,search_fields=None) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=techniqs,search=Search,search_fields=None) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=techniqs,search=Search,search_fields=None) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=Search,search_fields=None) return render_template('list.html',srch=srch, projects=projects, Stext=Stext, field=field, techniques=techniques) else: if techniqs==[]: if Search == None: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=None,search=None,search_fields=fields) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=None,search=None,search_fields=fields) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=None,search=None,search_fields=fields) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=None,search=None,search_fields=fields) if search(db, sort_by='start_date',sort_order='desc',techniques=None,search=Search,search_fields=fields) == 'error': Stext='Couldn\'t find what you were looking for, please try again.' srch=False else: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=None,search=Search,search_fields=fields) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=None,search=Search,search_fields=fields) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=None,search=Search,search_fields=fields) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=None,search=Search,search_fields=fields) return render_template('list.html',srch=srch, projects=projects, Stext=Stext, field=field, techniques=techniques) else: if Search == None: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=techniqs,search=None,search_fields=fields) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=techniqs,search=None,search_fields=fields) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=techniqs,search=None,search_fields=fields) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=None,search_fields=fields) if search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=Search,search_fields=fields) == 'error': Stext='Couldn\'t find what you were looking for, please try again.' srch=False else: if count==True: projects=search(db, sort_by='project_no',sort_order='desc',techniques=techniqs,search=Search,search_fields=fields) elif etad==True: projects=search(db, sort_by='start_date',sort_order='asc',techniques=techniqs,search=Search,search_fields=fields) elif abcd==True: projects=search(db, sort_by='project_name',sort_order='desc',techniques=techniqs,search=Search,search_fields=fields) else: projects=search(db, sort_by='start_date',sort_order='desc',techniques=techniqs,search=Search,search_fields=fields) return render_template('list.html',srch=srch, projects=projects, Stext=Stext, field=field, techniques=techniques)
def get_contact(name): contact_objs = elasticsearch.search(name=name, args=None) return jsonify(contact_objs)
def mylist(): """The "search" page. Displays all search option and all projects matching a search""" status = 0 db = data.load("data.json") if db == None: status = 1 else: tech_list = data.get_techniques(db) search_text = None field_list = [] checked_tech_list = [] if flask.request.method == 'POST': sort_o = u'desc' sort_by_field = 'start_date' key_number = 0 tech_number = 0 for key in db[0].keys(): key_number += 1 try: field_list.append(flask.request.form['field_'+key]) except: if key_number == len(db[0]) and field_list == []: field_list = None for tech in tech_list: tech_number += 1 try: checked_tech_list.append(flask.request.form['tech_'+tech]) except: if tech_number == len(tech_list) and checked_tech_list == []: checked_tech_list = None try: sort_by_field = (flask.request.form['sort_by_field']) except: pass search_text = flask.request.form['free_text'] if search_text == "": search_text = None try: sort_o = flask.request.form['ascending'] except: pass result = data.search(db=db, sort_by=sort_by_field, sort_order=sort_o, search=search_text, techniques=checked_tech_list, search_fields=field_list) else: result = data.search(db=db) if search_text == None: search_text = "" template_file = "list.jinja" template = env.get_template( template_file ) if status == 0: templateVars = { "status": status, "result" : result, "db" : db, "search_text" : search_text, "techs": tech_list, "checked_fields": field_list, "checked_techs": checked_tech_list, "style": flask.url_for('static',filename='style/style.css'), "projpic": flask.url_for('static', filename="images/") } logging.info('Searched for: '+search_text) elif status == 1: templateVars = { "status": status, "style" : flask.url_for('static',filename='style.css') } return template.render( templateVars )
def test_search(self): """ Test the implemented search function """ # Call search with no other parameters than the database. # All projects should be returned self.assertEqual(len(data.search(self.loaded_data)), 4) # Search for projects with csv as technique. # 1 project should be returned self.assertEqual( len(data.search(self.loaded_data, techniques=['csv'])), 1) # Search for project based on technique with both lower and uppercase and part # of technique: # ada - 1 project should be returned. self.assertEqual( len(data.search(self.loaded_data, techniques=['AdA'])), 1) # python - 3 projects should be returned. self.assertEqual( len(data.search(self.loaded_data, techniques=['PyTH'])), 3) # c++ - 1 project should be returned self.assertEqual( len(data.search(self.loaded_data, techniques=['C++'])), 1) # Ensure that search does not crash when inserting a number in techniques. # Nothing should be returned. self.assertEqual(len(data.search(self.loaded_data, techniques=[2])), 0) # Search for the character: '"' in all search_fields in the database with no techniques selected # 1 project should be returned res = data.search(self.loaded_data, techniques=[], search='"') self.assertEqual(len(res), 1) # Search for projects including Python and sort them in ascending order. # Ensure that returned projects are sorted by ascending dates res = data.search(self.loaded_data, sort_order='asc', techniques=["python"]) self.assertEqual(res[0]['start_date'], '2009-09-05') self.assertEqual(res[1]['start_date'], '2009-09-07') self.assertEqual(res[2]['start_date'], '2009-09-08') # Search for the term 'okänt' in three specified search fields. Sort # results by end_date. # Ensure that projects are returned in the correct order. res = data.search( self.loaded_data, sort_by="end_date", search='okänt', search_fields=['project_id', 'project_name', 'course_name']) self.assertEqual(len(res), 3) self.assertEqual(res[0]['project_id'], 2) self.assertEqual(res[1]['project_id'], 3) self.assertEqual(res[2]['project_id'], 1) # Search for 'okänt' in specified search fields. # Ensure correct number of results res = data.search( self.loaded_data, search="okänt", search_fields=["project_id", "project_name", "course_name"]) self.assertEqual(len(res), 3) # Search for 'okänt' in specified search fields, provide empty technique list # Ensure correct number of results res = data.search( self.loaded_data, techniques=[], search="okänt", search_fields=["project_id", "project_name", "course_name"]) self.assertEqual(len(res), 3) # Search for 'okänt', provide empty search fields list # Ensure 0 results res = data.search(self.loaded_data, search="okänt", search_fields=[]) self.assertEqual(len(res), 0) # Search for 'okänt' without specifying search fields. Sort by project_id # Ensure 3 results in ascending order res = data.search(self.loaded_data, sort_order="asc", sort_by="project_id", search="okänt") self.assertEqual(len(res), 3) self.assertEqual(res[0]['project_id'], 1) self.assertEqual(res[1]['project_id'], 2) self.assertEqual(res[2]['project_id'], 3) # Search for lowercase string with uppercase # Ensure correct handling of upper- and lowercase search res = data.search(self.loaded_data, search="NO NO NO") self.assertEqual(len(res), 4) # Search for '8' without specifying search fields. # Ensure 3 results res = data.search(self.loaded_data, search="8") self.assertEqual(len(res), 3) # Search with results sorted by group size. # Ensure results are in descending order res = data.search(self.loaded_data, sort_by='group_size') self.assertEqual(res[0]['project_id'], 4) #1 self.assertEqual(res[1]['project_id'], 2) #2 self.assertEqual(res[2]['project_id'], 3) #3 self.assertEqual(res[3]['project_id'], 1) #4 # Search for 'no n' # Ensure 4 results res = data.search(self.loaded_data, search='no n') self.assertEqual(len(res), 4) # Search for integer '09'. # Ensure 4 results sorted by start_date in descending order. res = data.search(self.loaded_data, sort_by='start_date', sort_order='desc', search='09') self.assertEqual(len(res), 4) self.assertEqual(res[0]['start_date'], '2009-09-08') self.assertEqual(res[1]['start_date'], '2009-09-07') self.assertEqual(res[2]['start_date'], '2009-09-06') self.assertEqual(res[3]['start_date'], '2009-09-05')
def search_all(sort_by='start_date', sort_order='desc', techniques=None, search=None, search_fields=None): db = data.load('data.json') return data.search(db, sort_by, sort_order, techniques, search, search_fields)
def search(fields): db = data.load('data.json') return data.search(db, search=str(fields) ,search_fields = ['project_no'])[0]
def render_techniques(): db = data.load('data.json') technique_dict = data.get_technique_stats(db) return render_template("techniques.html", title = "Tekniker", techniques = technique_dict, projects = data.search(db))
print("remove error") import data as d d.sqlInit() d.insert('p001', 'c01', 'single', 't1 t2 t3', '3') #1 d.insert('p002', 'c01', 'single', 't1', '2') #2 d.insert('p003', 'c01', 'single', 't2 t1 t3', '2') #3 d.insert('p010', 'c03', 'single', 't3 t2 t1', '0') #4 d.insert('p011', 'c02', 'single', 't1 t3', '0') #5 d.insert('p021', 'c02', 'single', 't1 t2 t3', '1') #6 d.insert('x000', 'c03', 'set', 't1 t2 t3', '3') #7 d.insert('x010', 'c05', 'single', 't2', '3') #8 d.insert('p021', 'c02', 'single', 't1 t2 t3', '4') #9 r1 = d.search(['t1']) pt(r1, 'r1') r2 = d.search([], [], [2, 3]) pt(r2, 'r2') r3 = d.search(['t1'], ['c02'], [1]) pt(r3, 'r3') r4 = d.search(['t1', 't2']) pt(r4, 'r4') r5 = d.search([], [], [3]) pt(r5, 'r5') r6 = d.search([], ['c03']) pt(r6, 'r6') r7 = d.search([], ['c01', 'c02']) pt(r7, 'r7')