Example #1
0
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())) 
Example #2
0
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)
Example #3
0
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 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)
Example #5
0
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)
Example #6
0
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)])
Example #7
0
def techniques():
    """The "technique" page. Displays all techniques in a database and all projects related to them"""
    status = 0
    db = data.load("data.json")
    if db == None:
        status = 1
    else:
        techs = data.get_techniques(db)

    template_file = "techniques.jinja"
    template = env.get_template( template_file )
    if status == 0:
        templateVars = { "status": status, "techs" : techs, "stats" : data.get_technique_stats(db), "style": flask.url_for('static',filename='style/style.css') }
    else:
        templateVars = { "status": status }

    return template.render( templateVars )
Example #8
0
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)
Example #9
0
def techniques_show(t):
    """ Listar projekt med specifik teknik """
    db = data_load()
    # Kolla statistik
    stats = data.get_technique_stats(db)
    # Kolla om den sökta tekniken finns i databasen
    if not t in stats:
        # Den fanns inte, skicka till 404
        return render_template("404.html", e="404")
    # Ladda teknikvy-sidan
    return render_template(
        "techniques_show.html",
        namn=t,
        techniques=data.get_techniques(db),
        db=db,
        stats=stats[t],
        id=[data.get_project(db, x) for x in range(len(db))],
    )
Example #10
0
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())
Example #11
0
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)
Example #12
0
 def test_get_techniques(self):
     res = data.get_techniques(self.loaded_data)
     self.assertEqual(res, self.expected_technique_data)
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)
Example #14
0
def list():
	db = data.load("data.json") 
	return render_template("list.html", data=[db, data.get_techniques(db)])
Example #15
0
def techniques():
    """ Sidan som listar tekniker """
    db = data_load()
    return render_template("techniques.html", techniques=data.get_techniques(db), db=db)
Example #16
0
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 )
Example #17
0
def search():
    """ Söksidan"""
    db = data_load()
    return render_template("search.html", techniques=data.get_techniques(db), tlen=len(data.get_techniques(db)))
def techniques():
	db=load()
	techs=get_techniques(db)
	techniqs=get_technique_stats(db)
	return render_template('techniques.html',techs=techs, techniqs=techniqs)
Example #19
0
    def test_get_techniques(self):
        """ Test the implemented get_techniques function """

        res = data.get_techniques(self.loaded_data)
        self.assertEqual(res, self.expected_technique_data)
Example #20
0
def techniques():
    """Redirects to techniques.html"""
    log('techniques.html')
    techniques = data.get_techniques(db)
    return render_template('techniques.html', all_techniques=all_techniques, data=data, techniques=techniques, db=db)
Example #21
0
# -*- coding-utf-8 -*-
"""Server module that makes the website able to run, also redirects the
links to the right pages."""

from flask import Flask, request, url_for, render_template
import data

# Database (data.json).
db = data.load('data.json')

# List of all used techniques.
all_techniques = data.get_techniques(db)

# Variabel used to run the website.
app = Flask(__name__)
app.debug = True

import datetime
def log(page, data=None):
    """Takes a page name and an optional data parameter.
    Saves the result nicely formatted in log.log (creates the log file if
    it doesn't allready exist)."""
    date = datetime.datetime.now()
    date = date.strftime("%Y-%M-%D %H:%M")
    if data:
        log_text = date + '\t' + 'accessed: ' + page + '\t' + 'with ' + data + '\n'
    else:
        log_text = date + '\t' + 'accessed: ' + page + '\n'
    with open('log.log', 'a') as log:
        log.write(log_text)
Example #22
0
 def test_get_techniques(self):
     res = data.get_techniques(self.loaded_data)
     self.assertEqual(res, self.expected_technique_data)