def ajax_reject(self, request, template): dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') content = request.POST.get('content') ok = True try: app = self.ApplicationModel.objects.get(uuid=uuid) except: ok = False if not app.reject(request, request.user, content): ok = False else: self._do_reject(request, app) if ok: #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str(app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail(request, app, get_template('%smail_user_status.html'%self.template_dir), [app.email]) return render_to_response_json({'res':1}) else: return render_to_response_json({'res':0}) return HttpResponseNotFound()
def login(request, template='auth/userlogin.html', redirect_field_name=REDIRECT_FIELD_NAME): if request.GET.has_key('admin'): template = 'auth/adminlogin.html' if request.method == 'POST': redirect_to = request.REQUEST.get(redirect_field_name, '') loginname = request.POST.get('loginname', None) password = request.POST.get('password', None) user = authenticate(loginname = loginname, password = password) if user: # if user.is_alias(): # __user = user # user = __user.alias_user # user.backend = __user.backend from auth import login login(request, user) if not redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL if request.is_ajax(): return render_to_response_json({"location": redirect_to, "errcode":0}) return HttpResponseRedirect(redirect_to) if request.is_ajax(): return render_to_response_json({"errcode":101}) redirect_to = request.META.get('HTTP_REFERER', "") return render_to_response(request, template, {redirect_field_name: redirect_to})
def ajax_reject(self, request, template): dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') content = request.POST.get('content') ok = True try: app = self.ApplicationModel.objects.get(uuid=uuid) except: ok = False if not app.reject(request, request.user, content): ok = False else: self._do_reject(request, app) if ok: #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str( app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail( request, app, get_template('%smail_user_status.html' % self.template_dir), [app.email]) return render_to_response_json({'res': 1}) else: return render_to_response_json({'res': 0}) return HttpResponseNotFound()
def ajax_allot(self, request, template): dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') operator = request.POST.getlist('operator[]') try: app = self.ApplicationModel.objects.get(uuid = uuid) except: return render_to_response_json({'res':0}) res = False for o in operator: o = o.split(',') res = app.allot(request, request.user, o[0], o[1]) if res: #给执行人发送通知邮件 app.link = '/helpdesk/apply/task?id=' + str(res.pk) app.taskobj = res op = HelpDeskUser.objects.filter(user__username=o[1], duty=o[0]) if op.exists(): send_mail(request, app, get_template('%smail_op_task.html'%self.template_dir), [op[0].email], u'HelpDesk通知 【' + app.name +'】') if res: self._do_allot(request, app) app.update_status(request, '2') #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str(app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail(request, app, get_template('%smail_user_status.html'%self.template_dir), [app.email]) return render_to_response_json({'res':1}) return HttpResponseNotFound()
def ajax_del_op(self, request, template): '''在任务分配界面 删除任务''' dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') id = request.POST.get('id') try: Task.objects.filter(uuid=uuid, pk=id).delete() obj = self.ApplicationModel.objects.get(uuid=uuid) if obj.update_status(request): #给申请人发送通知邮件 obj.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str( obj.uuid) + '&e=' obj.link = '/helpdesk/apply/query?uuid=' + str(obj.uuid) obj.evaluatelist = obj.evaluate_choices tdir = self._get_template_dir(obj) send_mail(request, obj, tdir + 'mail_user_status.html', [obj.email]) except: return render_to_response_json({'res': 0}) return render_to_response_json({'res': 1}) return HttpResponseNotFound()
def add(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') public = request.POST.get('public') if not public: public = False else: public = True if not id or not start_time or not end_time: return render_to_response_json({'res':False}) ap = Schedule() ap.id = id ap.user = request.user ap.start_time = make_aware(datetime.strptime(start_time,'%Y-%m-%d %H:%M:%S'), get_current_timezone()) ap.end_time = make_aware(datetime.strptime(end_time,'%Y-%m-%d %H:%M:%S'), get_current_timezone()) ap.remarks = remarks ap.public = public try: ap.save() except: return render_to_response_json({'res':False, 'msg': '保存失败'}) return render_to_response_json({'res':True})
def update(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') public = request.POST.get('public') if public == 'false': public = False else: public = True if not id or not start_time or not end_time: return render_to_response_json({'res':False}) try: obj = Schedule.objects.get(pk=id) except: return render_to_response_json({'res':False, 'msg':'参数有误'}) if obj.user != request.user: data = {'res':False, 'msg': '您没有权限修改该记录'} return render_to_response_json(data) obj.start_time = make_aware(datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S'), get_current_timezone()) obj.end_time = make_aware(datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S'), get_current_timezone()) obj.remarks = remarks obj.public = public try: obj.save() except: return render_to_response_json({'res':False, 'msg': '保存失败'}) return render_to_response_json({'res':True})
def delete(request): id = request.POST.get('id') obj = Schedule.objects.filter(pk=id) if not id or not obj: return render_to_response_json({'res':-1}) obj = obj[0] if obj.user != request.user: return render_to_response_json({'res':False, 'msg':'您没有权限删除该记录'}) try: obj.delete() return render_to_response_json({'res':True, 'msg':'删除成功'}) except: return render_to_response_json({'res':False, 'msg':'删除失败'})
def ajax_get_undo(request): if request.method == 'POST': dicts = get_undo(request) # general = Task.objects.filter(operator = request.user, result='0', uuid__category='GeneralApplication').count() # vm = Task.objects.filter(operator = request.user, result = '0', uuid__category = 'VmApplication').count() # vpn = Task.objects.filter(operator = request.user, result = '0', uuid__category = 'VpnApplication').count() return render_to_response_json(dicts) return HttpResponseNotFound()
def delete(request): id = request.POST.get('id') obj = Appointment.objects.filter(pk=id) if not id or not obj: return render_to_response_json({'res': -1}) obj = obj[0] if not request.user.is_staff and obj.user != request.user: return render_to_response_json({'res': False, 'msg': '您没有权限删除该记录'}) if obj.status == 1: return render_to_response_json({'res': False, 'msg': '管理员已锁定的预约不能删除'}) now = datetime.now() if localtime( obj.start_time).strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d'): return render_to_response_json({'res': False, 'msg': '当天不能再删除'}) if localtime(obj.start_time).replace(tzinfo=None) < now: return render_to_response_json({'res': False, 'msg': '历史记录不可删除'}) try: obj.delete() return render_to_response_json({'res': True, 'msg': '删除成功'}) except: return render_to_response_json({'res': False, 'msg': '删除失败'})
def update(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') if not id or not start_time or not end_time: return render_to_response_json({'res':False}) try: obj = Appointment.objects.get(pk=id) except: return render_to_response_json({'res':False, 'msg':'参数有误'}) if not request.user.is_staff and obj.user != request.user: data = {'res':False, 'msg': '您没有权限修改该记录'} return render_to_response_json(data) if obj.status == 1: return render_to_response_json({'res':False, 'msg':'管理员已锁定的预约不能修改'}) start_time = datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') end_time = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') now = datetime.now() if localtime(obj.start_time).strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d') or start_time.strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d'): return render_to_response_json({'res':False, 'msg':'当天不能再更改'}) if localtime(obj.start_time).replace(tzinfo=None) < now or start_time < now: return render_to_response_json({'res':False, 'msg':'历史记录不可更改'}) obj.start_time = start_time obj.end_time = end_time obj.remarks = remarks res, msg = obj.save() return render_to_response_json({'res':res, 'msg': msg})
def ajax_get_staff(request): os = [] name = request.POST.get('name',None) if name: staffs = Staff.objects.filter(name__contains = name) for s in staffs: os.append({'name':s.name,'jobnum':s.jobnum}) return render_to_response_json(os)
def ajax_allot(self, request, template): dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') operator = request.POST.getlist('operator[]') try: app = self.ApplicationModel.objects.get(uuid=uuid) except: return render_to_response_json({'res': 0}) res = False for o in operator: o = o.split(',') res = app.allot(request, request.user, o[0], o[1]) if res: #给执行人发送通知邮件 app.link = '/helpdesk/apply/task?id=' + str(res.pk) app.taskobj = res op = HelpDeskUser.objects.filter(user__username=o[1], duty=o[0]) if op.exists(): send_mail( request, app, get_template('%smail_op_task.html' % self.template_dir), [op[0].email], u'HelpDesk通知 【' + app.name + '】') if res: self._do_allot(request, app) app.update_status(request, '2') #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str( app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail( request, app, get_template('%smail_user_status.html' % self.template_dir), [app.email]) return render_to_response_json({'res': 1}) return HttpResponseNotFound()
def add(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') if not id or not start_time or not end_time: return render_to_response_json({'res':False}) ap = Appointment() ap.id = id ap.user = request.user ap.start_time = datetime.strptime(start_time,'%Y-%m-%d %H:%M:%S') ap.end_time = datetime.strptime(end_time,'%Y-%m-%d %H:%M:%S') ap.status = 0 ap.remarks = remarks now = datetime.now() if ap.start_time < now or ap.start_time.strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d'): return render_to_response_json({'res':False, 'msg': '请至少提前一天提交预约!'}) res, msg = ap.save() return render_to_response_json({'res':res, 'msg': msg})
def ajax_result(self, request, template): '''任务处理结果''' dicts = self._get_role(request) if not dicts.has_key('is_operator'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': id = request.POST.get('id') result = request.POST.get('result') remarks = request.POST.get('remarks') app = None try: al = Task.objects.get(pk=id, operator=request.user) except: return render_to_response_json({'res': 0}) al.result = result al.operate_remark = remarks al.operate_time = datetime.now() app = self.ApplicationModel.objects.get(pk=al.uuid_id) app.taskobj = al if self._do_result(request, app): al.save() if app.update_status(request): #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str( app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail( request, app, get_template('%smail_user_status.html' % self.template_dir), [app.email]) return render_to_response_json({'res': 1}) return render_to_response_json({'res': 0}) return HttpResponseNotFound()
def add(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') if not id or not start_time or not end_time: return render_to_response_json({'res': False}) ap = Appointment() ap.id = id ap.user = request.user ap.start_time = datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') ap.end_time = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') ap.status = 0 ap.remarks = remarks now = datetime.now() if ap.start_time < now or ap.start_time.strftime( '%Y-%m-%d') == now.strftime('%Y-%m-%d'): return render_to_response_json({'res': False, 'msg': '请至少提前一天提交预约!'}) res, msg = ap.save() return render_to_response_json({'res': res, 'msg': msg})
def ajax_type(self, request, template): '''添加或删除申请类型标签''' dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') atype = request.POST.get('type') isadd = request.POST.get('isadd') if isadd == '1': try: if not ApplyType.objects.filter(uuid=uuid, type=atype).exists(): a = ApplyType() a.uuid_id = uuid a.type = atype a.save() except: return render_to_response_json({'res':0}) else: ApplyType.objects.filter(uuid=uuid, type=atype).delete() return render_to_response_json({'res':1}) return HttpResponseNotFound()
def ajax_del_op(self, request, template): '''在任务分配界面 删除任务''' dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') id = request.POST.get('id') try: Task.objects.filter(uuid=uuid, pk=id).delete() obj = self.ApplicationModel.objects.get(uuid=uuid) if obj.update_status(request): #给申请人发送通知邮件 obj.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str(obj.uuid) + '&e=' obj.link = '/helpdesk/apply/query?uuid=' + str(obj.uuid) obj.evaluatelist = obj.evaluate_choices tdir = self._get_template_dir(obj) send_mail(request, obj, tdir + 'mail_user_status.html', [obj.email]) except: return render_to_response_json({'res':0}) return render_to_response_json({'res':1}) return HttpResponseNotFound()
def ajax_result(self, request, template): '''任务处理结果''' dicts = self._get_role(request) if not dicts.has_key('is_operator'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': id = request.POST.get('id') result = request.POST.get('result') remarks = request.POST.get('remarks') app = None try: al = Task.objects.get(pk = id, operator = request.user) except: return render_to_response_json({'res':0}) al.result = result al.operate_remark = remarks al.operate_time = datetime.now() app = self.ApplicationModel.objects.get(pk=al.uuid_id) app.taskobj = al if self._do_result(request, app): al.save() if app.update_status(request): #给申请人发送通知邮件 app.evaluatelink = '/helpdesk/apply/evaluate?uuid=' + str(app.uuid) + '&e=' app.link = '/helpdesk/apply/query?uuid=' + str(app.uuid) app.evaluatelist = app.evaluate_choices send_mail(request, app, get_template('%smail_user_status.html'%self.template_dir), [app.email]) return render_to_response_json({'res':1}) return render_to_response_json({'res':0}) return HttpResponseNotFound()
def ajax_type(self, request, template): '''添加或删除申请类型标签''' dicts = self._get_role(request) if not dicts.has_key('is_alloter'): return HttpResponseRedirect(self._get_login_url(request)) if request.method == 'POST': uuid = request.POST.get('uuid') atype = request.POST.get('type') isadd = request.POST.get('isadd') if isadd == '1': try: if not ApplyType.objects.filter(uuid=uuid, type=atype).exists(): a = ApplyType() a.uuid_id = uuid a.type = atype a.save() except: return render_to_response_json({'res': 0}) else: ApplyType.objects.filter(uuid=uuid, type=atype).delete() return render_to_response_json({'res': 1}) return HttpResponseNotFound()
def ajax_action(self, request, template): ids = request.POST.getlist('id[]') action = request.POST.get('action') failed = [] if hasattr(self, '_'+action): func = getattr(self,'_'+action) if callable(func): if ids: for i in ids: if not func(i): failed.append(i) if len(failed) == 0: res = { 'next_url':'reload'} else: res = {'msg':u'操作失败,失败记录ID:' + u','.join(failed)} return render_to_response_json(res)
def ajax_action(self, request, template): ids = request.POST.getlist('id[]') action = request.POST.get('action') failed = [] if hasattr(self, '_' + action): func = getattr(self, '_' + action) if callable(func): if ids: for i in ids: if not func(i): failed.append(i) if len(failed) == 0: res = {'next_url': 'reload'} else: res = {'msg': u'操作失败,失败记录ID:' + u','.join(failed)} return render_to_response_json(res)
def update(request): id = request.POST.get('id', None) start_time = request.POST.get('start_date', None) end_time = request.POST.get('end_date', None) remarks = request.POST.get('remarks') if not id or not start_time or not end_time: return render_to_response_json({'res': False}) try: obj = Appointment.objects.get(pk=id) except: return render_to_response_json({'res': False, 'msg': '参数有误'}) if not request.user.is_staff and obj.user != request.user: data = {'res': False, 'msg': '您没有权限修改该记录'} return render_to_response_json(data) if obj.status == 1: return render_to_response_json({'res': False, 'msg': '管理员已锁定的预约不能修改'}) start_time = datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') end_time = datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') now = datetime.now() if localtime(obj.start_time).strftime('%Y-%m-%d') == now.strftime( '%Y-%m-%d') or start_time.strftime('%Y-%m-%d') == now.strftime( '%Y-%m-%d'): return render_to_response_json({'res': False, 'msg': '当天不能再更改'}) if localtime( obj.start_time).replace(tzinfo=None) < now or start_time < now: return render_to_response_json({'res': False, 'msg': '历史记录不可更改'}) obj.start_time = start_time obj.end_time = end_time obj.remarks = remarks res, msg = obj.save() return render_to_response_json({'res': res, 'msg': msg})
def delete(request): id = request.POST.get('id') obj = Appointment.objects.filter(pk=id) if not id or not obj: return render_to_response_json({'res':-1}) obj = obj[0] if not request.user.is_staff and obj.user != request.user: return render_to_response_json({'res':False, 'msg':'您没有权限删除该记录'}) if obj.status == 1: return render_to_response_json({'res':False, 'msg':'管理员已锁定的预约不能删除'}) now = datetime.now() if localtime(obj.start_time).strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d'): return render_to_response_json({'res':False, 'msg':'当天不能再删除'}) if localtime(obj.start_time).replace(tzinfo=None) < now: return render_to_response_json({'res':False, 'msg':'历史记录不可删除'}) try: obj.delete() return render_to_response_json({'res':True, 'msg':'删除成功'}) except: return render_to_response_json({'res':False, 'msg':'删除失败'})
def help(request): '''我的预约统计视图函数''' obj = Help.objects.all()[0] data = obj.content return render_to_response_json({'content': data})
def ajax_get_unallot(request): if request.method == 'POST': dicts = get_unallot(request) return render_to_response_json(dicts) return HttpResponseNotFound()
def load(request): mode = request.GET.get('mode') t = request.GET.get('t') try: t = long(t) / 1000 except: t = None if mode == 'day': if t: start_time = datetime.fromtimestamp(t) else: now = datetime.now() start_time = datetime(now.year, now.month, now.day, 0, 0) end_time = start_time + relativedelta(days=1) elif mode == 'week': if t: start_time = datetime.fromtimestamp(t) else: now = datetime.now() start_time = datetime(now.year, now.month, now.day, 0, 0) + relativedelta(days=(-1*now.weekday())) end_time = start_time + relativedelta(weeks=1) elif mode == 'month': if t: start_time = datetime.fromtimestamp(t) else: now = datetime.now() start_time = datetime(now.year, now.month, 1, 0, 0) end_time = start_time + relativedelta(months=1) elif mode == 'timeline': if t: start_time = datetime.fromtimestamp(t) else: now = datetime.now() start_time = datetime(now.year, now.month, now.day, 0, 0) + relativedelta(days=(-1*now.weekday())) end_time = start_time + relativedelta(weeks=1) else: return render_to_response_json([]) objs = Schedule.objects.filter(user=request.user, public=False, start_time__lte = end_time, end_time__gt = start_time) ev = [] for obj in objs: ev.append({ 'id':obj.id, 'text':obj.remarks, 'start_date': localtime(obj.start_time).strftime('%m/%d/%Y %H:%M'), 'end_date': localtime(obj.end_time).strftime('%m/%d/%Y %H:%M'), 'public': obj.public, 'section_id': 1 }) public_objs = Schedule.objects.filter(public=True,start_time__lte = end_time, end_time__gt = start_time) for obj in public_objs: ev.append({ 'id':obj.id, 'text':((request.user != obj.user) and "【公共日程】" or "") + obj.remarks + ((request.user != obj.user) and (" (%s)" % obj.user) or ""), 'start_date': localtime(obj.start_time).strftime('%m/%d/%Y %H:%M'), 'end_date': localtime(obj.end_time).strftime('%m/%d/%Y %H:%M'), 'public': obj.public, 'section_id': 1, 'readonly':(request.user != obj.user), 'color': '#808080' }) return render_to_response_json(ev)
def import_xls(self, request, template): """ xls数据导入 """ os = {} os['finished'] = "" file = request.GET.get('file',None) upload_file = self.DefaultFileModel.objects.filter(upload_file = file)############################### if upload_file: file_type = '' re_search = re.search(r"\.(.*)$", str(upload_file[0].upload_file)) if re_search: file_type = re_search.group(1) start = int(request.GET['start']) len = int(request.GET['len']) end = start + len faillist = [] if file_type == 'xls': xls_name = settings.MEDIA_ROOT +'/'+ str(upload_file[0].upload_file) bk = xlrd.open_workbook(xls_name) sheet = bk.sheet_by_index(0) print 33333333,sheet rows = sheet.nrows cols = sheet.ncols title = {} for i in range(0,cols): if not sheet.cell_value(0,i).lower() in title.keys(): title[sheet.cell_value(0,i).lower()] = i if rows < end: end = rows os['finished'] = "finished" os['count'] = rows - 1 addnum = 0 for row in range(start,end): if row == 0: continue o = {} for i in self.ImportFields: if i in self.MapFields.keys(): o[self.MapFields[i]] = sheet.cell_value(row, title[i.lower()]) else: o[i] = sheet.cell_value(row, title[i.lower()]) if settings.DEBUG == False: try: if self._import_verify(request,o): if self._import(request,o): addnum = addnum + 1 else: faillist.append(row+1) else: faillist.append(row+1) except: faillist.append(row+1) else: if self._import_verify(request,o): if self._import(request,o): addnum = addnum + 1 else: faillist.append(row+1) else: faillist.append(row+1) if file_type == 'dbf': dbf_name = settings.MEDIA_ROOT + str(upload_file[0].upload_file) db = dbf2.Dbf(dbf_name) #db.openFile(dbf_name) rows = db.__len__() if rows < end: end = rows os['finished'] = "finished" os['count'] = rows addnum = 0 for row in range(start,end): d = db[row] o={} fields = {} for i in db.fieldNames: if i.lower() in self.ImportFields: fields[i.lower()] = i for i in fields.keys(): _s = d[fields[i]] try: _s =_s.decode("GB18030") except: pass #setattr(o,i.attname, _s) if i in self.MapFields.keys(): o[self.MapFields[i]] = _s else: o[i] = _s if settings.DEBUG == False: try: if self._import_verify(request, o): if self._import(request, o): addnum = addnum + 1 else: faillist.append(row+1) else: faillist.append(row+1) except: faillist.append(row+1) else: if self._import_verify(request, o): if self._import(request, o): addnum = addnum + 1 else: faillist.append(row+1) else: faillist.append(row+1) """ o = self.DefaultModel() oo={} fields = {} for i in db.fieldNames(): if i.lower() in self.ImportFields: fields[i.lower()] = i for i in self.DefaultModel._meta.fields: if i.name.lower() in fields.keys(): _s = d[fields[i.name.lower()]] try: _s =_s.decode("GB18030") except: pass setattr(o,i.attname, _s) oo[i.name] = _s if self._import_verify(request, o): o.save() self._import(request, oo) addnum = addnum + 1 """ os['ret'] = (end*100)/rows os['addnum'] = addnum os['faillist'] = faillist # if os['finished'] == "finished": # for u in upload_file: # try:#dbf导入完成�删除文件会报� 不知道怎么解决!!!!!!!!!! # u.upload_file.delete() # u.delete() # except: # pass else: os['finished'] = "finished" return render_to_response_json(os)
def export(self,request,template): print 'into export' os = {} os['finished'] = "" e_type = request.GET.get('type',None) start = request.GET.get('start',None) len = request.GET.get('len',None) print e_type,start,len if e_type == 'dbf' and start and len: print 'into app' def u2g(str): return str.decode('utf-8').encode('gb18030') def d2g(string): try: string.decode('utf-8').encode('gb18030') except: try: string = string.encode('gb18030') except: pass return str(string) def get_cell(p, k, index): if k == "forloop.count": return str(index + 1) if type(k) == list: value = p for key in k: if hasattr(value, key): value = getattr(value, key) if callable(value): value = value() else: value = "" break return d2g(value) else: if hasattr(p, k): value = getattr(p, k) if callable(value): value = value() return d2g(value) else: return "" start = int(start) len = int(len) end = start + len ls = self._get_list(request) count = ls.count() if end > count: end = count os['finished'] = "finished" print start,end,count filename = settings.MEDIA_ROOT + '/tst.dbf' ls = ls[start:end] if start == 0: dbfn = dbf_new() for field in self.export_columns: field_name = u2g(field[0]) dbfn.add_field(field_name, 'C', 220) dbfn.write(filename) # test new dbf dbft = Dbf() dbft.openFile(filename, readOnly=0) dbft.reportOn() # add a record for l in ls: rec = DbfRecord(dbft) for index, field in enumerate(self.export_columns): field_name = u2g(field[0]) value = get_cell(l, field[1], index) rec[field_name] = value rec.store() #dbft.append(rec) dbft.close() os['ret'] = (end*100)/count return render_to_response_json(os)