示例#1
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')
        section_uuid_ = request.args.get('section')

        connector = current_app.connector
        snap_repository = SnapRepository(connector)
        file_repository = FileRepository(connector)
        section_repository = SectionRepository(connector)
        section = section_repository.find_by_uuid(section_uuid_)

        snap = {'uuid': uuid_, 'active': 0}
        snap_repository.update(snap)

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

        connector.commit()
        connector.close()

        flash('Your sample is removed successfully.', 'info')
        return redirect(
            url_for('{}.show'.format(section['endpoint']),
                    section=section['uuid']))
示例#2
0
def show():
    if request.method == 'GET':

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

        connector = current_app.connector
        registration_repository = RegistrationRepository(connector)
        registrations_ = registration_repository.list_by(active=1,
                                                         order_by='id')

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

        for registration in registrations_:
            role = role_repository.find_by(id=registration['rle_id'])

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

        connector.close()

        return render_template('registrations/registrations.html',
                               sections=sections,
                               registrations=registrations_)
示例#3
0
def fragment(connector, section_name, component_name):
    section_repository = SectionRepository(connector)
    fragment_repository = FragmentRepository(connector)
    fragment_assignment_repository = FragmentAssignmentRepository(connector)

    component_repository = ComponentRepository(connector)
    component = component_repository.find_by(component=component_name)

    section = section_repository.find_by(name=section_name)
    fragment = fragment_repository.find_by(stn_id=section['id'],
                                           cpt_id=component['id'])

    return {
        'id': fragment['id'],
        'uuid': fragment['uuid'],
        'section': {
            'id': section['id'],
            'uuid': section['uuid'],
            'name': section['name']
        },
        'component': {
            'id': component['id'],
            'uuid': component['uuid'],
            'name': component['component']
        }
    }
示例#4
0
def show():
    if request.method == 'GET':
        connector = current_app.connector
        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')

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

        return render_template('settings/settings.html', sections=sections, code=code.load())
示例#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 section():
    connector = current_app.connector
    section_repository = SectionRepository(connector)

    uuid_ = request.args.get('section')
    section_ = section_repository.find_by_uuid(uuid_)

    if not section_:
        # no uuid_ is given, so Home is assumed
        section_ = section_repository.find_by(name='Home', active=1)

    return section_
示例#7
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_))
示例#8
0
def show():
    connector = current_app.connector
    genre_repository = GenreRepository(connector)
    section_repository = SectionRepository(connector)

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

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

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

        if uuid_:
            genre_ = genre_repository.find_by_uuid(uuid_)
            genre_ = dictionaries.strip_none(genre_)

            connector.close()
            return render_template('genre/genre.html', sections=sections, genre=genre_)

        genre_ = {
        }

        return render_template('genre/genre.html', sections=sections, genre=genre_)

    if request.method == 'POST':
        uuid_ = request.form['uuid']
        name = request.form['genre']

        if uuid_:
            genre_ = {
                'uuid': uuid_,
                'genre': name
            }
            genre_repository.update(genre_)

            connector.commit()
            connector.close()
            flash('Your genre details are updated successfully.', 'info')
            return redirect(url_for('genres.show'))

        genre_ = {
            'genre': name
        }

        genre_repository.insert(genre_)
        connector.commit()
        connector.close()
        flash('Your genre is added successfully.', 'info')
        return redirect(url_for('genres.show'))
示例#9
0
def show():
    if request.method == 'GET':

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

        connector = current_app.connector
        instrument_repository = InstrumentRepository(connector)
        section_repository = SectionRepository(connector)
        instruments_ = instrument_repository.list_by(active=1, order_by='name')
        sections = section_repository.list_by(active=1, order_by='id')
        connector.close()

        return render_template('instruments/instruments.html', sections=sections, instruments=instruments_)
示例#10
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)
示例#11
0
def show():
    if request.method == 'GET':

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

        connector = current_app.connector
        genre_repository = GenreRepository(connector)
        section_repository = SectionRepository(connector)
        genres_ = genre_repository.list_by(active=1, order_by='genre')
        sections = section_repository.list_by(active=1, order_by='id')
        connector.close()

        return render_template('genres/genres.html',
                               genres=genres_,
                               sections=sections)
示例#12
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'))
示例#13
0
def load():
    connector = current_app.connector
    section_repository = SectionRepository(connector)
    property_repository = PropertyRepository(connector)
    about = section_repository.find_by(name='About us', active=1)
    team = section_repository.find_by(name='Team', active=1)

    code = {
        'name': snapsnare.__name__,
        'version': snapsnare.__version__,
        'about': about['uuid'],
        'team': team['uuid']
    }

    environment = property_repository.find_by(name='application.environment')
    code['environment'] = environment.get('value')

    backend_version = property_repository.find_by(name='application.version')
    backend = {'version': backend_version.get('value')}

    code['backend'] = backend
    return code
示例#14
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']))
示例#15
0
def show():
    connector = current_app.connector
    section_repository = SectionRepository(connector)
    role_repository = RoleRepository(connector)

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

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

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

        roles = role_repository.list_by(active=1)
        if uuid_:
            section_ = section_repository.find_by_uuid(uuid_)
            section_ = dictionaries.strip_none(section_)

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

            connector.close()
            return render_template('section/section.html',
                                   sections=sections,
                                   section=section_,
                                   roles=roles)

        section_ = {}

        return render_template('section/section.html',
                               sections=sections,
                               section=section_,
                               roles=roles)

    if request.method == 'POST':
        uuid_ = request.form['uuid']
        name = request.form['name']
        endpoint = request.form['endpoint']
        url = request.form['url']
        role = request.form['role']
        nav_ind = request.form.get('nav_ind', 0)
        role = role_repository.find_by(role=role, active=1)

        if uuid_:
            section_ = {
                'uuid': uuid_,
                'name': name,
                'endpoint': endpoint,
                'url': url,
                'rle_id': role['id'],
                'nav_ind': nav_ind
            }
            section_repository.update(section_)

            connector.commit()
            connector.close()
            flash('The section configuration is updated.', 'info')
            return redirect(url_for('sections.show'))

        section_ = {
            'name': name,
            'endpoint': endpoint,
            'url': url,
            'rle_id': role['id'],
            'nav_ind': nav_ind
        }

        section_repository.insert(section_)
        connector.commit()
        connector.close()
        flash('The section configuration is added successfully.', 'info')
        return redirect(url_for('sections.show'))
示例#16
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']))
示例#17
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'))
示例#18
0
def show():
    connector = current_app.connector
    if request.method == 'GET':

        properties = current_app.properties

        section_repository = SectionRepository(connector)
        sections = section_repository.list_by(active=1, order_by='id')
        return render_template('register/register.html', sections=sections)

    if request.method == 'POST':

        register_repository = RegistrationRepository(connector)
        role_repository = RoleRepository(connector)
        template_repository = TemplateRepository(connector)

        username = request.form['username']
        password = request.form['password']
        first_name = request.form['first_name']
        last_name = request.form['last_name']
        nickname = request.form['nickname']

        registered = register_repository.is_registered(username)
        if registered:
            connector.close()
            flash('This account is already registered.', 'danger')
            return redirect(url_for('register.show'))

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

        registration = {
            'username': username,
            'password': hasher.sha256(password),
            'uuid': str(uuid4()),
            'first_name': first_name,
            'last_name': last_name,
            'nickname': nickname,
            'rle_id': role['id']
        }

        id_ = register_repository.insert(registration)
        print("registration created with id ", id_)

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

        template = template_repository.find_by(template='activate')
        content = template['content']
        content = content.replace("{host}", host)
        content = content.replace("{uuid}", registration['uuid'])

        connector.commit()
        connector.close()

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

        flash(
            'Your account is successfully registered, an activation email is send.',
            'success')
        return redirect(url_for('register.show'))
示例#19
0
def load():
    # retrieve the sections to show in the navbar
    connector = current_app.connector
    section_repository = SectionRepository(connector)
    return section_repository.list_by(active=1, order_by='id')
示例#20
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']))