commit
8f06ed09a0
3 changed files with 160 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||||
|
import streamlit as st |
||||||
|
import streamlit_authenticator as stauth |
||||||
|
import yaml |
||||||
|
from yaml.loader import SafeLoader |
||||||
|
import main |
||||||
|
|
||||||
|
with open('credentials.yaml') as file: |
||||||
|
config = yaml.load(file, Loader=SafeLoader) |
||||||
|
|
||||||
|
authenticator = stauth.Authenticate( |
||||||
|
config['credentials'], |
||||||
|
config['cookie']['name'], |
||||||
|
config['cookie']['key'], |
||||||
|
config['cookie']['expiry_days'], |
||||||
|
config['preauthorized'] |
||||||
|
) |
||||||
|
|
||||||
|
name, authentication_status, username = authenticator.login('Logga in', 'main') |
||||||
|
|
||||||
|
if authentication_status: |
||||||
|
user_input = str(st.text_input('Skriv in telefonnummer eller Facebook-ID', )).strip() |
||||||
|
if user_input != '': |
||||||
|
s = [] |
||||||
|
for i in user_input: |
||||||
|
if i.isnumeric(): |
||||||
|
s.append(str(i)) |
||||||
|
s = ''.join(s) |
||||||
|
|
||||||
|
if s[0] == '0': |
||||||
|
s = '46' + s[1:] |
||||||
|
|
||||||
|
# Search for info. |
||||||
|
r = main.search(s) |
||||||
|
|
||||||
|
if r != None: |
||||||
|
if r['column_find'] == 'ID': |
||||||
|
id = r['find'] |
||||||
|
r['find'] = f'<a href="http://facebook.com/{id}">{id}</a>' |
||||||
|
st.write(f"{r['name']}, {r['column_find']}: {r['find']}", unsafe_allow_html=True) |
||||||
|
|
||||||
|
with st.expander('Mer information'): |
||||||
|
st.dataframe(r['df'], use_container_width=True) |
||||||
|
else: |
||||||
|
st.text('Not found.') |
||||||
|
st.markdown(':red[Vid frågor mejla lasse@edfast.se]') |
||||||
|
|
||||||
|
elif authentication_status is False: |
||||||
|
st.error('Fel användarnamn/lösenord') |
||||||
|
|
||||||
|
elif authentication_status is None: |
||||||
|
st.warning('Skriv in användarnamn och lösenord') |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,50 @@ |
|||||||
|
import pandas as pd |
||||||
|
from sqlalchemy import create_engine |
||||||
|
|
||||||
|
def search(s): |
||||||
|
# Create the database engine and session |
||||||
|
engine = create_engine('sqlite:///fb_sweden.db') |
||||||
|
|
||||||
|
if any([all([s[:2]=='07', len(s)==10]), all([s[:2]=='46', len(s)==11])]): |
||||||
|
column_search = 'phone' |
||||||
|
column_find = 'id' |
||||||
|
else: |
||||||
|
column_search = 'id' |
||||||
|
column_find = 'phone' |
||||||
|
|
||||||
|
# Construct SQL query. |
||||||
|
sql = f'select * from sweden where {column_search} = {s}' |
||||||
|
|
||||||
|
# Make a df from query. |
||||||
|
df = pd.read_sql(sql, engine) |
||||||
|
|
||||||
|
if len(df) > 0: |
||||||
|
# Format data returned. |
||||||
|
name = f"{df['first_name'][0]} {df['last_name'][0]}" |
||||||
|
r = str(df[column_find][0]) |
||||||
|
if column_find == 'phone': |
||||||
|
r = f'0{r[2:4]} - {r[4:7]} {r[7:9]} {r[9:]}' |
||||||
|
column_find = 'telefon' |
||||||
|
column_search = 'ID' |
||||||
|
else: |
||||||
|
column_find = 'ID' |
||||||
|
column_search = 'Telefon' |
||||||
|
|
||||||
|
df = pd.DataFrame(df.transpose()) |
||||||
|
df.columns = [s] |
||||||
|
df.rename({'first_name': 'Förnamn', |
||||||
|
'last_name':'Efternamn', |
||||||
|
'phone':'Telefon', 'email':'Epost', |
||||||
|
'sex': 'Kön', |
||||||
|
'city': 'Ort', |
||||||
|
'relation_status':'Relation', |
||||||
|
'work': 'Arbetsplats', |
||||||
|
'place': 'Adress', |
||||||
|
'year': 'År', |
||||||
|
'born': 'Född', |
||||||
|
'id': 'ID' |
||||||
|
}, axis=0, inplace=True) |
||||||
|
df.dropna(inplace=True) |
||||||
|
df = df.drop(column_search) |
||||||
|
|
||||||
|
return ({'find': r, 'column_find': column_find, 'name': name, 'df':df}) |
||||||
@ -0,0 +1,57 @@ |
|||||||
|
altair==5.0.1 |
||||||
|
attrs==23.1.0 |
||||||
|
backports.zoneinfo==0.2.1 |
||||||
|
bcrypt==4.0.1 |
||||||
|
blinker==1.6.2 |
||||||
|
cachetools==5.3.1 |
||||||
|
certifi==2023.5.7 |
||||||
|
charset-normalizer==3.1.0 |
||||||
|
click==8.1.4 |
||||||
|
decorator==5.1.1 |
||||||
|
extra-streamlit-components==0.1.56 |
||||||
|
gitdb==4.0.10 |
||||||
|
GitPython==3.1.31 |
||||||
|
greenlet==2.0.2 |
||||||
|
idna==3.4 |
||||||
|
importlib-metadata==6.7.0 |
||||||
|
importlib-resources==5.12.0 |
||||||
|
Jinja2==3.1.2 |
||||||
|
jsonschema==4.18.0 |
||||||
|
jsonschema-specifications==2023.6.1 |
||||||
|
markdown-it-py==3.0.0 |
||||||
|
MarkupSafe==2.1.3 |
||||||
|
mdurl==0.1.2 |
||||||
|
numpy==1.24.4 |
||||||
|
packaging==23.1 |
||||||
|
pandas==2.0.3 |
||||||
|
Pillow==9.5.0 |
||||||
|
pkgutil_resolve_name==1.3.10 |
||||||
|
protobuf==4.23.4 |
||||||
|
pyarrow==12.0.1 |
||||||
|
pydeck==0.8.1b0 |
||||||
|
Pygments==2.15.1 |
||||||
|
PyJWT==2.7.0 |
||||||
|
Pympler==1.0.1 |
||||||
|
python-dateutil==2.8.2 |
||||||
|
pytz==2023.3 |
||||||
|
pytz-deprecation-shim==0.1.0.post0 |
||||||
|
PyYAML==6.0 |
||||||
|
referencing==0.29.1 |
||||||
|
requests==2.31.0 |
||||||
|
rich==13.4.2 |
||||||
|
rpds-py==0.8.8 |
||||||
|
six==1.16.0 |
||||||
|
smmap==5.0.0 |
||||||
|
SQLAlchemy==2.0.18 |
||||||
|
streamlit==1.24.0 |
||||||
|
streamlit-authenticator==0.2.2 |
||||||
|
tenacity==8.2.2 |
||||||
|
toml==0.10.2 |
||||||
|
toolz==0.12.0 |
||||||
|
tornado==6.3.2 |
||||||
|
typing_extensions==4.7.1 |
||||||
|
tzdata==2023.3 |
||||||
|
tzlocal==4.3.1 |
||||||
|
urllib3==2.0.3 |
||||||
|
validators==0.20.0 |
||||||
|
zipp==3.15.0 |
||||||
Loading…
Reference in new issue