rabin 7 лет назад
Родитель
Сommit
e404aca298
3 измененных файлов с 59 добавлено и 26 удалено
  1. 43 25
      demeter/core.py
  2. 1 1
      demeter/web.py
  3. 15 0
      demos/helloworld/opt.py

+ 43 - 25
demeter/core.py

@@ -9,7 +9,6 @@ import os
 import signal
 import re
 import sys
-import getopt
 import json
 import subprocess
 import importlib
@@ -17,8 +16,7 @@ class Demeter(object):
 	path = ''
 	root = ''
 	config = {}
-	serviceObj = {}
-	modelObj = {}
+	option = {}
 	web = ''
 	request = False
 	route = []
@@ -84,6 +82,46 @@ class Demeter(object):
 			result[item] = config.get(type, item)
 		return result
 
+	@classmethod
+	"""
+	param = {}
+	param['action'] = 'a'
+	param['name'] = 'n'
+	param['param'] = 'p'
+	Demeter.getopt(param)
+	"""
+	def getopt(self, param = {}):
+		import getopt
+		param['help'] = 'h'
+		shortopts = ''
+		longopts  = []
+		check = []
+		for k,v in param.items():
+			if k == 'help':
+				shortopts = shortopts + v
+			else:
+				shortopts = shortopts + v + ':'
+			longopts.append(k)
+		try:
+			options, args = getopt.getopt(sys.argv[1:], shortopts, longopts)
+			for name, value in options:
+				for k,v in param.items():
+					if name in ('-' + v, '--' + k):
+						if k == 'help':
+							self.usage()
+						else:
+							self.option[k] = value
+		except getopt.GetoptError:
+			self.usage()
+
+	@classmethod
+	def usage(self, name = 'usage'):
+		file = self.path + name
+		if not File.exists(file):
+			file = self.root + name
+		print File.read(file)
+		sys.exit()
+
 	@classmethod
 	def temp(self, key='', name='', value=''):
 		temp = Demeter.path + 'conf/temp.conf'
@@ -119,16 +157,7 @@ class Demeter(object):
 			name = 'service'
 		service = self.getClass(name, path)
 		return service()
-		"""
-		if name not in self.serviceObj:
-			path = 'service.'
-			if name == 'common':
-				path = 'demeter.'
-				name = 'service'
-			service = self.getClass(name, path)
-			self.serviceObj[name] = service()
-		return self.serviceObj[name]
-		"""
+
 	@classmethod
 	def adminModel(self, table):
 		config = ('manage_admin', 'manage_log', 'manage_role')
@@ -147,17 +176,6 @@ class Demeter(object):
 		if not model:
 			model = self.getClass(table, 'model.')
 		return model(name, connect, config)
-		"""
-		if table not in self.modelObj:
-			name = self.config['db'][name]
-			config = self.config[name]
-			obj = self.getObject('db', 'demeter.')
-			db = getattr(obj, name.capitalize())
-			connect = db(config).get()
-			model = self.getClass(table, 'model.')
-			self.modelObj[table] =  model(name, connect, config)
-		return self.modelObj[table]
-		"""
 
 	@classmethod
 	def getMethod(self, module):
@@ -332,7 +350,7 @@ class File(object):
 		Shell.popen('chmod +x ' + file)
 
 	@staticmethod
-	def read(path, name):
+	def read(path, name = ''):
 		handle = open(path + name, 'r')
 		content = handle.read()
 		handle.close()

+ 1 - 1
demeter/web.py

@@ -290,7 +290,7 @@ class Web(object):
 			"process": int(config['process'])
 		}, **Demeter.config['tornado'])
 
-		com = ('cookie_secret', 'login_url')
+		com = ('cookie_secret', 'login_url', 'static_path', 'template_path')
 		for v in com:
 			if v in config:
 				settings[v] = config[v]

+ 15 - 0
demos/helloworld/opt.py

@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+"""
+    demeter web
+    name:front.py
+"""
+from demeter.core import *
+
+# 测试命令行传参 python opt.py -a act
+param = {}
+param['action'] = 'a'
+param['name'] = 'n'
+param['param'] = 'p'
+Demeter.getopt(param)
+
+Demeter.echo(Demeter.option['action'])