def create_sudo(): # Sudo user is just a that has both coordinator, volunteer rules # This give the ability to nagivate through all app views (or routes) # Also, if you like 'superuser' term ... that ok but in prometheus # superuser is sudo user. # Checking if Roles are created using create_db command if Role.query.filter(or_(Role.name == v for v in ('sudo', 'coordinator', 'volunteer'))).first() is None: return """ You need run 'python manager.py create_db' in order to create default user Roles """ email = raw_input("Please enter a valid email:" ) email_match = re.search(r'[\w.-]+@[\w.-]+.\w+', email) if not email_match: return "You typed a invalid email address, Please try again" if User.query.filter_by(email=email).first() is not None: return "A user allready exists with that email address" password1 = getpass.getpass(prompt="Please type your password: "******"Please re-type your password: "******"Your don't match, Please try again" user = User.register(email, password1) role_sudo = Role.query.filter_by(name='sudo').first() role_coordinator = Role.query.filter_by(name='coordinator').first() role_volunteer = Role.query.filter_by(name='volunteer').first() user.roles.append(role_sudo) user.roles.append(role_coordinator) user.roles.append(role_volunteer) db.session.add(user) db.session.commit() return "{} sudo user created".format(email)
def init_prometheus(): create_db() user = User.register('*****@*****.**', 'admin') role_coordinator = Role.query.filter_by(name='coordinator').first() role_volunteer = Role.query.filter_by(name='volunteer').first() user.roles.append(role_coordinator) user.roles.append(role_volunteer) db.session.add(user) db.session.commit() return "{} sudo user created".format(user.email)
def update_volunteer(id=None): page = dict(title="Add Volunteer", back=url_for('coordinator.volunteers')) if Role.query.filter_by(name="volunteer").first() is None: role_volunteer = Role(name='volunteer') db.session.add(role_volunteer) db.session.commit() role_volunteer = Role.query.filter_by(name="volunteer").first() role_coordinator = Role.query.filter_by(name="coordinator").first() user_volunteer = User() volunteer = Volunteer() form = VolunteerForm() if id != None: volunteer = Volunteer.query.get(id) user_volunteer = User.query.filter_by(email=volunteer.email).first() form = VolunteerForm(obj=volunteer) form.is_coordinator.checked = False if role_coordinator in user_volunteer.roles: form.is_coordinator.checked = True form.access.checked = user_volunteer.active form.country_id.choices = [(c.id, c.name) for c in Country.query.order_by('name')] form.team_id.choices = [(team.id, team.name) for team in Team.query.all()] if form.validate_on_submit(): volunteer.import_data(form.data) if user_volunteer.email is None: # Register Volunteer as User user_volunteer.email = form.email.data user_volunteer.set_password(form.email.data) user_volunteer.active = form.access.data user_volunteer.roles.append(role_volunteer) if form.is_coordinator.data: user_volunteer.roles.append(role_coordinator) else: if role_coordinator in user_volunteer.roles: user_volunteer.roles.remove(role_coordinator) db.session.add(user_volunteer) db.session.commit() else: # Update access user_volunteer.active = form.access.data if form.is_coordinator.data: user_volunteer.roles.append(role_coordinator) else: if role_coordinator in user_volunteer.roles: user_volunteer.roles.remove(role_coordinator) db.session.add(user_volunteer) db.session.add(user_volunteer) db.session.commit() db.session.add(volunteer) db.session.commit() flash("<i class='fa fa-smile-o'></i> Success, form is submitted") return redirect(url_for('coordinator.volunteers')) return render_template('coordinators/volunteers/volunteer_form.html', page=page, form=form)
def create_db(): # Create database and populate db db.create_all() db.session.add_all([ Role(name='sudo'), Role(name='coordinator'), Role(name='volunteer'), Team(name='Default: Local Team', email='*****@*****.**'), User.register(email='*****@*****.**', password='******'), Volunteer(fullname='Default Volunteer', email='*****@*****.**', gender='1'), SpotType(name='Camp'), SpotType(name='Volunteer Registration'), Spot(name='Chios Town', lat='38.3709813', lon='26.1363457', status=True, spottype_id='1'), Country(name='Other'), Country(name='Greece'), Country(name='Germany'), Need(name='Example Need', number_of_volunters=1, hour_choices='0', spot_id='1') ]) db.session.commit() return "All db tables are Created, with Prometheus default values"