turn search into include, limit user results, minimum term search 2, show date of address addition

This commit is contained in:
dsc 2022-03-12 22:06:22 +02:00
parent 37208b102b
commit b13f03855d
10 changed files with 50 additions and 48 deletions

View file

@ -1,5 +1,6 @@
import os
import logging
from datetime import datetime
import asyncio
from quart import Quart, url_for, jsonify, render_template, session
@ -63,7 +64,8 @@ def create_app():
current_user = session.get('user')
if current_user:
current_user = User(**current_user)
return dict(user=current_user, url_login=openid.endpoint_name_login)
now = datetime.now()
return dict(user=current_user, url_login=openid.endpoint_name_login, year=now.year)
@app.before_serving
async def startup():

View file

@ -12,16 +12,24 @@ db = SqliteDatabase(settings.DB_PATH)
class User(pw.Model):
id = pw.UUIDField(primary_key=True)
created = pw.DateTimeField(default=datetime.now)
created: datetime = pw.DateTimeField(default=datetime.now)
username = pw.CharField(unique=True, null=False)
address = pw.CharField(null=True)
@property
def created_dt(self):
return self.created.strftime('%Y-%m-%d')
@staticmethod
async def search(needle) -> List['User']:
needle = needle.replace("*", "")
if len(needle) <= 2:
if len(needle) <= 1:
raise Exception("need longer search term")
return User.select().where(User.username % f"*{needle}*")
return User.select().where(
User.address.is_null(False),
User.username % f"*{needle}*"
)
def to_json(self, ignore_key=None):
data = {

View file

@ -53,7 +53,7 @@ async def dashboard_address_post():
async def search():
needle = request.args.get('username')
if needle:
if len(needle) <= 2:
if len(needle) <= 1:
raise Exception("Search term needs to be longer")
users = [u for u in await User.search(needle)]
@ -62,7 +62,11 @@ async def search():
else:
return await render_template('search_results.html')
users = [u for u in User.select()]
q = User.select()
q = q.where(User.address.is_null(False))
q = q.limit(100)
users = [u for u in q]
return await render_template('search.html', users=users)

View file

@ -77,7 +77,7 @@
</div>
<div id="footer">
2022 - ... [the future is w0w]
{{ year }} - ... [the future is w0w]
</div>
</body>
</html>

View file

@ -9,7 +9,7 @@
<a href="{{ url_for('bp_routes.login') }}">Login</a>
{% else %}
<a href="{{ url_for('bp_routes.logout') }}">Logout</a>
<a href="{{ url_for('bp_routes.dashboard') }}">Dashboard</a>
<a href="{{ url_for('bp_routes.dashboard') }}">My Profile</a>
{% endif %}
<a href="{{ url_for('bp_routes.search') }}">Yell<span>WOW</span>Page search</a>
<a href="{{ url_for('bp_routes.about') }}">About</a>

View file

@ -0,0 +1,3 @@
<form action="{{ url_for('bp_routes.search') }}" method="GET">
<input type="text" name="username" placeholder="Search for an username...">
</form>

View file

@ -0,0 +1,11 @@
<div id="addresses">
{% for user in users %}
<article>
<header>
<em>{{user.username}}</em>
<small style="float: right">Added: {{ user.created_dt }}</small>
</header>
<kbd>{{user.address}}</kbd>
</article>
{% endfor %}
</div>

View file

@ -10,7 +10,13 @@
</main>
<div>
The first <img src="../../static/wownero.png" alt=""> addresses library -
from the community to the community
from the community, for the community.
</div>
<br><br>
<div style="margin-top:40px;">
<a style="text-decoration: none;" href="{{ url_for('bp_routes.search') }}">
<button style="max-width:320px;">start searching</button>
</a>
</div>
</div>

View file

@ -5,20 +5,9 @@
</div>
<div id="main">
<form action="{{ url_for('bp_routes.search') }}" method="GET">
<input type="text" name="username" placeholder="Search for an username...">
</form>
{% include 'includes/search.html' %}
<div id="addresses">
{% for user in users %}
<article>
<header>
<em>{{user.username}}</em>
</header>
<kbd>{{user.address}}</kbd>
</article>
{% endfor %}
</div>
{% include 'includes/user_results.html' %}
</div>
<style>
@ -43,12 +32,6 @@
display: none;
}
#footer {
height: 12vh;
width: 100%;
text-align: center;
}
@media (max-width: 800px) {
kbd {
width: 100vw;

View file

@ -5,25 +5,15 @@
</div>
<div id="main">
<form action="{{ url_for('bp_routes.search') }}" method="GET">
<input type="text" name="username" placeholder="Username to search">
</form>
{% include 'includes/search.html' %}
<br>
Result(s): {{users|length}}
{% if not users %}
<br>Nothing found...
{% else %}
<div id="addresses">
{% for user in users %}
<article>
<header>
<em>{{user.username}}</em>
</header>
<kbd>{{user.address}}</kbd>
</article>
{% endfor %}
</div>
{% include 'includes/user_results.html' %}
{% endif %}
</div>
@ -45,11 +35,6 @@
#addresses::-webkit-scrollbar{
display: none;
}
#footer{
height: 12vh;
width: 100%;
text-align: center;
}
@media (max-width: 800px) {
kbd{
width: 100vw;