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']))
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_)
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'] } }
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())
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'))
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_
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_))
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'))
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_)
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)
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)
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'))
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
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']))
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'))
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']))
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'))
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'))
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')
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']))