Exemple #1
0
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
Exemple #2
0
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
    })
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
0
    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)
Exemple #12
0
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
Exemple #13
0
 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
Exemple #14
0
 def get_model(self):
     return load_cls(
         SmsConfig.channle_list.get(self.get_chnnal_name()).get('model'))
Exemple #15
0
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
Exemple #16
0
 def get_model(self):
     return load_cls(SmsConfig.channle_list.get(self.get_chnnal_name()).get('model'))
Exemple #17
0
 def get_task_class(self):
     return load_cls(SmsConfig.channle_list.get(self.get_chnnal_name()).get('send_task'))
Exemple #18
0
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
Exemple #19
0
def common_list(request, model_type):
    model = load_cls(model_type)
    return model.objects.all()
Exemple #20
0
def common_list(request, model_type):
    model = load_cls(model_type)
    return model.objects.all()
Exemple #21
0
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
Exemple #22
0
 def get_task_class(self):
     return load_cls(
         SmsConfig.channle_list.get(
             self.get_chnnal_name()).get('send_task'))
Exemple #23
0
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