[Mailman-Developers] New Interface

Stephen J. Turnbull stephen at xemacs.org
Mon Jun 6 02:35:53 EDT 2016


Harshit Bansal writes:

 > How can this composability be achieved in a model? I mean that the
 > size of a table is fixed in a model and if a style describes just a
 > partial set of attributes then what would be stored in other
 > attributes?

(1) In a NoSQL database (MongoDB, for example), you can store a
    partial record with no preparation.  This is a good thing and a
    bad thing, depending on how the now-you-see-them-now-you-don't
    fields are used.

(2) SQLAlchemy (and the underlying RDBMSes) allow you to have optional
    fields.  This is implemented by storing NULL in the missing field.

 > Also how would this partial style be applied to a mailing list?

A style would be a list of stylets (NOTE! none of the identifiers
below are real! All names have been changed to protect my ignorance!):

    s1 = { notmetoo_default: True, nomail_default: False }
    s2 = { notmetoo_default: False, ack_default: True }

    newstyle = [s1, s2]

    def apply_style(style, mlist):
        try:
            mlist.start_transaction()
            for s in style:
                # common attributes will overwrite earlier values
                mlist.apply_stylet(s)
                # make sure all attributes are set to sane values
                mlist.validate_style()
            mlist.commit_transaction()
        except Exception:
            mlist.rollback_transaction()

 > 2: Current 'IStyle' interface allows us to define either a partial
 > style(stylet, describing just a partial set of attributes) or a
 > complete style. But is that possible with a model?

There should be either an SQLAlchemy option for each attribute to be
optional, or maybe the inverse attribute of required.  Use that option
on the model attributes.

 > 3: If I go for style composabiltiy as described by you then how would
 > I represent that idea in REST and Postorius?

Basically the same way.



More information about the Mailman-Developers mailing list