コード例 #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")
コード例 #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.")
コード例 #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()
コード例 #4
0
 def setUp(self):
     """Set up test"""
     self.user = User()
     self.current_users = USERS
     self.user_email = "*****@*****.**"
     self.username = "******"
     self.password = "******"
コード例 #5
0
ファイル: base.py プロジェクト: purwin/Parks-Database
 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()
コード例 #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()
コード例 #7
0
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')
コード例 #8
0
ファイル: faculty.py プロジェクト: tg2648/cu-reports-app
    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'}
コード例 #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()
コード例 #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)
コード例 #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
コード例 #12
0
ファイル: dbo.py プロジェクト: DarkHonin/Matcher
    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()
コード例 #13
0
ファイル: layout.py プロジェクト: tg2648/cu-reports-app
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
コード例 #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)
コード例 #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)
コード例 #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
コード例 #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()
コード例 #18
0
ファイル: main.py プロジェクト: bigOconstant/pythonjwt
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)
コード例 #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.')
コード例 #20
0
ファイル: test_users.py プロジェクト: purwin/Parks-Database
  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)
コード例 #21
0
ファイル: facgov.py プロジェクト: tg2648/cu-reports-app
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.'
                             )
コード例 #22
0
ファイル: layout.py プロジェクト: tg2648/cu-reports-app
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
コード例 #23
0
 def setUp(self):
     self.user = User()
コード例 #24
0
 def setUp(self):
     """
     Setting up User before testing
     """
     self.user = User()
コード例 #25
0
ファイル: review.py プロジェクト: mgraczyk/exomind
    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
コード例 #26
0
ファイル: tests.py プロジェクト: alfie254/Yummy-Recipes
 def setUp(self):
     self.user = User()
     self.user_data = {"user@email": "passwordofuser"}
コード例 #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,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H/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()
    


コード例 #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
コード例 #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")
コード例 #30
0
 def setUp(self):
     self.myUser=User(1, 2, 3, 4, 2)