def msg_send_report(request, month, task_id, report): month = int(month) model = load_cls('sms.models.MsgSend') if month: model = load_cls('sms.models.MsgSend%02d' % month) msg_list = model.objects.select_related("msg_user").all() task_id = int(task_id) if task_id: msg_list = msg_list.filter(msg_task_id=task_id) msg_list = model_filter(request, msg_list) data_set = msg_list.extra( select={ 'year': 'EXTRACT(year from msg_init_time)', 'month': 'EXTRACT(month from msg_init_time)', 'day': 'EXTRACT(day from msg_init_time)' }).values('year', 'month', 'day', 'msg_user__name', 'msg_stat', 'channle_cfg').annotate((Sum('msg_count'))) for data in data_set: if 'msg_stat' in data: msg_stat = data['msg_stat'] for kw in MsgSend.stat_choices: if kw[0] == msg_stat: data['msg_stat'] = kw[1] if 'channle_cfg' in data: channle_cfg = data['channle_cfg'] if channle_cfg in SmsConfig.channle_list: data['channle_cfg'] = SmsConfig.channle_list[channle_cfg].get( 'name') response = render(request, 'report_msgsend.html', {'data_set': data_set}) response['Content-Disposition'] = 'attachment; filename=%s' % 'Export.xls' return response
def msg_send_count(request): now = datetime.datetime.now() month = now.month model1 = load_cls('sms.models.MsgSend') model2 = load_cls('sms.models.MsgSend%02d' % month) now = datetime.datetime.strptime(now.strftime('%Y%m%d%H' + '0000'), '%Y%m%d%H%M%S') now = now + datetime.timedelta(hours=1) lastday = now - datetime.timedelta(hours=24) hour_count = [0] * 24 for model in [model1, model2]: qs = model.objects.filter(msg_ack_time__lt=now, msg_ack_time__gte=lastday) qs = model_filter(request, qs) data_set = qs.extra(select={ 'hour': 'EXTRACT(hour from msg_ack_time)' }).values('hour').annotate((Count('id'))) for data in data_set: hour_count[data['hour']] += data['id__count'] result_set = [] for hour in range(now.hour, 24) + range(now.hour): result = {'hour': str(hour), 'count': hour_count[hour]} result_set.append(result) return JsonResponse({ 'object_count': len(result_set), 'object_list': result_set })
def common_save(request, model_type): id = request.json.get('object').get('id') if id: model = load_cls(model_type).objects.get(id=id) else: model = load_cls(model_type)() return model
def task_list(request, month=0): model = load_cls('sms.models.SendTask') month = int(month) if month: model = load_cls('sms.models.SendTask%02d' % month) qs = model.objects.all().order_by('-id') return qs
def msg_send_list(request, month, task_id): month = int(month) model = load_cls('sms.models.MsgSend') if month: model = load_cls('sms.models.MsgSend%02d' % month) qs = model.objects.all().order_by('-id') task_id = int(task_id) if task_id: qs = qs.filter(msg_task_id=task_id) return qs
def task_export(request, month, export): model = load_cls('sms.models.SendTask') month = int(month) if month: model = load_cls('sms.models.SendTask%02d' % month) task_list = model.objects.select_related("user").all() task_list = model_filter(request, task_list) response = render(request, 'export_sendtask.html', {'task_list': task_list}) response['Content-Disposition'] = 'attachment; filename=%s' % 'Export.xls' return response
def msg_send_export(request, month, task_id, export): month = int(month) model = load_cls('sms.models.MsgSend') if month: model = load_cls('sms.models.MsgSend%02d' % month) msg_list = model.objects.select_related("msg_user").all() task_id = int(task_id) if task_id: msg_list = msg_list.filter(msg_task_id=task_id) msg_list = model_filter(request, msg_list) response = render(request, 'export_msgsend.html', {'msg_list': msg_list}) response['Content-Disposition'] = 'attachment; filename=%s' % 'Export.xls' return response
def get_load_handler(self, task): handler_list = [] user = task.user channle_list = get_user_channle_cfg(user) for channle_name in SmsConfig.channle_list.keys(): if channle_list.get(channle_name): handler_list.append(load_cls(SmsConfig.channle_list.get(channle_name).get('load_handler'))()) return handler_list
def get_load_handler(self, task): handler_list = [] user = task.user channle_list = get_user_channle_cfg(user) for channle_name in SmsConfig.channle_list.keys(): if channle_list.get(channle_name): handler_list.append( load_cls( SmsConfig.channle_list.get(channle_name).get( 'load_handler'))()) return handler_list
def insert_cust(self, cust_dept): cfg_list = self.get_cfg_list(cust_dept) self.cust_list[cust_dept] = {} for channle_name in SmsConfig.channle_list.keys(): channle_cfg = cfg_list.get(channle_name) if channle_cfg and getattr( channle_cfg, SmsConfig.channle_list.get(channle_name).get( 'status_field')) == 'enabled': self.cust_list[cust_dept][channle_name] = load_cls( SmsConfig.channle_list.get(channle_name).get('client'))( channle_cfg) self.cust_list[cust_dept][channle_name].start_serv() print '#%d insert %s %s' % (self.pid, cust_dept, channle_name)
def gen_model_js(cls_path): cls_name = cls_path.split('.')[-1] cls = load_cls(cls_path) model_js_name = cls_name + 'Model.js' model_js_content = "Ext.define('X.model.%sModel', {extend: 'Ext.data.Model',fields: [" % cls_name for field in cls._meta.fields: if field.name == 'id': model_js_content += "\r\n{name: '%s', label: '%s', show: true, field: 'hiddenfield'}," % ( field.name, u"编号") elif field.choices: model_js_content += "\r\n{name: '%s', label: '%s', field: 'combo', choice: '####.####'%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') model_js_content += "\r\n{name: '%s_display', label: '%s', show: true%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') elif type(field).__name__ == 'ForeignKey': model_js_content += "\r\n{name: '%s_id', label: '%s', field: 'combo', store: 'X.store.%sStore'%s}," % ( field.name, field.verbose_name, field.related_model.__name__, field.blank and ',blank:true' or '') model_js_content += "\r\n{name: '%s', label: '%s', show: true%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') elif type(field).__name__ == 'FileField': model_js_content += "\r\n{name: '%s', label: '%s', field: 'filefield'%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') elif type(field).__name__ == 'DateField': model_js_content += "\r\n{name: '%s', label: '%s', show: true, field: 'datefield',field_cfg: {format: 'Y-m-d'}%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') elif type(field).__name__ == 'DateTimeField': model_js_content += "\r\n{name: '%s', label: '%s', show: true%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') else: model_js_content += "\r\n{name: '%s', label: '%s', show: true, field: 'textfield'%s}," % ( field.name, field.verbose_name, field.blank and ',blank:true' or '') model_js_content = model_js_content[:-1] model_js_content += " ]});" print "=" * 10, model_js_name, "=" * 10 print model_js_content
def update_cust(self, cust_dept): cfg_list = self.get_cfg_list(cust_dept) client_list = self.cust_list.get(cust_dept) for channle_name in SmsConfig.channle_list.keys(): channle_cfg = cfg_list.get(channle_name) channle_client = client_list.get(channle_name) if (channle_cfg and getattr( channle_cfg, SmsConfig.channle_list.get(channle_name).get( 'status_field')) == 'enabled') and not channle_client: self.cust_list[cust_dept][channle_name] = load_cls( SmsConfig.channle_list.get(channle_name).get('client'))( channle_cfg) self.cust_list[cust_dept][channle_name].start_serv() print '#%d insert %s %s' % (self.pid, cust_dept, channle_name) elif not (channle_cfg and getattr( channle_cfg, SmsConfig.channle_list.get(channle_name).get( 'status_field')) == 'enabled') and channle_client: channle_client.stop_serv() client_list.pop(channle_name) print '#%d delete %s %s' % (self.pid, cust_dept, channle_name) else: pass
def get_model(self): return load_cls( SmsConfig.channle_list.get(self.get_chnnal_name()).get('model'))
def common_delete(request, model_type): ids = request.json.get('ids') id_list = ids.split(',') qs = load_cls(model_type).objects.filter(id__in=id_list) return qs
def get_model(self): return load_cls(SmsConfig.channle_list.get(self.get_chnnal_name()).get('model'))
def get_task_class(self): return load_cls(SmsConfig.channle_list.get(self.get_chnnal_name()).get('send_task'))
def common_list(request, model_type): model = load_cls(model_type) return model.objects.all()
def json_success(function): def decorator(*args, **kwargs): request, args = args[0], args[1:] function(request, *args, **kwargs) return JsonResponse({'success': True, 'message': '操作成功!'}) return decorator app_list = settings.INSTALLED_APPS filter_list = [] for app in app_list: try: filter = load_cls(app + '.verify.model_filter') filter_list.append(filter) except: pass def auto_filter(function): def decorator(*args, **kwargs): request, args = args[0], args[1:] qs = function(request, *args, **kwargs) for filter in filter_list: qs = filter(request, qs) return qs return decorator
def get_task_class(self): return load_cls( SmsConfig.channle_list.get( self.get_chnnal_name()).get('send_task'))