示例#1
0
def register_file(asset,
                  upload_name,
                  override_suffix=None,
                  asset_type: AssetType = AssetType.SINGLE):
    connector = current_app.connector
    file_repository = FileRepository(connector)
    user_repository = UserRepository(connector)
    user = user_repository.find_by_uuid(session['uuid'])

    files = file_repository.list_by(
        **deactivate_filter(upload_name, asset, asset_type))
    for file in files:
        file['active'] = 0
        file_repository.update(file)

    source = Path(upload_name)
    uuid = uuid4().hex
    file = {
        'uuid':
        uuid,
        'asset':
        asset,
        'uploadname':
        source.name,
        'usr_id':
        user['id'],
        'filename':
        ora.nvl2(override_suffix, f"{uuid}{override_suffix}",
                 f"{uuid}{source.suffix}")
    }
    file_repository.insert(file)
    return file['uuid']
示例#2
0
    def test_user_insert(self):
        properties = {
            'current.dir': os.path.abspath(os.getcwd()),
            'package.dir': os.path.dirname(snapsnare.__file__),
            'home.dir': str(Path.home()),
            'app.name': 'snapsnare'
        }

        ds = utils.load_json(properties, 'snapsnare-ds.json')
        connector = ConnectorFactory.create_connector(ds)
        connector.connect()

        user_repository = UserRepository(connector)

        user = {
            'username': '******',
            'password': '******'
        }

        id_ = user_repository.insert(user)
        self.assertIsNotNone(id_, 'no id')

        user = user_repository.find_by(id=id_)
        connector.rollback()
        connector.close()

        self.assertIsNotNone(user, 'no user')

        username = user.get('username')
        self.assertIsNotNone(username, 'no username')

        expected = '*****@*****.**'
        self.assertEqual(expected, username,
                         'invalid state, expected {} got {}'.format(expected, username))
示例#3
0
def show():
    if request.method == 'GET':

        role = session.get('role', 'user')
        if role != 'admin':
            return redirect(url_for('login.show'))

        uuid_ = request.args.get('uuid')

        connector = current_app.connector
        registration_repository = RegistrationRepository(connector)

        registration = registration_repository.find_by_uuid(uuid_)
        if registration['state'] != 'approved':
            flash('Unexpected registration state.', 'danger')
            return redirect(url_for('registrations.show'))

        user_repository = UserRepository(connector)
        user = user_repository.find_by(id=registration['id'])
        user = {'uuid': user['uuid'], 'active': 0}
        user_repository.update(user)

        registration = {'uuid': uuid_, 'state': 'terminated', 'active': 0}
        registration_repository.update(registration)

        connector.commit()
        connector.close()

        return redirect(url_for('registrations.show'))
示例#4
0
def load_user(user_id):
    user_repository = UserRepository(connector)
    user = user_repository.find_by_uuid(user_id)
    connector.close()
    if not user:
        return redirect(url_for('login.show'))
    else:
        return User(user['id'], user['username'], user['password'])
示例#5
0
def show():
    connector = current_app.connector

    if request.method == 'GET':
        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')
        connector.close()
        return render_template('password_forgotten/password_forgotten.html',
                               sections=sections)

    if request.method == 'POST':
        username = request.form['username']

        user_repository = UserRepository(connector)
        user = user_repository.find_by(username=username, active=1)

        if not user:
            flash('Invalid account state', 'danger')
            return redirect(url_for('login.show'))

        # disable previous resets of this user.
        reset = {"active": 0}
        reset_repository = ResetRepository(connector)
        reset_repository.update(reset, where={"username": user["username"]})

        # create an active reset for this user.
        reset = {
            "active": 1,
            "uuid": str(uuid4()),
            "username": user["username"],
        }
        reset_repository.insert(reset)

        properties = current_app.properties
        settings = utils.load_json(properties, 'snapsnare.json')
        credentials = settings['gmail']
        snapsnare = settings['snapsnare']
        host = snapsnare['host']

        template_repository = TemplateRepository(connector)
        template = template_repository.find_by(template='reset')
        content = template['content']
        content = content.replace("{host}", host)
        content = content.replace("{uuid}", reset['uuid'])

        connector.commit()

        gmail.send_email(credentials, reset['username'],
                         "Reset your account on snapsnare.org", content)

        flash(
            'A reset request is successfully created. Please check your e-mail to reset your password.',
            'success')
        return redirect(url_for('login.show'))
示例#6
0
def load():
    connector = current_app.connector

    snap_repository = SnapRepository(connector)
    user_repository = UserRepository(connector)
    role_repository = RoleRepository(connector)

    section = component.section()
    if not component.has_fragment(section, ComponentEnum.MY_SAMPLES):
        return []

    user = user_repository.find_by_uuid(session['uuid'])
    snaps = snap_repository.list_by(usr_id=user['id'],
                                    active=1,
                                    order_by='updated_at desc')

    properties = current_app.properties

    for snap in snaps:
        user = user_repository.find_by(id=snap['usr_id'], active=1)
        role = role_repository.find_by(id=user['rle_id'], active=1)

        snap['username'] = user.get('username')
        snap['first_name'] = user.get('first_name')
        snap['last_name'] = user.get('last_name')
        snap['role'] = role.get('role')
        snap['section'] = section['uuid']

        dt_created_at = datetime.strptime(snap['created_at'],
                                          '%Y-%m-%d %H:%M:%S.%f')
        snap['created_at_formatted'] = dt_created_at.strftime('%d %B at %H:%M')

        dt_updated_at = datetime.strptime(snap['updated_at'],
                                          '%Y-%m-%d %H:%M:%S.%f')
        snap['updated_at_formatted'] = dt_updated_at.strftime('%d %B at %H:%M')

        clips_folder = os.path.join(properties['current.dir'], 'assets',
                                    snap['uuid'])
        if os.path.isdir(clips_folder):
            files = Folder(clips_folder).listdir(filters='.wav;.mp3;.ogg')
            if len(files) != 0:
                snap['url'] = '/assets/{}/{}'.format(snap['uuid'], files[0])
                snap['type'] = utils.html_audio_source_type(files[0])

    return snaps
示例#7
0
    def post(self):
        try:
            payload = request.get_json(silent=True)

            if not payload:
                return responsify(
                    message='Invalid JSON content, or content-type header '
                    'is not set to application/json'), 400

            username = payload.get('username')
            password = payload.get('password')

            if not username:
                logging.debug('no username given')
                return responsify(message='invalid username or password'), 400

            if not password:
                logging.debug('no password given')
                return responsify(message='invalid username or password'), 400

            connector = current_app.connector
            user_repository = UserRepository(connector)
            user = user_repository.find_by_username(username)

            if not user:
                logging.debug('user not found')
                return responsify(message='invalid username or password'), 400

            # hash the given password, so it can be checked against the hashed password
            # stored in the database
            password = hasher.sha256(password)

            if password != user.get('password'):
                logging.debug('invalid password')
                return responsify(message='invalid username or password'), 401

            access_token = create_access_token(identity=username)

            return responsify(access_token=access_token), 200
        except Exception:
            response = tracer.build()
            logging.exception('authentication failed')
            return response, 500
示例#8
0
def show():
    connector = current_app.connector

    if request.method == 'GET':
        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')
        connector.close()
        return render_template('login/login.html', sections=sections)

    username = request.form['username']
    password = request.form['password']

    user_repository = UserRepository(connector)
    user = user_repository.find_by_username(username)

    if not user:
        flash('Invalid username or password.', 'danger')
        return redirect(url_for('login.show'))

    registration_repository = RegistrationRepository(connector)
    registration = registration_repository.find_by(id=user['rgn_id'], active=1)
    if registration['state'] == 'blocked':
        flash('This account is blocked.', 'danger')
        return redirect(url_for('login.show'))

    registered_user = User(user['uuid'], user['username'], user['password'])

    if not registered_user.check_password(password):
        flash('Invalid username or password.', 'danger')
        return redirect(url_for('login.show'))

    role_repository = RoleRepository(connector)
    role = role_repository.find_by(id=user['rle_id'], active=1)
    connector.close()

    login_user(registered_user)
    session['username'] = request.form['username']
    session['uuid'] = user['uuid']
    session['role'] = role['role']

    return redirect(request.args.get('next') or url_for('index.show'))
示例#9
0
def show():
    if request.method == 'GET':
        uuid_ = request.args.get('uuid')

        connector = current_app.connector

        registration_repository = RegistrationRepository(connector)
        user_repository = UserRepository(connector)
        role_repository = RoleRepository(connector)

        registration = registration_repository.find_by(uuid=uuid_,
                                                       active=1,
                                                       state='new')
        if not registration:
            connector.close()
            flash('This account is already activated.', 'danger')
            return render_template('activate/activate.html', code=code.load())

        role = role_repository.find_by(id=registration['rle_id'], active=1)
        user = {
            'username': registration['username'],
            'password': registration['password'],
            'first_name': registration['first_name'],
            'last_name': registration['last_name'],
            'nickname': registration['nickname'],
            'rgn_id': registration['id'],
            'rle_id': role['id']
        }
        user_repository.insert(user)

        registration = {'uuid': uuid_, 'state': 'approved'}
        registration_repository.update(registration)
        connector.commit()
        connector.close()
        flash('Your account is activated successfully and ready for use.',
              'success')
        return render_template('activate/activate.html', code=code.load())
示例#10
0
def show():
    if request.method == 'GET':

        uuid_ = request.args.get('uuid')
        section_uuid_ = request.args.get('section')

        connector = current_app.connector
        activity_repository = ActivityRepository(connector)
        file_repository = FileRepository(connector)
        section_repository = SectionRepository(connector)
        user_repository = UserRepository(connector)

        section = section_repository.find_by_uuid(section_uuid_)

        user = user_repository.find_by_uuid(session['uuid'])
        activity = activity_repository.find_by(uuid=uuid_)
        if user['id'] != activity['usr_id']:
            connector.close()
            return redirect(
                url_for(f"{section['endpoint']}.show",
                        section=section['uuid']))

        activity = {'uuid': uuid_, 'active': 0}
        activity_repository.update(activity)

        file = {
            'active': 0,
        }
        file_repository.update(file, where={'asset': uuid_})

        connector.commit()
        connector.close()

        flash('Your posting is removed successfully.', 'info')
        return redirect(
            url_for(f"{section['endpoint']}.show", section=section['uuid']))
示例#11
0
def show():
    connector = current_app.connector
    user_repository = UserRepository(connector)

    if request.method == 'GET':
        uuid_ = request.args.get('uuid')
        if uuid_ != session['uuid']:
            return redirect(url_for('login.show'))

        user = user_repository.find_by_uuid(uuid_)
        user = dictionaries.strip_none(user)

        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')

        connector.close()
        return render_template('password/password.html',
                               sections=sections,
                               user=user)

    uuid_ = request.form['uuid']
    password_ = request.form['password']
    new_password = request.form['new_password']
    repeat = request.form['repeat']

    if uuid_ != session['uuid']:
        return redirect(url_for('login.show'))

    user = user_repository.find_by_username(session['username'])
    if not user:
        flash('Invalid username.', 'danger')
        return redirect(url_for('password.show', uuid=uuid_))

    registered_user = User(user['uuid'], user['username'], user['password'])
    if not registered_user.check_password(password_):
        flash('Invalid password.', 'error')
        return redirect(url_for('password.show', uuid=uuid_))

    # the given passwords do not match
    if new_password != repeat:
        flash('The newly entered passwords do not match.', 'danger')
        return redirect(url_for('password.show', uuid=uuid_))

    # change the password
    user = {'uuid': uuid_, 'password': hasher.sha256(new_password)}
    user_repository.update(user)
    connector.commit()
    connector.close()

    # show the login screen
    flash('The password is updated successfully.', 'success')
    return redirect(url_for('password.show', uuid=uuid_))
示例#12
0
def show():
    connector = current_app.connector
    user_repository = UserRepository(connector)
    section_repository = SectionRepository(connector)

    sections = section_repository.list_by(active=1, order_by='id')

    if request.method == 'GET':
        uuid_ = request.args.get('uuid')

        # check messing with uuid's
        if uuid_ != session['uuid']:
            return redirect(url_for('login.show'))

        user = user_repository.find_by_uuid(uuid_)
        user = dictionaries.strip_none(user)

        role_repository = RoleRepository(connector)
        role = role_repository.find_by(id=user['rle_id'], active=1)
        user['role'] = role['role']

        connector.close()
        return render_template('profile/profile.html', sections=sections, user=user)

    uuid_ = request.form['uuid']
    first_name = request.form['first_name']
    last_name = request.form['last_name']
    nickname = request.form['nickname']
    phone_number = request.form['phone_number']

    user = {
        'uuid': uuid_,
        'first_name': first_name,
        'last_name': last_name,
        'nickname': nickname,
        'phone_number': phone_number
    }

    # check messing with uuid's
    if uuid_ != session['uuid']:
        return redirect(url_for('login.show'))

    user_repository.update(user)
    user = user_repository.find_by_uuid(user['uuid'])
    connector.commit()
    connector.close()
    flash('Your account details are updated successfully.', 'info')
    return render_template('profile/profile.html', sections=sections, user=user)
示例#13
0
def show():
    connector = current_app.connector
    user_repository = UserRepository(connector)
    section_repository = SectionRepository(connector)
    role_repository = RoleRepository(connector)
    instrument_repository = InstrumentRepository(connector)
    access_modifier_repository = AccessModifierRepository(connector)
    genre_repository = GenreRepository(connector)
    user = user_repository.find_by_uuid(session['uuid'])

    if request.method == 'GET':
        # retrieve the uuid.
        section_uuid = request.args.get('section')
        uuid_ = request.args.get('uuid')

        # retrieve the instruments
        instruments = instrument_repository.list_by(active=1, order_by='name')
        access_modifiers = access_modifier_repository.list_by(
            active=1, order_by='modifier')
        genres = genre_repository.list_by(active=1, order_by='genre')

        sections = section_repository.list_by(active=1, order_by='id')

        if uuid_:
            # contains the uuid of the section

            snap_repository = SnapRepository(connector)
            snap = snap_repository.find_by_uuid(uuid_)

            upload_ = {
                'section': section_uuid,
                'uuid': uuid_,
                'user': user['uuid'],
                'first_name': user['first_name'],
                'last_name': user['last_name'],
                'title': snap['title'],
                'access': snap['access'],
                'instrument': snap['instrument'],
                'genre': snap['genre'],
                'chord_schema': snap['chord_schema']
            }

            connector.close()
            return render_template('upload/upload.html',
                                   sections=sections,
                                   upload=upload_,
                                   instruments=instruments,
                                   access_modifiers=access_modifiers,
                                   genres=genres)

        # contains the uuid of the section
        section_uuid = request.args.get('section')

        user = user_repository.find_by_uuid(session['uuid'])
        section = section_repository.find_by_uuid(section_uuid)
        role = role_repository.find_by(id=section['rle_id'], active=1)

        # check messing with the posting in relation to the section
        if session['role'] != role['role']:
            return redirect(url_for('login.show'))

        upload_ = {
            'section': section_uuid,
            'user': user['uuid'],
            'first_name': user['first_name'],
            'last_name': user['last_name'],
            'access': "public"
        }

        connector.close()
        return render_template('upload/upload.html',
                               sections=sections,
                               upload=upload_,
                               instruments=instruments,
                               access_modifiers=access_modifiers,
                               genres=genres)

    if request.method == 'POST':
        uuid_ = request.form['uuid']
        user_uuid = request.form['user']
        section_uuid = request.form['section']
        title = request.form['title']
        instrument = request.form['instrument']
        access = request.form['access']
        genre = request.form['genre']
        chord_schema = request.form['chord_schema']

        # image_as_background = request.form['image_as_background']
        # print('image_as_background', image_as_background)

        # store the uploaded files if given.
        files = request.files

        properties = current_app.properties

        snap_repository = SnapRepository(connector)
        section = section_repository.find_by_uuid(section_uuid)

        if uuid_:

            # persist the uploaded files if any.
            storage.persist_files(properties, uuid_, files,
                                  storage.AssetType.SINGLE)

            snap_ = {
                'uuid': uuid_,
                'title': title,
                'access': access,
                'instrument': instrument,
                'genre': genre,
                'chord_schema': chord_schema
            }

            snap_repository.update(snap_)
            connector.commit()
            connector.close()

            flash('Your sample is updated successfully.', 'info')
            return redirect(
                url_for('{}.show'.format(section['endpoint']),
                        section=section['uuid']))

        user = user_repository.find_by_uuid(user_uuid)

        # check messing with the posting in relation to the section
        role = role_repository.find_by(id=section['rle_id'], active=1)

        if session['role'] != role['role']:
            return redirect(url_for('login.show'))

        # generate a uuid, reflecting functional key of the activity
        uuid_ = str(uuid4())

        # persist the uploaded files if any.
        storage.persist_files(properties, uuid_, files,
                              storage.AssetType.SINGLE)

        snap_ = {
            'uuid': uuid_,
            'usr_id': user['id'],
            'title': title,
            'access': access,
            'instrument': instrument,
            'genre': genre,
            'chord_schema': chord_schema
        }
        snap_repository.insert(snap_)

        connector.commit()
        connector.close()
        flash('Your sample is posted successfully.', 'info')
        return redirect(
            url_for('{}.show'.format(section['endpoint']),
                    section=section['uuid']))
示例#14
0
def load():
    connector = current_app.connector
    activity_repository = ActivityRepository(connector)
    user_repository = UserRepository(connector)
    role_repository = RoleRepository(connector)

    section = component.section()
    if not component.has_fragment(section, ComponentEnum.ACTIVITIES):
        return []

    activities = activity_repository.list_by(stn_id=section.get('id', -1),
                                             active=1,
                                             order_by='updated_at desc')

    properties = current_app.properties

    for activity in activities:
        user = user_repository.find_by(id=activity['usr_id'], active=1)
        role = role_repository.find_by(id=user['rle_id'], active=1)

        content = activity['content']
        if content:
            content = content.replace('\n', '<br>')

        activity['username'] = user.get('username')
        activity['first_name'] = user.get('first_name')
        activity['last_name'] = user.get('last_name')
        activity['role'] = role.get('role')
        activity['section'] = section['uuid']
        activity['content'] = Markup(content)
        activity['slide_count'] = 0

        dt_created_at = datetime.strptime(activity['created_at'],
                                          '%Y-%m-%d %H:%M:%S.%f')
        activity['created_at_formatted'] = dt_created_at.strftime(
            '%d %B at %H:%M')

        # for now we only use .png, .jpg and .gif images
        # slides_folder = os.path.join(current_app.config['UPLOAD_FOLDER'], activity['uuid'])
        logging.debug(f"{activity=}")
        slides_folder = os.path.join(properties['current.dir'], 'assets',
                                     activity['uuid'])
        slides = []
        if os.path.isdir(slides_folder):
            files = Folder(slides_folder).listdir(
                filters='.png;.jpg;.gif;.jpeg')
            activity['slide_count'] = len(files)
            index_ = 0
            for file in files:
                slide = {
                    'url': '/assets/{}/{}'.format(activity['uuid'], file),
                    'index': index_
                }
                slides.append(slide)
                index_ += 1
        activity['slides'] = slides

        # for now we only use .mp4 and .mov
        # clips_folder = os.path.join(current_app.config['UPLOAD_FOLDER'], activity['uuid'])
        clips_folder = os.path.join(properties['current.dir'], 'assets',
                                    activity['uuid'])
        clips = []
        if os.path.isdir(clips_folder):
            files = Folder(clips_folder).listdir(filters='.mp4;.MOV')
            activity['clip_count'] = len(files)
            index_ = 0
            for file in files:
                clip = {
                    'url': '/assets/{}/{}'.format(activity['uuid'], file),
                    'index': index_
                }
                clips.append(clip)
                index_ += 1
        activity['clips'] = clips

    return activities
示例#15
0
def show():
    connector = current_app.connector
    registration_repository = RegistrationRepository(connector)
    role_repository = RoleRepository(connector)

    role = session.get('role', 'user')
    if role != 'admin':
        return redirect(url_for('login.show'))

    if request.method == 'GET':
        uuid_ = request.args.get('uuid')
        registration_ = registration_repository.find_by_uuid(uuid_)
        registration_ = dictionaries.strip_none(registration_)

        role = role_repository.find_by(id=registration_['rle_id'], active=1)
        registration_['role'] = role['role']

        roles = role_repository.list_by(active=1)

        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')

        connector.close()
        return render_template('registration/registration.html',
                               sections=sections,
                               registration=registration_,
                               roles=roles)

    uuid_ = request.form['uuid']
    username = request.form['username']
    first_name = request.form['first_name']
    last_name = request.form['last_name']
    nickname = request.form['nickname']
    phone_number = request.form['phone_number']
    role = request.form['role']

    role = role_repository.find_by(role=role, active=1)

    registration_ = {
        'uuid': uuid_,
        'username': username,
        'first_name': first_name,
        'last_name': last_name,
        'nickname': nickname,
        'phone_number': phone_number,
        'rle_id': role['id']
    }
    registration_repository.update(registration_)

    registration_ = registration_repository.find_by_uuid(uuid_)
    user_repository = UserRepository(connector)
    user = user_repository.find_by_rgn_id(registration_['id'])

    if user:

        user = {
            'uuid': user['uuid'],
            'username': username,
            'first_name': first_name,
            'last_name': last_name,
            'nickname': nickname,
            'phone_number': phone_number,
            'rle_id': role['id']
        }

        user_repository.update(user)

    connector.commit()
    connector.close()
    flash('The registration is updated successfully.', 'info')
    return redirect(url_for('registrations.show'))
示例#16
0
def show():
    connector = current_app.connector
    user_repository = UserRepository(connector)
    section_repository = SectionRepository(connector)
    role_repository = RoleRepository(connector)

    user = user_repository.find_by_uuid(session['uuid'])
    sections = section_repository.list_by(active=1, order_by='id')

    if request.method == 'GET':
        # retrieve the uuid.
        section_uuid = request.args.get('section')
        uuid_ = request.args.get('uuid')

        if uuid_:
            # contains the uuid of the section

            activity_repository = ActivityRepository(connector)
            activity = activity_repository.find_by(uuid=uuid_)

            if user['id'] != activity['usr_id']:
                flash('You are not allowed to change this posting.', 'danger')
                posting_ = {
                    'section': section_uuid,
                    'uuid': uuid_,
                }
                connector.close()
                return render_template('posting/posting.html',
                                       sections=sections,
                                       posting=posting_)

            posting_ = {
                'section': section_uuid,
                'uuid': uuid_,
                'user': user['uuid'],
                'first_name': user['first_name'],
                'last_name': user['last_name'],
                'content': activity['content'],
                'rendering': activity['rendering']
            }
            connector.close()
            return render_template('posting/posting.html',
                                   sections=sections,
                                   posting=posting_)

        # contains the uuid of the section
        section_uuid = request.args.get('section')

        user = user_repository.find_by_uuid(session['uuid'])
        # section = section_repository.find_by_uuid(section_uuid)
        # role = role_repository.find_by(id=section['rle_id'], active=1)
        #
        # # check messing with the posting in relation to the section
        # if session['role'] != role['role']:
        #     return redirect(url_for('login.show'))

        posting_ = {
            'section': section_uuid,
            'user': user['uuid'],
            'first_name': user['first_name'],
            'last_name': user['last_name']
        }

        connector.close()
        return render_template('posting/posting.html',
                               sections=sections,
                               posting=posting_)

    uuid_ = request.form['uuid']
    user_uuid = request.form['user']
    section_uuid = request.form['section']
    content = request.form['content']
    rendering = request.form.get('rendering')

    # store the uploaded files if given.
    files = request.files

    properties = current_app.properties

    activity_repository = ActivityRepository(connector)
    section = section_repository.find_by_uuid(section_uuid)

    if uuid_:
        activity = activity_repository.find_by(uuid=uuid_)
        if user['id'] != activity['usr_id']:
            flash('You are not allowed to update this posting.', 'danger')
            posting_ = {
                'section': section_uuid,
                'uuid': uuid_,
            }
            connector.close()
            return render_template('posting/posting.html',
                                   sections=sections,
                                   posting=posting_)

        # persist the uploaded files if any.
        storage.persist_files(properties, uuid_, files,
                              storage.AssetType.MULTIPLE)

        activity = {'uuid': uuid_, 'content': content, 'rendering': rendering}

        activity_repository.update(activity)
        connector.commit()
        connector.close()

        flash('Your posting is updated successfully.', 'info')
        return redirect(
            url_for('{}.show'.format(section['endpoint']),
                    section=section['uuid']))

    user = user_repository.find_by_uuid(user_uuid)

    # # check messing with the posting in relation to the section
    # role = role_repository.find_by(id=section['rle_id'], active=1)
    #
    # if session['role'] != role['role']:
    #     return redirect(url_for('login.show'))

    # generate a uuid, reflecting functional key of the activity
    uuid_ = str(uuid4())

    # persist the uploaded files if any.
    storage.persist_files(properties, uuid_, files, storage.AssetType.MULTIPLE)

    activity = {
        'uuid': uuid_,
        'usr_id': user['id'],
        'stn_id': section['id'],
        'content': content,
        'rendering': rendering
    }
    activity_repository.insert(activity)

    connector.commit()
    connector.close()
    flash('Your posting is created successfully.', 'info')
    return redirect(
        url_for('{}.show'.format(section['endpoint']),
                section=section['uuid']))