Пример #1
0
def edit_user(id):
    data = data_defaults['user']['edit']
    data['action']['url'] = data['action']['url'] % id
    if request.method == 'GET':
        data['user'] = Users().get_user(id)
        return render_template('user_form.html', data=data)
    if request.method == 'POST':
        _input = g.form.copy()
        _input['id'] = id
        _input['modified_by'] = g.current_user['id']
        u = Users().get_user(id)
        if 'password' in _input and _input['password']:
            _input['password'] = Auth().password_hash(
                _input['confirm_password'])
        else:
            _input['password'] = u['password']
        ok, messages = fswww().validate_user_properties(_input)
        if not ok:
            for m in messages:
                flash(m)
            return render_template('user_form.html', data={'user': _input})
        id = Users().update_user(_input)
        if id is not False:
            url = '/users/edit/%d' % id
            flash('user updated')
            return redirect(url)

        flash('unable to update user')
        return render_template('user_form.html', data={'role': _input})
Пример #2
0
def test_edit_first_user_name(app):
    if app.users.count() == 0:
        app.users.create(Users(firstname="testuser"))
    old_users = app.users.get_users_list()
    index = randrange(len(old_users))
    user = Users(firstname="New user", lastname=None)
    user.id = old_users[index].id
    app.users.edit_user_by_index(index, user)
    new_users = app.users.get_users_list()
    assert len(old_users) == len(new_users)
    old_users[index] = user
    assert sorted(old_users, key=Users.id_or_max) != sorted(
        new_users, key=Users.id_or_max)
Пример #3
0
def delete_user_from_group(app):
    new_group = db.get_group_list()
    group = random.choice(new_group)
    if len(db.get_users_list()) == 0:
        app.users.create(
            Users(firstname="somebody",
                  lastname="someone",
                  email="*****@*****.**",
                  homephone=12345,
                  workphone=123456,
                  mobilephone=1234567,
                  address="somewhere"))
    elif len(db.get_group_list()) == 0:
        app.create(Group(name="New group for user"))
    elif len(db.get_users_in_group(group)) == 0:
        app.add_user_to_group()
    else:
        ui_list = db.get_users_in_group(group)
        random_user = random.choice(ui_list)
        app.users.delete_user_from_group()
        db_list = db.get_users_in_group(group)
        ui_list.remove(random_user)
        assert sorted(ui_list,
                      key=Group.id_or_max) == sorted(db_list,
                                                     key=Group.id_or_max)
def test_add_user_to_group(app):
    if len(db.get_users_list()) == 0:
        app.users.create(
            Users(firstname="somebody",
                  lastname="someone",
                  email="*****@*****.**",
                  homephone=12345,
                  workphone=123456,
                  mobilephone=1234567,
                  address="somewhere"))
    elif len(db.get_group_list()) == 0:
        app.group.create(Group(name="New group for user"))
    else:
        old_user = db.get_users_list()
        old_group = db.get_group_list()
        if old_group:
            new_group = db.get_group_list()
            group = random.choice(new_group)
            group_id = group.id
            if old_user:
                new_user = db.get_users_not_in_group(group)
                random_user = random.choice(new_user)
                id = random_user.id
                ui_list = db.get_users_in_group(group)
                app.users.add_user_to_group(id, group_id)
                db_list = db.get_users_in_group(group)
                ui_list.append(random_user)
                assert sorted(ui_list, key=Group.id_or_max) == sorted(
                    db_list, key=Group.id_or_max)
Пример #5
0
def validate_account(form, db):
    email = form.email.data
    tmp_password = form.password.data
    username = form.username.data
    # randomly generate an 8 character permalink it should be unique
    # create a random sequence of length 16. A mix of letters and digits.
    permalink = ""
    for x in range(16):
        if random.randint(0, 11) <= 5:
            permalink = permalink + random.choice(string.ascii_letters)
        else:
            permalink = permalink + random.choice(string.digits)
    # Add a check to see if permalink is in database and loop until we create a permalink that is not
    # hash the password before storing it inside the database for security concerns
    password = bcrypt.hashpw(tmp_password.encode('utf8'), salt=bcrypt_salt).decode('utf8')
    my_user = Users(email=email, password=password, username=username, permalink=permalink)
    # check if checkpw works
    print(bcrypt.checkpw(tmp_password.encode('utf8'), password.encode('utf8')))
    db.session.add(my_user)
    try:
        db.session.commit()
        return True
    except IntegrityError:
        # cancel all changes
        db.session.rollback()
        return False
 def login(self, form):
     u, p = form.get('username'), form.get('password')
     user = Users().get_by_username(u)
     print repr(user)
     if not user or not Auth().authorize_user(user, p):
         return False
     return user
Пример #7
0
 def get_users_from_view_page(self, index):
     wd = self.app.wd
     self.open_users_view_by_index(index)
     text = wd.find_element_by_id("content").text
     homephone = re.search("H: (.*)", text).group(1)
     workphone = re.search("W: (.*)", text).group(1)
     mobilephone = re.search("M: (.*)", text).group(1)
     secondaryphone = re.search("P: (.*)", text).group(1)
     return Users(homephone=homephone, workphone=workphone, mobilephone=mobilephone, secondaryphone=secondaryphone)
Пример #8
0
def addContact():
    '''
    Add a contact
    {
      "sender_id": "4",
      "displayName": "Mohit",
      "phoneNum": "8427434777",
      "countryPhoneCode":"91"  
    }
    '''
    auth_header = request.headers.get('Authorization')
    sub = jwtUtil.parse_decode_auth_token(auth_header, SECRETKEY)

    req_json = request.get_json()
    returnStatus = {"status": "SUCCESS"}
    session = Session()
    try:
        contactJson = req_json['contact']
        sender_id = contactJson['sender_id']
        sender_name = contactJson['sender_name']
        con_displayName = contactJson['display_name']
        con_phone_Num = contactJson['phone_number']
        country_phone_code = contactJson['country_phone_code']

        if (sender_name == sub):
            contact = Users(display_name=con_displayName,
                            phone_number=con_phone_Num,
                            country_code=country_phone_code,
                            contact_id=sender_id)
            session.add(contact)
            session.commit()
            session.refresh(contact)
            #         schema = UserSchema(many = True)
            #         contactList = schema.dump(contact)
            returnStatus.update({
                "user_id":
                contact.user_id,
                "display_name":
                contact.display_name,
                "phone_number":
                contact.phone_number,
                "country_phone_code":
                contact.country_phone_code
            })
            print(contact.user_id)
        else:
            returnStatus = {"status": "FAILURE"}
    except Exception as e:
        print(e)
        returnStatus = {
            "status":
            "Some problem while adding contact, please check for duplicity"
        }
    finally:
        #returnStatus = "Contact {0} added success fully".format(contact.user_id)
        session.close()
    return json.dumps(returnStatus)
Пример #9
0
def test_delete_some_user(app, db, check_ui):
    if len(db.get_users_list()) == 0:
        app.users.create(Users(firstname="testuser"))
    old_users = db.get_users_list()
    user = random.choice(old_users)
    app.users.delete_user_by_id(user.id)
    new_users = db.get_users_list()
    assert len(old_users) - 1 == len(new_users)
    old_users.remove(user)
    assert old_users == new_users
    if check_ui:
        assert sorted(new_users, key=Users.id_or_max) == sorted(
            app.group.get_users_list(), key=Users.id_or_max)
Пример #10
0
 def get_users_list(self):
     list = []
     cursor = self.connection.cursor()
     try:
         cursor.execute(
             "select id, firstname, lastname from addressbook where deprecated='0000-00-00 00:00:00'"
         )
         for row in cursor:
             (id, firstname, lastname) = row
             list.append(
                 Users(id=str(id), firstname=firstname, lastname=lastname))
     finally:
         cursor.close()
     return list
Пример #11
0
 def get_users_info_from_edit_page(self, index):
     wd = self.app.wd
     self.open_users_to_edit_by_index(index)
     firstname = wd.find_element_by_name("firstname").get_attribute("value")
     lastname = wd.find_element_by_name("lastname").get_attribute("value")
     id = wd.find_element_by_name("id").get_attribute("value")
     homephone = wd.find_element_by_name("home").get_attribute("value")
     workphone = wd.find_element_by_name("work").get_attribute("value")
     mobilephone = wd.find_element_by_name("mobile").get_attribute("value")
     secondaryphone = wd.find_element_by_name("phone2").get_attribute("value")
     address = wd.find_element_by_name("address").text
     email = wd.find_element_by_name("email").get_attribute("value")
     email2 = wd.find_element_by_name("email2").get_attribute("value")
     email3 = wd.find_element_by_name("email3").get_attribute("value")
     return Users(firstname=firstname,lastname=lastname, id=id, homephone=homephone, workphone=workphone,address=address,
                  mobilephone=mobilephone, secondaryphone=secondaryphone, email=email, email2=email2, email3=email3)
Пример #12
0
 def get_users_list(self):
     if self.user_cache is None:
         wd = self.app.wd
         self.open_webpage()
         self.user_cache = []
         for row in wd.find_elements_by_name("entry"):
             cells = row.find_elements_by_tag_name("td")
             firstname = cells[2].text
             lastname = cells[1].text
             id = cells[0].find_element_by_tag_name("input").get_attribute("value")
             address = cells[3].text
             all_phones = cells[5].text
             all_emails = cells[4].text
             self.user_cache.append(Users(firstname=firstname, lastname=lastname, id=id, address=address,
                                          all_phones_from_home_page=all_phones, all_emails_from_home_page=all_emails))
     return list(self.user_cache)
Пример #13
0
 def get_user_info_by_id(self, id):
     wd = self.app.wd
     self.app.open_home_page()
     row = wd.find_element_by_xpath('//td/*[@id="' + id + '"]/../..')
     cells = row.find_elements_by_tag_name("td")
     id = cells[0].find_element_by_tag_name("input").get_attribute("value")
     firstname = cells[2].text
     lastname = cells[1].text
     address = cells[3].text
     all_emails = cells[4].text
     all_phones = cells[5].text
     return Users(id=id,
                  firstname=firstname,
                  lastname=lastname,
                  address=address,
                  all_emails_from_home_page=all_emails,
                  all_phones_from_home_page=all_phones)
Пример #14
0
def signup():
    """
        curl -d '{"name":"greenbear", "id":"greenbear", "passwd": "greenbear"}' -H "Content-Type: application/json" -X POST http://localhost:5000/users/signup
        - 만약, create_user가 있다면 singup으로 redirect => 신규 id 생성으로 요청
        - 그렇지 않다면, user 생성 후, login 페이지로 redirect
        :return:
        """

    logger_info(f"[{request.remote_addr}] {request.method}")
    if request.method == "POST":
        logger_info(f"request.json: {request.json}")
        logger_info(f"request.form: {request.form}")
        if request.json:
            if not request.json or not 'id' in request.json:
                logger_info(f"400 error : {request}")
                abort(400)
                logger_info(f"request params: {request.json}")

        with session_scope() as db_session:
            if request.json:
                user_id = request.json.get('id')
                user_name = request.json.get('name')
                user_pw = request.json.get('pw')
            else:
                user_id = request.form.get('id')
                user_name = request.form.get('name')
                user_pw = request.form.get('pw')
            user = db_session.query(Users).filter_by(id=user_id).first()
            if user:
                # 만약 기존 user가 있다면, 신규 ID로 user를 생성할 수 있도록 다시 redirect
                logger_info(
                    f"{user._asdict()} is already. try signup with new_user")
                flash("user id already exists.")
                return redirect(url_for('users.signup'))

            user_pw = (bcrypt.hashpw(user_pw.encode('UTF-8'),
                                     bcrypt.gensalt())).decode('utf-8')
            cret_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            new_user = Users(user_id, user_name, user_pw, cret_dt)
            db_session.add(new_user)
            logger_info(f"create new_user: {new_user.id}")
            return redirect(url_for('users.login'))
    elif request.method == "GET":
        return render_template("signup_form.html")
Пример #15
0
def register():
    '''
    Add a User
    {
      
      "display_name": "Mohit",
      "phone_number": "8427434777",
      "country_phone_code":"91",
      callback_url : "hdjkfhkdjsf",
      telesign_customer_id : "ghdkjafhjd",
      telesign_api_key : "jsdhfjkhsdfkj",
      password : "******"
          }
    '''
    req_json = request.get_json()
    returnStatus = "status: User created successfully"
    session = Session()
    try:
        userJson = req_json['contact']
        user_displayName = userJson['display_name']
        phone_Num = userJson['phone_number']
        country_phone_code = userJson['country_phone_code']
        callback_url = userJson['callback_url']
        telesign_customer_id = userJson['telesign_customer_id']
        telesign_api_key = userJson['telesign_api_key']
        password = userJson['password']

        newUser = Users(display_name=user_displayName,
                        phone_number=phone_Num,
                        country_code=country_phone_code,
                        callback_url=callback_url,
                        ts_cust_id=telesign_customer_id,
                        ts_api_key=telesign_api_key,
                        password=password)
        session.add(newUser)
        session.commit()
    except Exception as e:
        print(e)
        returnStatus = "status: Some problem while registering user, please check for duplicity"
    finally:
        returnStatus = "status: Registration successfull"
        #returnStatus = "Contact {0} added success fully".format(contact.user_id)
        session.close()
    return json.dumps(returnStatus)
Пример #16
0
def create_user():
    data = data_defaults['user']['create']
    if request.method == 'GET':
        return render_template('user_form.html', data=data)
    if request.method == 'POST':
        _input = g.form.copy()
        _input['modified_by'] = g.current_user['id']
        ok, messages = fswww().validate_user_properties(_input)
        if not ok:
            for m in messages:
                flash(m)
            return render_template('user_form.html', data={'user': _input})
        id = Users().create_user(_input)
        if id is not False:
            url = '/user/edit/%d' % id
            flash('user created')
            return redirect(url)

        flash('unable to create user')
        return render_template('user_form.html', data={'user': _input})
Пример #17
0
def test_delete_some_user(app, db, check_ui):
    if len(db.get_users_list()) == 0:
        app.users.create(
            Users(firstname="somebody",
                  lastname="someone",
                  email="*****@*****.**",
                  homephone=12345,
                  workphone=123456,
                  mobilephone=1234567,
                  address="somewhere"))
    old_users = db.get_users_list()
    user = random.choice(old_users)
    app.users.delete_user_by_id(user.id)
    new_users = db.get_users_list()
    assert len(old_users) - 1 == len(new_users)
    old_users.remove(user)
    assert old_users == new_users
    if check_ui:
        assert sorted(new_users, key=Users.id_or_max) == sorted(
            app.group.get_users_list(), key=Users.id_or_max)
Пример #18
0
from controller.expense_controller import ExpenseController
from controller.user_controller import UserController
from model.expenses import Expenses
from model.users import Users
from view.login_window import *
from view.main_window import *

if __name__ == "__main__":
    # Create databases
    users = Users()
    expenses = Expenses()

    # Load database content from file
    load_database_from_file(users, expenses)

    # Create controller instances
    user_controller = UserController(users)
    expense_controller = ExpenseController(expenses)

    # Create login windows, other windows are created from there
    login_window = LoginWindow(user_controller, expense_controller)
    login_window.execute()
Пример #19
0
 def convert(user):
     return Users(id=str(user.id), firstname=user.firstname, lastname=user.lastname, email=user.email)
Пример #20
0
        [random.choice(symbols) for i in range(random.randrange(maxlen))])


def random_digits(prefix, maxlen):
    digits = string.digits
    return prefix + "".join(
        [random.choice(digits) for i in range(random.randrange(maxlen))])


testdata = [
    Users(firstname="",
          lastname="",
          homephone="",
          workphone="",
          mobilephone="",
          secondaryphone="",
          address="",
          email="",
          email2="",
          email3="",
          id=None)
] + [
    Users(firstname=random_string("firstname", 10),
          lastname=random_string("lastname", 20),
          homephone=random_digits("home", 20),
          workphone=random_digits("work", 20),
          mobilephone=random_digits("mobile", 20),
          secondaryphone=random_digits("phone2", 20),
          address=random_string("address", 10),
          email=random_string("email", 10),
          email2=random_string("email2", 10),
Пример #21
0
from model.users import Users

testuserdata = [
    Users(firstname="firstname1",
          lastname="lastname1",
          homephone="homephone1",
          mobilephone="mobilephone1",
          workphone="workphone1",
          address="address1",
          secondaryphone="secondaryphone1",
          email="email1",
          email2="email21",
          email3="email31"),
    Users(firstname="firstname2",
          lastname="lastname2",
          homephone="homephone2",
          mobilephone="mobilephone2",
          workphone="workphone2",
          address="address2",
          secondaryphone="secondaryphone2",
          email="email2",
          email2="email22",
          email3="email32")
]
Пример #22
0
def test_new_user(app):
    '''
    Сценарий должен состоять из следующих частей:
    
    1) регистрация новой учётной записи с достаточно уникальным адресом электронной почты
    (чтобы не конфликтовало с ранее созданными пользователями, в том числе при предыдущих запусках того же самого сценария),
    2) выход (logout), потому что после успешной регистрации автоматически происходит вход,
    3) повторный вход в только что созданную учётную запись,
    4) и ещё раз выход.
    
    В качестве страны выбирайте United States, штат произвольный. При этом формат индекса -- пять цифр.
    
    Можно оформить сценарий либо как тест, либо как отдельный исполняемый файл.
    '''

    # Цель - зарегистрировать нового пользователя
    # открыть страницу магазина
    app.session.open_home_page()
    # открыть поле для новых пользователей.
    app.driver.find_element_by_css_selector(
        '#box-account-login tr:nth-child(5)').click()
    # заполнить поля
    email = ''

    for index in range(0, 11):
        email += str(randrange(0, 9))
    phone = email
    email += '@mail.ru'

    app.users.fill_fields(
        Users(
            # company='1223',
            firstname='123',
            lastname='23',
            address1='123',
            postcode='12345',
            city='123',
            country_code='United States',
            # zone_code="Colorado",
            email=email,
            phone=phone,
            password=phone,
            confirmed_password=phone))

    # нажать на кнопку "создать аккаунт"
    app.users.create_account()

    # нажать логаут
    app.driver.find_element_by_css_selector(
        '.list-vertical li:nth-child(4) > a').click()
    # залогиниться
    app.driver.find_element_by_css_selector("input[name='email']").click()
    app.driver.find_element_by_css_selector("input[name='email']").send_keys(
        email)

    app.driver.find_element_by_css_selector("input[name='password']").click()
    app.driver.find_element_by_css_selector(
        "input[name='password']").send_keys(phone)

    app.driver.find_element_by_css_selector("button[name='login']").click()

    # проверить, что открылась нужная страница

    # Ещё раз выход
    app.driver.find_element_by_css_selector(
        '.list-vertical li:nth-child(4) > a').click()
Пример #23
0
from model.users import Users

testdata = [
    Users(firstname="firstname1",
          lastname="lastname1",
          email="email1",
          homephone="homephone1",
          workphone="workphone1",
          mobilephone="mobilephone1",
          address="address1"),
    Users(firstname="firstname2",
          lastname="lastname2",
          email="email2",
          homephone="homephone2",
          workphone="workphone2",
          mobilephone="mobilephone2",
          address="address2")
]
Пример #24
0
def list_users():
    users = Users().get_all_users()
    data = {'users': users}
    return render_template('users.html', data=data)
Пример #25
0
import os

from blueprints.movies import movies
from blueprints.series import series
from blueprints.users import users
from blueprints.health import health
from model.movies import Movies
from model.series import Series
from model.users import Users
from model.health import Health

app = Flask(__name__)
app.secret_key = "asdas"
app.movies = Movies()
app.series = Series()
app.users = Users()
app.health = Health()


@app.route('/')
def hello_world():
    return 'Hello continuous delivery!'


app.register_blueprint(movies, url_prefix='/movies')
app.register_blueprint(series, url_prefix='/series')
app.register_blueprint(users, url_prefix='/users')
app.register_blueprint(health, url_prefix='/health')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=os.getenv('PORT', None))
Пример #26
0
app = Flask(__name__)


# helper functions
def error_message(message):
    if type(message) != str:
        message = "error"
        code = 400
    elif message == "invalid JSON":
        code = 400
    elif message == "id not found":
        code = 404
    return jsonify({"error_message": message}), code


users_db = Users()
manager = EncryptionManager()


# Flask endpoints
@app.route('/')
def home():
    return 'Hello, World!'


@app.route('/healthcheck')
def health_check():
    return jsonify({"alive": True})


@app.route('/users', methods=['POST', 'GET'])
Пример #27
0
n = 4
f = "data/users.json"

for o, a in opts:
    if o =="-n":
        n = int(a)
    elif o == "-f":
        f = a


def random_string(prefix, maxlen):
    symbols = string.ascii_letters + string.digits + " "*10
    return prefix + "".join([random.choice(symbols) for i in range(random.randrange(maxlen))])


testdata = [Users(firstname="", lastname="", email="", homephone="", workphone="",
                  mobilephone="", address="")] + [
    Users(firstname=random_string("fname ", 7), lastname=random_string("lname ", 10),
          email=random_string("email ", 12), homephone=random_string("home ", 6),
          workphone=random_string("work ", 6), mobilephone=random_string("mobile ", 9),
          address=random_string("", 8))
    for i in range(n)
]


file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", f)

with open(file, "w") as f_out:
    jsonpickle.set_encoder_options("json", indent=2)
    f_out.write(jsonpickle.encode(testdata))