Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mailman/mailman
  • warsaw/mailman
  • liuzceecs/mailman
  • godricglow/mailman
  • maxking/mailman
  • nka11/mailman
  • reviforks/mailman
  • bhaveshgoyal/mailman
  • naph/mailman
  • thelinuxguy/mailman
  • abompard/mailman
  • wdoekes/mailman
  • emsearcy/mailman
  • Acidburn0zzz/mailman
  • vaibhavgupta/mailman
  • clararubin/mailman
  • ruiqing.puyang/mailman
  • sergedomk/mailman
  • yashu-seth/mailman
  • anirudhdahiya9/mailman
  • Tarunjit/mailman
  • jaywink/mailman
  • qsx/mailman
  • _Harshit_/mailman
  • adityadivekar/mailman
  • sarkarmanna/mailman
  • jinankjain/mailman
  • daj0ker/mailman
  • hafizimaming2/mailman
  • mdohmen/mailman
  • handmadeone/mailman
  • hvk3/mailman
  • darthbhyrava/mailman
  • zsharique/mailman
  • gudipudiprashant/mailman
  • shivansh-bajaj/mailman
  • sanjana95/mailman
  • sujay-skumar141295/mailman
  • amruthasangeeth/mailman
  • gurkirpal204/mailman
  • DanCarl857/mailman
  • Yibo.Sun/mailman
  • hbkscorpion/mailman
  • uagarwal744/mailman
  • softcoder/mailman
  • aditigupta96/mailman
  • waseem18/mailman
  • sanjayramesh005/mailman
  • skat00sh/mailman
  • jonax/mailman
  • Lan5432/mailman
  • jesa7955/mailman
  • ramirez044/mailman
  • yland/mailman
  • vinaymundada27/mailman
  • hu_willy/mailman
  • nvedant07/mailman
  • jdfandino10/mailman
  • haggerhermy/mailman
  • aadityashukla1989/mailman
  • salekinsirajus/mailman
  • noc0lour/mailman
  • nitishkd/mailman
  • alenavolk/mailman
  • khushbuparakh/mailman
  • sk7089775/mailman
  • msapiro/mailman
  • tbriles/mailman
  • mathuin/mailman
  • amitt001/mailman
  • yamhill/mailman
  • sunny94/mailman
  • guptaabhinav206/mailman
  • DSpinellis/mailman
  • isht3/mailman
  • VasilF/mailman
  • alex1007/mailman
  • JanLuca1/mailman
  • josepperna/mailman
  • ellmetha/mailman
  • fpeyre/mailman
  • nikhilrayaprolu/mailman
  • Soumya97/mailman
  • nihaln/mailman
  • pandey_divesh/mailman
  • mmhat/mailman
  • azubuinedaniel05/mailman
  • pratik4/mailman
  • sidgairo18/mailman
  • patniharshit/mailman
  • GauthamGoli/mailman
  • vaibspidy/mailman
  • sreyaschaithanya/mailman
  • Ras-al-Ghul/mailman
  • arnab1896/mailman
  • tech0/mailman
  • abit2/mailman
  • pranavsid98/mailman
  • cooldessert/mailman
  • rahul_nitdgp/mailman
  • yashsethiya97/mailman
  • corona10/mailman
  • fumblehool/mailman
  • doomsayer13/mailman
  • rohith.asrk/mailman
  • Diptanshu8/mailman
  • sukeesh/mailman
  • kumarmj/mailman
  • mbtamuli/mailman
  • shreab373/mailman
  • tgtanya/mailman
  • rahuldecoded/mailman
  • terriko/mailman
  • flux/mailman
  • geneshuman/mailman
  • MishraVishwa/mailman
  • tasdikrahman/mailman
  • Riyuzakii/mailman
  • pluggies/mailman
  • J08nY/mailman
  • kamishettysreeja25/mailman
  • alessbn/mailman
  • peb/mailman
  • sec-princess/mailman
  • rubarax/mailman
  • simmis/mailman
  • demophoon/mailman
  • yaseppochi/mailman
  • pdxjohnny/mailman
  • bajciere/mailman
  • eeshan9815/mailman
  • rotdrop/mailman
  • marehr/mailman
  • Joan_zhu/mailman
  • JyotsanaS/mailman
  • mejo-/mailman
  • remy.leone/mailman
  • pvergain/mailman
  • nickwynja/mailman
  • levkowetz/mailman
  • skoranda/mailman
  • abhi20161997/mailman
  • EvangeliS/mailman
  • alen9722/mailman
  • masfik13/mailman
  • bukhshfarhaan/mailman
  • globin/mailman
  • ishirav/mailman
  • rwaweber/mailman
  • F1rst-Unicorn/mailman
  • Eysholdt/mailman
  • stephenjturnbull/mailman
  • phungmobile/mailman
  • jongsoobae/mailman
  • a.guzun/mailman
  • omunroe-com/mailman
  • anubani/mailman
  • jscaltreto/mailman
  • danishprakash/mailman
  • spark7x/mailman
  • ashish10677/mailman
  • bezt/mailman
  • rorosan/mailman
  • szabootibor/mailman
  • jfig/mailman
  • Anistontrade/mailman
  • cyberfighter-org/mailman
  • theoriaxaous/mailman
  • anspage/mailman
  • chrrrles/mailman
  • x-eysz7x/mailman
  • anarcat/mailman
  • creof/mailman
  • rikroe/mailman
  • edlug/mailman
  • algomaster99/mailman
  • Nayan-Khanna/mailman
  • Yexiaoxing/mailman
  • natefoo/mailman
  • varun_raj/mailman
  • satbirssingh/mailman
  • berserker1/mailman
  • ranidivya063/mailman
  • humbergb69/mailman
  • ishanbhatia/mailman
  • sharifa2708/mailman
  • krishnadey30/mailman
  • sparunakian/mailman
  • rpdr/mailman
  • kriyszig/mailman
  • anamalia_christopher/mailman
  • nijel/mailman
  • kebikec1/mailman
  • ashryaagr/mailman
  • mluto/mailman
  • misocho/mailman
  • arunhari/mailman
  • Saumitra-Shukla/mailman
  • sayantanHack/mailman
  • thvoukelatos/mailman
  • raymondberg/mailman
  • brl1906/mailman
  • kursed468631/mailman
  • kamdarkarnavee/mailman
  • nikhil_gupta11/mailman
  • larrystrickland.ws1/mailman
  • belegnar/mailman
  • ariessa/mailman
  • radhefa2/mailman
  • dontub/mailman
  • hv7214/mailman
  • classroom-teacher/mailman
  • raboof/mailman
  • dzatoah/mailman
  • co28-pub/mailman/mailman-core
  • skchoudhary/mailman
  • yakatz/mailman
  • cruztyree993/mailman
  • 1usa-top/mailman
  • mukeshsihag/mailman
  • 22f6941a/mailman
  • nosetrex/mailman
  • spadaandre95/mailman
  • sozanbawan802/mailman
  • foxcpp/mailman
  • Uriel323/mailman
  • weblate/mailman
  • gutsytechster/mailman
  • qyliss/mailman
  • kushal28/mailman
  • sp35/mailman
  • neville133/mailman
  • lkrmelu6/mailman
  • suusha1340-source1/mailman
  • duck-rh/mailman
  • 0807love0825/mailman
  • jewelryexchange.com/mailman
  • webtechno-G/mailman
  • lheckemann/mailman
  • peterbw/mailman
  • muellermartin/mailman
  • tojin12341za/mailman
  • Murazaki/mailman
  • emirisman/mailman
  • j23d/mailman
  • Conan_Kudo/mailman
  • HsGaurav/mailman
  • losonszky91/mailman
  • eduardo.carreon02/mailman
  • george-cao/mailman
  • iramirez179244/mailman
  • alvrubtap-sys/mailman
  • gaypierre/mailman
  • nerrehmit/mailman
  • EmiliTuron/mailman
  • Aju100/mailman
  • harass40/mailman
  • konradesss/mailman
  • hmmosner/mailman
  • caijunlong3303/mailman
  • Oldno7/mailman
  • belinay.sibel.k/mailman
  • ashi-jo/mailman
  • decon-harsh/mailman
  • Steven1677/mailman
  • prashantpandey9/mailman
  • hrs2203/mailman
  • shubhank-saxena/mailman
  • nishantc7/mailman
  • cjinchi/mailman
  • pchan8770/mailman
  • ankitsingh.as495/mailman
  • haaami01/mailman
  • kon.sitistas/mailman
  • georgeto/mailman
  • tommylikehu/mailman
  • nicliuqi/mailman
  • Aditya-Komaravolu/mailman
  • steve2021/mailman
  • nsiregar/mailman
  • legoktm/mailman
  • fumiyas/mailman
  • tmmcguire/mailman
  • antphyotun/mailman
  • george.glarakis/mailman
  • jamestiotio/mailman
  • habrecord22/mailman
  • hrik2001/mailman
  • chivasrockpapa/mailman
  • soffieswan038/mailman
  • luizluca/mailman
  • PaulosV/mailman
  • cwissemann/mailman
  • atagar1/mailman
  • edith007/mailman
  • nathanieldonahue40/mailman
  • barteecarla/mailman
  • mingw9056/mailman
  • indahayusetiaw090909/mailman
  • johngobon26/mailman
  • tacerus/mailman
  • GeekGawd/mailman
  • berkentekin/mailman
  • s3lph/mailman
  • dilyan.palauzov/mailman
  • tbithas/mailman
  • enlineaweb/mailman
  • brylon/mailman
  • delong1998/mailman
  • faresbasousy/mailman
  • sadsd32434/mailman
  • alexmonja1984/mailman
  • jmalj840/mailman
  • w.shaffer3/mailman
  • yzl1500/mailman
  • josealvesmacieljunior/mailman
  • boynokia2323/mailman
  • Nmxcgeo/mailman
  • jesusisilluminati23/mailman
  • nihadhobhamza/mailman
  • sdarwin/mailman
  • mistresstracy222/mailman
  • danil-smirnov/mailman
  • Kero-u/mailman
  • susanafuensanta.sf/mailman
  • cnnan5050/mailman
  • klausenbusk/mailman
  • 2876egg/mailman
  • errror/mailman
  • bitcras/mailman
  • Smithbull001/mailman
  • johnbendi/mailman
  • Bennett43/mailman
  • 1992kongpc.kth/mailman
  • admin1951/mailman
  • haleelsada/mailman
  • shmitty/mailman
  • jssfr/mailman
  • rumman157/mailman
  • gururamkali/mailman
  • yatesbarbi7/mailman
  • teythoon/mailman
  • devinsbdev/sb-mailman-core
  • tasty2103/mailman
  • alluse/mailman
  • Pavan-Thota/mailman
  • 3dnamargarita/mailman
  • Error838/mailman
  • pawel.jacek.matysiak/mailman
  • vytas/mailman
  • darjeeling1/mailman
  • AlejandraRochaOMcKinsey/mailman
  • travisburke/mailman
  • sn3hay/mailman
  • katefike/mailman-core-pycon-2024
  • urmilkalaria/mailman
  • teward/mailman
  • schaary/mailman
  • nelsonst/mailman
  • novial/mailman
  • av782/mailman
  • HimaTeju/mailman
  • sitedata/mailman
  • ankitkokane90/mailman
  • IshanKamboj/mailman
  • GiovanniKarra/mailman
  • xiongnemo/mailman
  • LunarLambda/mailman
  • usama280/mailman
  • AKIN2022/mailman
  • odyhpi/mailman
  • tpayne3/mailman
  • tmart/mailman
  • TUryuu/mailmancore_GSoC2024
  • raph-topo/mailman
  • stephenjturnbull/mailmancore_GSoC2024
  • kabads/mailman
  • bavatar123/mailman
  • dafrank/mailman
  • robertsilen/mailman
  • ktso/mailman
  • bhoeneis/mailman
  • liushuyu/mailman
383 results
Show changes
Commits on Source (2)
......@@ -17,6 +17,13 @@ Bugs
* A missing html_to_plain_text_command is now properly detected and logged.
(closes #345)
Interfaces
----------
* Broaden the semantics for ``IListManager.get()``. This API now accepts
both ``List-ID``s and fully qualified list names, since that's the most
common use case. There's now a separate ``.get_by_fqdn()`` which only
accepts the latter and mirrors the already existing ``.get_by_list_id()``.
3.1.0 -- "Between The Wheels"
=============================
......
......@@ -94,22 +94,36 @@ class IListManager(Interface):
:raise `ListAlreadyExistsError` if the named list already exists.
"""
def get(fqdn_listname):
def get(list_spec):
"""Return the mailing list with the given specification, if it exists.
:param list_spec: Either the fully qualified name of the mailing list,
or its List-ID. If list_spec has an `@` in it, it's considered an
FQDN listname, otherwise it's considered a List-ID.
:type list_spec: str
:return: the matching mailing list or None if no matching list is
found.
:rtype: IMailingList
"""
def get_by_fqdn(fqdn_listname):
"""Return the mailing list with the given name, if it exists.
:param fqdn_listname: The fully qualified name of the mailing list.
:type fqdn_listname: Unicode.
:return: the matching `IMailingList` or None if the named list does
not exist.
:type fqdn_listname: str
:return: the matching mailing list or None if no matching list is
found.
:rtype: IMailingList
"""
def get_by_list_id(list_id):
"""Return the mailing list with the given list id, if it exists.
:param fqdn_listname: The fully qualified name of the mailing list.
:type fqdn_listname: Unicode.
:return: the matching `IMailingList` or None if the named list does
not exist.
:param list_id: The List-ID
:type list_id: str
:return: the matching mailing list or None if no matching list is
found.
:rtype: IMailingList
"""
def delete(mlist):
......
......@@ -16,7 +16,7 @@ Creating a mailing list
Creating the list returns the newly created IMailList object.
>>> from mailman.interfaces.mailinglist import IMailingList
>>> mlist = list_manager.create('test@example.com')
>>> mlist = list_manager.create('ant@example.com')
>>> IMailingList.providedBy(mlist)
True
......@@ -26,13 +26,13 @@ mailing list moves to a different host, so it is what uniquely distinguishes
the mailing list to the system.
>>> print(mlist.list_name)
test
ant
>>> print(mlist.mail_host)
example.com
>>> print(mlist.fqdn_listname)
test@example.com
ant@example.com
>>> print(mlist.list_id)
test.example.com
ant.example.com
Deleting a mailing list
......@@ -46,9 +46,9 @@ Use the list manager to delete a mailing list.
After deleting the list, you can create it again.
>>> mlist = list_manager.create('test@example.com')
>>> mlist = list_manager.create('ant@example.com')
>>> print(mlist.fqdn_listname)
test@example.com
ant@example.com
Retrieving a mailing list
......@@ -57,21 +57,29 @@ Retrieving a mailing list
When a mailing list exists, you can ask the list manager for it and you will
always get the same object back.
>>> mlist_2 = list_manager.get('test@example.com')
>>> mlist_2 is mlist
True
>>> list_manager.get('ant@example.com')
<mailing list "ant@example.com" at ...>
You can also get a mailing list by it's list id.
The ``.get()`` method is ambidextrous, so it also accepts ``List-ID``s.
>>> mlist_2 = list_manager.get_by_list_id('test.example.com')
>>> mlist_2 is mlist
True
>>> list_manager.get('ant.example.com')
<mailing list "ant@example.com" at ...>
You can get a mailing list specifically by its ``List-ID``.
>>> list_manager.get_by_list_id('ant.example.com')
<mailing list "ant@example.com" at ...>
And you can get a mailing list specifically by its fully-qualified list name.
>>> list_manager.get_by_fqdn('ant@example.com')
<mailing list "ant@example.com" at ...>
If you try to get a list that doesn't existing yet, you get ``None``.
>>> print(list_manager.get('test_2@example.com'))
>>> print(list_manager.get('bee@example.com'))
None
>>> print(list_manager.get_by_list_id('test_2.example.com'))
>>> print(list_manager.get_by_list_id('bee.example.com'))
None
You also get ``None`` if the list name is invalid.
......@@ -88,33 +96,33 @@ iterate over the mailing list objects, the list posting addresses, or the list
address components.
::
>>> mlist_3 = list_manager.create('test_3@example.com')
>>> mlist_4 = list_manager.create('test_4@example.com')
>>> mlist_3 = list_manager.create('cat@example.com')
>>> mlist_4 = list_manager.create('dog@example.com')
>>> for name in sorted(list_manager.names):
... print(name)
test@example.com
test_3@example.com
test_4@example.com
ant@example.com
cat@example.com
dog@example.com
>>> for list_id in sorted(list_manager.list_ids):
... print(list_id)
test.example.com
test_3.example.com
test_4.example.com
ant.example.com
cat.example.com
dog.example.com
>>> for fqdn_listname in sorted(m.fqdn_listname
... for m in list_manager.mailing_lists):
... print(fqdn_listname)
test@example.com
test_3@example.com
test_4@example.com
ant@example.com
cat@example.com
dog@example.com
>>> for list_name, mail_host in sorted(list_manager.name_components):
... print(list_name, '@', mail_host)
test @ example.com
test_3 @ example.com
test_4 @ example.com
ant @ example.com
cat @ example.com
dog @ example.com
.. _`RFC 2369`: http://www.faqs.org/rfcs/rfc2369.html
......@@ -59,17 +59,24 @@ class ListManager:
return mlist
@dbconnection
def get(self, store, fqdn_listname):
def get(self, store, list_spec):
"""See `IListManager`."""
listname, at, hostname = fqdn_listname.partition('@')
list_id = '{}.{}'.format(listname, hostname)
return store.query(MailingList).filter_by(_list_id=list_id).first()
return (self.get_by_fqdn(list_spec)
if '@' in list_spec
else self.get_by_list_id(list_spec))
@dbconnection
def get_by_list_id(self, store, list_id):
"""See `IListManager`."""
return store.query(MailingList).filter_by(_list_id=list_id).first()
@dbconnection
def get_by_fqdn(self, store, fqdn_listname):
"""See `IListManager`."""
listname, at, hostname = fqdn_listname.partition('@')
list_id = '{}.{}'.format(listname, hostname)
return store.query(MailingList).filter_by(_list_id=list_id).first()
@dbconnection
def delete(self, store, mlist):
"""See `IListManager`."""
......
......@@ -225,13 +225,13 @@ class MailingList(Model):
listen(cls, 'load', cls._post_load)
def __repr__(self):
return '<mailing list "{0}" at {1:#x}>'.format(
return '<mailing list "{}" at {:#x}>'.format(
self.fqdn_listname, id(self))
@property
def fqdn_listname(self):
"""See `IMailingList`."""
return '{0}@{1}'.format(self.list_name, self.mail_host)
return '{}@{}'.format(self.list_name, self.mail_host)
@property
def list_id(self):
......
......@@ -135,6 +135,24 @@ class TestListManager(unittest.TestCase):
self.assertEqual(len(result), 1)
self.assertEqual(result[0], cat)
def test_find_by_list_spec(self):
ant = create_list('ant@example.com')
list_manager = getUtility(IListManager)
self.assertEqual(list_manager.get('ant@example.com'), ant)
self.assertEqual(list_manager.get('ant.example.com'), ant)
def test_find_by_list_id(self):
ant = create_list('ant@example.com')
list_manager = getUtility(IListManager)
self.assertEqual(list_manager.get_by_list_id('ant.example.com'), ant)
self.assertIsNone(list_manager.get_by_list_id('ant@example.com'))
def test_find_by_fqdn(self):
ant = create_list('ant@example.com')
list_manager = getUtility(IListManager)
self.assertEqual(list_manager.get_by_fqdn('ant@example.com'), ant)
self.assertIsNone(list_manager.get_by_fqdn('ant.example.com'))
class TestListLifecycleEvents(unittest.TestCase):
layer = ConfigLayer
......