diff --git a/ez_setup.py b/ez_setup.py
deleted file mode 100644
index 72a71c5..0000000
--- a/ez_setup.py
+++ /dev/null
@@ -1,278 +0,0 @@
-#!python
-"""Bootstrap setuptools installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
- from ez_setup import use_setuptools
- use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import sys
-DEFAULT_VERSION = "0.6c11"
-DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
-
-md5_data = {
- 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
- 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
- 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
- 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
- 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
- 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
- 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
- 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
- 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
- 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
- 'setuptools-0.6c10-py2.3.egg': 'ce1e2ab5d3a0256456d9fc13800a7090',
- 'setuptools-0.6c10-py2.4.egg': '57d6d9d6e9b80772c59a53a8433a5dd4',
- 'setuptools-0.6c10-py2.5.egg': 'de46ac8b1c97c895572e5e8596aeb8c7',
- 'setuptools-0.6c10-py2.6.egg': '58ea40aef06da02ce641495523a0b7f5',
- 'setuptools-0.6c11-py2.3.egg': '2baeac6e13d414a9d28e7ba5b5a596de',
- 'setuptools-0.6c11-py2.4.egg': 'bd639f9b0eac4c42497034dec2ec0c2b',
- 'setuptools-0.6c11-py2.5.egg': '64c94f3bf7a72a13ec83e0b24f2749b2',
- 'setuptools-0.6c11-py2.6.egg': 'bfa92100bd772d5a213eedd356d64086',
- 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
- 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
- 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
- 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
- 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
- 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
- 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
- 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
- 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
- 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
- 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
- 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
- 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
- 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
- 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
- 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
- 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
- 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
- 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
- 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
- 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
- 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
- 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
- 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
-}
-
-import sys, os
-try: from hashlib import md5
-except ImportError: from md5 import md5
-
-def _validate_md5(egg_name, data):
- if egg_name in md5_data:
- digest = md5(data).hexdigest()
- if digest != md5_data[egg_name]:
- print >>sys.stderr, (
- "md5 validation of %s failed! (Possible download problem?)"
- % egg_name
- )
- sys.exit(2)
- return data
-
-def use_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- download_delay=15
-):
- """Automatically find/download setuptools and make it available on sys.path
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end with
- a '/'). `to_dir` is the directory where setuptools will be downloaded, if
- it is not already available. If `download_delay` is specified, it should
- be the number of seconds that will be paused before initiating a download,
- should one be required. If an older version of setuptools is installed,
- this routine will print a message to ``sys.stderr`` and raise SystemExit in
- an attempt to abort the calling script.
- """
- was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
- def do_download():
- egg = download_setuptools(version, download_base, to_dir, download_delay)
- sys.path.insert(0, egg)
- import setuptools; setuptools.bootstrap_install_from = egg
- try:
- import pkg_resources
- except ImportError:
- return do_download()
- try:
- pkg_resources.require("setuptools>="+version); return
- except pkg_resources.VersionConflict, e:
- if was_imported:
- print >>sys.stderr, (
- "The required version of setuptools (>=%s) is not available, and\n"
- "can't be installed while this script is running. Please install\n"
- " a more recent version first, using 'easy_install -U setuptools'."
- "\n\n(Currently using %r)"
- ) % (version, e.args[0])
- sys.exit(2)
- except pkg_resources.DistributionNotFound:
- pass
-
- del pkg_resources, sys.modules['pkg_resources'] # reload ok
- return do_download()
-
-def download_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- delay = 15
-):
- """Download setuptools from a specified location and return its filename
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end
- with a '/'). `to_dir` is the directory where the egg will be downloaded.
- `delay` is the number of seconds to pause before an actual download attempt.
- """
- import urllib2, shutil
- egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
- url = download_base + egg_name
- saveto = os.path.join(to_dir, egg_name)
- src = dst = None
- if not os.path.exists(saveto): # Avoid repeated downloads
- try:
- from distutils import log
- if delay:
- log.warn("""
----------------------------------------------------------------------------
-This script requires setuptools version %s to run (even to display
-help). I will attempt to download it for you (from
-%s), but
-you may need to enable firewall access for this script first.
-I will start the download in %d seconds.
-
-(Note: if this machine does not have network access, please obtain the file
-
- %s
-
-and place it in this directory before rerunning this script.)
----------------------------------------------------------------------------""",
- version, download_base, delay, url
- ); from time import sleep; sleep(delay)
- log.warn("Downloading %s", url)
- src = urllib2.urlopen(url)
- # Read/write all in one block, so we don't create a corrupt file
- # if the download is interrupted.
- data = _validate_md5(egg_name, src.read())
- dst = open(saveto,"wb"); dst.write(data)
- finally:
- if src: src.close()
- if dst: dst.close()
- return os.path.realpath(saveto)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def main(argv, version=DEFAULT_VERSION):
- """Install or upgrade setuptools and EasyInstall"""
- try:
- import setuptools
- except ImportError:
- egg = None
- try:
- egg = download_setuptools(version, delay=0)
- sys.path.insert(0,egg)
- from setuptools.command.easy_install import main
- return main(list(argv)+[egg]) # we're done here
- finally:
- if egg and os.path.exists(egg):
- os.unlink(egg)
- else:
- if setuptools.__version__ == '0.0.1':
- print >>sys.stderr, (
- "You have an obsolete version of setuptools installed. Please\n"
- "remove it from your system entirely before rerunning this script."
- )
- sys.exit(2)
-
- req = "setuptools>="+version
- import pkg_resources
- try:
- pkg_resources.require(req)
- except pkg_resources.VersionConflict:
- try:
- from setuptools.command.easy_install import main
- except ImportError:
- from easy_install import main
- main(list(argv)+[download_setuptools(delay=0)])
- sys.exit(0) # try to force an exit
- else:
- if argv:
- from setuptools.command.easy_install import main
- main(argv)
- else:
- print "Setuptools version",version,"or greater has been installed."
- print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
-
-def update_md5(filenames):
- """Update our built-in md5 registry"""
-
- import re
-
- for name in filenames:
- base = os.path.basename(name)
- f = open(name,'rb')
- md5_data[base] = md5(f.read()).hexdigest()
- f.close()
-
- data = [" %r: %r,\n" % it for it in md5_data.items()]
- data.sort()
- repl = "".join(data)
-
- import inspect
- srcfile = inspect.getsourcefile(sys.modules[__name__])
- f = open(srcfile, 'rb'); src = f.read(); f.close()
-
- match = re.search("\nmd5_data = {\n([^}]+)}", src)
- if not match:
- print >>sys.stderr, "Internal error!"
- sys.exit(2)
-
- src = src[:match.start(1)] + repl + src[match.end(1):]
- f = open(srcfile,'w')
- f.write(src)
- f.close()
-
-
-if __name__=='__main__':
- if len(sys.argv)>2 and sys.argv[1]=='--md5update':
- update_md5(sys.argv[2:])
- else:
- main(sys.argv[1:])
diff --git a/src/postorius/static/postorius/img/icons.png b/src/postorius/static/postorius/img/icons.png
deleted file mode 100644
index 844cee0..0000000
--- a/src/postorius/static/postorius/img/icons.png
+++ /dev/null
Binary files differ
diff --git a/src/postorius/static/postorius/img/icons/minus.png b/src/postorius/static/postorius/img/icons/minus.png
deleted file mode 100644
index 03fb9be..0000000
--- a/src/postorius/static/postorius/img/icons/minus.png
+++ /dev/null
Binary files differ
diff --git a/src/postorius/static/postorius/img/icons/plus.png b/src/postorius/static/postorius/img/icons/plus.png
deleted file mode 100644
index 7428c48..0000000
--- a/src/postorius/static/postorius/img/icons/plus.png
+++ /dev/null
Binary files differ
diff --git a/src/postorius/static/postorius/img/tango/_license.txt b/src/postorius/static/postorius/img/tango/_license.txt
deleted file mode 100644
index 356097e..0000000
--- a/src/postorius/static/postorius/img/tango/_license.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-All Icons within this folder belong to the RRZE Icon Set which is based on Tango
-
-Both are published CC by SA and where included into mailman with special permission of Franziska Sponsel - one of the designers.
-
-Please see http://rrze-icon-set.berlios.de/team.html for the full team
-
-And http://tango.freedesktop.org/Tango_Desktop_Project for the Tango Project.
diff --git a/src/postorius/static/postorius/img/tango/actions/add-participant.svg b/src/postorius/static/postorius/img/tango/actions/add-participant.svg
deleted file mode 100644
index 7e1acf5..0000000
--- a/src/postorius/static/postorius/img/tango/actions/add-participant.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/actions/document-new_list.svg b/src/postorius/static/postorius/img/tango/actions/document-new_list.svg
deleted file mode 100644
index 2986fb8..0000000
--- a/src/postorius/static/postorius/img/tango/actions/document-new_list.svg
+++ /dev/null
@@ -1,2439 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/actions/document-settings.svg b/src/postorius/static/postorius/img/tango/actions/document-settings.svg
deleted file mode 100644
index eade479..0000000
--- a/src/postorius/static/postorius/img/tango/actions/document-settings.svg
+++ /dev/null
@@ -1,2917 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/actions/list-all-participants.svg b/src/postorius/static/postorius/img/tango/actions/list-all-participants.svg
deleted file mode 100644
index 4cf73c8..0000000
--- a/src/postorius/static/postorius/img/tango/actions/list-all-participants.svg
+++ /dev/null
@@ -1,522 +0,0 @@
-
diff --git a/src/postorius/static/postorius/img/tango/actions/remove-participant.svg b/src/postorius/static/postorius/img/tango/actions/remove-participant.svg
deleted file mode 100644
index b09e58c..0000000
--- a/src/postorius/static/postorius/img/tango/actions/remove-participant.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/categories/document-denied.svg b/src/postorius/static/postorius/img/tango/categories/document-denied.svg
deleted file mode 100644
index 1678b21..0000000
--- a/src/postorius/static/postorius/img/tango/categories/document-denied.svg
+++ /dev/null
@@ -1,4898 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/categories/user-edit.svg b/src/postorius/static/postorius/img/tango/categories/user-edit.svg
deleted file mode 100644
index 6771bce..0000000
--- a/src/postorius/static/postorius/img/tango/categories/user-edit.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/emblems/account-delete.svg b/src/postorius/static/postorius/img/tango/emblems/account-delete.svg
deleted file mode 100644
index 2455563..0000000
--- a/src/postorius/static/postorius/img/tango/emblems/account-delete.svg
+++ /dev/null
@@ -1,827 +0,0 @@
-
diff --git a/src/postorius/static/postorius/img/tango/emblems/account-edit.svg b/src/postorius/static/postorius/img/tango/emblems/account-edit.svg
deleted file mode 100644
index 3bacacf..0000000
--- a/src/postorius/static/postorius/img/tango/emblems/account-edit.svg
+++ /dev/null
@@ -1,975 +0,0 @@
-
diff --git a/src/postorius/static/postorius/img/tango/emblems/account-new.svg b/src/postorius/static/postorius/img/tango/emblems/account-new.svg
deleted file mode 100644
index de31adc..0000000
--- a/src/postorius/static/postorius/img/tango/emblems/account-new.svg
+++ /dev/null
@@ -1,2935 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/emblems/address-book.svg b/src/postorius/static/postorius/img/tango/emblems/address-book.svg
deleted file mode 100644
index 3a248cf..0000000
--- a/src/postorius/static/postorius/img/tango/emblems/address-book.svg
+++ /dev/null
@@ -1,581 +0,0 @@
-
-
-
diff --git a/src/postorius/static/postorius/img/tango/emblems/all-per-page.svg b/src/postorius/static/postorius/img/tango/emblems/all-per-page.svg
deleted file mode 100644
index 32bf9fa..0000000
--- a/src/postorius/static/postorius/img/tango/emblems/all-per-page.svg
+++ /dev/null
@@ -1,716 +0,0 @@
-
diff --git a/src/postorius/tests/test_utils.py b/src/postorius/tests/test_utils.py
deleted file mode 100644
index 3ebaba4..0000000
--- a/src/postorius/tests/test_utils.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2016 by the Free Software Foundation, Inc.
-#
-# This file is part of Postorius.
-#
-# Postorius is free software: you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 3 of the License, or (at your option)
-# any later version.
-# Postorius is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Postorius. If not, see .
-
-"""
-.. testsetup::
-
- >>> from __future__ import absolute_import, unicode_literals
-
- >>> from postorius.tests.utils import *
-
-
-Domains
-=======
-
-``postorius.tests.utils.create_mock_domain`` creates a mock domain object:
-
- >>> properties = dict(contact_address='postmaster@example.org',
- ... description='Example dot Org',
- ... mail_host='example.org',
- ... url_host='www.example.org')
- >>> mock_domain = create_mock_domain(properties)
- >>> print mock_domain
-
- >>> print mock_domain.contact_address
- postmaster@example.org
- >>> print mock_domain.description
- Example dot Org
- >>> print mock_domain.mail_host
- example.org
- >>> print mock_domain.url_host
- www.example.org
-
-
-Mailing Lists
-=============
-
-``postorius.tests.utils.create_mock_list`` creates a mock list object:
-
- >>> properties = dict(fqdn_listname='testlist@example.org',
- ... mail_host='example.org',
- ... list_name='testlist',
- ... display_name='Test List')
- >>> mock_list = create_mock_list(properties)
- >>> print mock_list
-
- >>> print mock_list.fqdn_listname
- testlist@example.org
- >>> print mock_list.mail_host
- example.org
- >>> print mock_list.list_name
- testlist
- >>> print mock_list.display_name
- Test List
-
-
-Memberships
-===========
-
-``postorius.tests.utils.create_mock_list`` creates a mock list object:
-
- >>> properties = dict(fqdn_listname='testlist@example.org',
- ... address='les@example.org',)
- >>> mock_member = create_mock_member(properties)
- >>> print mock_member
-
- >>> print mock_member.fqdn_listname
- testlist@example.org
- >>> print mock_member.address
- les@example.org
-"""
diff --git a/src/postorius/tests/tests.py b/src/postorius/tests/tests.py
deleted file mode 100644
index 5fbe042..0000000
--- a/src/postorius/tests/tests.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 1998-2016 by the Free Software Foundation, Inc.
-#
-# This file is part of Postorius.
-#
-# Postorius is free software: you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 3 of the License, or (at your option)
-# any later version.
-#
-# Postorius is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Postorius. If not, see .
-
-"""
-==============================
-Tests Login and Permissions
-==============================
-
-Setup Testobject (starts Mailman3 with an empty Database).
-
- >>> from setup import setup_mm, Testobject, teardown_mm
- >>> testobject = setup_mm(Testobject())
-
- .. note::
- You need to stop all Mailman3 instances before running the tests
-
-Modules needed
- As we can't make sure that you're running the same language as we did we
- made sure that each test below is executed using the exact same translation
- mechanism as we use to Display you Status Messages and other GUI Texts.
-
- Import Translation Module to check success messages
- >>> from django.utils.translation import gettext as _
-
- Import HTTPRedirectObject to check whether a response redirects
- >>> from django.http import HttpResponseRedirect
-
-Import Django test client.
-
- >>> from django.test.client import Client
- >>> c = Client()
-
-
-List index
-==========
-
-Try accessing the list index page.
-
- >>> response = c.get('/lists/',)
- >>> response.status_code
- 200
-
-
-Login Required
-==================================================
-
-As described within the installation instructions we *already* started using
-authentification. The easiest way testing it is that we simply load a page
-which is restricted to some users only.
-This was done using Django's @login_required Decorator in front of the View.
-One of the pages which requires a Login is the Domain Administration, if
-we can load the page without a redirect to the Login page, you're either
-already logged in or something went wrong.
-
- >>> response = c.get('/domains/')
- >>> print type(response) == HttpResponseRedirect
- True
-
-=====
-Pages
-=====
-
-Create a New List
-=================
-
-After creating a Domain you should be able to create new Lists. The Button for
-doing so is shown on the List index Page which should offer a list of all
-available (adverrtised) lists.
-
- >>> response = c.get('/lists/')
- >>> response.status_code
- 200
- >>> "Lists on" in response.content
- True
-
-The new List creation form is opened by clicking on the Button mentioned above
-or accessing the page directly
-
- >>> response = c.get('/lists/new/')
- >>> response.status_code
- 200
- >>> print "Create a new List on" in response.content
- True
-
-Creating a new List we do need to specify at least the below mentioned items.
-Those were entered using some nice GUI Forms which do only show up available
-Values or offer you to choose a name which will be checked during validation.
-We're now submitting the form using a POST request and get redirected to
-the List Index Page
-
- >>> response = c.post('/lists/new/',
- ... {"listname": "new_list1",
- ... "mail_host": "mail.example.com",
- ... "list_owner": "james@example.com",
- ... "description": "doctest testing list",
- ... "advertised": "True",
- ... "languages": "English (USA)"})
- >>> print type(response) == HttpResponseRedirect
- True
-
-As List index is an overview of all advertised Lists and we've choosen to
-do so we should now see our new List within the overview. HTTP_HOST is added
-as META Data for the request because we do only want to see Domains which
-belong to the example.com web_host.
-
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> response.status_code
- 200
- >>> "New_list1" in response.content
- True
-
-List Summary
-============
-
-List summary is a dashboard for each List. It does have Links to the most
-useful functions which are only related to that Domain. These include the
-Values mentioned below. _(function) is used to Translate these to you local
-language.
-
- >>> response = c.get('/lists/new_list1%40mail.example.com/',)
- >>> response.status_code
- 200
- >>> _("Subscribe") in response.content
- True
- >>> _("Archives") in response.content
- True
- >>> _("Edit Options") in response.content
- True
- >>> _("Unsubscribe") in response.content
- True
-
-Subscriptions
-=============
-
-The Subscriptions form is found on the below URL. Last part of the Url is one
-of [None,'subscribe','unsubscribe']
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/subscribe'
- >>> response = c.get(url)
- >>> response.status_code
- 200
-
-Forms will be prefilled with the Users Email if so. is logged in.
-
- >>> "james@example.com" in response.content
- True
-
-Now we can subscribe James and Katie and check that we get redirected to List
-Summary.
-
- >>> response = c.post(url,
- ... {"email": "james@example.com",
- ... "real_name": "James Watt",
- ... "name": "subscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> response = c.post(url,
- ... {"email": "katie@example.com",
- ... "real_name": "Katie Doe",
- ... "name": "subscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> print (_('Subscribed')+' katie@example.com') in response.content
- True
-
-The logged in user (james@example.com) can now modify his own membership
-using a button which is displayed in list_summary.
-
- >>> response = c.get('/lists/new_list1%40mail.example.com/')
- >>> "mm_membership" in response.content
- True
-
-Using the same subscription page we can unsubscribe as well.
-
- >>> response = c.post('/subscriptions/new_list1%40mail.example.com/unsubscribe',
- ... {"email": "katie@example.com",
- ... "name": "unsubscribe",
- ... "fqdn_listname": "new_list1@mail.example.com"})
- >>> print (_('Unsubscribed')+' katie@example.com') in response.content
- True
-
-Mass Subscribe Users (within settings)
-======================================
-
-Another page related to Mass Subscriptions will be available to List Owners
-as well. This page will allow adding a couple of users to one lists at the
-same time.
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/mass_subscribe/'
- >>> response = c.get(url)
- >>> response.status_code
- 200
-
-Try mass subscribing the users 'liza@example.com' and
-'george@example.com'. Each address should be provided on a separate
-line so add '\\n' between the names to indicate that this was done
-(we're on a Linux machine which is why the letter 'n' was used and
-the double '\\' instead of a single one is to escape the string
-parsing of Python).
-
- >>> url = '/subscriptions/new_list1%40mail.example.com/mass_subscribe/'
- >>> response = c.post(url,
- ... {"emails": "liza@example.com\\ngeorge@example.com"})
-
-If everything was successful, we shall get a positive response from
-the page. We'll check that this was the case.
-
- >>> print _("The mass subscription was successful.") in response.content
- True
-
-Delete the List
-===============
-
-Finally, let's delete the list.
-We start by checking that the list is really there (for reference).
-
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> print "New_list1" in response.content
- True
-
-Trying to delete the List we have to confirm this action
- >>> response = c.get('/delete_list/new_list1%40mail.example.com/',)
- >>> print "Please confirm" in response.content
- True
-
-Confirmed by pressing the button which requests the same page using POST
- >>> response = c.post('/delete_list/new_list1%40mail.example.com/',)
-
-...and check that it's been deleted.
- >>> response = c.get('/lists/',HTTP_HOST='example.com')
- >>> print "new_list1%40example.com" in response.content
- False
-
-==============
-Finishing Test
-==============
-
-Don't forget to remove the test object after testing all functions
- >>> teardown_mm(testobject)
-"""