示例#1
0
    def testConvertToApplication(self):
        factory = AppFactory(build_version='2.40.0')
        factory.new_basic_module('register', 'case', with_form=False)
        factory.app.save()
        build = factory.app.make_build()
        build.is_released = True
        build.save()

        linked_app = LinkedApplication()
        linked_app.domain = 'other-domain'
        linked_app.save()

        link_app(linked_app, factory.app.domain, factory.app.id)
        update_linked_app(linked_app, factory.app.id, 'system')

        unlinked_doc = linked_app.convert_to_application().to_json()
        self.assertEqual(unlinked_doc['doc_type'], 'Application')
        self.assertFalse(hasattr(unlinked_doc, 'linked_app_attrs'))

        linked_app.delete()
示例#2
0
    def testConvertToApplication(self):
        factory = AppFactory(build_version='2.40.0')
        m0, f0 = factory.new_basic_module('register', 'case')
        f0.source = get_simple_form(xmlns=f0.unique_id)
        factory.app.save()
        self.addCleanup(factory.app.delete)
        build = factory.app.make_build()
        build.is_released = True
        build.save()
        self.addCleanup(build.delete)

        linked_app = LinkedApplication()
        linked_app.domain = 'other-domain'
        linked_app.save()
        self.addCleanup(linked_app.delete)

        link_app(linked_app, factory.app.domain, factory.app.id)
        update_linked_app(linked_app, factory.app.id, 'system')

        unlinked_doc = linked_app.convert_to_application().to_json()
        self.assertEqual(unlinked_doc['doc_type'], 'Application')
        self.assertFalse(hasattr(unlinked_doc, 'linked_app_attrs'))
示例#3
0
        def _inner(request, link_domain, data, master_domain=domain):
            clear_app_cache(request, link_domain)
            if data['toggles']:
                for slug in data['toggles'].split(","):
                    set_toggle(slug,
                               link_domain,
                               True,
                               namespace=toggles.NAMESPACE_DOMAIN)
            linked = data.get('linked')
            if linked:
                for module in app.modules:
                    if isinstance(module, ReportModule):
                        messages.error(
                            request,
                            _('This linked application uses mobile UCRs which '
                              'are currently not supported. For this application to '
                              'function correctly, you will need to remove those modules.'
                              ))
                        return HttpResponseRedirect(
                            reverse_util('app_settings',
                                         params={},
                                         args=[domain, app_id]))

                master_version = get_latest_released_app_version(
                    app.domain, app_id)
                if not master_version:
                    messages.error(
                        request,
                        _("Creating linked app failed."
                          " Unable to get latest released version of your app."
                          " Make sure you have at least one released build."))
                    return HttpResponseRedirect(
                        reverse_util('app_settings',
                                     params={},
                                     args=[domain, app_id]))

                if link_domain not in app.linked_whitelist:
                    app.linked_whitelist.append(link_domain)
                    app.save()

                linked_app = LinkedApplication(
                    name=data['name'],
                    domain=link_domain,
                    master=app_id,
                    master_domain=master_domain,
                )
                linked_app.save()
                try:
                    update_linked_app(linked_app)
                except AppLinkError as e:
                    messages.error(request, str(e))
                    return HttpResponseRedirect(
                        reverse_util('app_settings',
                                     params={},
                                     args=[domain, app_id]))

                messages.success(
                    request, _('Application successfully copied and linked.'))
                return HttpResponseRedirect(
                    reverse_util('app_settings',
                                 params={},
                                 args=[master_domain, linked_app.get_id]))
            else:
                extra_properties = {'name': data['name']}
                app_copy = import_app_util(app_id_or_source, link_domain,
                                           extra_properties)
                return back_to_main(request,
                                    app_copy.domain,
                                    app_id=app_copy._id)