add update from radioid.net
This commit is contained in:
parent
d1a7faf29c
commit
cb81326da2
@ -41,13 +41,21 @@ def get_ids(callsign):
|
||||
url = "https://www.radioid.net"
|
||||
response = requests.get(url+"/api/dmr/user/?callsign=" + callsign)
|
||||
result = response.json()
|
||||
print(result)
|
||||
# id_list = []
|
||||
id_list = {}
|
||||
f_name = result['results'][0]['fname']
|
||||
l_name = result['results'][0]['surname']
|
||||
try:
|
||||
city = str(result['results'][0]['city'] + ', ' + result['results'][0]['state'] + ', ' + result['results'][0]['country'])
|
||||
except:
|
||||
city = result['results'][0]['country']
|
||||
for i in result['results']:
|
||||
id_list[i['id']] = ''
|
||||
return str(id_list)
|
||||
return str([id_list, f_name, l_name, city])
|
||||
except:
|
||||
return ''
|
||||
|
||||
|
||||
# Return string in NATO phonetics
|
||||
def convert_nato(string):
|
||||
@ -77,10 +85,11 @@ def convert_nato(string):
|
||||
|
||||
# Class-based application configuration
|
||||
class ConfigClass(object):
|
||||
from config import MAIL_SERVER, MAIL_PORT, MAIL_USE_SSL, MAIL_USE_TLS, MAIL_USERNAME, MAIL_PASSWORD, MAIL_DEFAULT_SENDER, USER_ENABLE_EMAIL, USER_ENABLE_USERNAME, USER_REQUIRE_RETYPE_PASSWORD, USER_ENABLE_CHANGE_USERNAME, USER_ENABLE_MULTIPLE_EMAILS, USER_ENABLE_CONFIRM_EMAIL, USER_ENABLE_REGISTER, USER_AUTO_LOGIN_AFTER_CONFIRM, USER_SHOW_USERNAME_DOES_NOT_EXIST
|
||||
""" Flask application config """
|
||||
|
||||
# Flask settings
|
||||
SECRET_KEY = 'HFJGKSDGHFJKDFSGHJGFHJ'
|
||||
SECRET_KEY = secret_key
|
||||
|
||||
# Flask-SQLAlchemy settings
|
||||
SQLALCHEMY_DATABASE_URI = db_location # File-based SQL database
|
||||
@ -89,6 +98,8 @@ class ConfigClass(object):
|
||||
# Flask-User settings
|
||||
USER_APP_NAME = title # Shown in and email templates and page footers
|
||||
USER_EMAIL_SENDER_EMAIL = MAIL_DEFAULT_SENDER
|
||||
USER_EDIT_USER_PROFILE_TEMPLATE = 'flask_user/edit_user_profile.html'
|
||||
|
||||
|
||||
|
||||
|
||||
@ -125,6 +136,7 @@ def create_app():
|
||||
first_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
|
||||
last_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
|
||||
dmr_ids = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
|
||||
city = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
|
||||
# Define the relationship to Role via UserRoles
|
||||
roles = db.relationship('Role', secondary='user_roles')
|
||||
|
||||
@ -165,14 +177,28 @@ def create_app():
|
||||
@user_registered.connect_via(app)
|
||||
def _after_user_registered_hook(sender, user, **extra):
|
||||
edit_user = User.query.filter(User.username == user.username).first()
|
||||
edit_user.dmr_ids = get_ids(user.username)
|
||||
edit_user.dmr_ids = str(ast.literal_eval(get_ids(user.username))[0])
|
||||
edit_user.first_name = str(ast.literal_eval(get_ids(user.username))[1])
|
||||
edit_user.last_name = str(ast.literal_eval(get_ids(user.username))[2])
|
||||
edit_user.city = str(ast.literal_eval(get_ids(user.username))[3])
|
||||
user_role = UserRoles(
|
||||
user_id=edit_user.id,
|
||||
role_id=2,
|
||||
)
|
||||
db.session.add(user_role)
|
||||
edit_user.active = default_account_state
|
||||
db.session.commit()
|
||||
|
||||
|
||||
|
||||
def update_from_radioid(callsign):
|
||||
edit_user = User.query.filter(User.username == callsign).first()
|
||||
edit_user.dmr_ids = str(ast.literal_eval(get_ids(callsign))[0])
|
||||
edit_user.first_name = str(ast.literal_eval(get_ids(callsign))[1])
|
||||
edit_user.last_name = str(ast.literal_eval(get_ids(callsign))[2])
|
||||
edit_user.city = str(ast.literal_eval(get_ids(callsign))[3])
|
||||
|
||||
db.session.commit()
|
||||
|
||||
# The Home page is accessible to anyone
|
||||
@app.route('/')
|
||||
def home_page():
|
||||
@ -308,12 +334,31 @@ def create_app():
|
||||
#return str(content)
|
||||
return render_template('view_passphrase.html', markup_content = Markup(content))
|
||||
|
||||
# The Members page is only accessible to authenticated users via the @login_required decorator
|
||||
@app.route('/members')
|
||||
## # The Members page is only accessible to authenticated users via the @login_required decorator
|
||||
## @app.route('/members')
|
||||
## @login_required # User must be authenticated
|
||||
## def member_page():
|
||||
## content = 'Mem only'
|
||||
## return render_template('flask_user_layout.html', markup_content = content)
|
||||
|
||||
@app.route('/update_ids', methods=['POST', 'GET'])
|
||||
@login_required # User must be authenticated
|
||||
def member_page():
|
||||
content = 'Mem only'
|
||||
return render_template('flask_user_layout.html', markup_content = content)
|
||||
def update_info():
|
||||
#print(request.args.get('callsign'))
|
||||
#print(current_user.username)
|
||||
if request.args.get('callsign') == current_user.username or request.args.get('callsign') and request.args.get('callsign') != current_user.username and current_user.has_roles('Admin'):
|
||||
content = '<h3 style="text-align: center;"><strong>Updated your information.</strong></h3>'
|
||||
update_from_radioid(request.args.get('callsign'))
|
||||
else:
|
||||
content = '''
|
||||
<p>Use this page to sync changes from <a href="https://www.radioid.net/">RadioID.net</a> with this system (such as a new DMR ID, name change, etc.).</p>
|
||||
<p>Updating your information from <a href="https://www.radioid.net/">RadioID.net</a> will <strong>overwrite any custom authentication passphrases</strong>, your city, and name in the database. Are you sure you want to continue?</p>
|
||||
<p> </p>
|
||||
<h2 style="text-align: center;"><a href="update_ids?callsign=''' + current_user.username + '''">Yes, update my information.</a></h2>
|
||||
|
||||
'''
|
||||
return render_template('flask_user_layout.html', markup_content = Markup(content))
|
||||
|
||||
|
||||
|
||||
|
||||
@ -348,6 +393,7 @@ def create_app():
|
||||
@roles_required('Admin') # Use of @roles_required decorator
|
||||
def admin_page():
|
||||
#print(request.args.get('callsign'))
|
||||
#print(request.args.get('callsign'))
|
||||
## if request.method == 'POST' and request.form.get('callsign'):
|
||||
## #result = request.json
|
||||
## callsign = request.form.get('callsign')
|
||||
@ -355,7 +401,7 @@ def create_app():
|
||||
## content = u.dmr_ids
|
||||
if request.method == 'POST' and request.args.get('callsign') == None:
|
||||
content = 'Not found'
|
||||
if request.method == 'POST' and request.args.get('callsign') and request.form.get('user_status'):
|
||||
elif request.method == 'POST' and request.args.get('callsign') and request.form.get('user_status'):
|
||||
user = request.args.get('callsign')
|
||||
#print(user)
|
||||
edit_user = User.query.filter(User.username == user).first()
|
||||
@ -408,7 +454,7 @@ def create_app():
|
||||
db.session.commit()
|
||||
content = '''<p style="text-align: center;">Email verified for: <strong>''' + str(request.args.get('callsign')) + '''</strong></p>\n'''
|
||||
|
||||
elif request.method == 'POST' and request.form.get('callsign') and not request.form.get('user_status') or request.method == 'GET' and request.args.get('callsign'): # and request.form.get('user_status') :
|
||||
elif request.method == 'POST' and request.form.get('callsign') and not request.form.get('user_status') or request.method == 'GET' and request.args.get('callsign'):# and request.form.get('user_status') :
|
||||
if request.args.get('callsign'):
|
||||
callsign = request.args.get('callsign')
|
||||
if request.form.get('callsign'):
|
||||
@ -427,6 +473,28 @@ def create_app():
|
||||
|
||||
|
||||
content = '''
|
||||
<p> </p>
|
||||
|
||||
<table style="width: 500px; margin-left: auto; margin-right: auto;" border="1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center;"><strong>First Name</strong></td>
|
||||
<td style="text-align: center;"><strong>Last Name</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>''' + u.first_name + '''</td>
|
||||
<td>''' + u.last_name + '''</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;"><strong>City</strong></td>
|
||||
<td>''' + u.city + '''</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p> </p>
|
||||
|
||||
<p style="text-align: center;"><strong><a href="update_ids?callsign=''' + u.username + '''">Update user information from RadioID.net</a></strong></p>
|
||||
|
||||
<td><form action="edit_user?callsign=''' + callsign + '''" method="POST">
|
||||
<table style="margin-left: auto; margin-right: auto;">
|
||||
<tbody>
|
||||
|
@ -34,6 +34,8 @@ MAIL_PASSWORD = 'password'
|
||||
MAIL_DEFAULT_SENDER = '"' + title + '" <app@gmail.com>'
|
||||
|
||||
# UMS settings
|
||||
secret_key = 'SUPER SECRET LONG KEY'
|
||||
|
||||
USER_ENABLE_EMAIL = True
|
||||
USER_ENABLE_USERNAME = True # Enable username authentication
|
||||
USER_REQUIRE_RETYPE_PASSWORD = True # Simplify register form
|
||||
|
30
user_managment/templates/flask_user/edit_user_profile.html
Normal file
30
user_managment/templates/flask_user/edit_user_profile.html
Normal file
@ -0,0 +1,30 @@
|
||||
{% extends 'flask_user/_authorized_base.html' %}
|
||||
|
||||
{% block content %}
|
||||
{% from "flask_user/_macros.html" import render_field, render_checkbox_field, render_submit_field %}
|
||||
<h1>{%trans%}User profile{%endtrans%}</h1>
|
||||
|
||||
<form action="" method="POST" class="form" role="form">
|
||||
{{ form.hidden_tag() }}
|
||||
{% for field in form %}
|
||||
{% if not field.flags.hidden %}
|
||||
{% if field.type=='SubmitField' %}
|
||||
{{ render_submit_field(field, tabindex=loop.index*10) }}
|
||||
{% else %}
|
||||
{{ render_field(field, tabindex=loop.index*10) }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</form>
|
||||
<br/>
|
||||
<p><a href="../update_ids">Update your information from RadioID.net</a></p>
|
||||
{% if not user_manager.USER_ENABLE_AUTH0 %}
|
||||
{% if user_manager.USER_ENABLE_CHANGE_USERNAME %}
|
||||
<p><a href="{{ url_for('user.change_username') }}">{%trans%}Change username{%endtrans%}</a></p>
|
||||
{% endif %}
|
||||
{% if user_manager.USER_ENABLE_CHANGE_PASSWORD %}
|
||||
<p><a href="{{ url_for('user.change_password') }}">{%trans%}Change password{%endtrans%}</a></p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user