131 lines
2.9 KiB
ReStructuredText
131 lines
2.9 KiB
ReStructuredText
Make Post Sell
|
|
==============
|
|
|
|
The `Make Post Sell <https://www.makepostsell.com>`_ monolith platform service.
|
|
|
|
|
|
Getting Started
|
|
---------------
|
|
|
|
Clone this repo and change your working directory to the checkout.
|
|
|
|
Create a Python virtual environment and install project dependencies:
|
|
|
|
.. code-block:: bash
|
|
|
|
make dev
|
|
|
|
Load schema and default data into the database using a script,
|
|
we currently use sqlite3 as a development and test database:
|
|
|
|
.. code-block:: bash
|
|
|
|
make init_db config=development.ini
|
|
|
|
Run a web application server with the project loaded:
|
|
|
|
.. code-block:: bash
|
|
|
|
make serve
|
|
|
|
Open a 2nd shell and run a test SMTP server for intercepting OTP login uri's:
|
|
|
|
.. code-block:: bash
|
|
|
|
make smtp
|
|
|
|
In a web browser navagate to http://127.0.0.1:6501/ and you should see the app.
|
|
|
|
|
|
Running Tests
|
|
-------------
|
|
|
|
We currently use `pytest`:
|
|
|
|
.. code-block:: bash
|
|
|
|
make test
|
|
|
|
|
|
SQL Migrations
|
|
===============
|
|
|
|
If your deployment is brand new, you don't need to run any migrations.
|
|
You should however run this to stamp the database as ready:
|
|
|
|
.. code-block:: bash
|
|
|
|
alembic -c development.ini stamp head
|
|
|
|
Otherwise, it should be safe to run this at anytime to catch your database up:
|
|
|
|
.. code-block:: bash
|
|
|
|
alembic -c development.ini upgrade head
|
|
|
|
To look at the current revision and the history run these:
|
|
|
|
.. code-block:: bash
|
|
|
|
alembic -c development.ini history
|
|
alembic -c development.ini current
|
|
|
|
If you ever want to cut a new migration script, you can run this:
|
|
|
|
.. code-block:: bash
|
|
|
|
alembic -c development.ini revision -m "Added email_id column to User table."
|
|
|
|
Then you can edit / modify the generated ``.py`` file with your changes.
|
|
|
|
You can also autogenerate a new migration script using `--autogenerate`.
|
|
Alembic will prepare a migration script by comparing the state of the
|
|
database with the state of the model:
|
|
|
|
.. code-block:: bash
|
|
|
|
alembic -c development.ini revision --autogenerate -m "autogenerated indicies."
|
|
|
|
You should review the recommended migration script before `upgrade`.
|
|
|
|
|
|
misc
|
|
====
|
|
|
|
You may source the new Python virtual environment during development:
|
|
|
|
.. code-block:: bash
|
|
|
|
# source env/bin/activate.fish
|
|
. env/bin/activate
|
|
|
|
|
|
Python Pyramid Shell
|
|
==========================
|
|
|
|
If you want to use an interactive Python interpreter to interact with Make Post Sell app/models & DB:
|
|
|
|
.. code-block:: bash
|
|
|
|
pshell development.ini
|
|
|
|
For example, we needed to migrate production data using this script:
|
|
|
|
.. code-block:: python
|
|
|
|
# begin the database transaction.
|
|
request.tm.begin()
|
|
|
|
suses = models.stripe_user_shop.get_all_stripe_user_shop_objects(request.dbsession)
|
|
for sus in suses:
|
|
try:
|
|
sus.active_card_id = sus.stripe_customer_default_source.id
|
|
request.dbsession.add(sus)
|
|
except AttributeError:
|
|
pass
|
|
|
|
# flush / commit all changes stored the the sqlachemy session.
|
|
request.dbsession.flush()
|
|
|
|
# commit/close the database transaction to really make changes.
|
|
request.tm.commit()
|