mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Documentation + various fixes.
This commit is contained in:
@@ -33,6 +33,11 @@ install it.
|
||||
|
||||
$ pip install --upgrade modoboa
|
||||
|
||||
.. warning::
|
||||
|
||||
If you migrate to **1.1.0**, please follow the :ref:`dedicated migration
|
||||
procedure <1.1.0>` and skip the usual one.
|
||||
|
||||
Then, refer to this page to check if the version you're installing
|
||||
requires specific operations. If the version you're looking for is not
|
||||
present, it means nothing special is required.
|
||||
@@ -43,6 +48,41 @@ Finally, follow the common procedure::
|
||||
$ python manage.py syncdb --migrate
|
||||
$ python manage.py collectstatic
|
||||
|
||||
.. _1.1.0:
|
||||
|
||||
1.1.0: FIXME
|
||||
============
|
||||
|
||||
Due to code refactoring, some modifications need to be done into
|
||||
:file:`settings.py`:
|
||||
|
||||
#. ``MODOBOA_APPS`` must contain the following applications::
|
||||
|
||||
MODOBOA_APPS = (
|
||||
'modoboa',
|
||||
'modoboa.core',
|
||||
'modoboa.lib',
|
||||
|
||||
'modoboa.extensions.admin',
|
||||
'modoboa.extensions.limits',
|
||||
'modoboa.extensions.postfix_autoreply',
|
||||
'modoboa.extensions.webmail',
|
||||
'modoboa.extensions.stats',
|
||||
'modoboa.extensions.amavis',
|
||||
'modoboa.extensions.sievefilters',
|
||||
)
|
||||
|
||||
#. ``AUTH_USER_MODEL`` must be set to ``core.User``
|
||||
|
||||
#. Into ``LOGGING``, replace ``modoboa.lib.logutils.SQLHandler`` by
|
||||
``modoboa.core.loggers.SQLHandler``
|
||||
|
||||
Then, run the following commands to migrate your installation::
|
||||
|
||||
$ python manage.py migrate core 0001 --fake
|
||||
$ python manage.py migrate
|
||||
$ python manage.py collectstatic
|
||||
|
||||
|
||||
1.0.1: operations on mailboxes
|
||||
==============================
|
||||
|
||||
+16
-9
@@ -2,13 +2,20 @@ from django.conf.urls import patterns, url
|
||||
|
||||
|
||||
urlpatterns = patterns(
|
||||
'modoboa.core.views',
|
||||
|
||||
(r'^settings/$', 'viewsettings'),
|
||||
(r'^settings/parameters/$', 'viewparameters'),
|
||||
(r'^settings/parameters/save/$', 'saveparameters'),
|
||||
(r'^settings/extensions/$', 'viewextensions'),
|
||||
(r'^settings/extensions/save/$', 'saveextensions'),
|
||||
(r'^settings/info/$', 'information'),
|
||||
(r'^settings/logs/$', 'logs'),
|
||||
'',
|
||||
|
||||
(r'^accounts/login/$', 'modoboa.core.views.auth.dologin'),
|
||||
(r'^accounts/logout/$', 'modoboa.core.views.auth.dologout'),
|
||||
|
||||
(r'^core/$', 'modoboa.core.views.admin.viewsettings'),
|
||||
(r'^core/parameters/$', 'modoboa.core.views.admin.viewparameters'),
|
||||
(r'^core/parameters/save/$', 'modoboa.core.views.admin.saveparameters'),
|
||||
(r'^core/extensions/$', 'modoboa.core.views.admin.viewextensions'),
|
||||
(r'^core/extensions/save/$', 'modoboa.core.views.admin.saveextensions'),
|
||||
(r'^core/info/$', 'modoboa.core.views.admin.information'),
|
||||
(r'^core/logs/$', 'modoboa.core.views.admin.logs'),
|
||||
|
||||
(r'^user/$', 'modoboa.core.views.user.index'),
|
||||
(r'^user/preferences/$', 'modoboa.core.views.user.preferences'),
|
||||
(r'^user/profile/$', 'modoboa.core.views.user.profile'),
|
||||
)
|
||||
|
||||
@@ -133,7 +133,6 @@ def can_create_new_object(user, objtype):
|
||||
|
||||
@events.observe("AccountCreated")
|
||||
def create_pool(user):
|
||||
print "pouet"
|
||||
owner = get_object_owner(user)
|
||||
if not owner.is_superuser and \
|
||||
not owner.belongs_to_group("Resellers"):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from django.core.urlresolvers import reverse
|
||||
from modoboa.lib.tests import ExtTestCase
|
||||
from modoboa.core.factories import UserFactory
|
||||
from modoboa.extensions.admin.factories import DomainFactory, MailboxFactory
|
||||
from modoboa.core.models import User
|
||||
from modoboa.admin import factories
|
||||
|
||||
|
||||
class PermissionsTestCase(ExtTestCase):
|
||||
@@ -10,10 +11,11 @@ class PermissionsTestCase(ExtTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PermissionsTestCase, self).setUp()
|
||||
dom = factories.DomainFactory(name='test.com')
|
||||
self.admin = factories.UserFactory(
|
||||
username='admin@test.com', groups=('DomainAdmins',), mailbox__domain=dom
|
||||
dom = DomainFactory(name='test.com')
|
||||
self.admin = UserFactory(
|
||||
username='admin@test.com', groups=('DomainAdmins',)
|
||||
)
|
||||
MailboxFactory(address='admin', domain=dom, user=self.admin)
|
||||
dom.add_admin(self.admin)
|
||||
|
||||
def test_domainadmin_deletes_reseller(self):
|
||||
@@ -26,7 +28,7 @@ class PermissionsTestCase(ExtTestCase):
|
||||
password1="toto", password2="toto", role="Resellers",
|
||||
is_active=True, email="reseller@test.com", stepid=2
|
||||
)
|
||||
self.check_ajax_post(reverse("modoboa.admin.views.newaccount"), values)
|
||||
self.check_ajax_post(reverse("modoboa.extensions.admin.views.identity.newaccount"), values)
|
||||
account = User.objects.get(username="reseller@test.com")
|
||||
self.clt.logout()
|
||||
self.clt.login(username="admin@test.com", password="toto")
|
||||
|
||||
@@ -35,8 +35,8 @@ class ExtTestCase(ModoTestCase):
|
||||
|
||||
def setUp(self, *args, **kwargs):
|
||||
super(ExtTestCase, self).setUp(*args, **kwargs)
|
||||
self.clt.get(reverse("modoboa.admin.views.viewextensions"))
|
||||
self.clt.post(reverse("modoboa.admin.views.saveextensions"),
|
||||
self.clt.get(reverse("modoboa.core.views.admin.viewextensions"))
|
||||
self.clt.post(reverse("modoboa.core.views.admin.saveextensions"),
|
||||
{"select_%s" % self.name : "1"})
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class ParameterTestCase(TestCase):
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
from modoboa.admin.models import User
|
||||
from modoboa.core.models import User
|
||||
parameters.register(TestParams, "Test")
|
||||
parameters.register(TestUserParams, "TestUser")
|
||||
self.user = User.objects.create(username="tester")
|
||||
|
||||
+12
-20
@@ -6,39 +6,29 @@ from modoboa.core import load_settings
|
||||
|
||||
load_settings()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
(r'^$', 'modoboa.lib.webutils.topredirection'),
|
||||
(r'^jsi18n/$', 'django.views.i18n.javascript_catalog',
|
||||
{'packages': ('modoboa', ), }),
|
||||
|
||||
(r'^accounts/login/$', 'modoboa.core.views.auth.dologin'),
|
||||
(r'^accounts/logout/$', 'modoboa.core.views.auth.dologout'),
|
||||
|
||||
(r'^core/$', 'modoboa.core.views.admin.viewsettings'),
|
||||
(r'^core/parameters/$', 'modoboa.core.views.admin.viewparameters'),
|
||||
(r'^core/parameters/save/$', 'modoboa.core.views.admin.saveparameters'),
|
||||
(r'^core/extensions/$', 'modoboa.core.views.admin.viewextensions'),
|
||||
(r'^core/extensions/save/$', 'modoboa.core.views.admin.saveextensions'),
|
||||
(r'^core/info/$', 'modoboa.core.views.admin.information'),
|
||||
(r'^core/logs/$', 'modoboa.core.views.admin.logs'),
|
||||
|
||||
(r'^user/$', 'modoboa.core.views.user.index'),
|
||||
(r'^user/preferences/$', 'modoboa.core.views.user.preferences'),
|
||||
(r'^user/profile/$', 'modoboa.core.views.user.profile'),
|
||||
('', include('modoboa.core.urls')),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('',
|
||||
urlpatterns += patterns(
|
||||
'',
|
||||
*events.raiseQueryEvent("ExtraUprefsRoutes")
|
||||
)
|
||||
|
||||
urlpatterns += patterns('',
|
||||
urlpatterns += patterns(
|
||||
'',
|
||||
*exts_pool.load_all()
|
||||
)
|
||||
|
||||
parameters.apply_to_django_settings()
|
||||
|
||||
if 'modoboa.demo' in settings.INSTALLED_APPS:
|
||||
urlpatterns += patterns('',
|
||||
urlpatterns += patterns(
|
||||
'',
|
||||
(r'^demo/', include('modoboa.demo.urls'))
|
||||
)
|
||||
|
||||
@@ -46,4 +36,6 @@ if settings.DEBUG:
|
||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||
from django.conf.urls.static import static
|
||||
urlpatterns += staticfiles_urlpatterns()
|
||||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
urlpatterns += static(
|
||||
settings.MEDIA_URL, document_root=settings.MEDIA_ROOT
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user