Esempio n. 1
0
def load_user(id):
    a = teach.find_one({"_id": id})
    if a is not None:
        return User(id=a.get("_id"), password=a.get("pword"), type="T")
    else:
        a = stu.find_one({"_id": id})
        return User(id=a.get("_id"), password=a.get("pword"), type="S")
Esempio n. 2
0
def logview():
    if current_user.is_authenticated:
        if current_user.type == 'S':
            return redirect(url_for('stuhome'))
        else:
            return redirect(url_for('profhome'))
    l1 = LoginForm()
    if l1.validate_on_submit():
        user = teach.find_one({"_id": l1.id.data})
        if user is not None and l1.password.data == user.get("pword"):
            t = User(id=user.get("_id"), password=user.get("pword"), type="T")
            login_user(t, duration=datetime.timedelta(hours=1))
            return redirect(url_for('profhome'))
        elif user is not None:
            flash('Invalid username/password combination.')
        else:
            user = stu.find_one({"_id": l1.id.data})
            if user is not None and l1.password.data == user.get("pword"):
                t = User(id=user.get("_id"),
                         password=user.get("pword"),
                         type="S")
                login_user(t, duration=datetime.timedelta(hours=1))
                return redirect(url_for('stuhome'))
            else:
                flash('Invalid username/password combination.')
    return render_template('login.html',
                           form=l1,
                           title='Log in.',
                           template='login-page',
                           body="Log in with your User account.")
Esempio n. 3
0
 def setUp(self):
     print('SetUp')
     self.u = User(email='*****@*****.**', leadership=True)
     self.u.set_password('*****@*****.**')
     self.l = User(email='*****@*****.**', leadership=True)
     self.l.set_password('*****@*****.**')
     self.r = User(email='*****@*****.**')
     self.r.set_password('*****@*****.**')
     db.session.add(self.u)
     db.session.add(self.l)
     db.session.add(self.r)
     db.session.commit()
Esempio n. 4
0
 def setUp(self):
     """Set up test"""
     self.user = User()
     self.current_users = USERS
     self.user_email = "*****@*****.**"
     self.username = "******"
     self.password = "******"
Esempio n. 5
0
 def setUp(self):
     self.create_app()
     self.app = app.test_client()
     db.create_all()
     pw = generate_password_hash("admin123456", method='sha256')
     db.session.add(User(username="******", password=pw))
     db.session.commit()
Esempio n. 6
0
    def init_data(self):
        #default test user
        demo = User(first_name=u'demo',
                    last_name=u'demo',
                    user_name=u'demo',
                    password=u'123456',
                    role_code=ADMIN,
                    status_code=ACTIVE,
                    user_settings=UserSettings(sex_code=MALE,
                                               phone='555-555-5555',
                                               bio=u'just a demo guy'))
        email = Email(address="*****@*****.**",
                      is_primary=True,
                      status_code=VERIFIED)
        demo.add_email(email)

        db.session.add(demo)
        db.session.add(email)
        db.session.commit()
        """Add in post categories"""
        for c in CATEGORIES:
            hashtag = Hashtag(name=c)
            db.session.add(hashtag)
        db.session.commit()

        self.demo_user = demo
        '''Add in circles'''
        ucla = Circle(name=u'ucla', description=u'ucla.edu emails only')
        ucla.add_member(demo)
        db.session.add(ucla)
        db.session.commit()
def login():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = UserLoginForm()
    search_form = SearchForm()
    if form.validate_on_submit():
        user = mongo.db.users.find_one({'username': form.username.data})
        if user and User.check_password(user['password'], form.password.data):
            user_obj = User(user['username'], user['email'], user['_id'],
                            user['is_admin'])
            login_user(user_obj)
            # accesses the 'next page' query string to determine which url user wanted to visit
            # before being redirected to the login page. If no next page was given then redirects user
            # to the index page. 'url_parse.netloc' prevents malicious redirect attacks. This prevents
            #redirects by ensuring that the url is relative to the page.
            next_page = request.args.get('next')
            if not next_page or url_parse(next_page).netloc != '':
                next_page = url_for('index')
            return redirect(next_page)
        else:
            flash('Wrong username or password', 'warning')
    return render_template('loginform.html',
                           form=form,
                           search_form=search_form,
                           title='Login')
Esempio n. 8
0
    def update_faculty_table(dept):

        # Do not display table for aggregate views
        if dept in ['AS', 'HUM', 'NS', 'SS']:
            return [], {'display': 'none'}

        # Do not display table without chair-level access
        # to the selected department
        current_user = User()
        if dept not in current_user.deptprofile_access('dept_chair'):
            return [], {'display': 'none'}
        else:
            resp = table.query(KeyConditionExpression=
                               'PK = :pk AND SK BETWEEN :lower AND :upper',
                               ExpressionAttributeValues={
                                   ':pk':
                                   f'DEPT#{dept}',
                                   ':lower':
                                   f'DATA#FACULTY_LIST#{MAX_FISCAL_YEAR}',
                                   ':upper':
                                   f'DATA#FACULTY_LIST#{MAX_FISCAL_YEAR}$',
                               },
                               ScanIndexForward=True)

            return resp['Items'], {'display': 'inline'}
Esempio n. 9
0
 def setUp(self):
     """set up for each test"""
     APP.config['TESTING'] = True
     APP.config['WTF_CSRF_ENABLED'] = False
     self.test_app = APP.test_client()
     self.user_email = "*****@*****.**"
     self.username = "******"
     self.user_password = "******"
     self.user = User()
Esempio n. 10
0
 def __init__(self, *args, **kwargs):
     super(TestUserModel, self).__init__(*args, **kwargs)
     self.correct_password = u'123456'
     self.good_guy = User(first_name=u'good',
                          last_name=u'guy',
                          user_name=u'test',
                          password=self.correct_password,
                          role_code=USER,
                          status_code=ACTIVE,
                          user_settings=UserSettings(sex_code=MALE))
     self.good_girl = User(first_name=u'good',
                           last_name='girl',
                           user_name=u'crazy_girl',
                           password=self.correct_password,
                           role_code=USER,
                           status_code=INACTIVE,
                           user_settings=UserSettings(sex_code=FEMALE))
     self.good_girl_email = Email(address="*****@*****.**",
                                  is_primary=False,
                                  status_code=VERIFIED)
Esempio n. 11
0
def GetUserFromToken(tok: str) -> User:
    usr = User()
    try:
        tokenObj = jwt.decode(tok, os.environ['SECRET'], algorithms=['HS256'])
    except:
        print("problem decoding token")
        return usr

    usr.id = tokenObj["id"]
    usr.username = tokenObj["username"]
    usr.email = tokenObj["email"]
    return usr
Esempio n. 12
0
    def notify(notif: Notification):
        tel = Telemetry.get({"user": notif.reciever})
        if notif.author in tel.blocked:
            return

        print("Sending notification")
        from .socket import Notifier
        Notifier.push_notification(notif)
        Notifier.push_alert_count(
            notif.reciever,
            len(UserNotifications.get_unread(User(_id=notif.reciever))))
        notif.save()
Esempio n. 13
0
def serve_sal_layout():

    current_user = User()
    depts = current_user.salary_access()

    if depts:

        logger.log_access(has_access=True)

        # Create a list of dropdown options based on user permissions
        # Do this here to call salary_access only once
        dept_dropdown_options = []
        for option in ALL_DEPT_DROPDOWN_OPTIONS:
            if option['value'].strip('_') in depts:
                dept_dropdown_options.append(option)

        layout = html.Div([
            serve_navbar(),
            html.Div(
                [
                    header,
                    html.Div(id='test-div'),
                    serve_filters(dept_dropdown_options),
                    chart,
                    table,
                ],
                className='container pb-5',
            ),
        ])

    else:

        # Log that a user accesssed this view and was NOT authorized
        logger.log_access(has_access=False)

        no_access_alert = dbc.Alert([
            html.H5('You don\'t have access to this page.',
                    className='alert-heading'),
            html.P(
                'Please reach out to Timur Gulyamov (tg2648) to get access.',
                className='mb-0',
            ),
        ],
                                    color='warning',
                                    className='mt-3')

        layout = html.Div([
            serve_navbar(),
            html.Div([no_access_alert], className='container'),
        ])

    return layout
Esempio n. 14
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(email=form.email.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('Welcome to Pedagogy. You\'re now registered. Please log in.')
        return redirect(url_for('login'))

    return render_template('register.html', form=form)
Esempio n. 15
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(login=form.login.data)
        user.set_password(form.password.data)

        register_user(user.login, user.password_hash)

        flash('Congratulations, you are now a registered user!')
        return redirect(url_for('login'))
    return render_template('register.html', title='Register', form=form)
Esempio n. 16
0
def serve_req_dropdown():

    current_user = User()
    current_user_reqs = current_user.searchcom_access()

    req_dropdown_options = build_req_dropdown_options(current_user_reqs)

    req_dropdown = html.Div(dbc.FormGroup([
        dbc.Label("Select search:", html_for="req-num-dropdown"),
        dcc.Dropdown(id='req-num-dropdown',
                     options=req_dropdown_options,
                     value=req_dropdown_options[0]['value'],
                     multi=False,
                     clearable=False),
    ]),
                            className='mt-3')

    return req_dropdown
Esempio n. 17
0
def initdb():
    """Init/reset database."""

    db.drop_all(bind=None)
    db.create_all(bind=None)

    admin = User(first_name=u'admin',
                 last_name=u'admin',
                 user_name=u'admin',
                 password=u'gFcPU5XB',
                 role_code=ADMIN,
                 status_code=ACTIVE,
                 user_settings=UserSettings(sex_code=MALE,
                                            age=10,
                                            phone='555-555-5555',
                                            bio=u''))
    email = Email(address="*****@*****.**",
                  is_primary=True,
                  status_code=VERIFIED)
    admin.add_email(email)
    db.session.add(admin)
    db.session.add(email)
    db.session.commit()

    hashtag = None
    """Add in all post hashtag"""
    for (key, id) in CATEGORIES.iteritems():
        hashtag = Hashtag(id=id, name=key)
        db.session.add(hashtag)
    db.session.commit()

    #Add in ucla circle
    ucla = Circle(name=u'ucla', description=u'ucla.edu emails only')
    ucla.add_member(admin)
    db.session.add(ucla)
    db.session.commit()

    ucla_info = CollegeInfo(circle_id=ucla.id,
                            domain=u'ucla.edu',
                            fb_group_id=267279833349705,
                            fb_sell_id=267375200006835)
    db.session.add(ucla_info)
    db.session.commit()
Esempio n. 18
0
async def login(usr: UserLogin):
    # req_data = request.get_json()\
    print("hit login")
    password = usr.password
    username = usr.username
    response = {"success":False,"message":"user does not exist","token":""}

    if not userExist(username):
        return json.dumps(response)

    if not PasswordMatchesForUser(username,password):
        response = {"success":False,"message":"password incorrect","token":""}
        return json.dumps(response)
    
    usr = User()
    usr.SetUser(username)
    tokenid = CreateTokenForUser(usr)
    tokenString = GetTokenFromTokenId(tokenid)
    response = {"success":True,"message":"success","token":tokenString}
    return json.dumps(response)
Esempio n. 19
0
def verify(s):
    s2 = CodeForm()
    temp = misc.find_one({"_id": bson.objectid.ObjectId(s)})
    if s2.validate_on_submit():
        if temp.get("code") == s2.code.data:
            temp.pop("code")
            x = temp.pop("email")
            temp["_id"] = x
            stu.insert_one(temp)
            misc.delete_one({'_id': bson.objectid.ObjectId(s)})
            user = User(id=temp.get("_id"),
                        password=temp.get("pword"),
                        type='S')
            login_user(user, duration=datetime.timedelta(hours=1))
            return redirect(url_for("stuhome"))
        flash("Incorrect code entered")
    return render_template('check.html',
                           title='Email Verification',
                           form=s2,
                           template='signup-page',
                           body='Verify your email.')
Esempio n. 20
0
  def test_invalid_user_signup_duplicate(self):
    db.session.add(User(
        username=self.default_user['username'],
        password=self.default_user['password']))
    db.session.commit()

    with self.app as c:
      with c.session_transaction() as sess:
        sess['url'] = '/'

      self.login()

      response = self.signup(
          username=self.default_user['username'],
          password='******'
      )

      req = request.url

    self.assertIn(b'Please use a different username.', response.data)
    self.assertIn(b'/signup', req)
Esempio n. 21
0
def download(key):
    """
    Downloads a file from S3 based on the key in the path
    """
    logger = DynamoAccessLogger('facgov_download')
    current_user = User()

    # Check access, no access if an empty list is returned from a User class
    if current_user.has_facgov_access():

        client = current_app.config['S3_RESOURCE']
        bucket = client.Bucket(current_app.config['FACGOV_BUCKET'])

        # Redirect to base url for keys that end with '/' which are valid S3 keys but are not files
        if key.endswith('/'):
            return redirect(bp.url_prefix)

        try:
            file_obj = bucket.Object(key).get()
        except client.meta.client.exceptions.NoSuchKey:  # per boto3 docs
            logger.log_access(has_access=False, downloaded_object=key)
            raise NotFoundError(f'File {file_name(key)} not found.')

        logger.log_access(has_access=True, downloaded_object=key)
        return Response(file_obj['Body'].read(),
                        mimetype=file_type(key),
                        headers={
                            "Content-Disposition":
                            "inline; filename={}".format(file_name(key))
                        })

    else:

        logger.log_access(has_access=False, downloaded_object=key)
        raise ForbiddenError('You do not have access to this page. \
                              Please reach out to Timur Gulyamov (tg2648) to get access.'
                             )
Esempio n. 22
0
def serve_fif_archive_layout():

    current_user = User()

    if current_user.has_fif_archive_access():
        # If user has elevated access, serve admin view

        logger.log_access(has_access=True)

        layout = html.Div([
            serve_navbar(),
            html.Div(
                [
                    header,
                    serve_admin_fif_list(),
                ],
                className="container pb-5",
            ),
        ])

    else:

        # Otherwise, serve faculty view
        logger.log_access(has_access=False)

        layout = html.Div([
            serve_navbar(),
            html.Div(
                [
                    header,
                    serve_faculty_fif_list(current_user.uni),
                ],
                className="container pb-5",
            ),
        ])

    return layout
Esempio n. 23
0
 def setUp(self):
     self.user = User()
Esempio n. 24
0
 def setUp(self):
     """
     Setting up User before testing
     """
     self.user = User()
Esempio n. 25
0
    def with_me_data(self,
                     me_id=None,
                     user_id=None,
                     id=None,
                     limit=None,
                     offset=None,
                     order_by=None):
        review_table = 'app_review'
        user_table = 'app_user'
        reviewable_table = 'app_reviewable'
        reaction_table = 'app_reaction'
        comment_table = 'app_comment'

        table_cols = {
            review_table: ('id', 'name', 'time', 'rating', 'text'),
            user_table: ('id', 'email', 'username'),
            reviewable_table: ('id', 'url', 'image_url'),
            'me_data': ('reaction_type', ),
            'reaction_data': ('explicit', ),
            'comments': ('explicit', ),
        }
        table_cols_flat = [(table, col) for table, cols in table_cols.items()
                           for col in cols]
        select_cols = ','.join(f'{table}.{col}'
                               for table, col in table_cols_flat)
        maybe_where_user = f'AND {review_table}.user_id=%(user_id)s' if user_id else ''
        maybe_where_review = f'AND {review_table}.id=%(id)s' if id else ''
        maybe_where_entity_has_id = f'AND entity_id=%(id)s' if id else ''

        maybe_order_by = f'ORDER BY {order_by}' if order_by else f'ORDER BY {review_table}.time DESC'
        maybe_limit = f'LIMIT {limit}' if limit else ''
        maybe_offset = f'OFFSET {offset}' if offset else ''

        query = f"""
        SELECT {select_cols} FROM {review_table}
        JOIN {user_table} on {user_table}.id={review_table}.user_id
        JOIN {reviewable_table} on {reviewable_table}.id={review_table}.reviewable_id
        LEFT OUTER JOIN (
          SELECT entity_id, type as reaction_type
          FROM {reaction_table}
          WHERE user_id=%(me_id)s
          {maybe_where_entity_has_id}
        ) me_data on me_data.entity_id={review_table}.id
        LEFT OUTER JOIN (
          SELECT
            entity_id,
            json_agg(json_build_object(
              'user_id', {user_table}.id,
              'username', {user_table}.username,
              'type', {reaction_table}.type
            )) as explicit
          FROM {reaction_table}
          JOIN {user_table} on {reaction_table}.user_id={user_table}.id
          WHERE true
          {maybe_where_entity_has_id}
          GROUP BY entity_id
        ) reaction_data on reaction_data.entity_id={review_table}.id
        LEFT OUTER JOIN (
          SELECT
            entity_id,
            json_agg(json_build_object(
              'id', {comment_table}.id,
              'user_id', {user_table}.id,
              'username', {user_table}.username,
              'text', {comment_table}.text,
              'created_at', {comment_table}.created_at,
              'in_reply_to_id', {comment_table}.in_reply_to_id
            )) as explicit
          FROM {comment_table}
          JOIN {user_table} on {comment_table}.user_id={user_table}.id
          WHERE true
          {maybe_where_entity_has_id}
          GROUP BY entity_id
        ) comments on comments.entity_id={review_table}.id
        WHERE true
          {maybe_where_user}
          {maybe_where_review}
        {maybe_order_by}
        {maybe_limit}
        {maybe_offset}
    """

        with connection.cursor() as cursor:
            cursor.execute(
                query, {
                    'me_id': maybe_uuid(me_id),
                    'user_id': maybe_uuid(user_id),
                    'id': maybe_uuid(id)
                })
            rows = list(cursor.fetchall())

        table_col_to_row = {p: i for i, p in enumerate(table_cols_flat)}
        row_data = [{
            table: replace_uuid_recursively(
                {col: row[table_col_to_row[table, col]]
                 for col in cols})
            for table, cols in table_cols.items()
        } for row in rows]

        results = [
            annotate_obj(
                Review(**data[review_table],
                       user=User(**data[user_table]),
                       reviewable=Reviewable(**data[reviewable_table])),
                me=data['me_data'],
                reaction_data=data['reaction_data'],
                comments=data['comments']) for data in row_data
        ]

        return results
Esempio n. 26
0
 def setUp(self):
     self.user = User()
     self.user_data = {"user@email": "passwordofuser"}
Esempio n. 27
0
m_names = json.load(open("bogus/names_m.json", "r"))
f_names = json.load(open("bogus/names_f.json", "r"))

mlen = len(m_names)
flen = len(f_names)

lipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus efficitur urna nec interdum scelerisque. Quisque tempor augue at ipsum dignissim, eget pharetra ipsum ullamcorper. Proin eu eleifend enim. Nam iaculis placerat molestie. Praesent feugiat rutrum arcu eget semper. Praesent efficitur massa eu urna bibendum, sit amet efficitur sapien molestie. Ut euismod urna quis placerat aliquam. Sed elementum nunc eu posuere laoreet. Vestibulum congue eleifend convallis."
liptag = lipsum.split(" ")
imgs = []

for e in range(0, 84):
    n = surnames[random.randint(0, len(surnames) - 1)]
    if e % 2:
        fn = m_names[random.randint(0, mlen-1)]
    else:
        fn = f_names[random.randint(0, flen-1)]
    print("making user: %s %s" % (fn, n))
    usr = User(uname=fn[:1]+n[:4], email="*****@*****.**" % (fn, n), password="******")
    User.activate_account(usr)
    profile = Account(usr, fname=fn, lname=n, dob=str(random.randint(1980, 2000))+"-07-06")
    profile.images.append("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QAqRXhpZgAASUkqAAgAAAABADEBAgAHAAAAGgAAAAAAAABHb29nbGUAAP/bAIQAAwICCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggICAgJCQkICAsNCggNCAgJCAEDBAQCAgIJAgIJCAICAggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI/8AAEQgBIAEgAwERAAIRAQMRAf/EAB4AAQADAAIDAQEAAAAAAAAAAAAHCAkGCgIDBQEE/8QARhAAAgIBAgMFAwgGBwgDAQAAAQIAAwQFEQYSIQcICRMxIkFRFCMyYXGBkaEVJFNyksJCgpOxsrPBFiUzNERSo8M1Q2Qm/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ANU4CAgICAgICAgICAgICAgICB68i4KrMfRQSfsA3gVj8MzVmu4H0Jm9VrzKR139mjUculfxVAdvdAtBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA+PxhkcmJlPvty417b/DlqY7/lAq54UmXzcEaWv7O7UU/HUMmz+eBbuAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbt1zvK0PWbN9vL0rUH3+tcS4j+6BVzwfdbFvByVggnG1POob6i3k5Ox+vlyFP2EQLuQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIf74l5XhPiQg7H9CamN/txLR/rAq14KWTvwxqKe9deyG/i0/TR/IYGgsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECBu/hmeXwdxEw9+mXp/actZ/JoFXfBIzgdD1ir3pqq2H7LMOhR/lGBo3AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAq74musNRwRrjL6umHSfd7N+oYtTfgrk/XAq74HOqA4/EdO/VLtMt2+qxM1N/wDxQNRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQPFfzOXgjUl/aZGnJ+GdRZ/64FXPA3vHn8SL7zVpTbfUr6gCfu5h+MDWKAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSTxgNUFfBzofW/UsGpfrI827p/VpMCr3gg5O2p66n/dgYrbfuZDD+f84GvkBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDPvxrbR/sxpy+869jn7l0/Uwf8QgVg8FXU2XibUKR9GzRLnP21ZuCF/K1oG0cBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQED8Ztup6AQIK7Ve/LwpozNXna1iecrcjY+KXzb0Yjm5bKsRbmq6dd7vLHUdfaXcK3cV+NNw5UzLi6fquWB6WFMbHrbp7ue9renp7VSwKWd+LxEhxhg42AmknArxc35WtzZoyGtAptpCNUMWkVna0tuLbPTbbruA5B4NGVy8W3j9pouYn4ZOC/8kDbqAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfhMCkneq8VDRdBazD05RrOpIWV1ptC4OM6sFZcjKHPz2L7XzOOlnVGV3oO24ZV9vHfg4l4iLrn6jYmK+4+QYe+LhBSACjVI3Pep6n9asvYbnYgbABA8Ccuz7uO8W6oofE0LONZPSzIRcKtvQ7q+a+OHXr9JCw9R6giBO2i+DfxdaoL2aRjE+qXZtzMv2/J8TIX+FmgWj7hfhxa5wtr36U1DK0m7H+RZGMUw78yy7nuNRU8t2DjpyjkO58zcdNgYGjsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQED5vEfEePh0XZWVdXj42PW1t11rBK6q0G7O7NsAAIGLnfk8TrM11r9L0RrcHRuY1veC1eZqSDoS5GzY2K532xwfMtr280gO2PWFEsLCex0rrRrLLGVK60Us7uxCqiKoLMzMQAoBJJAEDQTuveEJqeppVma/c+kYjhXXDRAdUsRgeli2A14J+idrkuuHtK9FRG8DTzsV7ofDnD4Q6ZpeNVeoI+WWr8ozW3ILb5V3PaoYgEpWyVjYbKAAAExQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA9eRkKis7sFVQWZmIVVVRuWYnYAADck9AIGGXiLd/O7iTLs0zTrGr0HEt2XlJB1O6s7fKrdtv1dWH6tSdxsBc/tsiUBVfsn7JtQ1zPo03TMdsnKvOyovRUQfTttc+zVTWOr2MQAOnUkAhuP3LvD30zhWpMm4V5+tMu9uc6bpjFhs1OAjDepACVN5Avu3Yk1qwpQLZQK794bv68NcNFqc3N8/NUH/AHfgqMnKBHKeW3ZlpxiQykDJupZl3Kh+U7BQvtQ8bLUrGZdH0nExa+bpbnvZl2sux6+VS2NXU++x2L3qAD679AgPW/FL44udmXWFoVjuKqNP04InT0VrMW24j3+3a53Pr6AB5aD4p3HFLqzaumQo9ar9P08o37zVYtNw/q2rAn3st8bPUa2VNZ0jFya+b2rtPezFtVNh18m9smu1+bc9LKFIIHTl9oL893nv08OcS8teBmirMYAnT8wDHy99tyK1LNVkbe841t23v23gWAgICAgICAgICAgICAgICAgICAgICAgICAgZr+Lz3uGwsZeGMCzlyM6oW6pYjENVhMdq8XcdObMIY2jm3GOvKVK5QIDJfg/g/J1DKx8LCpfIysq1KaKawC1ljnZQNyFUe9nYqiKCzFQpIDsB9ybuc4nCOmrUBXdqmSqtqOaF6u/qMeksOZcWg+yo9k2MDayqWCoFgNa1qnGptyMi2uiiit7brrXWuqqqtSz2WWOQqIigszMQAASYGP3fc8VbK1B7dM4atsw9PHNXdqS81eZme4/JydnxMf12cbZFnQ81I5kYM57bSxLMSzMSSSdySepJJ6kk9STA5twL2F61qgVtO0nUs6tm5Bbi4WRdSG3CnmurrapApPtM7qq+pIgSuvhz8akb/oDK/tcQH8Dkb/lAjfjvu3cQaYLG1DRdTxa6vp324V4xwNgdxkhDQy9erLYQD033BECOIHsx8hkZXRirqQyspKsrKd1ZWGxBBAIIO4MDSLuPeKvk4dlOl8T3Nk4R5aqNVfmfKxT6AZjdWyqPQG4g317FmN4PzYa86bqVd1dd1NiW1WotlVtbB67K3AZHR1JVkZSGVlJBBBED+mAgICAgICAgICAgICAgICAgICAgICBx3tE46o0zAzNRym5cfCxrsq4jqeSlGchQOpZtuVVG5ZiAPWB1p+13tOyda1PO1XLO9+dkPe433CBjtXUp2HsU1BKU6fQRYGp/hB90tcXEPFGdV+tZivTpaupBow9yluSFYDZ8tlKVvtuMdeZWK5TCBpXAxo8U7vwvqeXdw3plpXTcK3k1C5G6Z2ZUw3pBB642JYOXY7C3IVm2K1UswVR7s/dS1firMGLptO1KEHKzrgy4mIh99lgB5rG/oUVhrX9dgi2WIGxPdv8ADF4b0Fa7r6BrGoqFLZeeivTW45CTi4R5qKQLEDo9oyMislgL9jywLc1UhQFUBVA2AAAAHwAHQCB5wPwiBWzvDeHxwzxGHsvwhhZzdRqGnhMfILez1uQKcfK3CKhORU9ipzBLKieaBjv3tu4zrHCVwOQvyzTbDtRqdFbClm/ZZCbucW/3it2ZLBv5dlvJYECucDSDwru/LZg5NPDOq3c2BlPyaZfY3/J5Tn2cUk/9NlMeWsb/ADV5UActzGsNiICAgICAgICAgICAgICAgICAgICAgIFAPGU7XPkfD2NpaMBbq+WPMXrucTBKX2Ebf/oOIOvQgtAyg7t/Y1ZxBrmm6RWSozMhVusX6VWNWDblWqSrDnrx67GQMpUuFB9YHZO4f0GnFopxcetKcfGqrooqrAVKqakFddaKOgVEUKAPQAQK8+IT3i24b4aysihymfmEafgEfSS+9HL3j2WAOPQltylhymxa1P0xAxM7q/drzeKtXo0zE9ivpdm5RG6YmGrKLbiP6Vh3FdNXTzLWQEovPYgdhXsg7INP0LAo03TaFoxqF2AGxe1yBz3XPtvbdYRu7t1PQDZVVQHNICAgICB8fi7hDFz8a/DzaK8nFyK2quotUMliN6gg+hHqrDZlYBgQQCAwI7+Hc7u4S1UpWGs0nNL26bkE8zBRsbMS87Da/HLAb9RbUa7AeY2pUFaK7CCCCQQQQQdiCOoII9CPjA7Cvh/d4w8S8N4mVc/Pn4hOBqJPq+TjohF59lATk0PTkNyLyLZZYgJ8swLIwEBAQEBAQEBAQEBAQEBAQEBAQEBAxQ8ZvjVr+J8XD596sDS6AK+myX5N111rb7b7vV8mBG5ACLsAS24c68Ezso8zO1fWrFbbFx6tPxz7PIbMp/PyGA2LiyqvHpUHdV5clx7R+gGusDHDxq+0t7ta0zSlJ8rBwTlMAx2ORm2spDJttvXTjVFW3J2ucez15gub4XvdxXQuG6Mq2sDUNaWvPyWI9pMdlJwcfcqrBa6H85kbcrfkXjcgLsFwoCAgICAgIEG99Hu818TcPZ2ncqnKVDlac52BrzqFZqdmKvyrcC2NYQpPlXWbbHYgOuXdSVJVgVZSQykEEEHYgg9QQehB9IGi3grdqLUa1qWks3zWoYQyawX6DJwbANkQ9N7KMi1mYbHahNwwG6hshAQEBAQEBAQEBAQEBAQEBAQEBAQPC29VG7EKPiSAPxMDr6eJTrPn8ba4wfnVbcStCG5lArwMVSqncgAMG6D3k+8mBpl4QHCK4/B9d4HtZ+oZuSx3P/1smGo6+mwxfQdOu/qTAu5Awz74XCTa12pX6c4Z0ytT0fCZQx3XHOJgJcV6jlC1+bYeUjrzEdTA3IooVVVVAVVAVVA2AUDYAD3ADoBA9kBAQEBAQEBA66Xfx4AXTOL9exa9/LbObLQHbYLnomdyrsFHJWcg1r0OwQAliCSH2/Da1PyeN9Af03vyav7fAy6fz8zaB2EoEF9+XVDTwhxBartWy6dbyOrFWV2KqhVlIIbnI2IO+8DATC7d9crG1es6rWPgmo5iD8FuED62J3peJq/ocRa6v7urZ4H3j5RsfsPSBzPQ+/nxohCVcQajYT0VXZMhifcB51djE/nAlHRe+B2psoNN2s2qfRhoVF4P2M2mv+RgSVwp3ve1wBU/RGoZRPQWX8NXID9r042NUB9Z2ECV9J7yPbAQP/5jDff33YbVH7x+lKtvvAgSLw92+dq2yi/gzTbCdt2XPx8cD4nkfU7mHx95+owJT0ftS4+YDzeFNIUn1J4gCgfcmHf+RMDmOnca8XnbzOH9EG/rtxJlAj7hw9YD9zffA57o+q6sy734OBU3/bXqeRd+Z0qn+6B79Sw9T5fmcnBDfGzCyGX8F1BSf4hAj/U9C4y6+TqnDXqeUPoepgge7dhxAwJHx8sA/AekDh2rcM9oux8nVeFSfcDpmo1j8Tl37fgYEYazwZ2vtzcmrcLr67Cqu3f7vP01tvvY/fAjXW+zLtpAYrrOFZvv7FDaZWfsU2afTt8Bu4P1wIu1js67bCG57NRIPT5nU9GXf6wKctWH3AfdAjHXexHtaAY2nihwSSQmsW3fWdkpzn6fABdvhAi/XezHtB9pL8Hi9x/S5qNYtQ/1gro34mBHOpdgHEC7vdomsqSSWazTc0bkncks1PUknckmBxvUeAc+kE3YWXUB6mzGuQD7SyAQN3vC2QDgTQ/rOpk/Wf0xqA/uAgWsgZLcS8Lmvtup81SEvyKcqkn0cDQtwy/UMip6/wB5DA1pgICAgICAgICBhR4uoH+2eRt6/IMDm+3yj/ptAj7w5dO83jbQF+GTdZ/Y4eTd/JA7DECoPiu8RCjgnUqy3K2Xfp+OnUgsRm05LKNvjXjvuPQrvAyR7hfDteXxhoFFta21tm871uodGWmm248ysCrKPL3III6QOwvi8J4tYATGx0A9AlNagfYAogfSrqAGwAA+AGw/AQPOAgICAgICAgICAgICAgICB4soPqN/tgEQDoAAPgOkDygZ09/Lhw6XxxwVxKFPkW5ePpeW+6rXWVyDyOSBzc74+ZkHruCuKB7HqQ0WgICAgICAgICB12e/9x4mo8Y69kVsWrTM+SITvt+oVV4TcnU+w1lDuNuh5ub+lAnnwaOzI5XEuTqLIGr0rAsKud90ys4/J6uX3e1jDNBJPp02O+4Da2Blh43PamvJouiIQXLW6peu45kUK2Jinb12sLZnXcf8P3+4K8+ERwYMrjKm4j/47T87NHr9JlTBHp6/876Hp94EDdWAgICAgICAgICAgICAgICAgICAgIEH983u8rxPw9m6YAnyoKMnT7H2ArzqAzU+0VbkW4F8axwCwpvs2gfQ7pnbCdc0HAzLgUzUr+SalS6tXZRqWJ8xmV2VP7dTG1TYK39oJYm/rAmCAgICAgICBDPe87wFPDWg52puyi8VmjArYgG/OuVhRWo33bkIa+wLuRTVa39GB1wcnJZ2Z3Znd2LMzEszMx3ZmY7ksSSSSSSTA3o8MDu9PoPDNNmQhTN1dxqOQrDZ6qnRVxKGBVWBSgC1kccyW32r7hAtxk5CorO7BVVSzMxAVVUbliT0AAG5J9BA64nfH7eTxJxFqOpqScZrfIwQeYcuFj/NUEKyqyG4A5DIw3Wy5x123gaNeCp2RtRpep6zYpB1DJrxMcnbY4+EGNlibddrMi9623PrjdAPVg0lgICAgICAgICAgICAgICAgICAgICAgQDxJwqeH9WyddxQTpWpmv8A2ixwzFcS6lClOu49fVQAm1OpIgUtQteUSTiWi0J6x8hXVXRgyMAyspDKysN1ZSNwQQQQQdiIHsgICAgIHzuIuIqMSi7Kyrq8fHx62tuutYJXVWg5md2bYBVA33MDBLxA++Y/FmqBcZrE0bBLV4FLDk85z0tzrU9RZdsFrR+tVKqNkay/mDlHhr9yl+JNSXUc6oHRNOtVrhYu6Z+So568NQfZapTy2ZJ9oeXy1bb3hkDdUCBQHxaO9gulaUdAxH/3hrFTDJKlCcbTCeS3nB3IbO9vHQcv/CGS3MjLXzBjhwTwdkajmYuBiIbMnMvqxqEG/tWXOEXcgHZQTuzeiqCT0BgdlTsN7J6NC0jT9JxtvKwcZKSwAXzber33sAAOe+9rLm6fScwOdQEBAQEBAQEBAQEBAQEBAQEBAQEBAQPwiBXfibQdT4Y58rRcV9U0Nd3v4fp2GbgDfd7dAJ9mygDdjoz8qg9MV6QRjkOc9jfeX0TXlb9G51Vl1ZIvwrd6M/HZWKOl+HcEvrKurLzFChIPKzDrAlCAgIEG94LvocPcNVv+kc6tsoLumn4pW/OsOzFR5Kt8yr8pAtyWpq36c+/SBjb3xvEA1XixzjkfIdISwNTp9Tkm0rtyWZtvT5RYGHMqBUqq9nZWZfNYOQ9yfw5dR4nsrzM1btO0RWVjkvWVvzl6MUwEcbMjD2TmMGpQkhReyPWobg9nvZ7haVhY+n6fjpi4eLWK6aa99lUdSzMxL2WOxL2W2M1ltjM7szMzEI172neoweE9Lszsra3JfevAwQ4W3LyNhsBvuUoq3D33bHy09A7vVXYHXs7Uu0zM1nUMvVM+zzcvMtNtrAbKOgVK613PLVVWqVVpueWtFXc7bwNKPB+7o7czcV59RAAsx9HrdR7XMDXk543G4AHPi0ncb75J2PzTQNV4CAgICAgICAgICAgICAgICAgICAgICAgIFfO8P3GdA4kcZOTRZh6khVqtU05xjZqsjIys7BWqvKlFCtfXZZWu/lvUTzQK0cUd2LtP0VGGgcVnVsdOZq6c/wAk5p6krWDqVeXQ3Q7czZdK7joqDYAI24h7Ye2mheR9Ot5tv+Jj6dpuU32744vq3+rk+6BE/Ex7X9YXyb04h5GOxWupNLRt/c5oTDUr16hzy7QP4Ozbwi+Ls9+bOXE0qsv7b5eUmRewPU2JVhnIDMSSOW66gkgkkDYkL493fwoOHdFevKzvM1vNr5WVstVTCrsUMC9eCpZX35vTLtylUqjKEZeYhdeusAAAAAAAADYADoAAOgAHugV472/fe0jhLHb5RYuVqb182LpdTjz7N9wll5Ab5NjFgd7rFJYK4rS1lKgMJO3jt91PiTULNR1S/wA25hy11oCmPjVAkrRjVFm8updyerM7ElnZ2ZmITJ3Bu5VfxZqIe9LKtEwnU5+SN085xsy4GO/qb7VIaxk3+T0nnYq1mOtob46DoVOLRTjY1SUY+PUlNFNShK6qq1CV1oo2CqigKAPQCB/fAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECPe1vvA6LoVRu1bUsXCHKzLXZYDkWhRufJxk5si4/VVWx6j4wM0+834yV94sxOGMZsWs8yHVMxUbIYe0pbFxPbrp39l0tyGtfYkGiphuAzU17iC/KusyMq+7JyLW57b8ix7rrW9Oay2xmd22AG7MT0gWz7knh1ahxRYmZmC3T9EVhzZLJy35u3U14CupDL/RbLZWpQ7hRc6PWobg9nPZzhaRhY+nadj14uHjIK6aawdgPVmZiS9ltjEvZbYzWWOzOzMzEkOSwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKHd+TxHsvhHWKtMp0zHzEtwKczzbb7amDW35NRTlRGBA8gEHcH2iPdAqdxD41XElhPybTtGx0I6c9WZkWg9dzz/LKqyNtuhp+PXr0CEu0XxIeMtSDrZrFuLU428rT66sMKOvRbqUGT7/AH3k9BArfqeqW32PbdZZdbYeZ7bXayx2Pqzu5LMfrJJgSX2Kd13XuIbFTStNyMhCdmyivlYdezBWNmXbyUArvua1drWAblRyCIGo/dZ8IbTdNavM4gsTVsxQGGEqkaZS2yn5xXAtzWVgQDaKqGViGx3IVgGhNFCoqqqhVUBVVQAqqBsFUDoAB0AHQCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi/wCNXpBXiTTr/dbo1VY+HzOZmE/5o/AQIp7lXcCu4yx87ITU69PTCvqpIfFbJNhtRnJG19AXlAA2O+/N7tuoXI4R8EHTEH6/rudkHf8A6TGx8IbfD55s/rv7/f8AAQLI9m3hs8G6YQ6aPVmWbbF9Sd84HrvuaLycUH61oB26fGBZfEw0rVUrVURRsqIoVVA9AqqAAB8AIHugICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZA+N7i7apob+5tPyU/gyAT/jECZ/BKxQNB1Z/e2r8pP1Jh4xH4c5/GBovAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAya8cen9Y4bb406oN/3XwT/ADfnAmDwUsfbhjUX/wC7Xshf4dP00/zmBoLAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAy18cjTN6uG7tuq2apUT++uA4H/jP5wJq8HjQhTweLAP+a1TOvP1lVx8bf8McD7oF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGb/jcYQOi6NZ701SxB9lmJYx/yhAmPwosTl4I0w/tL9Rcfdn5CfyQLewEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQM9/Gvxt+GtNf3rrtK/x4Gon+QQJo8MzSWp4H0JW9WrzLh7vZv1HLuX8FcD64FoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFHfGI0QW8H+YfXG1TCuX6iy5GN/hyDAmvuKYvJwfw6PjpmO38YLj8mgTvAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAqB4r+HzcEak37PI05/wAc6iv/ANkCYe5/Ty8KcNjbb/celkj06nDpP+sCXoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFXfE10dr+CNcVfVEw7j+7RqGLa34qhH1QJr7DsHytE0evbby9L09Nvhy4lQ2/KBzeAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAff1xufg7iEfDTrW/gZHP+GBMvCGKExMVB6Jj0KPsWpQP7oH14CAgICAgICAgICAgICAgICB/9k=")
    profile.tags = [liptag[random.randint(0, len(liptag) - 1)] for i in range(0, 6)]
    profile.gender = ["Female", "Male"][e % 2]
    profile.interest= ["Men", "Women", "Both"][random.randint(0, 2)]
    profile.biography = lipsum
    print("Registered user ", usr.uname)
    profile.save()
    


Esempio n. 28
0
def serve_searchcom_layout():

    # if has_request_context():
    #     session.permanent = True

    current_user = User()

    # Check access, no access if an empty list is returned from a User class
    if len(current_user.searchcom_access()) > 0:

        # Log that a user accesssed this view and was authorized
        logger.log_access(has_access=True)
        # Sub-layouts can be served from functions as well, if necessary, to enable dynamic updates
        # For example, when current user object is acesssed in the navbar/filters, which requires a request context

        layout = html.Div(
            [
                serve_navbar(),
                html.Div(
                    [
                        header,
                        serve_req_dropdown(),
                        search_info,
                        # serve_slider(),
                        charts,
                        subfields,
                        crosstab_table,
                        session_data
                    ],
                    className="container pb-5",
                ),
            ]
        )

    else:

        # Log that a user accesssed this view and was NOT authorized
        logger.log_access(has_access=False)

        no_access_alert = dbc.Alert(
            [
                html.H5('You don\'t have access to this dashboard.', className='alert-heading'),
                html.P(
                    'If your department has a ladder-rank search posted in RAPS, please reach out to Timur Gulyamov (tg2648) to get access.',
                    className='mb-0',
                ),
            ],
            color='warning',
            className='mt-3'
        )

        layout = html.Div(
            [
                serve_navbar(),
                html.Div(
                    [
                        no_access_alert
                    ],
                    className="container"
                ),
            ]
        )

    return layout
Esempio n. 29
0
#! /usr/bin/env python3

from app.users import User

from app import controller
import os

DIR = os.path.dirname(__file__)
DBPATH = os.path.join(DIR, 'data', 'terminal_trader.db')

User.dbpath = DBPATH
#controller.run()

me = User(name = "Richard Speed", age = 48, email = "*****@*****.**", \
          balance = 250.00, login_name = "speedr", login_id = "password16" )
al = User(name = "Alistair Fraser", age = 43, email = "*****@*****.**", \
          balance = 950.00, login_name = "frazzle", login_id = "password17" )
hamo = User(name = "Steven Hamilton", age = 44, email = "*****@*****.**", \
          balance = 550.00, login_name = "hamo", login_id = "password18" )
hemel = User(name = "Stuart Head", age = 45, email = "*****@*****.**", \
          balance = 650.00, login_name = "hemel", login_id = "password19" )
hygers = User(name = "Simon Hygate", age = 45, email = "*****@*****.**", \
          balance = 750.00, login_name = "hygers", login_id = "password20" )

al._insert()
hamo._insert()
hemel._insert()
hygers._insert()

User.one_from_where_clause("login_name", "speedr")
Esempio n. 30
0
 def setUp(self):
     self.myUser=User(1, 2, 3, 4, 2)