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: 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])) linked_app = create_linked_app(master_domain, app_id, link_domain, data['name']) try: update_linked_app(linked_app, request.couch_user.get_id) except AppLinkError as e: linked_app.delete() 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=[link_domain, linked_app.get_id])) else: extra_properties = {'name': data['name']} try: app_copy = import_app_util(app_id_or_source, link_domain, extra_properties) except ReportConfigurationNotFoundError: messages.error(request, _("Copying the application failed because " "your application contains a Report Module " "that references a static UCR configuration.")) return HttpResponseRedirect(reverse_util('app_settings', params={}, args=[domain, app_id])) return back_to_main(request, app_copy.domain, app_id=app_copy._id)
def _inner(request, domain, data): clear_app_cache(request, domain) if data["toggles"]: for slug in data["toggles"].split(","): set_toggle(slug, domain, True, namespace=toggles.NAMESPACE_DOMAIN) app_copy = import_app_util(app_id_or_source, domain, {"name": data["name"]}) return back_to_main(request, app_copy.domain, app_id=app_copy._id)
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: 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])) linked_app = create_linked_app(master_domain, app_id, link_domain, data['name']) try: update_linked_app(linked_app, request.couch_user.get_id) except AppLinkError as e: linked_app.delete() 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=[link_domain, linked_app.get_id])) else: extra_properties = {'name': data['name']} try: app_copy = import_app_util(app_id_or_source, link_domain, extra_properties) except ReportConfigurationNotFoundError: messages.error( request, _("Copying the application failed because " "your application contains a Report Module " "that references a static UCR configuration.")) return HttpResponseRedirect( reverse_util('app_settings', params={}, args=[domain, app_id])) return back_to_main(request, app_copy.domain, app_id=app_copy._id)
def handle(self, *args, **options): for doc in Domain.get_all(include_docs=False): domain = doc['key'] if not use_new_exports(domain): set_toggle( toggles.OLD_EXPORTS.slug, domain, True, namespace=toggles.NAMESPACE_DOMAIN ) toggle_js_domain_cachebuster.clear(domain)
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: return _create_linked_app(request, app, link_domain, data['name']) else: return _copy_app_helper( request, master_domain, app_id_or_source, link_domain, data['name'], app_id)
def revert_migrate_domain(domain, dryrun=False): instances = get_form_export_instances(domain) instances.extend(get_case_export_instances(domain)) reverted_exports = revert_new_exports(instances, dryrun=dryrun) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, True, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) for reverted_export in reverted_exports: print 'Reverted export: {}'.format(reverted_export._id)
def set(self, item, enabled, namespace=None): set_toggle(self.slug, item, enabled, namespace)
prefix=domain): try: _, migration_meta = convert_saved_export_to_export_instance( domain, SavedExportSchema.wrap(old_export), dryrun=dryrun, force_convert_columns=force_convert_columns, ) except Exception, e: print 'Failed parsing {}: {}'.format(old_export['_id'], e) raise e else: metas.append(migration_meta) if not dryrun: set_toggle(OLD_EXPORTS.slug, domain, False, namespace=NAMESPACE_DOMAIN) toggle_js_domain_cachebuster.clear(domain) # Remote app migrations must have access to UserDefined columns and tables if any(map(lambda meta: meta.is_remote_app_migration, metas)): set_toggle( ALLOW_USER_DEFINED_EXPORT_COLUMNS.slug, domain, True, namespace=NAMESPACE_DOMAIN ) toggle_js_domain_cachebuster.clear(domain) for meta in metas: if not meta.skipped_tables and not meta.skipped_columns: continue
def _set_toggles(collection, enabled): for slug in collection: set_toggle(slug, domain_link.linked_domain, enabled, NAMESPACE_DOMAIN)
def request_new_domain(request, form, is_new_user=True): now = datetime.utcnow() current_user = CouchUser.from_django_user(request.user) dom_req = RegistrationRequest() if is_new_user: dom_req.request_time = now dom_req.request_ip = get_ip(request) dom_req.activation_guid = uuid.uuid1().hex project_name = form.cleaned_data.get('hr_name') or form.cleaned_data.get('project_name') name = name_to_url(project_name, "project") with CriticalSection(['request_domain_name_{}'.format(name)]): name = Domain.generate_name(name) new_domain = Domain( name=name, hr_name=project_name, is_active=False, date_created=datetime.utcnow(), creating_user=current_user.username, secure_submissions=True, use_sql_backend=True, first_domain_for_user=is_new_user ) if form.cleaned_data.get('domain_timezone'): new_domain.default_timezone = form.cleaned_data['domain_timezone'] if not is_new_user: new_domain.is_active = True # ensure no duplicate domain documents get created on cloudant new_domain.save(**get_safe_write_kwargs()) if not new_domain.name: new_domain.name = new_domain._id new_domain.save() # we need to get the name from the _id if is_new_user: # Only new-user domains are eligible for Advanced trial # domains with no subscription are equivalent to be on free Community plan create_30_day_advanced_trial(new_domain, current_user.username) else: ensure_explicit_community_subscription(new_domain.name, date.today()) UserRole.init_domain_with_presets(new_domain.name) dom_req.domain = new_domain.name if request.user.is_authenticated(): if not current_user: current_user = WebUser() current_user.sync_from_django_user(request.user) current_user.save() current_user.add_domain_membership(new_domain.name, is_admin=True) current_user.save() dom_req.requesting_user_username = request.user.username dom_req.new_user_username = request.user.username if is_new_user: dom_req.save() send_domain_registration_email(request.user.email, dom_req.domain, dom_req.activation_guid, request.user.get_full_name()) send_new_request_update_email(request.user, get_ip(request), new_domain.name, is_new_user=is_new_user) set_toggle(toggles.USE_FORMPLAYER_FRONTEND.slug, new_domain.name, True, namespace=toggles.NAMESPACE_DOMAIN) meta = get_meta(request) track_created_new_project_space_on_hubspot.delay(current_user, request.COOKIES, meta) return new_domain.name
def setUp(self): self.project = Domain(name=self.domain) self.project.save() clear_toggle_cache(OLD_EXPORTS.slug, self.domain, namespace=NAMESPACE_DOMAIN) set_toggle(OLD_EXPORTS.slug, self.domain, True, namespace=NAMESPACE_DOMAIN)