make-post-sell


Namemake-post-sell JSON
Version 1.0.8 PyPI version JSON
download
home_pagehttps://www.makepostsell.com
SummaryMake Post Sell
upload_time2025-07-28 01:36:05
maintainerNone
docs_urlNone
authorRussell Ballestrini
requires_pythonNone
licenseNone
keywords make post sell web pyramid pylons ecommerce digital downloads physical goods content marketing youtube alternative
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Make Post Sell
==============

The `Make Post Sell <https://www.makepostsell.com>`_ monolith platform service.

You can use the SaaS or self-host!

Our `blog acts as our user guide <https://blog.makepostsell.com/>`_ & also uses ``make_post_sell``!


Quick Start: Operating a Server with PyPI or Source Code
==========================================================

Before you start, navigate to the directory where you want to install ``make_post_sell`` database & files.

This Makefile-based workflow lets you choose between installing ``make_post_sell`` from PyPI packages or directly from the source code (editable mode). Both flows create a virtual environment in ``./env`` and store configuration and SQLite data in the persistent ``./data`` directory.

1. **Install make_post_sell**

   - **PyPI Installation:**  
     Download the Makefile and run::
     
         wget "https://git.unturf.com/engineering/make-post-sell/make_post_sell/-/raw/master/Makefile"
         make install-from-pypi

   - **Source Installation (Editable Mode):**  
     Clone the repository and run::
     
         git clone ssh://git@git.unturf.com:2222/engineering/make-post-sell/make_post_sell.git
         make install-from-source

   - **Production Installation (Non‑Editable):**  
     For production use (non‑editable even from source), run::
     
         git clone ssh://git@git.unturf.com:2222/engineering/make-post-sell/make_post_sell.git
         make install-from-source-prod

2. **Activate the Virtual Environment**

   Before running any commands, activate the virtual environment::
   
         source env/bin/activate

3. **Start the Development Server**

   You'll want to configure the system in ``data/development.ini``.

   Typically I control most stuff with environment vars, for example ``vars.sh``::

         # boto3 style credentials for s3/digital-ocean spaces.
         # this is for storing content & physical products.
         export MPS_APP_MAIN_BUCKET="removed"
         export MPS_APP_SECURE_UPLOADS_ACCESS_KEY="removed"
         export MPS_APP_SECURE_UPLOADS_SECRET_KEY="removed"

         # stripe keys for collecting credit cards & crypto.
         export MPS_TEST_STRIPE_PUBLIC_API_KEY="pk_test_removed"
         export MPS_TEST_STRIPE_SECRET_API_KEY="sk_test_removed"

         # the root domain acts as a SaaS for many shop domains!
         export MAKE_POST_SELL_ROOT_DOMAIN="example.com"
         export MAKE_POST_SELL_ROOT_URL="http://example.com:6501"

   With the virtual environment active, start the server::

         source vars.sh
         make serve

   Then browse to `http://127.0.0.1:6501/ <http://127.0.0.1:6501/>`_ to view 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.

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


Contributing
===================

* Establish communication with Russell or another admin to bless your git.unturf.com gitlab account & put you into the proper roles.
* Russell should see your account request but due to spam you have to ask him directly for approval via email or some other means of comms.
* Clone repo & make commits
* Create merge requests, we automatically run the unit & headless functional tests on each commit
* On merge we release to the production site & see the change across users.

Optionally, format your code.

This is not set in stone, but if you want to use a formatter this is the path for now!

**Python**
  black (manual)

**Jinja2**
  None (not needed, neither is an HTML formatter)

**JavaScript**
  Prettier or biome (manual)

**CSS**
  Prettier or biome (manual)


Licence
==============================================

All contributed code is placed in the public domain.

source code: `https://git.unturf.com/engineering/make-post-sell/make_post_sell <https://git.unturf.com/engineering/make-post-sell/make_post_sell>`_

MakePostSell & make-post-sell are trademarked, do not misrepresent the brand.

Feel free to white label any code or themes into your own brand.

**Original Developer:**  
`Russell Ballestrini <https://russell.ballestrini.net>`_

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.makepostsell.com",
    "name": "make-post-sell",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "make post sell web pyramid pylons ecommerce digital downloads physical goods content marketing youtube alternative",
    "author": "Russell Ballestrini",
    "author_email": "russell@ballestrini.net",
    "download_url": "https://files.pythonhosted.org/packages/1f/30/6fb1b0ed1183317045e5ec7d43f24a83701a2f0099b012894cd7f74124c3/make_post_sell-1.0.8.tar.gz",
    "platform": null,
    "description": "Make Post Sell\n==============\n\nThe `Make Post Sell <https://www.makepostsell.com>`_ monolith platform service.\n\nYou can use the SaaS or self-host!\n\nOur `blog acts as our user guide <https://blog.makepostsell.com/>`_ & also uses ``make_post_sell``!\n\n\nQuick Start: Operating a Server with PyPI or Source Code\n==========================================================\n\nBefore you start, navigate to the directory where you want to install ``make_post_sell`` database & files.\n\nThis Makefile-based workflow lets you choose between installing ``make_post_sell`` from PyPI packages or directly from the source code (editable mode). Both flows create a virtual environment in ``./env`` and store configuration and SQLite data in the persistent ``./data`` directory.\n\n1. **Install make_post_sell**\n\n   - **PyPI Installation:**  \n     Download the Makefile and run::\n     \n         wget \"https://git.unturf.com/engineering/make-post-sell/make_post_sell/-/raw/master/Makefile\"\n         make install-from-pypi\n\n   - **Source Installation (Editable Mode):**  \n     Clone the repository and run::\n     \n         git clone ssh://git@git.unturf.com:2222/engineering/make-post-sell/make_post_sell.git\n         make install-from-source\n\n   - **Production Installation (Non\u2011Editable):**  \n     For production use (non\u2011editable even from source), run::\n     \n         git clone ssh://git@git.unturf.com:2222/engineering/make-post-sell/make_post_sell.git\n         make install-from-source-prod\n\n2. **Activate the Virtual Environment**\n\n   Before running any commands, activate the virtual environment::\n   \n         source env/bin/activate\n\n3. **Start the Development Server**\n\n   You'll want to configure the system in ``data/development.ini``.\n\n   Typically I control most stuff with environment vars, for example ``vars.sh``::\n\n         # boto3 style credentials for s3/digital-ocean spaces.\n         # this is for storing content & physical products.\n         export MPS_APP_MAIN_BUCKET=\"removed\"\n         export MPS_APP_SECURE_UPLOADS_ACCESS_KEY=\"removed\"\n         export MPS_APP_SECURE_UPLOADS_SECRET_KEY=\"removed\"\n\n         # stripe keys for collecting credit cards & crypto.\n         export MPS_TEST_STRIPE_PUBLIC_API_KEY=\"pk_test_removed\"\n         export MPS_TEST_STRIPE_SECRET_API_KEY=\"sk_test_removed\"\n\n         # the root domain acts as a SaaS for many shop domains!\n         export MAKE_POST_SELL_ROOT_DOMAIN=\"example.com\"\n         export MAKE_POST_SELL_ROOT_URL=\"http://example.com:6501\"\n\n   With the virtual environment active, start the server::\n\n         source vars.sh\n         make serve\n\n   Then browse to `http://127.0.0.1:6501/ <http://127.0.0.1:6501/>`_ to view the app.\n\n\nRunning Tests\n-------------\n\nWe currently use `pytest`:\n\n.. code-block:: bash\n\n make test\n\n\nSQL Migrations\n===============\n\nIf your deployment is brand new, you don't need to run any migrations.\n\nOtherwise, it should be safe to run this at anytime to catch your database up:\n\n.. code-block:: bash\n\n alembic -c development.ini upgrade head\n\nTo look at the current revision and the history run these:\n\n.. code-block:: bash\n\n alembic -c development.ini history\n alembic -c development.ini current\n\nIf you ever want to cut a new migration script, you can run this:\n\n.. code-block:: bash\n\n alembic -c development.ini revision -m \"Added email_id column to User table.\"\n\nThen you can edit / modify the generated ``.py`` file with your changes.\n\nYou can also autogenerate a new migration script using `--autogenerate`.\nAlembic will prepare a migration script by comparing the state of the\ndatabase with the state of the model:\n\n.. code-block:: bash\n\n  alembic -c development.ini revision --autogenerate -m \"autogenerated indicies.\"\n\nYou should review the recommended migration script before `upgrade`.\n\nmisc\n====\n\nYou may source the new Python virtual environment during development:\n\n.. code-block:: bash\n\n # source env/bin/activate.fish\n . env/bin/activate\n\n\nPython Pyramid Shell\n==========================\n\nIf you want to use an interactive Python interpreter to interact with Make Post Sell app/models & DB:\n\n.. code-block:: bash\n\n pshell development.ini\n\nFor example, we needed to migrate production data using this script:\n\n.. code-block:: python\n\n # begin the database transaction.\n request.tm.begin()\n\n suses = models.stripe_user_shop.get_all_stripe_user_shop_objects(request.dbsession)\n for sus in suses:\n     try:\n         sus.active_card_id = sus.stripe_customer_default_source.id\n         request.dbsession.add(sus)\n     except AttributeError:\n         pass\n\n # flush / commit all changes stored the the sqlachemy session.\n request.dbsession.flush()\n\n # commit/close the database transaction to really make changes.\n request.tm.commit()\n\n\nContributing\n===================\n\n* Establish communication with Russell or another admin to bless your git.unturf.com gitlab account & put you into the proper roles.\n* Russell should see your account request but due to spam you have to ask him directly for approval via email or some other means of comms.\n* Clone repo & make commits\n* Create merge requests, we automatically run the unit & headless functional tests on each commit\n* On merge we release to the production site & see the change across users.\n\nOptionally, format your code.\n\nThis is not set in stone, but if you want to use a formatter this is the path for now!\n\n**Python**\n  black (manual)\n\n**Jinja2**\n  None (not needed, neither is an HTML formatter)\n\n**JavaScript**\n  Prettier or biome (manual)\n\n**CSS**\n  Prettier or biome (manual)\n\n\nLicence\n==============================================\n\nAll contributed code is placed in the public domain.\n\nsource code: `https://git.unturf.com/engineering/make-post-sell/make_post_sell <https://git.unturf.com/engineering/make-post-sell/make_post_sell>`_\n\nMakePostSell & make-post-sell are trademarked, do not misrepresent the brand.\n\nFeel free to white label any code or themes into your own brand.\n\n**Original Developer:**  \n`Russell Ballestrini <https://russell.ballestrini.net>`_\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Make Post Sell",
    "version": "1.0.8",
    "project_urls": {
        "Homepage": "https://www.makepostsell.com"
    },
    "split_keywords": [
        "make",
        "post",
        "sell",
        "web",
        "pyramid",
        "pylons",
        "ecommerce",
        "digital",
        "downloads",
        "physical",
        "goods",
        "content",
        "marketing",
        "youtube",
        "alternative"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "51514ec033d5fbc84c4f0b5cf2d96bce78503f0b31201aad93960c23717297c6",
                "md5": "8e2b462cae365668981310ce3e9616cd",
                "sha256": "6d26fb25e457efca1f71b70ea396935b74e8fadf18153307a8774c299aa63b2f"
            },
            "downloads": -1,
            "filename": "make_post_sell-1.0.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8e2b462cae365668981310ce3e9616cd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 432027,
            "upload_time": "2025-07-28T01:36:03",
            "upload_time_iso_8601": "2025-07-28T01:36:03.655084Z",
            "url": "https://files.pythonhosted.org/packages/51/51/4ec033d5fbc84c4f0b5cf2d96bce78503f0b31201aad93960c23717297c6/make_post_sell-1.0.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1f306fb1b0ed1183317045e5ec7d43f24a83701a2f0099b012894cd7f74124c3",
                "md5": "da0ce85970d5bc9f0e3595bd9ec3e26d",
                "sha256": "44d11d86b198c4e551da514735d6c0fd3be6416015429a265a1a8c992d9a9775"
            },
            "downloads": -1,
            "filename": "make_post_sell-1.0.8.tar.gz",
            "has_sig": false,
            "md5_digest": "da0ce85970d5bc9f0e3595bd9ec3e26d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 395686,
            "upload_time": "2025-07-28T01:36:05",
            "upload_time_iso_8601": "2025-07-28T01:36:05.244256Z",
            "url": "https://files.pythonhosted.org/packages/1f/30/6fb1b0ed1183317045e5ec7d43f24a83701a2f0099b012894cd7f74124c3/make_post_sell-1.0.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-28 01:36:05",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "make-post-sell"
}
        
Elapsed time: 2.26330s