diff --git a/web/app.py b/web/app.py
index b1de0ed..f5e4316 100644
--- a/web/app.py
+++ b/web/app.py
@@ -149,7 +149,7 @@ def create_app():
username = db.Column(db.String(100,), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, server_default='')
email_confirmed_at = db.Column(db.DateTime())
- email = db.Column(db.String(255), nullable=False, unique=True)
+ email = db.Column(db.String(255), nullable=True, unique=True)
# User information
first_name = db.Column(db.String(100), nullable=False, server_default='')
@@ -442,6 +442,36 @@ def create_app():
text = db.Column(db.String(100), nullable=False, server_default='')
date = db.Column(db.String(100), nullable=False, server_default='')
time = db.Column(db.DateTime())
+
+ class PeerLoc(db.Model):
+ __tablename__ = 'peer_locations'
+ id = db.Column(db.Integer(), primary_key=True)
+ callsign = db.Column(db.String(100), nullable=False, server_default='')
+ comment = db.Column(db.String(100), nullable=False, server_default='')
+ lat = db.Column(db.String(100), nullable=False, server_default='')
+ lon = db.Column(db.String(100), nullable=False, server_default='')
+ time = db.Column(db.DateTime())
+ server = db.Column(db.String(100), nullable=False, server_default='')
+ system_name = db.Column(db.String(100), nullable=False, server_default='')
+ user = db.Column(db.Boolean(), nullable=False, server_default='1')
+ dmr_id = db.Column(db.Integer(), primary_key=False)
+
+ class CustomID(db.Model):
+ __tablename__ = 'custom_dmr_id'
+ id = db.Column(db.Integer(), primary_key=True)
+ callsign = db.Column(db.String(100), nullable=False, server_default='')
+ f_name = db.Column(db.String(100), nullable=False, server_default='')
+ l_name = db.Column(db.String(100), nullable=False, server_default='')
+ city = db.Column(db.String(100), nullable=False, server_default='')
+ country = db.Column(db.String(100), nullable=False, server_default='')
+ dmr_id = db.Column(db.Integer(), primary_key=False)
+
+ class Social(db.Model):
+ __tablename__ = 'social'
+ id = db.Column(db.Integer(), primary_key=True)
+ callsign = db.Column(db.String(100), nullable=False, server_default='')
+ message = db.Column(db.String(100), nullable=False, server_default='')
+ time = db.Column(db.DateTime())
class Misc(db.Model):
__tablename__ = 'misc'
@@ -454,6 +484,8 @@ def create_app():
int_2 = db.Column(db.Integer(), nullable=True)
int_3 = db.Column(db.Integer(), nullable=True)
int_4 = db.Column(db.Integer(), nullable=True)
+ boo_1 = db.Column(db.Boolean(), nullable=True, server_default='1')
+ boo_2 = db.Column(db.Boolean(), nullable=True, server_default='1')
time = db.Column(db.DateTime())
@@ -498,8 +530,9 @@ def create_app():
# Find user by email (with form.email)
user, user_email = self.db_manager.get_user_and_user_email_by_email(login_form.email.data)
#Add aditional message
+ flash_text = Misc.query.filter_by(field_3='approval_flash').first()
if not user.initial_admin_approved:
- flash('You account is waiting for approval from an administrator. See the Help page for more information. You will receive an email when your account is approved.', 'success')
+ flash(flash_text, 'success')
if user:
# Log user in
@@ -535,6 +568,19 @@ def create_app():
user.roles.append(Role(name='Admin'))
user.roles.append(Role(name='User'))
db.session.add(user)
+ # Add approval messages to DB for editing
+ email_entry_add = Misc(
+ field_1 = 'approval_email',
+ field_2 = 'You are receiving this message because an administrator has approved your account. You may now login and use ' + title + '.',
+ time = datetime.datetime.utcnow()
+ )
+ db.session.add(email_entry_add)
+ flash_entry_add = Misc(
+ field_1 = 'approval_flash',
+ field_2 = 'You account is waiting for approval from an administrator. See the Help page for more information. You will receive an email when your account is approved.',
+ time = datetime.datetime.utcnow()
+ )
+ db.session.add(flash_entry_add)
db.session.commit()
# Query radioid.net for list of DMR IDs, then add to DB
@@ -601,21 +647,24 @@ def create_app():
@app.route('/')
def home_page():
#content = Markup('Index')
- l_news = News.query.order_by(News.time.desc()).first()
- content = '''
-
-
-
-''' + l_news.subject + '''
- |
-
-
-''' + l_news.date + ''' |
-
-
- ''' + l_news.text + '''
|
-
-
'''
+ try:
+ l_news = News.query.order_by(News.time.desc()).first()
+ content = '''
+
+
+
+ ''' + l_news.subject + '''
+ |
+
+
+ ''' + l_news.date + ''' |
+
+
+ ''' + l_news.text + '''
|
+
+
'''
+ except:
+ content = ''
return render_template('index.html', news = Markup(content))
@app.route('/help')
@@ -1009,10 +1058,11 @@ def create_app():
edit_user.active = True
edit_user.initial_admin_approved = True
db.session.commit()
+ email_text = Misc.query.filter_by(field_1='approval_email').first()
msg = Message(recipients=[edit_user.email],
sender=(title, MAIL_DEFAULT_SENDER),
subject='Account Approval',
- body='''You are receiving this message because an administrator has approved your account. You may now login and use ''' + title + '''.''')
+ body = email_text)
mail.send(msg)
content = '''User approved: ''' + str(request.args.get('callsign')) + '''
\n'''
@@ -1707,6 +1757,61 @@ def create_app():
'''
return render_template('flask_user_layout.html', markup_content = Markup(content))
+ @app.route('/misc_settings', methods=['POST', 'GET'])
+ @login_required
+ @roles_required('Admin')
+ def misc_sett():
+ if request.args.get('approve_email') == 'save':
+ misc_edit_field_1('approval_email', request.form.get('email_text'), None, None, None, None, None, None, None, None)
+ content = '''Saved email text.
+ Redirecting in 3 seconds.
+ '''
+ elif request.args.get('approve_flash') == 'save':
+ misc_edit_field_1('approval_flash', request.form.get('flash_text'), None, None, None, None, None, None, None, None)
+ content = '''Saved flash text.
+ Redirecting in 3 seconds.
+ '''
+ else:
+
+ email_text = Misc.query.filter_by(field_1='approval_email').first()
+ flash_text = Misc.query.filter_by(field_1='approval_flash').first()
+ content = '''
+
+
+
+
+
+ '''
+ return render_template('flask_user_layout.html', markup_content = Markup(content))
+
@app.route('/user_tg')
def tg_status():
cu = current_user
@@ -1850,7 +1955,7 @@ def create_app():
''' + i.bridge_name + ''' |
''' + str(i.tg) + ''' |
- ''' + re.sub('\..*', '', i.description) + ''' |
+ ''' + i.description[:60] + ''' |
'''
content = content + '''
@@ -1954,121 +2059,7 @@ def create_app():
return render_template('flask_user_layout.html', markup_content = Markup(content))
-
- @app.route('/test')
- def test_peer():
- #user = User(
- # username='admin3',
- # email_confirmed_at=datetime.datetime.utcnow(),
- # password=user_manager.hash_password('admin'),
- # )
- #user.roles.append(Role(name='Admin'))
- #user.roles.append(Role(name='User'))
- #user.add_roles('Admin')
- #db.session.add(user)
- #db.session.commit()
- u = User.query.filter_by(username='admin').first()
- #u = Role.query.all()
-## u = User.query.filter(User.dmr_ids.contains('3153591')).first()
- #u = User.query.all()
-## #tu = User.query().all()
-#### print((tu.dmr_ids))
-#### #print(tu.dmr_ids)
-#### return str(tu.dmr_ids) #str(get_ids('kf7eel'))
-## login_passphrase = ast.literal_eval(u.dmr_ids)
-## print('|' + login_passphrase[3153591] + '|')
-## #print(u.dmr_ids)
-## #tu.dmr_ids = 'jkgfldj'
-## #db.session.commit()
-## return str(u.dmr_ids)
-## u = User.query.filter(User.dmr_ids.contains('3153591')).first()
-## #tu = User.query.all()
-## #tu = User.query().all()
-#### print((tu.dmr_ids))
-#### #print(tu.dmr_ids)
-#### return str(tu.dmr_ids) #str(get_ids('kf7eel'))
-## print(u)
-## login_passphrase = ast.literal_eval(u.dmr_ids)
-##
-## #tu.dmr_ids = 'jkgfldj'
-## #db.session.commit()
-## return str([u.is_active, login_passphrase[3153591]])
- #edit_user = User.query.filter(User.username == 'bob').first()
- #edit_user.active = False
-
- #db.session.commit()
- #print((current_user.has_roles('Admin')))
- #u.roles.append(Role(name='Admin'))
- #print((current_user.has_roles('Admin')))
- #db.session.commit()
- #db.session.add(u)
- #db.session.commit()
-## admin_role = UserRoles(
-## user_id=3,
-## role_id=1,
-## )
-## user_role = UserRoles(
-## user_id=3,
-## role_id=2,
-## )
-## db.session.add(user_role)
-## db.session.add(admin_role)
-## db.session.commit()
- #print(role)
-## for i in u:
-## print(i.username)
- #u = User.query.filter_by(username='kf7eel').first()
- #print(u.id)
- #u_role = UserRoles.query.filter_by(user_id=u.id).first()
- #if u_role.role_id == 2:
- # print('userhasjkdhfdsejksfdahjkdhjklhjkhjkl')
-## print(u.has_roles('Admin'))
- #u_role.role_id = 1
- #print(u)
- # for i in u:
- ##print(i.initial_admin_approved)
- #if not i.initial_admin_approved:
- #print(i.username)
- # print(i)
- #u_role = UserRoles.query.filter_by(id=2).first().role_id
- #u_role = 1
- # db.session.commit()
- #u_role = UserRoles.query.filter_by(id=u.id).first().role_id
- #print(u_role)
- #return str(u)
-## if not u.active:
-## flash('We come in peace', 'success')
-## content = 'hello'
- #add
-## burn_list = BurnList(
-## dmr_id=3153595,
-## version=1,
-## )
-## db.session.add(burn_list)
-## db.session.commit()
-##
- #generate dict
-## b = BurnList.query.all()
-## print(b)
-## burn_dict = {}
-## for i in b:
-## print(i.dmr_id)
-## burn_dict[i.dmr_id] = i.version
-## content = burn_dict
-## # delete
-#### delete_b = BurnList.query.filter_by(dmr_id=3153591).first()
-#### db.session.delete(delete_b)
-#### db.session.commit()
-## a = AuthLog.query.all()
-## print(a)
-## authlog_flush()
-## peer_delete('mmdvm', 1)
- user_ids = ast.literal_eval(u.dmr_ids)
- for i in user_ids.items():# active_tgs:
- print(active_tgs['test'][i[0]])
- content = active_tgs['test'][i[0]][1]['2']
-## content = user_ids
- return render_template('flask_user_layout.html', markup_content = Markup(content))
+###### DB functions #############################
def get_peer_configs(_server_name):
mmdvm_pl = mmdvmPeer.query.filter_by(server=_server_name).filter_by(enabled=True).all()
@@ -2185,6 +2176,42 @@ def create_app():
)
db.session.add(auth_log_add)
db.session.commit()
+
+ def misc_add(_field_1, _field_2, _field_3, _field_4, int_1, _int_2, _int_3, _int_4, _boo_1, _boo_2):
+ misc_entry_add = Misc(
+ field_1 = _field_1,
+ field_2 = _field_2,
+ field_3 = _field_3,
+ field_4 = _field_4,
+ int_1 = _int_1,
+ int_2 = _int_2,
+ int_3 = _int_3,
+ int_4 = _int_4,
+ boo_1 = _boo_1,
+ boo_2 = _boo_2,
+ time = datetime.datetime.utcnow()
+ )
+ db.session.add(misc_entry_add)
+ db.session.commit()
+
+ def misc_edit_field_1(_field_1, _field_2, _field_3, _field_4, _int_1, _int_2, _int_3, _int_4, _boo_1, _boo_2):
+ m = Misc.query.filter_by(field_1=_field_1).first()
+ m.field_1 = _field_1
+ m.field_2 = _field_2
+ m.field_3 = _field_3
+ m.field_4 = _field_4
+ m.int_1 = _int_1
+ m.int_2 = _int_2
+ m.int_3 = _int_3
+ m.int_4 = _int_4
+ m.boo_1 = _boo_1
+ m.boo_2 = _boo_2
+ db.session.commit()
+
+ def delete_misc_field_1(_field_1):
+ delete_f1 = Misc.query.filter_by(field_1=_field_1).first()
+ db.session.delete(delete_f1)
+ db.session.commit()
def authlog_flush():
AuthLog.query.delete()
@@ -5243,13 +5270,13 @@ def create_app():
-
+
-Name |
-Public |
-Description |
-TGID |
+Name |
+Public |
+Description |
+TGID |
'''
diff --git a/web/templates/flask_user_layout.html b/web/templates/flask_user_layout.html
index 60965e4..bcd450f 100644
--- a/web/templates/flask_user_layout.html
+++ b/web/templates/flask_user_layout.html
@@ -74,6 +74,8 @@
Manage Masters |
Manage Rules |
Manage News |
+Misc Options |
+