Some refactoring and documentation (docstrings).
parent
b0ed3cc800
commit
b910e2649e
75
notes.py
75
notes.py
|
@ -75,46 +75,11 @@ def home(subject= "mechanika", datestring= "14grudnia2012"):
|
|||
other_dates.remove(datestring)
|
||||
thumbs_info = {"subject": subject, "datestring": datestring, "other_dates": other_dates}
|
||||
|
||||
print thumbs
|
||||
thumbs = [dict(href=thumb.href, src=thumb.src) for thumb in thumbs]
|
||||
main_page_src=thumbs[0]["href"]
|
||||
print all_dates
|
||||
return render_template('index.html', thumbs=thumbs, main_page_src=main_page_src,thumbs_info=thumbs_info,
|
||||
all_dates=all_dates, all_subjects=all_subjects)
|
||||
|
||||
def prepare_all_dates():
|
||||
all_dates = [date["datestring"] for date in get_all_dates()]
|
||||
datastrings = [date["datestring"] for date in get_all_dates()]
|
||||
all_dates = [convert_datestring_to_date(date) for date in datastrings]
|
||||
sorted_dates = {}
|
||||
for date, datestring in zip(all_dates, datastrings):
|
||||
if not date.datetime.year in sorted_dates:
|
||||
sorted_dates[date.datetime.year] = {}
|
||||
if not date.datetime.month in sorted_dates[date.datetime.year]:
|
||||
sorted_dates[date.datetime.year][date.datetime.month] = []
|
||||
sorted_dates[date.datetime.year][date.datetime.month].append({"day" : date.datetime.day, "source": datestring,
|
||||
"weekday": weekday(date.datetime.weekday())})
|
||||
sorted = sort_number_strings(sorted_dates[date.datetime.year][date.datetime.month])
|
||||
sorted_dates[date.datetime.year][date.datetime.month] = sorted
|
||||
print sorted_dates
|
||||
return sorted_dates
|
||||
|
||||
def sort_number_strings(data):
|
||||
number_data = [int(day["day"]) for day in data]
|
||||
number_data.sort()
|
||||
print "sorted date" + str(number_data)
|
||||
return [{"day": number, "source": data[get_index_for(number, data)]["source"],
|
||||
"weekday": data[get_index_for(number, data)]["weekday"] } for i, number in enumerate(number_data)]
|
||||
|
||||
def weekday(number):
|
||||
weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
||||
return weekdays[number]
|
||||
def get_index_for(number, data):
|
||||
index = 0
|
||||
for i, day in enumerate(data):
|
||||
if day["day"] == number:
|
||||
index = i
|
||||
return index
|
||||
|
||||
@app.route('/subject/<subject>')
|
||||
def show_subject(subject):
|
||||
|
@ -168,7 +133,6 @@ def get_thumbs(subject, datestring=""):
|
|||
else:
|
||||
query_result = query_db("select pages.* from pages left join notes on notes.id = pages.note_id \
|
||||
where notes.subject = ? and datestring = ?", [subject, datestring])
|
||||
print query_result
|
||||
return [create_thumb(subject, datestring, t["name"], t["tags"]) for t in query_result ]
|
||||
|
||||
def get_possible_dates(subject):
|
||||
|
@ -176,20 +140,57 @@ def get_possible_dates(subject):
|
|||
return dates
|
||||
|
||||
def get_notes_for_day(datestring):
|
||||
"""returns pages which where written that day (daystring) with other info"""
|
||||
"""return pages which where written that day (daystring) with other info"""
|
||||
query_result = query_db("select pages.*,notes.subject from pages left join notes on notes.id = pages.note_id \
|
||||
where datestring = ?", [datestring])
|
||||
return [{"subject": t["subject"], "datestring": datestring, "name": t["name"]}for t in query_result ]
|
||||
|
||||
def get_all_dates():
|
||||
"""return all dates from database"""
|
||||
dates = query_db("select distinct datestring from notes ")
|
||||
return dates
|
||||
|
||||
def get_all_subjects():
|
||||
"""return all subject from database"""
|
||||
subjects = query_db("select distinct subject from notes ")
|
||||
return subjects
|
||||
|
||||
def prepare_all_dates():
|
||||
"""return all dates in well formated form of nested dictionaries"""
|
||||
all_dates = [date["datestring"] for date in get_all_dates()]
|
||||
datastrings = [date["datestring"] for date in get_all_dates()]
|
||||
all_dates = [convert_datestring_to_date(date) for date in datastrings]
|
||||
sorted_dates = {}
|
||||
for date, datestring in zip(all_dates, datastrings):
|
||||
if not date.datetime.year in sorted_dates:
|
||||
sorted_dates[date.datetime.year] = {}
|
||||
if not date.datetime.month in sorted_dates[date.datetime.year]:
|
||||
sorted_dates[date.datetime.year][date.datetime.month] = []
|
||||
sorted_dates[date.datetime.year][date.datetime.month].append({"day" : date.datetime.day, "source": datestring,
|
||||
"weekday": weekday(date.datetime.weekday())})
|
||||
sorted = sort_number_strings(sorted_dates[date.datetime.year][date.datetime.month])
|
||||
sorted_dates[date.datetime.year][date.datetime.month] = sorted
|
||||
return sorted_dates
|
||||
|
||||
def sort_number_strings(data):
|
||||
"""return array of dictionaries sorted by day treated as a number, i.e. 12 is after 3."""
|
||||
number_data = [int(day["day"]) for day in data]
|
||||
number_data.sort()
|
||||
return [{"day": number, "source": data[get_index_for(number, data)]["source"],
|
||||
"weekday": data[get_index_for(number, data)]["weekday"] } for i, number in enumerate(number_data)]
|
||||
|
||||
def weekday(number):
|
||||
"""return name of the weekday for a specific number in range 0-6"""
|
||||
weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
||||
return weekdays[number]
|
||||
|
||||
def get_index_for(number, data):
|
||||
"""get index of dictionary which day value equals number"""
|
||||
index = 0
|
||||
for i, day in enumerate(data):
|
||||
if day["day"] == number:
|
||||
index = i
|
||||
return index
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
||||
|
|
|
@ -9,22 +9,22 @@ $("document").ready( function(){
|
|||
|
||||
</script>
|
||||
<div class="container ">
|
||||
<h1>About</h1>
|
||||
<h2>About</h2>
|
||||
<p>
|
||||
This application is a reader of notes. You can easily browse any notes which are uploaded and indexed.
|
||||
</p>
|
||||
<p>
|
||||
Later on easy download, uploading, searching, tagging and commenting will be implemented.
|
||||
</p>
|
||||
<h1>User guide</h1>
|
||||
<h2>User guide</h2>
|
||||
<p>
|
||||
Select a subject from navigation bar menu. Then you will be able to see, which notes are uploaded.There is link, view and download buttons click on anything you are interested in.
|
||||
</p>
|
||||
<h1>Why? What for? Motivation</h1>
|
||||
<h2>Why? What for? Motivation</h2>
|
||||
<p>
|
||||
I like digital notes. But I encountered some problems, it wasn't very comfortable. I wanted to improve it. I wanted to share, to have easy access and automated updates and maintainence. So I made nooz. I am still working on it.
|
||||
</p>
|
||||
<h1>How was it made?</h1>
|
||||
<h2>How was it made?</h2>
|
||||
<p>
|
||||
Whole app is written in python. I used flask, amazing, fast, simple python web framework as backend. To make it look somehow I used twitter bootstrap. As database I use sqlite3.
|
||||
</p>
|
||||
|
|
|
@ -75,10 +75,10 @@ $("document").ready( function(){
|
|||
</a>
|
||||
<ul class="pager">
|
||||
<li class="previous">
|
||||
<a href="" id="older">← Older</a>
|
||||
<a href="" id="older">← Previous</a>
|
||||
</li>
|
||||
<li class="next">
|
||||
<a href="" id="newer">Newer →</a>
|
||||
<a href="" id="newer">Next →</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -7,38 +7,35 @@
|
|||
<meta name="description" content="Home page of Attero">
|
||||
<meta name="author" content="Justyna Ilczuk" >
|
||||
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
|
||||
<script src="{{ url_for('static', filename='bootstrap/js/bootstrap.js') }}"></script>
|
||||
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap/css/bootstrap.css') }}">
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
|
||||
<script src="{{ url_for('static', filename='bootstrap/js/bootstrap.js') }}"></script>
|
||||
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap/css/bootstrap.css') }}">
|
||||
|
||||
|
||||
<script type=text/javascript>
|
||||
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
|
||||
</script>
|
||||
<script type=text/javascript>
|
||||
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
|
||||
</script>
|
||||
|
||||
<script >
|
||||
<script >
|
||||
|
||||
$("document").ready( function() {
|
||||
$('.submenu').hover(function () {
|
||||
console.log("hover");
|
||||
$(this).children('ul').removeClass('submenu-hide').addClass('submenu-show');
|
||||
|
||||
}, function () {
|
||||
console.log("hide");
|
||||
$(this).children('ul').removeClass('.submenu-show').addClass('submenu-hide');
|
||||
}).find("a:first").append(" » ");
|
||||
$("document").ready( function() {
|
||||
$('.submenu').hover(function () {
|
||||
console.log("hover");
|
||||
$(this).children('ul').removeClass('submenu-hide').addClass('submenu-show');
|
||||
|
||||
}, function () {
|
||||
console.log("hide");
|
||||
$(this).children('ul').removeClass('.submenu-show').addClass('submenu-hide');
|
||||
}).find("a:first").append(" » ");
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
|
@ -90,7 +87,7 @@ $("document").ready( function() {
|
|||
</div>
|
||||
|
||||
|
||||
<div class="navbar well-small">
|
||||
<div class="navbar well-small navbar-inverse">
|
||||
<div class="navbar-inner">
|
||||
<ul class="nav">
|
||||
<li class="active" id="home"><a href="/view" >Home</a></li>
|
||||
|
@ -136,40 +133,37 @@ $("document").ready( function() {
|
|||
|
||||
<ul class="dropdown-menu">
|
||||
<li class="nav-header">Year</li>
|
||||
{%- for key, year in all_dates.items() recursive %}
|
||||
{%- for key, year in all_dates.items() recursive %}
|
||||
|
||||
<li class="dropdown submenu">
|
||||
|
||||
<a href="#" class="dropdown-toggle" id="{{key}}" data-toggle="dropdown">{{key}}</a>
|
||||
<a href="#" class="dropdown-toggle" id="{{key}}" data-toggle="dropdown">{{key}}</a>
|
||||
{%- if year %}
|
||||
|
||||
<ul class="dropdown-menu submenu-hide">
|
||||
<li class="nav-header">Month</li>
|
||||
{% for month, days in year.items() %}
|
||||
|
||||
<li class="dropdown submenu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{month}}</a>
|
||||
|
||||
<ul class="dropdown-menu submenu-show submenu-hide">
|
||||
<li class="nav-header">Day</li>
|
||||
{% for day in days %}
|
||||
<li><a href="/date/{{day.source}}">{{day.weekday}}, {{day.day}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<ul class="dropdown-menu submenu-hide">
|
||||
<li class="nav-header">Month</li>
|
||||
{% for month, days in year.items() %}
|
||||
|
||||
<li class="dropdown submenu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{month}}</a>
|
||||
|
||||
<ul class="dropdown-menu submenu-show submenu-hide">
|
||||
<li class="nav-header">Day</li>
|
||||
{% for day in days %}
|
||||
<li><a href="/date/{{day.source}}">{{day.weekday}}, {{day.day}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{%-endif%}
|
||||
</li>
|
||||
{%- endfor %}
|
||||
|
||||
{%-endif%}
|
||||
</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<li id="search" ><a href="/search" >Advanced search</a></li>
|
||||
</li>
|
||||
|
@ -177,8 +171,6 @@ $("document").ready( function() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
{% block body %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -9,7 +9,7 @@ $("document").ready( function(){
|
|||
|
||||
</script>
|
||||
<div class="container ">
|
||||
<h1>Search</h1>
|
||||
<h2>Search</h2>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in New Issue