update db, add message
This commit is contained in:
		
							parent
							
								
									37af7aab2a
								
							
						
					
					
						commit
						90aa470bb9
					
				@ -4,10 +4,10 @@
 | 
			
		||||
# - Using class-based configuration (instead of file-based configuration)
 | 
			
		||||
# - Using string-based templates (instead of file-based templates)
 | 
			
		||||
 | 
			
		||||
from flask import Flask, render_template_string, request, make_response, jsonify, render_template, Markup
 | 
			
		||||
from flask import Flask, render_template_string, request, make_response, jsonify, render_template, Markup, flash, redirect, url_for, current_app
 | 
			
		||||
from flask_sqlalchemy import SQLAlchemy
 | 
			
		||||
from flask_user import login_required, UserManager, UserMixin, user_registered, roles_required
 | 
			
		||||
from flask_login import current_user
 | 
			
		||||
from flask_login import current_user, login_user, logout_user
 | 
			
		||||
from wtforms import StringField, SubmitField
 | 
			
		||||
import requests
 | 
			
		||||
import base64, hashlib
 | 
			
		||||
@ -24,7 +24,6 @@ try:
 | 
			
		||||
except:
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
script_links = {}
 | 
			
		||||
 | 
			
		||||
def gen_passphrase(dmr_id):
 | 
			
		||||
@ -138,7 +137,7 @@ def create_app():
 | 
			
		||||
        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='')
 | 
			
		||||
        #Used for initial approval
 | 
			
		||||
        initial_admin_approved = db.Column('admin_approved', db.Boolean(), nullable=False, server_default='1')
 | 
			
		||||
        initial_admin_approved = db.Column('initial_admin_approved', db.Boolean(), nullable=False, server_default='1')
 | 
			
		||||
        # Define the relationship to Role via UserRoles
 | 
			
		||||
        roles = db.relationship('Role', secondary='user_roles')
 | 
			
		||||
        
 | 
			
		||||
@ -155,8 +154,95 @@ def create_app():
 | 
			
		||||
        user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
 | 
			
		||||
        role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))
 | 
			
		||||
 | 
			
		||||
    # Customize Flask-User
 | 
			
		||||
    class CustomUserManager(UserManager):
 | 
			
		||||
    # Override or extend the default login view method
 | 
			
		||||
        def login_view(self):
 | 
			
		||||
            """Prepare and process the login form."""
 | 
			
		||||
 | 
			
		||||
            # Authenticate username/email and login authenticated users.
 | 
			
		||||
 | 
			
		||||
            safe_next_url = self._get_safe_next_url('next', self.USER_AFTER_LOGIN_ENDPOINT)
 | 
			
		||||
            safe_reg_next = self._get_safe_next_url('reg_next', self.USER_AFTER_REGISTER_ENDPOINT)
 | 
			
		||||
 | 
			
		||||
            # Immediately redirect already logged in users
 | 
			
		||||
            if self.call_or_get(current_user.is_authenticated) and self.USER_AUTO_LOGIN_AT_LOGIN:
 | 
			
		||||
                return redirect(safe_next_url)
 | 
			
		||||
 | 
			
		||||
            # Initialize form
 | 
			
		||||
            login_form = self.LoginFormClass(request.form)  # for login.html
 | 
			
		||||
            register_form = self.RegisterFormClass()  # for login_or_register.html
 | 
			
		||||
            if request.method != 'POST':
 | 
			
		||||
                login_form.next.data = register_form.next.data = safe_next_url
 | 
			
		||||
                login_form.reg_next.data = register_form.reg_next.data = safe_reg_next
 | 
			
		||||
 | 
			
		||||
            # Process valid POST
 | 
			
		||||
            if request.method == 'POST' and login_form.validate():
 | 
			
		||||
                # Retrieve User
 | 
			
		||||
                user = None
 | 
			
		||||
                user_email = None
 | 
			
		||||
                if self.USER_ENABLE_USERNAME:
 | 
			
		||||
                    # Find user record by username
 | 
			
		||||
                    user = self.db_manager.find_user_by_username(login_form.username.data)
 | 
			
		||||
                    
 | 
			
		||||
                    # Find user record by email (with form.username)
 | 
			
		||||
                    if not user and self.USER_ENABLE_EMAIL:
 | 
			
		||||
                        user, user_email = self.db_manager.get_user_and_user_email_by_email(login_form.username.data)
 | 
			
		||||
                else:
 | 
			
		||||
                    # 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
 | 
			
		||||
                if not user.initial_admin_approved:
 | 
			
		||||
                        flash('<strong>You account is waiting for approval from an administrator. See <a href="/help">the Help page</a> for more information.</strong>', 'success')
 | 
			
		||||
 | 
			
		||||
                if user:
 | 
			
		||||
                    # Log user in
 | 
			
		||||
                    safe_next_url = self.make_safe_url(login_form.next.data)
 | 
			
		||||
                    return self._do_login_user(user, safe_next_url, login_form.remember_me.data)
 | 
			
		||||
 | 
			
		||||
            # Render form
 | 
			
		||||
            self.prepare_domain_translations()
 | 
			
		||||
            template_filename = self.USER_LOGIN_AUTH0_TEMPLATE if self.USER_ENABLE_AUTH0 else self.USER_LOGIN_TEMPLATE
 | 
			
		||||
            return render_template(template_filename,
 | 
			
		||||
                          form=login_form,
 | 
			
		||||
                          login_form=login_form,
 | 
			
		||||
                          register_form=register_form)
 | 
			
		||||
            
 | 
			
		||||
    # Override or extend the default login view method
 | 
			
		||||
##        def _do_login_user(self, user, safe_next_url, remember_me=False):
 | 
			
		||||
##            # User must have been authenticated
 | 
			
		||||
##            if not user: return self.unauthenticated()
 | 
			
		||||
##
 | 
			
		||||
##            # Check if user account has been disabled
 | 
			
		||||
##            if not user.active:
 | 
			
		||||
##                flash(('Your account has not been enabled.'), 'error')
 | 
			
		||||
##                return redirect(url_for('user.login'))
 | 
			
		||||
##
 | 
			
		||||
##            # Check if user has a confirmed email address
 | 
			
		||||
##            if self.USER_ENABLE_EMAIL \
 | 
			
		||||
##                    and self.USER_ENABLE_CONFIRM_EMAIL \
 | 
			
		||||
##                    and not current_app.user_manager.USER_ALLOW_LOGIN_WITHOUT_CONFIRMED_EMAIL \
 | 
			
		||||
##                    and not self.db_manager.user_has_confirmed_email(user):
 | 
			
		||||
##                url = url_for('user.resend_email_confirmation')
 | 
			
		||||
##                #flash(('Your email address has not yet been confirmed. Check your email Inbox and Spam folders for the confirmation email or <a href="%(url)s">Re-send confirmation email</a>.', url=url), 'error')
 | 
			
		||||
##                return redirect(url_for('user.login'))
 | 
			
		||||
##                #return flash('nope', 'error')
 | 
			
		||||
##             # Use Flask-Login to sign in user
 | 
			
		||||
##            # print('login_user: remember_me=', remember_me)
 | 
			
		||||
##            login_user(user, remember=remember_me)
 | 
			
		||||
##
 | 
			
		||||
##            # Send user_logged_in signal
 | 
			
		||||
##            signals.user_logged_in.send(current_app._get_current_object(), user=user)
 | 
			
		||||
##
 | 
			
		||||
##            # Flash a system message
 | 
			
		||||
##            flash(('You have signed in successfully.'), 'success')
 | 
			
		||||
##
 | 
			
		||||
##            # Redirect to 'next' URL
 | 
			
		||||
##            return redirect(safe_next_url)
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
    user_manager = UserManager(app, db, User)
 | 
			
		||||
    #user_manager = UserManager(app, db, User)
 | 
			
		||||
    user_manager = CustomUserManager(app, db, User)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # Create all database tables
 | 
			
		||||
@ -544,6 +630,9 @@ def create_app():
 | 
			
		||||
</table>
 | 
			
		||||
<p> </p>
 | 
			
		||||
 | 
			
		||||
<p style="text-align: center;"><strong>Email confirmed: ''' + str(u.email_confirmed_at) + '''</strong></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">
 | 
			
		||||
@ -700,10 +789,10 @@ def create_app():
 | 
			
		||||
        #user.add_roles('Admin')
 | 
			
		||||
        #db.session.add(user)
 | 
			
		||||
        #db.session.commit()
 | 
			
		||||
        #u = User.query.filter_by(username='kf7eel').first()
 | 
			
		||||
        u = User.query.filter_by(username='kf7eel').first()
 | 
			
		||||
        #u = Role.query.all()
 | 
			
		||||
##        u = User.query.filter(User.dmr_ids.contains('3153591')).first()
 | 
			
		||||
        u = User.query.all()
 | 
			
		||||
        #u = User.query.all()
 | 
			
		||||
##        #tu = User.query().all()
 | 
			
		||||
####        print((tu.dmr_ids))
 | 
			
		||||
####        #print(tu.dmr_ids)
 | 
			
		||||
@ -757,18 +846,23 @@ def create_app():
 | 
			
		||||
        #    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(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)
 | 
			
		||||
        #return str(u)
 | 
			
		||||
        if not u.active:
 | 
			
		||||
            flash('We come in peace', 'success')
 | 
			
		||||
        content = 'hello'
 | 
			
		||||
        return render_template('flask_user_layout.html', markup_content = Markup(content))
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    @app.route('/add_user', methods=['POST', 'GET'])
 | 
			
		||||
    @roles_required('Admin') 
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user