def update_order_status(): n = datetime.datetime.now() y = n-datetime.timedelta(hours=1) start = datetime_format(n) end = datetime_format(y) update_order_sql = 'update t_orders set Fstatus=2 where Fstatus!=2 and Fid in (select Forder_id from t_orders_schedule where Fid=4 and Fdatetime between %s and %s)' update_order_status.db.execute(update_order_sql%(start,end)) update_order_status.db.commit()
def get(self, *args, **kwargs): date_time = self.get_argument('month_date', None) input_category_id = self.get_argument('input_category_id', '') merchant_id = self.get_current_user().get('Fmerchant_id') schedule_service.set_db(self.db) if not date_time: start_date, end_date = datetime_format( "%Y-%m-%d"), datetime_format( "%Y-%m-%d", datetime.datetime.now() + datetime.timedelta(days=30)) else: start_date, tmp, end_date = date_time.split() if input_category_id: try: int(input_category_id) category = schedule_service.query_default_category( merchant_id, category_id=input_category_id) except: category = schedule_service.query_default_category(merchant_id) else: category = schedule_service.query_default_category(merchant_id) category_name = "" category_dict = {} for c in category: category_dict[c.Fid] = c.Fname if category: category_ids = [c.Fid for c in category] if category_ids: schedule_plans = schedule_service.query_schedule_by_input_time_and_category_ids( category_ids, merchant_id, start_date, end_date) else: schedule_plans = [] #category_name = category.Fname else: schedule_plans = None schedule_category = schedule_service.query_schedule_category( merchant_id) self.echo('crm/schedules/shot_schedule.html', { 'input_category_id': input_category_id, 'category_dict': category_dict, 'category_name': category_name, 'schedule_plans': schedule_plans, 'start_date': start_date, 'end_date': end_date, 'week_day_dict': week_day_dict, 'schedule_category': schedule_category }, layout='crm/common/base.html')
def get(self): merchant_id = self.get_current_user().get('Fmerchant_id') input_date = self.get_argument('input_date', datetime_format(format='%Y-%m-%d')) _category = self.get_argument('schedule_categeory', None) schedule_type = self.get_argument('schedule_type', 0) schedule_service.set_db(self.db) schedule_category = schedule_service.query_schedule_category( merchant_id) query = OrderServices(self.db).query_orders_by_schedule_date( merchant_id, schedule_type, input_date, schedule_category=_category) orders = self.get_page_data(query) self.echo('crm/schedules/shot_schedule_detail.html', { 'ORDER_TYPES': ORDER_TYPES, "input_date": input_date, "schedule_category": schedule_category, 'orders': orders, '_category': _category, 'schedule_type': schedule_type, 'SCHEDULE_TYPE': _SCHEDULE_TYPE }, layout='crm/common/base.html')
def post(self, evaluation_id): """ todo:评论传图 :evaluation_id:评论ID :returns: """ schedule_service.set_db(self.db) date_format_prefix = datetime_format(format='%Y%m%d') file_prex = '/'.join(['evaluation', evaluation_id, date_format_prefix]) try: is_ok, filenames = upload_to_oss(self, options.IMG_BUCKET, param_name='image', file_type='img', file_prex=file_prex) if is_ok: for f in filenames: image_url = options.IMG_DOMAIN + '/' + f.get('full_name') schedule_service.create_evaluation_images( evaluation_id, image_url) except Exception, e: pass return self.write_json({ 'stat': '1001', 'info': 'exception:' + e.message })
def post(self, *args, **kwargs): rsg = {'stat': 'error', 'info': ""} self.get_paras_dict() banner_service.set_db(self.db) try: if self.request.files.get('banner_img'): file_prex = 'music/' + datetime_format(format="%Y%m%d%H%M") is_ok, filenames = upload_to_oss(self, options.IMG_BUCKET, param_name='banner_img', file_type='img', file_prex=file_prex) if is_ok: for file in filenames: img_url = options.IMG_DOMAIN + '/' + file.get( 'full_name') self.qdict['img_url'] = img_url else: return self.write( ujson.dumps({ 'stat': '1005', 'info': '图片上传失败' })) banner = banner_service.create_banner(**self.qdict) self.delete_banner(banner.Fbanner_code) except Exception, e: rsg['info'] = e.message self.write(ujson.dumps(rsg))
def post(self): """ :todo 上传图片 """ date_format_prefix = datetime_format(format='%Y%m%d') try: rsp = {'filelink': '', 'stat': 'err', 'msg': ''} file_prex = '/'.join([ 'topics', str(self.get_current_user().get('Fid')), date_format_prefix ]) is_ok, filenames = upload_to_oss(self, options.IMG_BUCKET, param_name='file', file_type='img', file_prex=file_prex, max_size=3) if is_ok: for f in filenames: rsp['filelink'] = options.IMG_DOMAIN + '/' + f.get( 'full_name') + img_compression(f.get('size')) rsp['stat'] = 'ok' else: rsp['stat'] = 'err' rsp['msg'] = filenames except Exception, e: pass
def post(self, *args, **kwargs): self.get_paras_dict() #print self.qdict #file_metas=self.request.files.get('appszip') #提取表单中‘name’为‘file’的文件元数据 data = {} size = 0 try: file_prex = 'apps_crm/' + datetime_format(format="%Y%m%d%H%M") is_ok, filenames = upload_to_oss(self, options.APPS_BUCKET, param_name='appzip', file_type=None, file_prex=file_prex, is_apps=True) if is_ok: request_url = filenames[0].get('full_name') size = filenames[0].get('size') else: message = filenames except Exception, e: data['error'] = 1 data['message'] = e.message data['url'] = ''
def get(self, *args, **kwargs): merchant_id = self.get_current_user().get('Fmerchant_id') order_back = self.db.query(OrderDataBackup).filter( OrderDataBackup.Fmerchant_id == merchant_id).order_by( 'Fcreate_time desc') self.echo( 'crm/order/orders_backup.html', { 'start_date': datetime_format(format='%Y-%m-%d', input_date=datetime.datetime.now() - datetime.timedelta(days=31)), 'end_date': datetime_format('%Y-%m-%d'), 'query': order_back })
def query_month_scheduls(self, merchant_user_id, input_date=None): ''' 获取当前一周档期 :param merchant_user_id: :return: ''' sql = "select count(*),date_format(Fdatetime,'%Y-%c-%d')as shot_plan from t_orders_schedule where Fid=2 AND Fmerchant_id={0} AND Fdatetime between '{1}' and '{2}' group by shot_plan" #weekend = getdayofday(7) if input_date: format_date = datetime.datetime.strptime(input_date, "%Y-%m") start_date = datetime_format(format="%Y-%m-%d", input_date=format_date) else: start_date = datetime_format(format="%Y-%m-%d") start = start_date + ' 00:00:01' end = datetime_format("%Y-%m-%d", get_month_last_day()) + ' 23:59:59' result = self.db.execute(sql.format(str(merchant_user_id), start, end)) return result
def get_merchant_schedule_plan_by_month(self, merchant_id, month): month_date = datetime.datetime.strptime(month, "%Y-%m") start = get_month_first_day(month_date.month) end = datetime_format("%Y-%m-%d", get_month_last_day( month_date.month)) + ' 23:59:59' return self.db.query(SchedulePlan).filter( SchedulePlan.Fdeleted == 0, SchedulePlan.Fuser_id == merchant_id, SchedulePlan.Fschedule_day >= start, SchedulePlan.Fschedule_day <= end).order_by('Fschedule_day')
def get(self, schedule_type, input_date, **kwargs): merchant_id = self.current_user.get('Fmerchant_id') schedule_service.set_db(self.db) orders = OrderServices(self.db).query_orders_by_schedule_date( merchant_id, schedule_type, input_date) name = u'档期明细导出' type_name = _SCHEDULE_TYPE[int(schedule_type)] file_name = datetime_format( format='%Y%m%d%H%M%S') + str(type_name) + u'档期明细导出' + '.xls' clumns = (u'订单号码', u'客户姓名', u'客户手机', u'订单类型', u'订单余额', u'订单时间', u'排期时间') file = xlwt.Workbook(encoding='utf-8') #注意这里的Workbook首字母是大写,无语吧 table = file.add_sheet(name) table.write_merge(0, 0, 0, 6, name) for c in clumns: table.write(1, clumns.index(c), c) index = 2 for i in xrange(7): table.col(i).width = 5000 for order in orders: table.write(index, 0, order.Forder_id_user) table.write(index, 1, order.Fuser_name) table.write(index, 2, order.Fuser_mobi) table.write(index, 3, ORDER_TYPES[order.Forder_type]) table.write(index, 4, str(order.Famount)) table.write( index, 5, datetime_format(format='%Y-%m-%d', input_date=order.Fcreate_time)) table.write(index, 6, input_date) index += 1 file.save(file_name) self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Disposition', 'attachment; filename=' + file_name) with open(file_name, 'rb') as f: data = f.read() self.write(data) self.finish()
def get(self, *args, **kwargs): schedule_service.set_db(self.db) try: schedules = schedule_service.query_schedule_category( self.get_current_user().get('Fmerchant_id')) start_date = datetime_format(format='%Y-%m-%d') end_date = datetime_format(format='%Y-%m-%d', input_date=datetime.datetime.now() + datetime.timedelta(days=30)) lstdata = [] for schedule in schedules: lstdata.append({'id': schedule.Fid, 'name': schedule.Fname}) except Exception, e: pass return self.write_json({ 'stat': '1001', 'list': [], 'data': {}, 'info': '错误,错误原因:' + e.message })
def post(self, *args, **kwargs): body = json.loads(self.request.body) start_date = body.get('start_date') end_date = body.get('end_date') category_id = body.get('category') merchant_id = self.get_current_user().get('Fmerchant_id') schedule_service.set_db(self.db) schedule_category = schedule_service.query_schedule_category_by_id( merchant_id, category_id) operation = '1' if operation == '0': self.redirect('/mobile/merchant/orders/add/') elif operation == '1': try: schedule = schedule_service.query_schedule_category_by_id( merchant_id, category_id) if schedule: _schedules = schedule_service.query_available_schedule_by_input_time_and_category( category_id, merchant_id, start_date, end_date) else: _schedules = [] lstdata = [] for schedule in _schedules: lstdata.append({ 'date': datetime_format(format='%Y-%m-%d', input_date=schedule[0]), 'week_day': week_day_dict[schedule[0].weekday()], 'total': schedule[2] }) except Exception, e: pass return self.write_json({ 'stat': '1001', 'list': [], 'data': {}, 'info': '查询错误,错误原因:' + e.message }) self.write_json({ 'stat': '1000', 'list': lstdata, 'data': { 'schedule_category_id': schedule_category.Fid, 'schedule_category_name': schedule_category.Fname, 'start_date': start_date, 'end_date': end_date } })
def get(self): uid = self.get_current_user().get('Fid') photos_service.set_db(self.db) try: albums = photos_service.query_user_album_by_status(uid,1) lstdata = [] for album in albums: dictionary = {} dictionary['id'] = album.Fid dictionary['album_name'] = album.Fablum_name dictionary['album_cover_url'] = self.get_show_img_url(album.Furl_pic_cover,600) dictionary['photo_list_url'] = '/mobile/user/album/list/'+str(album.Fid)+'/' dictionary['create_time'] = datetime_format(format='%Y-%m-%d',input_date = album.Fcreate_time) lstdata.append(dictionary) except Exception,e: pass return self.write(ujson.dumps({'stat':'1001','data':{},'list':[],'info':'获取相册失败,失败原因:'+e.message}))
def get(self): department_service = DepartmentService(self.db) merchant_id = self.get_current_user().get('Fmerchant_id') departments = department_service.get_dpt_list(merchant_id) order_serice.set_db(self.db) orders_from = order_serice.query_order_from_conf(merchant_id) data = [] for d in departments: dept = {'id': d[0], 'pId': d[4] and d[4] or 0, 'name': d[1]} data.append(dept) return self.echo( 'crm/order/order_add_py.html', { 'data': data, 'orders_from': orders_from, 'now': datetime_format(format='%Y-%m-%d') })
def post(self, code): rsg = {'stat': 'error', 'msg': ''} self.get_paras_dict() type = self.qdict.get('Frecommend_type') position = self.qdict.get('Fposition') re_id = self.qdict.get('re_id') if not self.request.files.get('recommend_img') or not position: rsg['msg'] = '请上传首页展示图或选择展示位置' return self.write(ujson.dumps(rsg)) home_service.set_db(self.db) self.qdict['Fis_on_share'] = 1 try: old_re = home_service.query_recommend(**self.qdict) if old_re.count(): old_re.update({'Fis_on_share': 0}) date_format_prefix = datetime_format(format='%Y%m%d') file_prex = '/'.join([ 'recommends', str(self.get_current_user().get('Fid')), date_format_prefix ]) is_ok, filenames = upload_to_oss(self, options.IMG_BUCKET, param_name='recommend_img', file_type='img', file_prex=file_prex, max_size=3) if is_ok: for f in filenames: url = options.IMG_DOMAIN + '/' + f.get('full_name') self.qdict['Frecommend_url'] = url self.qdict.pop('re_id') home_service.update_recommend(re_id, **self.qdict) if type == '1': self.delete_recommend_series() elif type == '2': self.delete_recommend_products() elif type == '3': self.delete_recommend_merchant() except Exception, e: rsg['msg'] = e.message return self.write(ujson.dumps(rsg))
def post(self): rsg = {'stat': 'error', 'msg': ''} self.get_paras_dict() data = {} try: file_prex = 'music/' + datetime_format(format="%Y%m%d%H%M") is_ok, filenames = upload_to_oss(self, options.MEDIA_BUCKET, param_name='background_music', file_type=None, file_prex=file_prex) if is_ok: request_url = options.MEDIA_DOMAIN + '/' + filenames[0].get( 'full_name') except Exception, e: data['error'] = 1 data['message'] = e.message data['url'] = '' raise
def get(self,merchant_id): current_month = self.get_argument('start_date','') current_month = current_month and current_month or datetime_format(format='%Y-%m') schedule_service.set_db(self.db) schedule_plans = schedule_service.get_merchant_schedule_plan(merchant_id,current_month) lstdata = [] for schedule_plan in schedule_plans: data = {} data['Fid'] = schedule_plan.Fid data['Fuser_id'] = schedule_plan.Fuser_id data['Ftotal_per_day'] = schedule_plan.Ftotal_per_day data['Fschedule_day'] = schedule_plan.Fschedule_day data['plan_count'] = schedule_service.get_oneday_plan(merchant_id,schedule_plan.Fschedule_day) if data['plan_count'] > schedule_plan.Ftotal_per_day: #如果已有的档期数>档期设置总数 data['_plan_count'] = 0 else: data['_plan_count'] = data['Ftotal_per_day'] - data['plan_count'] lstdata.append(data) self.echo('ops/schedule_plan/schedule_plan.html',{'page_data':lstdata,'current_month':current_month})
def get_merchant_schedule_plan(self, merchant_id, month=None): ''' 获取商户档期 :param merchant_id: :return: ''' start_date = datetime.datetime.strptime(month, "%Y-%m") start = get_month_first_day(month=start_date.month, year=start_date.year) end = datetime_format( "%Y-%m-%d", get_month_last_day(month=start_date.month, year=start_date.year)) + ' 23:59:59' return self.db.query(SchedulePlan).filter( SchedulePlan.Fdeleted == 0, SchedulePlan.Fuser_id == merchant_id, SchedulePlan.Fschedule_day >= start, SchedulePlan.Fschedule_day <= end).order_by('Fschedule_day')
def create_user_and_send_msg(self, album, args, order): ''' :todo 创建用户并更新到相册信息 同时发送万丈秘法 :param album: :param args: :return: ''' user_service.set_db(self.db) passwd = create_random_passwd(3) content = PASSWD_TEMPLATE % (self.get_current_user().get( 'Fcompany_name', ''), args.get('user_mobi'), passwd) is_success, is_create, user = user_service.create_user_by_order( args.get('user_mobi'), passwd, args.get('user_name')) if is_create: send_phone_msg(args.get('user_mobi'), content) if user and user.Fweixin: try: template = WEIXIN_TEMPLATES.get('new_order_confirm') page_cache = PageDataCache(self.db) access_token = page_cache.get_access_token( setting.WX_GZH_AppID, setting.WX_GZH_AppSecret) send_msg_to_owner( access_token, user.Fweixin, template.get('jsonText'), link=str( 'http://m.gongzhuhao.com/mobile/20151985112504291695293/schedules' ), template_id=template.get('TEMPLATE_ID'), first=str('尊敬的{0},您在“{1}”的生成了一条新订单,详细信息如下:'.format( order.Fuser_name, self.get_current_user().get('Fcompany_name', ''))), keyword1=str(order.Forder_id_user), keyword2=str(_TYPE_ORDER[order.Forder_type]), keyword3='****', keyword4=str( datetime_format(input_date=order.Fcreate_time)), keyword5=str(album.Fablum_name), remark='祝您心情愉快,点击查看排期详情') except Exception, e: print e.message
def create_schedule_plan(self, merchant_id, month, times): ''' 创建档期计划 :param merchant_id: :param month: :param times: :return: ''' today = datetime.datetime.today() set_month = datetime.datetime.today() # this_start_date = datetime_format(format="%Y-%m-%d") # this_date_end = datetime_format("%Y-%m-%d",get_month_last_day())+' 23:59:59' # print this_start_date,this_date_end # if int(month)<today.month: # return False,'月份选择错误' #start_date = datetime_format(format="%Y-%m-%d",input_date=set_month) start = get_month_first_day(int(month)) end = datetime_format("%Y-%m-%d", get_month_last_day(month)) + ' 23:59:59' #print 'start_date,end',start_date,end schedules = self.db.query(SchedulePlan).filter( SchedulePlan.Fdeleted == 0, SchedulePlan.Fuser_id == merchant_id, SchedulePlan.Fschedule_day >= start, SchedulePlan.Fschedule_day <= end) if schedules.count() > 0: for schedule in schedules: schedule.Ftotal_per_day = times self.db.add(schedule) self.db.commit() else: for num in xrange((get_month_last_day(int(month)) - get_month_first_day(int(month))).days + 1): schedule = SchedulePlan() schedule.Fuser_id = merchant_id schedule.Ftotal_per_day = times schedule.Fschedule_day = get_month_day( get_month_first_day(int(month)), num) self.db.add(schedule) self.db.commit() return True, 'ok'
def post(self): date_format_prefix = datetime_format(format='%Y%m%d') try: rsp = {'files': [], 'stat': 'err', 'msg': ''} file_prex = '/'.join([ 'topics', str(self.get_current_user().get('Fid')), date_format_prefix ]) is_ok, filenames = upload_to_oss(self, options.IMG_BUCKET, param_name='files', file_type='img', file_prex=file_prex, max_size=3) if is_ok: for f in filenames: rsp['files'].append({ "name": f.get('file_name'), "size": f.get('size'), "type": f.get('content_type'), "url": options.IMG_DOMAIN + '/' + f.get('full_name') + img_compression(f.get('size')), "full_name": f.get('full_name'), }) rsp['stat'] = 'ok' rsp['files'][0]['id'] = '0' else: rsp['stat'] = 'err' rsp['msg'] = filenames return self.write(ujson.dumps(rsp)) except Exception, e: pass self.echo('views/500.html')
def get_schedules(order_id): order_scheduls = self.db.query(OrdersSchedule).filter( OrdersSchedule.Forder_id == order_id).order_by('Fid') schedules = [] # Foperation_id = Column(Integer, nullable=True) #操作人ID # Fnotified_num = Column(SmallInteger, default=0) # 此排期已通知用户次数0未通知 # Fschedule_category_id = Column(Integer,doc='排期分类',nullable=True) #档期分类id # Fschedule_category_name = Column(String(128),default='',doc='排期分类名称') #档期分类name # # Fdatetime = Column(DateTime) # 此排期时间 # Fshot_date = Column(Date) # 此排期时间 精确到某一天 # # Fsite = Column(String(128), default='') # 服务地点 # Fuid_stf = Column(String(256), default='') # 排期中参与的员工ID # Fname_stf = Column(String(256), default='') # 排期中参与的员工姓名 # Ftitle_stf = Column(String(256), default='') # 排期中员工职称 # Freminder = Column(String(512), default='') # 温馨提示 for os in order_scheduls: schedules.append(datetime_format(input_date=os.Fdatetime)) if os.Fid == 1: schedules.append(os.Fschedule_category_name) tmp_s = [] if os.Fname_stf: tmp_s = os.Fname_stf.split('&') if len(tmp_s) == 2: schedules.extend(tmp_s) elif len(tmp_s) == 1: schedules.append(os.Fname_stf) else: schedules.append('') schedules.append('') else: schedules.append(os.Fname_stf) schedules.append(os.Fsite) return schedules
def upload_resize(http_handle, bucket, img_url, file_prex=None, **kargs): """上传文件到OSS 压缩水印处理 :param http_handle :param bucket oss namespace :param_name form 参数名称 :file_prex 文件前缀 example xxx/dd """ img_url = img_url.split('@')[0] names = img_url.split('/') files = [] try: name_prefix = datetime_format(format='%H%M%S') + get_chars() # #for meta in file_metas: filename = name_prefix + names[-1].replace('%', '').replace('%', '') if file_prex: save_name = ''.join( (file_prex, '/', name_prefix + names[-1].replace('%', ''))) else: save_name = name_prefix + names[-1].replace('%', '') print 'filename:', filename parser = ImageFile.Parser() #for chunk in file_stream.chunks(): print img_url file_stream = urllib.urlopen(img_url.strip()).read( ) #'http://img.zenmez.com/album/member/c1d5736e-f85d-30a6-95c7-7a5042a1a560/默认相册/20141230/tjyg.jpg') parser.feed(file_stream) width, height = parser.image.size img = parser.close() #print file_stream #oss_write = clip_img(img,width,height,kargs.get('x'),kargs.get('y'),kargs.get('x1'),kargs.get('y1'))#缩放 前切 oss_write = clip_img(img, kargs.get('sf_w'), kargs.get('sf_h'), kargs.get('x'), kargs.get('y'), kargs.get('x1'), kargs.get('y1')) #缩放 前切 FILE_FORMAT = { 'image/gif': 'GIF', 'image/jpeg': 'JPEG', 'image/jpg': 'JPEG', 'image/pjpeg': 'PJEGP', 'image/bmp': 'BMP', 'image/png': 'PNG', 'image/x-png': 'PNG' } content_type = None file_type = names[-1].split('.')[-1].lower() #print file_type for key in FILE_FORMAT.keys(): if file_type in key: content_type = key break if not content_type: return False, '图片格式不正确' #图片转换成字符流输出到内存 然后会写oss import StringIO output = StringIO.StringIO() oss_write.save(output, format=FILE_FORMAT[content_type]) contents = output.getvalue() output.close() #print contents # # else: # contents = file_stream #response_time = (timeit.default_timer() - stat_time) % 1000 #print 'img_ys:',response_time #print filename,save_name is_ok = upload_by_userinput(bucket, filename, save_name, contents) #response_time = (timeit.default_timer() - stat_time) % 1000 #print 'write_oss:',response_time #print filename,save_name if is_ok == 'OK': files.append({ 'size': len(file_stream), 'full_name': save_name, 'file_name': filename, 'content_type': '' }) else: return False, 'Upload oss failure' except Exception, e: e = sys.exc_info()[0](traceback.format_exc()) LOG.exception(e) return False, 'Upload oss failure'
def post(self, *args, **kwargs): merchant_id = self.get_current_user().get('Fmerchant_id') back_date = self.get_argument('sch_date') start_date, tmp, end_date = back_date.split() orders = self.db.query(Orders).filter( Orders.Fdeleted == 0, Orders.Fuid_mct == merchant_id, Orders.Fcreate_time >= start_date, Orders.Fcreate_time <= end_date).order_by('Fcreate_time') name = u'订单数据备份' file_name = u'订单数据导出' + '.xls' clumns = (u'订单时间', u'类型', u'订单号', u'金额', u'定金', u'接单人', u'来源', u'备注', u'主用户名/新娘', u'手机号', u'生日', u'新郎', u'手机号', u'生日', u'试衣时间', u'礼服师', u'地点', u'摄影时间', u'档期类型', u'摄影师', u'化妆师', u'地点', u'选样时间', u'选样师', u'地点', u'定稿时间', u'看样师', u'地点', u'取件时间', u'客服', u'地点') from conf.order_conf import _TYPE_ORDER as ORDER_TYPES file = xlwt.Workbook(encoding='utf-8') #注意这里的Workbook首字母是大写,无语吧 table = file.add_sheet(name) table.write_merge(0, 0, 0, 31, name) clumn_index = 0 for c in clumns: table.write(1, clumn_index, c) clumn_index += 1 index = 2 for i in xrange(7): table.col(i).width = 5000 # orders_conf = self.db.query(OrderFromConf).filter(OrderFromConf.Fmerchant_id==merchant_id,OrderFromConf.Fdeleted==0) # order_conf={} # for conf in orders_conf: # order_conf[conf.Fid]=conf.Fname def get_sign_names(order_id): data = self.db.query(OrderSignUser.Fstaff_name).filter( OrderSignUser.Forder_id == order_id) if data: return ','.join([d[0] for d in data]) else: return '' def get_schedules(order_id): order_scheduls = self.db.query(OrdersSchedule).filter( OrdersSchedule.Forder_id == order_id).order_by('Fid') schedules = [] # Foperation_id = Column(Integer, nullable=True) #操作人ID # Fnotified_num = Column(SmallInteger, default=0) # 此排期已通知用户次数0未通知 # Fschedule_category_id = Column(Integer,doc='排期分类',nullable=True) #档期分类id # Fschedule_category_name = Column(String(128),default='',doc='排期分类名称') #档期分类name # # Fdatetime = Column(DateTime) # 此排期时间 # Fshot_date = Column(Date) # 此排期时间 精确到某一天 # # Fsite = Column(String(128), default='') # 服务地点 # Fuid_stf = Column(String(256), default='') # 排期中参与的员工ID # Fname_stf = Column(String(256), default='') # 排期中参与的员工姓名 # Ftitle_stf = Column(String(256), default='') # 排期中员工职称 # Freminder = Column(String(512), default='') # 温馨提示 for os in order_scheduls: schedules.append(datetime_format(input_date=os.Fdatetime)) if os.Fid == 1: schedules.append(os.Fschedule_category_name) tmp_s = [] if os.Fname_stf: tmp_s = os.Fname_stf.split('&') if len(tmp_s) == 2: schedules.extend(tmp_s) elif len(tmp_s) == 1: schedules.append(os.Fname_stf) else: schedules.append('') schedules.append('') else: schedules.append(os.Fname_stf) schedules.append(os.Fsite) return schedules for order in orders: table.write( index, 0, datetime_format(format='%Y-%m-%d', input_date=order.Fcreate_time)) table.write(index, 1, ORDER_TYPES[order.Forder_type]) table.write(index, 2, order.Forder_id_user) table.write(index, 3, str(order.Famount)) table.write(index, 4, str(order.Fdeposit)) table.write(index, 5, str(get_sign_names(order.Fid))) order_confs = self.db.query(OrdersFrom.Ffrom_name).filter( OrdersFrom.Forder_id == order.Fid) oconfs = '' if order_confs.count() > 0: oconfs = ','.join([of.Ffrom_name for of in order_confs]) table.write(index, 6, str(oconfs)) table.write(index, 7, order.Fcomment) table.write(index, 8, order.Fuser_name) table.write(index, 9, order.Fuser_mobi) table.write(index, 10, '') table.write(index, 11, order.Fuser_name_ex) table.write(index, 12, order.Fuser_mobi_ex) table.write(index, 13, '') schedule_index = 14 for s in get_schedules(order.Fid): table.write(index, schedule_index, s) schedule_index += 1 index += 1 file.save(file_name) self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Disposition', 'attachment; filename=' + file_name) contents = '' with open(file_name, 'rb') as f: contents = data = f.read() self.write(data) save_name = 'excel/' + str(merchant_id) + "/" + datetime_format( format="%Y%m%d%H%M") + '/' + file_name is_ok = upload_by_userinput(options.MEDIA_BUCKET, file_name, save_name, contents) if is_ok == 'OK': request_url = options.MEDIA_DOMAIN + '/' + save_name order_back = OrderDataBackup() order_back.Fmerchant_id = merchant_id order_back.Fback_url = request_url order_back.Fsave_name = save_name order_back.Fstart_date = start_date order_back.Fend_date = end_date self.db.add(order_back) self.db.commit() self.finish()
def upload_to_oss(http_handle, bucket, param_name='imgFile', file_type='img', file_prex=None, max_size=100, water_mark=False, is_apps=False, is_sort=False): """上传文件到OSS :param http_handle :param bucket oss namespace :param_name form 参数名称 :param max_size 上传文件的最大容量 单位M :file_prex 文件前缀 example xxx/dd """ data = {} file_metas = http_handle.request.files.get(param_name) if http_handle.request.files == {} or param_name not in http_handle.request.files: return False, '参数不存在' avatar_file = http_handle.request.files[param_name][0] print avatar_file['content_type'] if file_type == 'img': image_type_list = [ 'image/gif', 'image/jpeg', 'image/pjpeg', 'image/bmp', 'image/png', 'image/x-png', 'application/octet-stream' ] if avatar_file['content_type'] not in image_type_list: return False, '仅支持jpg,jpeg,bmp,gif,png格式的图片!' elif file_type == 'pdf': pdf_type_list = ['application/pdf'] if avatar_file['content_type'] not in pdf_type_list: return False, '仅支持pdf格式文件' if len(avatar_file['body']) / 1024 / 1024 > max_size: return False, '图片%s 过大,请使用%sM以内图片上传,' % (avatar_file['filename'], max_size) files = [] try: if is_apps: name_prefix = '' else: name_prefix = datetime_format(format='%H%M%S') + get_chars() for meta in file_metas: filename = name_prefix + format_img_name(meta['filename']) if file_prex: save_name = ''.join( (file_prex, '/', name_prefix + format_img_name(meta['filename']))) else: save_name = name_prefix + format_img_name(meta['filename']) if is_sort: files.append({ 'size': len(meta['body']), 'full_name': save_name, 'name': filename, 'type': meta['content_type'], "url": options.IMG_DOMAIN + '/' + save_name }) file_ids = http_handle.album_service.album_add_photos( http_handle.album_Fid, http_handle.merchant_id, http_handle.user_id, files, is_exquisite=False) files[0]['file_ids'] = file_ids file_stream = meta['body'] contents = file_stream is_ok = upload_by_userinput(bucket, filename, save_name, contents) if is_ok == 'OK': if not is_sort: files.append({ 'size': len(meta['body']), 'full_name': save_name, 'file_name': filename, 'content_type': meta['content_type'], }) else: try: if is_sort: http_handle.album_service.delete_photo_by_photo_id( http_handle.merchant_id, file_ids[0]) except Exception, e: print 'e.message:', e.message pass return False, 'Upload oss failure' except Exception: e = sys.exc_info()[0](traceback.format_exc()) LOG.exception(e) return True, files