Find a file
Russell Ballestrini c9aa05574e Jenn asked for more buttons. so I made more buttons.
modified:   make_post_sell/templates/cart_checkout.j2
	modified:   make_post_sell/templates/user_addresses.j2
2024-12-13 19:14:42 -05:00
make_post_sell Jenn asked for more buttons. so I made more buttons. 2024-12-13 19:14:42 -05:00
.gitignore w00t this Caddyfile was able to work in development! 2022-06-29 13:19:01 -04:00
.gitlab-ci.deploy.yml run deploy jobs at the same time 2024-07-05 12:59:51 -04:00
.gitlab-ci.yml expire_in: 1 month 2022-06-29 21:26:22 +00:00
Caddyfile Enable gzip & fix favicon 2022-06-29 14:03:41 -04:00
development.ini stripe test mode 2024-12-13 00:58:29 +00:00
journal.rst messing with playwright 2024-06-22 11:47:09 -04:00
Makefile shop sales pages 2024-12-11 12:03:54 -05:00
MANIFEST.in Time to open the sauce : ) 2021-12-31 21:39:40 -05:00
pytest.ini Time to open the sauce : ) 2021-12-31 21:39:40 -05:00
README.rst bump 2024-10-28 12:51:27 +00:00
requirements-dev.txt Time to open the sauce : ) 2021-12-31 21:39:40 -05:00
requirements-prod.txt Time to open the sauce : ) 2021-12-31 21:39:40 -05:00
requirements-test.txt Time to open the sauce : ) 2021-12-31 21:39:40 -05:00
requirements.py3.txt sunset miscutils! 2022-07-05 14:50:20 -04:00
requirements.txt sunset miscutils! 2022-07-05 14:50:20 -04:00
setup.py fix duplicate parameter key 2022-01-10 15:09:54 -05:00
test.ini stripe test mode 2024-12-13 00:58:29 +00:00

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()