Find a file
Russell Ballestrini 1d12f5852f fix markdown editor for descriptions content
modified:   .gitlab-ci.deploy.yml
	modified:   make_post_sell/models/product.py
	modified:   make_post_sell/routes.py
	modified:   make_post_sell/templates/product_edit.j2
	modified:   make_post_sell/views/product.py
2024-07-05 12:34:10 -04:00
make_post_sell fix markdown editor for descriptions content 2024-07-05 12:34:10 -04:00
.gitignore w00t this Caddyfile was able to work in development! 2022-06-29 13:19:01 -04:00
.gitlab-ci.deploy.yml fix markdown editor for descriptions content 2024-07-05 12:34:10 -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 when db is created we should create a shop for the root_domain saas 2022-08-26 12:58:54 -04:00
journal.rst messing with playwright 2024-06-22 11:47:09 -04:00
Makefile modified: Makefile 2022-05-25 18:08:20 -04: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 Stripe Customer Sources to SetupIntents & Element JS 2022-08-24 18:45:05 +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 shop_id & active on cart table 2022-07-13 18:11:40 +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()