Compare commits

..

No commits in common. "development" and "master" have entirely different histories.

43 changed files with 0 additions and 844 deletions

6
.gitignore vendored
View File

@ -1,6 +0,0 @@
*.py[cod]
__pycache__/
.venv
/instance
/server/migrations

View File

@ -1,15 +0,0 @@
alembic==1.13.1
blinker==1.7.0
click==8.1.7
Flask==3.0.3
Flask-Migrate==4.0.7
Flask-SQLAlchemy==3.1.1
greenlet==3.0.3
itsdangerous==2.1.2
Jinja2==3.1.3
Mako==1.3.3
MarkupSafe==2.1.5
python-dotenv==1.0.1
SQLAlchemy==2.0.29
typing_extensions==4.11.0
Werkzeug==3.0.2

View File

@ -1,8 +0,0 @@
# Configuration Mode => development, testing, staging, or production
CONFIG_MODE = development
# POSTGRESQL_DATABASE_URI => 'postgresql+psycopg2://user:password@host:port/database'
DEVELOPMENT_DATABASE_URL = 'sqlite:///DevDB.db'
TEST_DATABASE_URL = 'sqlite:///TestDB.db'
STAGING_DATABASE_URL = 'sqlite:///StagingDB.db'
PRODUCTION_DATABASE_URL =

View File

@ -1,50 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import Camera
def list_all_camera_controller():
cameras = Camera.query.all()
response = []
for camera in cameras: response.append(camera.toDict())
return jsonify(response)
def create_camera_controller():
request_form = request.form.to_dict()
print(request_form)
new_camera = Camera(
name = request_form['name'],
shutterspeedstops = request_form['shutterspeedstops'],
shutterspeedmax = request_form['shutterspeedmax'],
fk_FilmFormat_id = request_form['filmformat'],
fk_CameraFormat_id = request_form['cameraformat'],
fk_CameraManufacturer_id = request_form['cameramanufacturer'],
)
db.session.add(new_camera)
db.session.commit()
response = Camera.query.all()
return(jsonify(request_form))
def retrieve_camera_controller(camera_id):
response = Camera.query.get(camera_id).toDict()
print(response)
return jsonify(response)
def update_camera_controller(camera_id):
request_form = request.form.to_dict()
camera = Camera.query.get(camera_id)
camera.name = request_form['name']
camera.shutterspeedstops = request_form['shutterspeedstops']
camera.shutterspeedmax = request_form['shutterspeedmax']
camera.fk_FilmFormat_id = request_form['filmformat']
camera.fk_CameraFormat_id = request_form['cameraformat']
camera.fk_CameraManufacturer_id = request_form['cameramanufacturer']
db.session.commit()
response = Camera.query.get(camera_id).toDict()
return jsonify(response)
def delete_camera_controller(camera_id):
Camera.query.filter_by(id=camera_id).delete()
db.session.commit()
return f"Camera with ID= {camera_id} was removed successfully"

View File

@ -1,20 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class Camera(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
shutterspeedstops = db.Column(db.String(15))
shutterspeedmax = db.Column(db.String(15))
fk_FilmFormat_id = db.Column(db.Integer(),db.ForeignKey("film_format.id"))
filmformat = db.relationship("FilmFormat", back_populates='cameras')
fk_CameraFormat_id = db.Column(db.Integer(),db.ForeignKey("camera_format.id"))
cameraformat = db.relationship("CameraFormat", back_populates='cameras')
fk_CameraManufacturer_id = db.Column(db.Integer(),db.ForeignKey("camera_manufacturer.id"))
cameramanufacturer = db.relationship("CameraManufacturer", back_populates='cameras' )
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_camera_controller,create_camera_controller,retrieve_camera_controller,update_camera_controller,delete_camera_controller
@app.route("/Cameras",methods=["GET","POST"])
def list_all_create_cameras():
if request.method == 'GET' : return list_all_camera_controller()
if request.method == 'POST' : return create_camera_controller()
@app.route("/Cameras/<camera_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_cameras(camera_id):
if request.method == 'GET' : return retrieve_camera_controller(camera_id)
if request.method == 'PUT' : return update_camera_controller(camera_id)
if request.method == "DELETE": return delete_camera_controller(camera_id)

View File

@ -1,40 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import CameraFormat
def list_all_cameraformat_controller():
cameraformats = CameraFormat.query.all()
response = []
for cameraformat in cameraformats: response.append(cameraformat.toDict())
return jsonify(response)
def create_cameraformat_controller():
request_form = request.form.to_dict()
print(request_form)
new_cameraformat = CameraFormat(
name = request_form['name'],
)
db.session.add(new_cameraformat)
db.session.commit()
response = CameraFormat.query.all()
return(jsonify(request_form))
def retrieve_cameraformat_controller(cameraformat_id):
response = CameraFormat.query.get(cameraformat_id).toDict()
print(response)
return jsonify(response)
def update_cameraformat_controller(cameraformat_id):
request_form = request.form.to_dict()
cameraformat = CameraFormat.query.get(cameraformat_id)
cameraformat.name = request_form['name']
db.session.commit()
response = CameraFormat.query.get(cameraformat_id).toDict()
return jsonify(response)
def delete_cameraformat_controller(cameraformat_id):
CameraFormat.query.filter_by(id=cameraformat_id).delete()
db.session.commit()
return f"Cameraformat with ID= {cameraformat_id} was removed successfully"

View File

@ -1,13 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class CameraFormat(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
cameras = db.relationship("Camera",back_populates='cameraformat')
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_cameraformat_controller,create_cameraformat_controller,retrieve_cameraformat_controller,update_cameraformat_controller,delete_cameraformat_controller
@app.route("/CameraFormat",methods=["GET","POST"])
def list_all_create_cameraformats():
if request.method == 'GET' : return list_all_cameraformat_controller()
if request.method == 'POST' : return create_cameraformat_controller()
@app.route("/CameraFormat/<cameraformat_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_cameraformats(cameraformat_id):
if request.method == 'GET' : return retrieve_cameraformat_controller(cameraformat_id)
if request.method == 'PUT' : return update_cameraformat_controller(cameraformat_id)
if request.method == "DELETE": return delete_cameraformat_controller(cameraformat_id)

View File

@ -1,40 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import CameraManufacturer
def list_all_cameramanufacturers_controller():
filmmanufacturers = CameraManufacturer.query.all()
response = []
for filmmanufacturer in filmmanufacturers: response.append(filmmanufacturer.toDict())
return jsonify(response)
def create_cameramanufacturer_controller():
request_form = request.form.to_dict()
print(request_form)
new_cameramanufacturer = CameraManufacturer(
name = request_form['name'],
)
db.session.add(new_cameramanufacturer)
db.session.commit()
response = CameraManufacturer.query.all()
return(jsonify(request_form))
def retrieve_cameramanufacturer_controller(cameramanufacturer_id):
response = CameraManufacturer.query.get(cameramanufacturer_id).toDict()
print(response)
return jsonify(response)
def update_cameramanufacturer_controller(cameramanufacturer_id):
request_form = request.form.to_dict()
cameramanufacturer = CameraManufacturer.query.get(cameramanufacturer_id)
cameramanufacturer.name = request_form['name']
db.session.commit()
response = CameraManufacturer.query.get(cameramanufacturer_id).toDict()
return jsonify(response)
def delete_cameramanufacturer_controller(cameramanufacturer_id):
CameraManufacturer.query.filter_by(id=cameramanufacturer_id).delete()
db.session.commit()
return f"CameraManufacturer with ID={cameramanufacturer_id} was removed successfully"

View File

@ -1,14 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class CameraManufacturer(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
cameras = db.relationship("Camera",back_populates='cameramanufacturer')
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_cameramanufacturers_controller,create_cameramanufacturer_controller,retrieve_cameramanufacturer_controller,update_cameramanufacturer_controller,delete_cameramanufacturer_controller
@app.route("/CameraManufacturer",methods=["GET","POST"])
def list_all_create_cameramanufacturers():
if request.method == 'GET' : return list_all_cameramanufacturers_controller()
if request.method == 'POST' : return create_cameramanufacturer_controller()
@app.route("/CameraManufacturer/<cameramanufacturer_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_cameramanufacturers(cameramanufacturer_id):
if request.method == 'GET' : return retrieve_cameramanufacturer_controller(cameramanufacturer_id)
if request.method == 'PUT' : return update_cameramanufacturer_controller(cameramanufacturer_id)
if request.method == "DELETE": return delete_cameramanufacturer_controller(cameramanufacturer_id)

View File

@ -1,44 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import Film
def list_all_films_controller():
films = Film.query.all()
response = []
for film in films: response.append(film.toDict())
return jsonify(response)
def create_film_controller():
request_form = request.form.to_dict()
print(request_form)
new_film = Film(
name = request_form['name'],
ISO = request_form['ISO'],
Push_Pull = request_form['Push_Pull'],
fk_FilmManufacturer_id = request_form["manufacturerID"]
)
db.session.add(new_film)
db.session.commit()
response = Film.query.all()
return(jsonify(request_form))
def retrieve_film_controller(film_id):
response = Film.query.get(film_id).toDict()
return jsonify(response)
def update_film_controller(film_id):
request_form = request.form.to_dict()
film = Film.query.get(film_id)
film.name = request_form['name']
film.ISO = request_form['ISO']
film.Push_Pull = request_form['Push_Pull']
film.fk_FilmManufacturer_id = request_form["manufacturerID"]
db.session.commit()
response = Film.query.get(film_id).toDict()
return jsonify(response)
def delete_film_controller(film_id):
Film.query.filter_by(id=film_id).delete()
db.session.commit()
return f"Film with ID={film_id} was removed successfully"

View File

@ -1,19 +0,0 @@
from sqlalchemy import inspect
from datetime import datetime
from ..app import db
class Film(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
ISO = db.Column(db.String(10))
Push_Pull = db.Column(db.String(10))
fk_FilmManufacturer_id = db.Column(db.Integer(),db.ForeignKey("film_manufacturer.id"))
fk_FilmFormat_id = db.Column(db.Integer(),db.ForeignKey("film_format.id"))
filmmanufacturer = db.relationship("FilmManufacturer",back_populates='films')
filmformat = db.relationship("FilmFormat", back_populates='films' )
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_films_controller,create_film_controller,retrieve_film_controller,update_film_controller,delete_film_controller
@app.route("/Films",methods=["GET","POST"])
def list_all_create_films():
if request.method == 'GET' : return list_all_films_controller()
if request.method == 'POST' : return create_film_controller()
@app.route("/Films/<film_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_Films(film_id):
if request.method == 'GET' : return retrieve_film_controller(film_id)
if request.method == 'PUT' : return update_film_controller(film_id)
if request.method == "DELETE": return delete_film_controller(film_id)

View File

@ -1,40 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import FilmFormat
def list_all_filmformat_controller():
filmformat = FilmFormat.query.all()
response = []
for filmformat in filmformat: response.append(filmformat.toDict())
return jsonify(response)
def create_filmformat_controller():
request_form = request.form.to_dict()
print(request_form)
new_filmformat = FilmFormat(
name = request_form['name'],
)
db.session.add(new_filmformat)
db.session.commit()
response = FilmFormat.query.all()
return(jsonify(request_form))
def retrieve_filmformat_controller(filmformat_id):
response = FilmFormat.query.get(filmformat_id).toDict()
print(response)
return jsonify(response)
def update_filmformat_controller(filmformat_id):
request_form = request.form.to_dict()
filmmanufacturer = FilmFormat.query.get(filmformat_id)
filmmanufacturer.name = request_form['name']
db.session.commit()
response = FilmFormat.query.get(filmformat_id).toDict()
return jsonify(response)
def delete_filmformat_controller(filmformat_id):
FilmFormat.query.filter_by(id=filmformat_id).delete()
db.session.commit()
return f"FilmManufacturer with ID= {filmformat_id} was removed successfully"

View File

@ -1,14 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class FilmFormat(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
films = db.relationship("Film",back_populates='filmformat')
cameras = db.relationship("Camera",back_populates='filmformat')
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_filmformat_controller,create_filmformat_controller,retrieve_filmformat_controller,update_filmformat_controller,delete_filmformat_controller
@app.route("/FilmFormat",methods=["GET","POST"])
def list_all_create_filmformats():
if request.method == 'GET' : return list_all_filmformat_controller()
if request.method == 'POST' : return create_filmformat_controller()
@app.route("/FilmFormat/<filmmanufacturer_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_filmformats(filmformat_id):
if request.method == 'GET' : return retrieve_filmformat_controller(filmformat_id)
if request.method == 'PUT' : return update_filmformat_controller(filmformat_id)
if request.method == "DELETE": return delete_filmformat_controller(filmformat_id)

View File

@ -1,40 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import FilmManufacturer
def list_all_filmmanufacturers_controller():
filmmanufacturers = FilmManufacturer.query.all()
response = []
for filmmanufacturer in filmmanufacturers: response.append(filmmanufacturer.toDict())
return jsonify(response)
def create_filmmanufacturer_controller():
request_form = request.form.to_dict()
print(request_form)
new_filmmanufacturer = FilmManufacturer(
name = request_form['name'],
)
db.session.add(new_filmmanufacturer)
db.session.commit()
response = FilmManufacturer.query.all()
return(jsonify(request_form))
def retrieve_filmmanufacturer_controller(filmmanufacturer_id):
response = FilmManufacturer.query.get(filmmanufacturer_id).toDict()
print(response)
return jsonify(response)
def update_filmmanufacturer_controller(filmmanufacturer_id):
request_form = request.form.to_dict()
filmmanufacturer = FilmManufacturer.query.get(filmmanufacturer_id)
filmmanufacturer.name = request_form['name']
db.session.commit()
response = FilmManufacturer.query.get(filmmanufacturer_id).toDict()
return jsonify(response)
def delete_filmmanufacturer_controller(filmmanufacturer_id):
FilmManufacturer.query.filter_by(id=filmmanufacturer_id).delete()
db.session.commit()
return f"FilmManufacturer with ID={FilmManufacturer} was removed successfully"

View File

@ -1,13 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class FilmManufacturer(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
films = db.relationship("Film",back_populates='filmmanufacturer')
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_filmmanufacturers_controller,create_filmmanufacturer_controller,retrieve_filmmanufacturer_controller,update_filmmanufacturer_controller,delete_filmmanufacturer_controller
@app.route("/FilmManufacturer",methods=["GET","POST"])
def list_all_create_filmmanufacturers():
if request.method == 'GET' : return list_all_filmmanufacturers_controller()
if request.method == 'POST' : return create_filmmanufacturer_controller()
@app.route("/FilmManufacturer/<filmmanufacturer_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_FilmManufacturers(filmmanufacturer_id):
if request.method == 'GET' : return retrieve_filmmanufacturer_controller(filmmanufacturer_id)
if request.method == 'PUT' : return update_filmmanufacturer_controller(filmmanufacturer_id)
if request.method == "DELETE": return delete_filmmanufacturer_controller(filmmanufacturer_id)

View File

@ -1,40 +0,0 @@
from flask import request, jsonify
import uuid
from ..app import db
from .models import Location
def list_all_location_controller():
locations = Location.query.all()
response = []
for location in locations: response.append(location.toDict())
return jsonify(response)
def create_location_controller():
request_form = request.form.to_dict()
print(request_form)
new_location = Location(
name = request_form['name'],
)
db.session.add(new_location)
db.session.commit()
response = Location.query.all()
return(jsonify(request_form))
def retrieve_location_controller(location_id):
response = Location.query.get(location_id).toDict()
print(response)
return jsonify(response)
def update_location_controller(location_id):
request_form = request.form.to_dict()
location = Location.query.get(location_id)
location.name = request_form['name']
db.session.commit()
response = Location.query.get(location_id).toDict()
return jsonify(response)
def delete_location_controller(location_id):
Location.query.filter_by(id=location_id).delete()
db.session.commit()
return f"FilmManufacturer with ID= {location_id} was removed successfully"

View File

@ -1,13 +0,0 @@
from sqlalchemy import inspect
from ..app import db
class Location(db.Model):
id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True)
name = db.Column(db.String(255))
def toDict(self):
return {
c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs
}

View File

@ -1,15 +0,0 @@
from flask import request
from ..app import app
from .controllers import list_all_location_controller,create_location_controller,retrieve_location_controller,update_location_controller,delete_location_controller
@app.route("/Location",methods=["GET","POST"])
def list_all_create_locations():
if request.method == 'GET' : return list_all_location_controller()
if request.method == 'POST' : return create_location_controller()
@app.route("/Location/<location_id>",methods=["GET","PUT","DELETE"])
def retrieve_update_delete_locations(filmformat_id):
if request.method == 'GET' : return retrieve_location_controller(filmformat_id)
if request.method == 'PUT' : return update_location_controller(filmformat_id)
if request.method == "DELETE": return delete_location_controller(filmformat_id)

View File

View File

@ -1,49 +0,0 @@
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy import event
from .config import config
db = SQLAlchemy()
migrate = Migrate(render_as_batch=True)
def create_app(config_mode):
app = Flask(__name__)
app.config.from_object(config[config_mode])
db.init_app(app)
migrate.init_app(app,db,)
with app.app_context():
@event.listens_for(db.engine, 'connect')
def set_sqlite_pragma(dbapi_connection, connection_record):
cursor = dbapi_connection.cursor()
cursor.execute("PRAGMA foreign_keys=ON;")
cursor.close()
return app
app = create_app(os.getenv("CONFIG_MODE"))
@app.route('/')
def hello():
return "Hellord"
from .Film import urls
from .FilmManufacturer import urls
from .FilmFormat import urls
from .Location import urls
from .CameraFormat import urls
from .Camera import urls
from .CameraManufacturer import urls
if __name__ == "__main__":
app.run(debug=True,port=8008)
print(os.getenv("CONFIG_MODE"))

View File

@ -1,29 +0,0 @@
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
SQLALCHEMY_TRACK_MODIFICATIONS = True
class DevelopmentConfig(Config):
DEVELOPMENT =True
DEBUG = True
SQLALCHEMY_DATABASE_URI = os.getenv("DEVELOPMENT_DATABASE_URL")
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = os.getenv("TEST_DATABASE_URL")
class StagingConfig(Config):
DEVELOPMENT = True
DEBUG = True
SQLALCHEMY_DATABASE_URI = os.getenv("STAGING_DATABASE_URL")
class ProductionConfig(Config):
DEBUG = False
SQLALCHEMY_DATABASE_URI = os.getenv("PRODUCTION_DATABASE_URL")
config = {
"development": DevelopmentConfig,
"testing": TestingConfig,
"staging": StagingConfig,
"production": ProductionConfig
}

View File

@ -1 +0,0 @@
Single-database configuration for Flask.

View File

@ -1,50 +0,0 @@
# A generic, single database configuration.
[alembic]
# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s
# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false
# Logging configuration
[loggers]
keys = root,sqlalchemy,alembic,flask_migrate
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
qualname =
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[logger_flask_migrate]
level = INFO
handlers =
qualname = flask_migrate
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

View File

@ -1,113 +0,0 @@
import logging
from logging.config import fileConfig
from flask import current_app
from alembic import context
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
logger = logging.getLogger('alembic.env')
def get_engine():
try:
# this works with Flask-SQLAlchemy<3 and Alchemical
return current_app.extensions['migrate'].db.get_engine()
except (TypeError, AttributeError):
# this works with Flask-SQLAlchemy>=3
return current_app.extensions['migrate'].db.engine
def get_engine_url():
try:
return get_engine().url.render_as_string(hide_password=False).replace(
'%', '%%')
except AttributeError:
return str(get_engine().url).replace('%', '%%')
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
config.set_main_option('sqlalchemy.url', get_engine_url())
target_db = current_app.extensions['migrate'].db
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
def get_metadata():
if hasattr(target_db, 'metadatas'):
return target_db.metadatas[None]
return target_db.metadata
def run_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url = config.get_main_option("sqlalchemy.url")
context.configure(
url=url, target_metadata=get_metadata(), literal_binds=True
)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
# this callback is used to prevent an auto-migration from being generated
# when there are no changes to the schema
# reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
def process_revision_directives(context, revision, directives):
if getattr(config.cmd_opts, 'autogenerate', False):
script = directives[0]
if script.upgrade_ops.is_empty():
directives[:] = []
logger.info('No changes in schema detected.')
conf_args = current_app.extensions['migrate'].configure_args
if conf_args.get("process_revision_directives") is None:
conf_args["process_revision_directives"] = process_revision_directives
connectable = get_engine()
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=get_metadata(),
**conf_args
)
with context.begin_transaction():
context.run_migrations()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()

View File

@ -1,24 +0,0 @@
"""${message}
Revision ID: ${up_revision}
Revises: ${down_revision | comma,n}
Create Date: ${create_date}
"""
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
revision = ${repr(up_revision)}
down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
def upgrade():
${upgrades if upgrades else "pass"}
def downgrade():
${downgrades if downgrades else "pass"}

View File

@ -1,44 +0,0 @@
"""empty message
Revision ID: 724351b0562f
Revises:
Create Date: 2024-04-10 02:15:27.572875
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '724351b0562f'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('film_manufacturer',
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('name', sa.String(length=255), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('id')
)
op.create_table('film',
sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('name', sa.String(length=255), nullable=True),
sa.Column('ISO', sa.String(length=10), nullable=True),
sa.Column('Push_Pull', sa.String(length=10), nullable=True),
sa.Column('fk_FilmManufacturer_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['fk_FilmManufacturer_id'], ['film_manufacturer.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('id')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('film')
op.drop_table('film_manufacturer')
# ### end Alembic commands ###