Exemple #1
0
 def handle(self, appfile=None, **options):
     if not appfile:
         raise CommandError("You must provide the path to your app file as first argument")
     if not os.path.exists(appfile):
         raise CommandError("App file %r not found." % appfile)
     appconfig = AppConfiguration(int(options['verbosity']))
     appconfig.read(appfile)
     if not appconfig.validate():
         sys.exit(1)
Exemple #2
0
 def run(self, setupfile, appfile, session, printer, **options):
     config = AppConfiguration(printer=printer)
     config.read(appfile)
     bundle = bundle_app(setupfile, config)
     appname = config['app']['name']
     response = self.upload(appname, bundle, session)
     if response.status_code == 201:
         printer.always("Upload successful (created)")
     elif response.status_code == 204:
         printer.always("Upload successful (updated)")
     elif response.status_code == 400:
         self.handle_bad_request(response, printer)
         printer.always("Upload failed")
     elif response.status_code == 403:
         printer.error("Authentication failed")
         printer.always("Upload failed")
         self.clear_auth()
     elif response.status_code == 502:
         printer.error("Temporarily unavailable")
         printer.always("Upload failed")
     else:
         printer.error("Unexpected response: %s" % response.status_code)
         printer.log_only(response.content)
         printer.always("Upload failed, check djeese.log for more details")
 def handle(self, **options):
     config = AppConfiguration(1)
     name = contrib(config, 'app', 'name', ask, "Name", letterfirst)
     packagename = contrib(config,
                           'app',
                           'packagename',
                           ask,
                           'Package name on PyPI',
                           SlugValidator(),
                           default=slugify(name))
     check_net = ask_boolean(
         "Should we try to get additional information from djangopackages?",
         default=True)
     if check_net:
         data = get_package_data(packagename)
     else:
         data = defaultdict(lambda: None)
     modules = [
         p for p in os.listdir('.')
         if os.path.exists(os.path.join(p, '__init__.py'))
     ]
     contrib(config,
             'app',
             'private',
             ask_boolean,
             "Private",
             default=False)
     contrib(config, 'app', 'url', ask, 'URL', default=data['url'])
     contrib(config,
             'app',
             'author',
             ask,
             'Author',
             default=data['author'],
             required=False)
     contrib(config,
             'app',
             'author-url',
             ask,
             'Author URL (optional)',
             default=data['author_url'],
             required=False)
     contrib(config,
             'app',
             'installed-apps',
             ask_multi,
             "Installed apps",
             minitems=1)
     contrib(config,
             'app',
             'version',
             ask,
             'Version',
             default=data['version'])
     contrib(config,
             'app',
             'description',
             ask,
             'Description (short)',
             default=data['description'])
     contrib(config,
             'app',
             'license',
             ask,
             'License',
             default=data['license'])
     contrib(config,
             'app',
             'license-path',
             ask,
             'Path to license file',
             PathValidator(),
             default=guess_license_path())
     contrib(config,
             'app',
             'translation-url',
             ask,
             'URL to the translation page, eg transifex (optional)',
             URLValidator(),
             required=False)
     contrib(config, 'app', 'settings', ask_multi, 'Settings (optional)')
     contrib(config, 'app', 'plugins', ask_multi,
             'Plugin (class) names (optional)')
     contrib(config, 'app', 'apphook', ask_multi,
             'Apphook (class) names (optional)')
     for setting in config['app'].getlist('settings'):
         contrib(config, setting, 'name', ask,
                 'Name of the setting %r (Python)' % setting)
         contrib(config, setting, 'verbose-name', ask,
                 'Verbose name of the setting %r' % setting)
         contrib(config,
                 setting,
                 'type',
                 ask_choice,
                 'Type of the setting %r' % setting,
                 choices=VALID_TYPES)
         contrib(config,
                 setting,
                 'default',
                 ask,
                 'Default value for setting %r (optional)' % setting,
                 required=False)
         contrib(config,
                 setting,
                 'required',
                 ask_boolean,
                 'Is setting %r required' % setting,
                 default=True)
         if config[setting].get('default', None):
             contrib(config,
                     setting,
                     'editable',
                     ask_boolean,
                     'Is setting %r editable' % setting,
                     default=True)
     if ask_boolean("Does your application expose templates?",
                    default=True) == 'true':
         while True:
             name = ask('Template path (eg %s/plugin.html)' %
                        config['app']['packagename'])
             path = ask('Path to the source of the template',
                        PathValidator(),
                        default=guess_path(name, modules))
             config['templates'][name] = path
             if ask_boolean("Are there more templates?") == 'false':
                 break
     fname = '%s.ini' % packagename
     config.write(fname)