示例#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)
 def handle(self, **options):
     config = AppConfiguration(1)
     letterfirst = RegexValidator(r'^[a-zA-Z]', "Must start with a letter")
     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)
 def run(self, setupfile, appfile, username, password, **options):
     printer = Printer(int(options['verbosity']), logfile='djeese.log')
     config = AppConfiguration(printer=printer)
     config.read(appfile)
     bundle = bundle_app(setupfile, config) 
     appname = config['app']['name']
     response = self.upload(appname, bundle, username, password)
     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")
     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")
示例#4
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")
示例#5
0
 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)