Пример #1
0
def populate_db():
    for i in range(15):
        target = UserProfile.create(
            username=f'test{i}',
            password=passw,
            name=f'test#{i}',
            email=f'fort{i}@gma.com',
            confirmation_sent_at=datetime.datetime.now(),
            last_sign_in_at=1)

        print(f"Created user {target.username}")

        target.follow(yab)

        print("Following user")
        #crate some followers
        for j in range(i):
            if j != i:
                user = UserProfile.get(username=f'test{j}')
                print(f'{user.username} -> {target.username}')
                user.follow(target, True)

        #craete some images via API
        print("Uploading some pics")
        for j in range(PHOTOS):
            print(f'Image {j} of {PHOTOS}')
            """
Пример #2
0
def new_user(username, password, email,
             is_remote = False, confirmed=False, is_private = False, 
             is_admin=False, public_key=None, name=None, description = "", ap_id = None, public_inbox=None):

    """
        Returns False or UserProfile
    """
    
    # Verify username

    logging.debug(f"Starting to create user {username}")

    if not valid_username(username):
        logging.error(f"@{username} is a not valid username")
        return False

    # Hash the password
    passw = bcrypt.hashpw(password, salt_code)

    # First we create the actual user

    user = User.create(
        username = username,
        password = passw,
        email = email, 
        confirmed = confirmed,
        is_admin = is_admin,
        is_private = is_private,
    )

    logging.debug(f"Created user {user.username}")

    if name == None:
        name = username

    # Now we create the profile
    try:
        profile = UserProfile.create(
            id = user.id,
            disabled = True,
            is_remote = is_remote,
            user = user,
            name = name,
            public_key = public_key,
            ap_id = ap_id,
            description = description,
            public_inbox = public_inbox

        )
        
        logging.info(f"New Profile created: {profile}")
        return profile
    except Exception as e:
        logging.error(e)
        user.delete_instance()
        return False
Пример #3
0
def new_user(username,
             password,
             email,
             is_remote=False,
             confirmed=False,
             is_private=False,
             is_admin=False,
             public_key=None,
             name=None,
             description="",
             ap_id=None):
    """
        Returns False or UserProfile
    """

    # Verify username

    if not valid_username(username):
        return False

    # Hash the password

    passw = bcrypt.hashpw(password.encode('utf-8'), salt_code.encode('utf-8'))

    # First we create the actual user

    user = User.create(username=username,
                       password=passw,
                       email=email,
                       confirmed=confirmed,
                       is_admin=is_admin,
                       is_private=is_private)

    if name == None:
        name = username

    # Now we create the profile

    profile = UserProfile.create(id=user.id,
                                 disabled=True,
                                 is_remote=is_remote,
                                 user=user,
                                 name=name,
                                 public_key=public_key,
                                 ap_id=ap_id,
                                 description=description)

    # Send the confirmation email

    if not user.confirmed:
        send_activation_email(profile)

    return profile
Пример #4
0
def populate_for_travis():
    for i in range(15):
        target = UserProfile.create(
            username=f'test{i}',
            password=passw,
            name=f'test#{i}',
            email=f'fort{i}@gma.com',
            confirmation_sent_at=datetime.datetime.now(),
            last_sign_in_at=1)
        target.follow(yab)

        #crate some followers
        for j in range(i):
            if j != i:
                user = UserProfile.get(username=f'test{j}')
                user.follow(target, True)
Пример #5
0
 def get_or_create_remote_user(self):
     """ 
         Returns an instance of User after looking for it using it's ap_id
     """
     user = UserProfile.get_or_none(ap_id=self.uri)
     if not user:
         user = self.dereference()
         hostname = urlparse(user.id).hostname
         username = "******".format(user.preferredUsername, hostname)
         user = UserProfile.create(
             username=user.preferredUsername,
             name=user.name,
             ap_id=user.id,
             remote=True,
             password="******",
             description=user.summary,
             private=user.manuallyApprovesFollowers,
             public_key=user.publicKey['publicKeyPem'])
     #print(user)
     return user
Пример #6
0
def populate_db():
    for i in range(15):
        target = UserProfile.create(
            username=f'test{i}',
            password=passw,
            name=f'test#{i}',
            email=f'fort{i}@gma.com',
            confirmation_sent_at=datetime.datetime.now(),
            last_sign_in_at=1)

        print(f"Created user {target.username}")

        target.follow(yab)

        print("Following user")
        #crate some followers
        for j in range(i):
            if j != i:
                user = UserProfile.get(username=f'test{j}')
                print(f'{user.username} -> {target.username}')
                user.follow(target, True)

        #craete some images via API
        print("Uploading some pics")
        for j in range(PHOTOS):
            print(f'Image {j} of {PHOTOS}')
            client = testing.TestClient(app)

            data = {'username': target.username, 'password': '******'}

            header = {
                'Authorization':
                "Basic " + b64encode(f"{data['username']}:{data['password']}".
                                     encode()).decode('utf-8')
            }

            token = client.simulate_get("/api/v1/auth",
                                        json=data,
                                        headers=header)
            token = token.json['token']

            auth = {'Authorization': token}

            images = ['fine.jpg', 'wildunix.jpeg', 'gatos.jpeg']
            image = random.choice(images)

            ids = []

            data, headers = create_multipart(
                open(f'tests/assets/{image}', 'rb').read(),
                fieldname="file",
                filename='image',
                content_type=f'image/{image.split(".")[1]}')

            auth.update(headers)
            response = client.simulate_post("/api/v1/media",
                                            body=data,
                                            headers=auth)
            ids.append(response.json['id'])

            status = {
                'visibility': True,
                'status': f'My photo #{j} by @{target.username}',
                'sensitive': random.choice([True, False]),
                'media_ids': ','.join(ids)
            }

            response = client.simulate_post("/api/v1/statuses",
                                            params=status,
                                            headers=auth)
Пример #7
0
from auth import Argon2
import datetime

username = input("Enter username: "******"Enter a name to display: ")

admin = input("Should the user be an admin? [y/n]")

while (admin.lower() != 'y' and admin.lower() != 'n'):
    admin = input("Should the user be an admin? [y/n]")

password = input("Type a password: "******"Repeat the password: "******"Type a password: "******"Repeat the password: "******"Enter a email: ")

passw = Argon2().generate_password_hash(password)

UserProfile.create(username=username,
                   password=passw,
                   name=name,
                   email=email,
                   confirmation_sent_at=datetime.datetime.now(),
                   last_sign_in_at=1,
                   admin=admin)

print("User created successfuly")