コード例 #1
0
    def handle(self, *args, **options):
        """Command entry point."""
        exts_pool.load_all()
        for filename in options["files"]:
            try:
                with transaction.atomic():
                    self._import(filename, options)
            except CommandError as exc:
                raise exc
            except UnicodeDecodeError:
                self.stdout.write(
                    self.style.NOTICE(
                        _("CSV file is not encoded in UTF-8, attempting to guess "
                          "encoding")))
                detector = UniversalDetector()
                with io.open(filename, "rb") as fp:
                    for line in fp:
                        detector.feed(line)
                        if detector.done:
                            break
                    detector.close()

                self.stdout.write(
                    self.style.NOTICE(
                        _("Reading CSV file using %(encoding)s encoding") %
                        detector.result))
                try:
                    with transaction.atomic():
                        self._import(filename,
                                     options,
                                     encoding=detector.result["encoding"])
                except UnicodeDecodeError as exc:
                    raise CommandError(
                        _("Unable to decode CSV file using %(encoding)s "
                          "encoding") % detector.result) from exc
コード例 #2
0
    def handle(self, *args, **options):
        """Command entry point."""
        load_core_settings()

        if not User.objects.filter(is_superuser=True).count():
            admin = User(username="******", is_superuser=True)
            admin.set_password("password")
            admin.save()
            ObjectAccess.objects.create(user=admin,
                                        content_object=admin,
                                        is_owner=True)

        exts_pool.load_all()

        superadmin = User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role in events.raiseQueryEvent("GetExtraRoles",
                                                       superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname))
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)
コード例 #3
0
    def handle(self, *args, **kwargs):
        superadmin = User.objects.filter(is_superuser=True).first()
        exts_pool.load_all()
        load_core_settings()

        for filename in args:
            if not os.path.exists(filename):
                print('File not found')
                sys.exit(1)

            num_lines = sum(1 for line in open(filename))
            pbar = ProgressBar(
                widgets=[Percentage(), Bar(), ETA()], maxval=num_lines
            ).start()
            with open(filename, 'r') as f:
                reader = csv.reader(f, delimiter=';')
                i = 0
                for row in reader:
                    i += 1
                    pbar.update(i)
                    if not row:
                        continue

                    try:
                        import_alias_pipe(superadmin, row, kwargs)
                    except Conflict:
                        if kwargs['continue_if_exists']:
                            continue

                        raise Conflict(
                            "Object already exists: %s"
                            % kwargs['sepchar'].join(row[:2])
                        )
            pbar.finish()
コード例 #4
0
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        csvwriter = csv.writer(sys.stdout, delimiter=kwargs['sepchar'])
        for dom in AliasPipe.objects.all():
            dom.to_csv(csvwriter)
コード例 #5
0
ファイル: load_initial_data.py プロジェクト: Norcoen/modoboa
    def handle(self, *args, **options):
        """Command entry point."""
        load_core_settings()

        if not User.objects.filter(is_superuser=True).count():
            admin = User(username="******", is_superuser=True)
            admin.set_password("password")
            admin.save()
            ObjectAccess.objects.create(
                user=admin, content_object=admin, is_owner=True)

        exts_pool.load_all()

        superadmin = User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role
            in events.raiseQueryEvent("GetExtraRoles", superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname)
            )
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)
コード例 #6
0
ファイル: export_domains.py プロジェクト: madhuchary/modoboa
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        csvwriter = csv.writer(sys.stdout, delimiter=kwargs['sepchar'])
        for dom in Domain.objects.all():
            dom.to_csv(csvwriter)
コード例 #7
0
ファイル: export_identities.py プロジェクト: ezhishui/modoboa
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        csvwriter = csv.writer(sys.stdout, delimiter=kwargs['sepchar'])
        for u in User.objects.all():
            u.to_csv(csvwriter)

        for a in Alias.objects.prefetch_related('mboxes', 'aliases'):
            a.to_csv(csvwriter)
コード例 #8
0
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        csvwriter = csv.writer(sys.stdout, delimiter=kwargs['sepchar'])
        for u in User.objects.all():
            u.to_csv(csvwriter)

        for a in Alias.objects.prefetch_related('mboxes', 'aliases'):
            a.to_csv(csvwriter)
コード例 #9
0
    def handle(self, *args, **options):
        """Command entry point."""
        if not models.User.objects.filter(is_superuser=True).count():
            admin = models.User(
                username=options["admin_username"], is_superuser=True)
            admin.set_password("password")
            admin.save()
            models.ObjectAccess.objects.create(
                user=admin, content_object=admin, is_owner=True)

        lc = models.LocalConfig.objects.first()
        secret_key = lc.parameters.get_value("secret_key")
        if not secret_key:
            lc.parameters.set_value("secret_key", random_key())
            lc.save()

        for service_name in ["relay", "smtp"]:
            relay_models.Service.objects.get_or_create(name=service_name)

        exts_pool.load_all()

        superadmin = models.User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role
            in events.raiseQueryEvent("GetExtraRoles", superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname)
            )
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)

        if options["extra_fixtures"]:
            from modoboa.admin import factories
            factories.populate_database()
コード例 #10
0
ファイル: load_initial_data.py プロジェクト: maikkeli/modoboa
    def handle(self, *args, **options):
        """Command entry point."""
        if not models.User.objects.filter(is_superuser=True).count():
            admin = models.User(username=options["admin_username"],
                                is_superuser=True)
            admin.set_password("password")
            admin.save()
            models.ObjectAccess.objects.create(user=admin,
                                               content_object=admin,
                                               is_owner=True)

        lc = models.LocalConfig.objects.first()
        secret_key = lc.parameters.get_value("secret_key")
        if not secret_key:
            lc.parameters.set_value("secret_key", random_key())
            lc.save()

        for service_name in ["relay", "smtp"]:
            relay_models.Service.objects.get_or_create(name=service_name)

        exts_pool.load_all()

        superadmin = models.User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role in events.raiseQueryEvent("GetExtraRoles",
                                                       superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname))
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)

        if options["extra_fixtures"]:
            from modoboa.admin import factories
            factories.populate_database()
コード例 #11
0
    def handle(self, *args, **options):
        """Command entry point."""
        load_core_settings()
        load_admin_settings()
        load_limits_settings()

        if not User.objects.filter(is_superuser=True).count():
            admin = User(username="******", is_superuser=True)
            admin.set_password("password")
            admin.save()
            ObjectAccess.objects.create(
                user=admin, content_object=admin, is_owner=True)

        param_name = "core.SECRET_KEY"
        qset = lib_models.Parameter.objects.filter(name=param_name)
        if not qset.exists():
            lib_models.Parameter.objects.create(
                name=param_name, value=random_key())

        for service_name in ['relay', 'smtp']:
            relay_models.Service.objects.get_or_create(name=service_name)

        exts_pool.load_all()

        superadmin = User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role
            in events.raiseQueryEvent("GetExtraRoles", superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname)
            )
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)
コード例 #12
0
    def handle(self, *args, **options):
        """Command entry point."""
        load_core_settings()
        load_admin_settings()
        load_limits_settings()

        if not User.objects.filter(is_superuser=True).count():
            admin = User(username="******", is_superuser=True)
            admin.set_password("password")
            admin.save()
            ObjectAccess.objects.create(user=admin,
                                        content_object=admin,
                                        is_owner=True)

        param_name = "core.SECRET_KEY"
        qset = lib_models.Parameter.objects.filter(name=param_name)
        if not qset.exists():
            lib_models.Parameter.objects.create(name=param_name,
                                                value=random_key())

        for service_name in ['relay', 'smtp']:
            relay_models.Service.objects.get_or_create(name=service_name)

        exts_pool.load_all()

        superadmin = User.objects.filter(is_superuser=True).first()
        groups = PERMISSIONS.keys() + [
            role[0] for role in events.raiseQueryEvent("GetExtraRoles",
                                                       superadmin, None)
        ]
        for groupname in groups:
            group, created = Group.objects.get_or_create(name=groupname)
            permissions = (
                PERMISSIONS.get(groupname, []) +
                events.raiseQueryEvent("GetExtraRolePermissions", groupname))
            if not permissions:
                continue
            add_permissions_to_group(group, permissions)

        for extname in exts_pool.extensions.keys():
            extension = exts_pool.get_extension(extname)
            extension.load_initial_data()
            events.raiseEvent("InitialDataLoaded", extname)
コード例 #13
0
ファイル: _import.py プロジェクト: brucewu16899/modoboa
    def handle(self, *args, **options):
        """Command entry point."""
        exts_pool.load_all()
        for filename in options["files"]:
            try:
                with transaction.atomic():
                    self._import(filename, options)
            except CommandError as exc:
                raise exc
            except UnicodeDecodeError:
                self.stdout.write(self.style.NOTICE(
                    _("CSV file is not encoded in UTF-8, attempting to guess "
                      "encoding")
                ))
                detector = UniversalDetector()
                with io.open(filename, "rb") as fp:
                    for line in fp:
                        detector.feed(line)
                        if detector.done:
                            break
                    detector.close()

                self.stdout.write(self.style.NOTICE(
                    _("Reading CSV file using %(encoding)s encoding") %
                    detector.result
                ))
                try:
                    with transaction.atomic():
                        self._import(
                            filename, options,
                            encoding=detector.result["encoding"]
                        )
                except UnicodeDecodeError as exc:
                    six.raise_from(
                        CommandError(
                            _("Unable to decode CSV file using %(encoding)s "
                              "encoding") % detector.result
                        ),
                        exc
                    )
コード例 #14
0
ファイル: urls.py プロジェクト: madhugb/modoboa
urlpatterns = patterns(
    '',
    url(r'^$', 'modoboa.lib.web_utils.topredirection', name="topredirection"),
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog',
     {'packages': ('modoboa', ), }),
    ('', include('modoboa.core.urls', namespace="core")),
    url('^user/forward/', 'modoboa.admin.views.user.forward',
        name='user_forward'),
    ('admin/', include('modoboa.admin.urls', namespace="admin")),
    ('relaydomains/',
     include('modoboa.relaydomains.urls', namespace="relaydomains")),
)

urlpatterns += patterns(
    '',
    *exts_pool.load_all()
)

urlpatterns += patterns(
    '',
    *events.raiseQueryEvent("ExtraUprefsRoutes")
)

parameters.apply_to_django_settings()

# API urls
urlpatterns += patterns(
    "",
    ("^api/v1/", include("modoboa.urls_api", namespace="external_api")),
)
コード例 #15
0
ファイル: _import.py プロジェクト: mvb9/modoboa
 def handle(self, *args, **options):
     """Command entry point."""
     exts_pool.load_all()
     for filename in options["files"]:
         self._import(filename, options)
コード例 #16
0
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        for filename in args:
            import_csv(filename, kwargs)
コード例 #17
0
ファイル: _export.py プロジェクト: whiteSpaceX/modoboa
 def handle(self, *args, **options):
     exts_pool.load_all()
     self.csvwriter = csv.writer(sys.stdout, delimiter=options['sepchar'])
     getattr(self, "export_{}".format(options["objtype"]))()
コード例 #18
0
urlpatterns = patterns(
    '',
    url(r'^$', 'modoboa.lib.web_utils.topredirection', name="topredirection"),
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', {
        'packages': ('modoboa', ),
    }),
    ('', include('modoboa.core.urls', namespace="core")),
    url('^user/forward/',
        'modoboa.admin.views.user.forward',
        name='user_forward'),
    ('admin/', include('modoboa.admin.urls', namespace="admin")),
    ('relaydomains/',
     include('modoboa.relaydomains.urls', namespace="relaydomains")),
)

urlpatterns += patterns('', *exts_pool.load_all())

urlpatterns += patterns('', *events.raiseQueryEvent("ExtraUprefsRoutes"))

parameters.apply_to_django_settings()

# API urls
urlpatterns += patterns(
    "",
    ("^api/v1/", include("modoboa.urls_api", namespace="external_api")),
    url("^docs/api/", include('rest_framework_swagger.urls')),
)

if 'modoboa.demo' in settings.INSTALLED_APPS:
    urlpatterns += patterns(
        '', (r'^demo/', include('modoboa.demo.urls', namespace="demo")))
コード例 #19
0
    def handle(self, *args, **kwargs):
        exts_pool.load_all()
        load_core_settings()

        for filename in args:
            import_csv(filename, kwargs)
コード例 #20
0
ファイル: _import.py プロジェクト: vinaebizs/modoboa
 def handle(self, *args, **options):
     """Command entry point."""
     exts_pool.load_all()
     for filename in options["files"]:
         self._import(filename, options)
コード例 #21
0
ファイル: _export.py プロジェクト: cl0secall/modoboa
 def handle(self, *args, **options):
     exts_pool.load_all()
     self.csvwriter = csv.writer(sys.stdout, delimiter=options['sepchar'])
     getattr(self, "export_{}".format(options["objtype"]))()
コード例 #22
0
         auth_views.PasswordResetDoneView.as_view(),
         name="password_reset_done"),
    path('reset/confirm_code/',
         core_views.VerifySMSCodeView.as_view(),
         name="password_reset_confirm_code"),
    path('reset/resend_code/',
         core_views.ResendSMSCodeView.as_view(),
         name="password_reset_resend_code"),
    path('reset/<uidb64>/<token>/',
         auth_views.PasswordResetConfirmView.as_view(),
         name="password_reset_confirm"),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(),
         name="password_reset_complete"),
]

exts_pool.load_all()
urlpatterns += exts_pool.get_urls()

extra_routes = core_signals.extra_uprefs_routes.send(sender="urls")
if extra_routes:
    extra_routes = reduce(
        lambda a, b: a + b, [route[1] for route in extra_routes])
    urlpatterns += extra_routes

# API urls
schema_view = get_schema_view(
    title="Modoboa API",
    version="1.0.0",
    public=False,
    renderer_classes=[JSONOpenAPIRenderer],
)
コード例 #23
0
ファイル: urls.py プロジェクト: hu19891110/modoboa
urlpatterns = [
    url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
    url(r'^ckeditor/upload/',
        login_required(cku_views.upload),
        name="ckeditor_upload"),
    url(r'^ckeditor/browse/',
        login_required(cku_views.browse),
        name="ckeditor_browse"),
    url('', include('modoboa.core.urls', namespace="core")),
    url('^user/forward/', forward, name="user_forward"),
    url('admin/', include('modoboa.admin.urls', namespace="admin")),
    url('relaydomains/',
        include('modoboa.relaydomains.urls', namespace="relaydomains")),
]

urlpatterns += exts_pool.load_all()

extra_routes = core_signals.extra_uprefs_routes.send(sender="urls")
if extra_routes:
    extra_routes = reduce(lambda a, b: a + b,
                          [route[1] for route in extra_routes])
    urlpatterns += extra_routes

# API urls
urlpatterns += [
    url("^api/v1/", include("modoboa.urls_api", namespace="external_api")),
    url("^docs/api/", include('rest_framework_swagger.urls')),
]

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns