| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 | #!/usr/bin/env python# -*- coding: utf-8 -*-"""    demeter web page    name:origin.py    author:rabin"""from __load__ import *#import qrcodefrom datetime import *import osimport short_urlimport uuidimport randomclass Code(object):	@staticmethod	def get(self, value):		cdate = Demeter.date(value['cdate'], '%Y%m%d%H%M%S')		#number = Demeter.compressUuid(value['id']).upper()		min = 1000		max = 9999		number = 'XN' + str(value['farm_id'] + 10000) + '-' + str(value['cdate']) + str(random.randint(min, max))		info = self.service('common').one('origin_batch', number=number)		if info and info['id'] != value['id']:			return Code.get(self, value)		#url = Demeter.config['front']['qrcode'] + self.data['setting']['web'] + 'origin/view?qrcode=' + self.data['list'][key]['number']		update = {}		update['number'] = number		state = self.service('common').update('origin_batch', value['id'], update)		return numberclass index_path(Load):	@Web.auth	@Web.setting	def get(self):		mobile = Demeter.checkMobile(self.request)		if mobile:			self.redirect('/device')			return		self.data['list'] = self.service('common').list('origin_batch', search={'farm_id':self.data['setting']['farm']})		if self.data['list']:			for key, value in enumerate(self.data['list']):				self.data['list'][key]['cdates'] = Demeter.date(value['cdate'], '%Y%m%d')				self.data['list'][key]['zzdates'] = Demeter.date(value['zzdate'], '%Y-%m-%d')				self.data['list'][key]['csdates'] = Demeter.date(value['csdate'], '%Y-%m-%d')				product = self.service('common').one('farm_product', id=value['product_id'])				if product:					self.data['list'][key]['product'] = product['name']				else:					self.data['list'][key]['product'] = ''				if not value['number']:					self.data['list'][key]['number'] = Code.get(self, value)					value['number'] = self.data['list'][key]['number']				self.data['list'][key]['url'] = '/origin/view?id=' + value['id']		self.view("origin/index.html")class view_path(Load):	@Web.auth	@Web.setting	def get(self):		id = self.input('id')		self.data['info'] = self.service('common').one('origin_batch', id=id)		#self.data['url'] = self.data['setting']['web'] + 'origin?id=' + id + '&code=' + self.data['info']['number']		self.data['url'] = self.data['setting']['originurl'] + id + '&code=' + self.data['info']['number']		self.data['qrcode'] = Demeter.config['front']['qrcode'] + self.data['url']		self.view("origin/view.html")class update_path(Load):	@Web.auth	@Web.setting	def get(self):		id = self.input('id')		copy_id = self.input('copy_id')		if copy_id:			id = copy_id		self.data['product'] = self.service('common').list('farm_product', search={'status':True,'farm_id':self.data['setting']['farm']})		self.data['land'] = self.service('common').list('farm_work_land', search={'farm_id':self.data['setting']['farm']})		self.data['gateway'] = self.service('common').list('device_gateway', search={'farm_id':self.data['setting']['farm']})		self.data['device'] = Device.getByGateway(self, search={'hardware_type' : 2,'farm_id':self.data['setting']['farm']})		self.data['camera'] = self.service('common').list('device_info', search={'hardware_type': 6,'farm_id':self.data['setting']['farm']})		self.data['info'] = {}		self.data['growth'] = []		if id:			self.data['growth'] = self.service('common').list('origin_growth', search={'batch_id': id})			if self.data['growth']:				for key, value in enumerate(self.data['growth']):					self.data['growth'][key]['date'] = Demeter.date(value['date'], '%Y-%m-%d')			self.data['info'] = self.service('common').one('origin_batch', id=id)			if self.data['info']:				self.data['info']['zzdate'] = Demeter.date(self.data['info']['zzdate'], '%Y-%m-%d')				self.data['info']['csdate'] = Demeter.date(self.data['info']['csdate'], '%Y-%m-%d')				if copy_id:					self.data['info']['id'] = None		self.view("origin/update.html")	@Web.auth	@Web.setting	def post(self):		id = self.input('id')		update = {}		update['devices'] = self.inputs('update_devices')		update['amount'] = self.input('update_amount')		update['product_id'] = self.input('update_product_id')		update['device_camera_id'] = self.input('update_device_camera_id')		update['land_id'] = self.input('update_land_id')		update['name'] = self.input('update_name')		update['zzdate'] = self.input('update_zzdate')		update['csdate'] = self.input('update_csdate')		growth = {}		growth['name'] = self.inputs('update_growth_name')		growth['date'] = self.inputs('update_growth_date')		growth['pic'] = self.inputs('update_growth_pic')		growth['id'] = self.inputs('update_growth_id')		if not update['name']:			self.out(u'请输入批次名称')			return		if not update['product_id']:			self.out(u'请选择产品')			return		if not update['land_id']:			self.out(u'请选择地块')			return		if not update['devices']:			self.out(u'请选择设备')			return		if not update['device_camera_id']:			self.out(u'请选择摄像头')			return		if not update['zzdate'] or not update['csdate']:			self.out(u'请选择生长周期')			return		if not growth['name'] or not growth['date'] or not growth['pic']:			self.out(u'请添加生长阶段')			return		if not update['amount']:			self.out(u'请输入本批产量')			return					update['devices'] = str(update['devices'])		state = self.service('common').update('origin_batch', id, update)		if state:			model = Demeter.model('origin_growth')			model.batch_id = state			model.delete()			for key,value in enumerate(growth['name']):				if value and growth['date'][key]:					gid = growth['id'][key]					gupdate = {}					gupdate['name'] = value					gupdate['date'] = growth['date'][key]					gupdate['pic'] = growth['pic'][key]					gupdate['batch_id'] = state					self.service('common').update('origin_growth', gid, gupdate)		self.out('yes', {'state':state})	@Web.auth	@Web.setting	def delete(self):		id = self.input('id')		if not id:			self.out('no')			return		state = self.input('state', False)		state = self.service('common').delete('origin_batch', id, state)		self.out('yes', {'state':state})class printer_path(Load):	@Web.auth	@Web.setting	def get(self):		id = self.input('id')		table_id = self.input('table_id');		self.data['info'] = {}		self.data['printer'] = self.service('common').list('device_printer', search={'farm_id':self.data['setting']['farm']})		self.data['table_id'] = table_id		if id:			self.data['info'] = self.service('common').one('device_printer_log', id=id)		self.view("origin/printer.html")	@Web.auth	@Web.setting	def post(self):		id = self.input('id')		update = {}		update['printer_id'] = self.input('update_printer_id')		update['num'] = self.input('update_num')		if not update['printer_id']:			self.out(u'请选择打印机')			return		if not update['num']:			self.out(u'请输入张数')			return		update['uid'] = self.data['setting']['userInfo']['id']		update['table_name'] = 'origin_batch'		update['table_id'] = self.input('update_table_id')		if not update['table_id']:			self.out(u'错误的来源')			return		info = self.service('common').one(update['table_name'], id=update['table_id'])		update['content'] = '打印' + info['name'] + '溯源码:' + str(update['num']) + '张'		state = self.service('common').update('device_printer_log', id, update)		self.out('已发送至打印机队列')
 |