def uninstall_packages(): ''' Removes all records in all tables, from all modules. Set installed to False in all records in CMSPackages ''' cms_settings = CMSSettings.objects.get_settings() if not cms_settings.packages.filter(selected=False, installed=True).count() and \ not cms_settings.packages.filter(selected=True, installed=False).count(): return for model in CMSCreatedModel.objects.all(): try: importpath(model.name).objects.all().delete() except: pass for package in cms_settings.packages.installed(): package.installed = False package.save()
def custom(request): """ User can go to detail settings for packages or can ask to make project. Make files for new project. """ cms_settings = CMSSettings.objects.get_settings() if request.method == 'POST': entry_points = ['redsolutioncms'] cms_settings.base_template = 'base_template.html' cms_settings.save() # handle frontpage frontpage_form = FrontpageForm(request.POST) if frontpage_form.is_valid(): frontpage_form.save() for package in cms_settings.packages.installed(): for entry_point in package.entry_points.all(): entry_points.append(entry_point.module) make_objects = [] for entry_point in entry_points: try: make_object = importpath('.'.join([entry_point, 'make', 'make'])) except ImportError, error: print 'Entry point %s has no make object.' % entry_point continue else: make_objects.append(make_object) for make_object in make_objects: make_object.flush() for make_object in make_objects: try: make_object.premake() except AlreadyMadeException: pass for make_object in make_objects: try: make_object.make() except AlreadyMadeException: pass for make_object in make_objects: try: make_object.postmake() except AlreadyMadeException: pass return HttpResponseRedirect(reverse('build'))
def load_packages(): """ Downloads packages to eggs and imports them to sys.path TODO: Raise download error if download failed """ cms_settings = CMSSettings.objects.get_settings() # delete all old entry points, because we reset all settings at step 2 CMSEntryPoint.objects.all().delete() selected_packages = cms_settings.packages.filter(selected=True) # prepare modules... modules_to_download = [{'name': package.package, 'version': package.version, } for package in selected_packages] workset = install(modules_to_download, os.path.join(home_dir, 'eggs')) # Now fetch entry points and import modules for package in selected_packages: distr = workset.by_key[package.package] distr.activate() package.path = distr.location entry_points = distr.get_entry_info(None, 'redsolutioncms') installed = True if entry_points: for _, entry_point in entry_points.iteritems(): try: importpath(entry_point.module_name) except ImportError: installed = False break # Interactive setup feature try: importpath(entry_point.module_name + '.urls') except ImportError: has_urls = False else: has_urls = True # Frontpage handler feature try: importpath(entry_point.module_name + '.frontpage_handler') except ImportError: frontpage_handler = False else: frontpage_handler = True CMSEntryPoint.objects.create( package=package, module=entry_point.module_name, has_urls=has_urls, frontpage_handler=frontpage_handler) package.installed = installed package.save()