def create(self, request, *args, **kwargs): data = request.data lang = request.GET.get('lang') data['createuser'] = request.user.id data['datasource'] = request.user.datasource.id IPOdate = data.pop('IPOdate', None) if IPOdate not in ['None', None, u'None', 'none', '', ' ']: data['IPOdate'] = datetime.datetime.strptime( IPOdate[0:10], '%Y-%m-%d') try: with transaction.atomic(): orgTransactionPhases = data.pop('orgtransactionphase', None) orgserializer = OrgCreateSerializer(data=data) if orgserializer.is_valid(): org = orgserializer.save() if orgTransactionPhases and isinstance( orgTransactionPhases, list): orgTransactionPhaselist = [] for transactionPhase in orgTransactionPhases: orgTransactionPhaselist.append( orgTransactionPhase( org=org, transactionPhase_id=transactionPhase, createuser=request.user, createdtime=datetime.datetime.now())) org.org_orgTransactionPhases.bulk_create( orgTransactionPhaselist) else: raise InvestError(code=20071, msg='data有误_%s' % orgserializer.errors) if org.createuser: add_perm('org.user_getorg', org.createuser, org) add_perm('org.user_changeorg', org.createuser, org) add_perm('org.user_deleteorg', org.createuser, org) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( OrgDetailSerializer(org).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def update(self, request, *args, **kwargs): try: data = request.data data.pop('createuser', None) data.pop('datasource', None) lang = request.GET.get('lang') instance = self.get_object() oldmanager = instance.manager if request.user.has_perm('BD.manageMeetBD'): pass elif request.user.has_perm('BD.user_manageMeetBD', instance): # data = {'comments': data.get('comments', instance.comments), # 'attachment': data.get('attachment', instance.attachment), # 'attachmentbucket': data.get('attachmentbucket', instance.attachmentbucket),} pass elif request.user in [ instance.proj.takeUser, instance.proj.makeUser ]: pass else: raise InvestError(2009) with transaction.atomic(): meetBD = MeetingBDCreateSerializer(instance, data=data) if meetBD.is_valid(): newMeetBD = meetBD.save() oldmanager_id = data.get('manager', None) if oldmanager_id and oldmanager_id != oldmanager.id: add_perm('BD.user_manageMeetBD', newMeetBD.manager, newMeetBD) rem_perm('BD.user_manageMeetBD', oldmanager, newMeetBD) else: raise InvestError(5005, msg='会议BD修改失败——%s' % meetBD.error_messages) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( MeetingBDSerializer(newMeetBD).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def update(self, request, *args, **kwargs): try: data = request.data lang = request.GET.get('lang') fileid = data.get('fileid', None) if fileid: file = self.get_object(fileid) if request.user.has_perm('dataroom.admin_changedataroom'): pass elif request.user.has_perm('dataroom.user_changedataroom', file.dataroom): pass else: raise InvestError(code=2009) else: raise InvestError(code=20072) data['lastmodifyuser'] = request.user.id data['lastmodifytime'] = datetime.datetime.now() if data.get('dataroom', None): if file.dataroom_id != data.get('dataroom', None): raise InvestError(7011, msg='不能移动到其他dataroom下') if data.get('parent', None): parentfile = self.get_object(data['parent']) if parentfile.dataroom != file.dataroom: raise InvestError(7011, msg='不能移动到其他dataroom下') if parentfile.isFile: raise InvestError(7007, msg='非文件夹类型') if self.checkDirectoryIsShadow(parentfile): raise InvestError(7009, msg='不能把文件移入复制体文件夹内') with transaction.atomic(): directoryorfileserializer = DataroomdirectoryorfileUpdateSerializer(file,data=data) if directoryorfileserializer.is_valid(): directoryorfile = directoryorfileserializer.save() else: raise InvestError(code=20071, msg='data有误_%s'% directoryorfileserializer.errors) if directoryorfile.parent is not None and data.get('orderNo', None): destquery = directoryorfile.parent.asparent_directories.exclude(pk=directoryorfile.pk).filter(is_deleted=False,orderNO__gte=directoryorfile.orderNO) if destquery.exist(): destquery.update(orderNO = F('orderNO')+ 1) return JSONResponse(SuccessResponse(returnDictChangeToLanguage(directoryorfileserializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse(ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def create(self, request, *args, **kwargs): data = request.data lang = request.GET.get('lang') timelineid = data.get('timeline', None) if timelineid: line = self.get_timeline(timelineid) if request.user.has_perm('timeline.admin_addlineremark'): pass elif request.user.has_perm('timeline.user_getline', line): pass else: raise InvestError(code=2009) else: raise InvestError(code=20072) data['createuser'] = request.user.id # if data.get('createuser',None) is None: # data['createuser'] = request.user.id # createdtime = data.pop('createdtime',None) # if createdtime not in ['None', None, u'None', 'none']: # data['createdtime'] = datetime.datetime.strptime(createdtime.encode('utf-8')[0:19], "%Y-%m-%d %H:%M:%S") # lastmodifytime = data.pop('lastmodifytime', None) # if lastmodifytime not in ['None', None, u'None', 'none']: # data['lastmodifytime'] = datetime.datetime.strptime(lastmodifytime.encode('utf-8')[0:19], "%Y-%m-%d %H:%M:%S") data['datasource'] = request.user.datasource.id try: with transaction.atomic(): timeLineremarkserializer = TimeLineRemarkSerializer(data=data) if timeLineremarkserializer.is_valid(): timeLineremark = timeLineremarkserializer.save() else: raise InvestError(code=20071, msg='data有误_%s\n%s' % ( timeLineremarkserializer.error_messages, timeLineremarkserializer.errors)) if timeLineremark.createuser: add_perm('timeline.user_getlineremark', timeLineremark.createuser, timeLineremark) add_perm('timeline.user_changelineremark', timeLineremark.createuser, timeLineremark) add_perm('timeline.user_deletelineremark', timeLineremark.createuser, timeLineremark) return JSONResponse(SuccessResponse(returnDictChangeToLanguage(timeLineremarkserializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse(ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def create(self, request, *args, **kwargs): data = request.data lang = request.GET.get('lang') orgid = data.get('org', None) if orgid: org = self.get_org(orgid=orgid) if request.user.has_perm('org.admin_addorgremark'): pass elif request.user.has_perm('org.user_addorgremark', org): pass else: raise InvestError(code=2009) else: raise InvestError(code=20072) data['createuser'] = request.user.id data['datasource'] = request.user.datasource.id try: with transaction.atomic(): orgremarkserializer = OrgRemarkDetailSerializer(data=data) if orgremarkserializer.is_valid(): orgremark = orgremarkserializer.save() else: raise InvestError(code=20071, msg='data有误_%s\n%s' % (orgremarkserializer.error_messages, orgremarkserializer.errors)) if orgremark.createuser: add_perm('org.user_getorgremark', orgremark.createuser, orgremark) add_perm('org.user_changeorgremark', orgremark.createuser, orgremark) add_perm('org.user_deleteorgremark', orgremark.createuser, orgremark) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( OrgRemarkDetailSerializer(orgremark).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def retrieve(self, request, *args, **kwargs): try: lang = request.GET.get('lang') instance = self.get_object() if request.user.has_perm('msg.admin_manageSchedule'): pass elif request.user == instance.createuser: pass else: raise InvestError(code=2009) serializer = ScheduleSerializer(instance) return JSONResponse( SuccessResponse( returnDictChangeToLanguage(serializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def retrieve(self, request, *args, **kwargs): try: lang = request.GET.get('lang') remark = self.get_object() if request.user.has_perm('timeline.admin_getlineremark'): timeLineremarkserializer = TimeLineRemarkSerializer elif request.user.has_perm('timeline.user_getlineremark', remark): timeLineremarkserializer = TimeLineRemarkSerializer else: raise InvestError(code=2009) serializer = timeLineremarkserializer(remark) return JSONResponse( SuccessResponse( returnDictChangeToLanguage(serializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def retrieve(self, request, *args, **kwargs): try: lang = request.GET.get('lang') instance = self.get_object() if request.user.has_perm('BD.manageOrgBD'): pass elif request.user.has_perm('BD.user_manageOrgBD', instance): pass else: raise InvestError(2009) serializer = self.serializer_class(instance) return JSONResponse( SuccessResponse( returnDictChangeToLanguage(serializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def update(self, request, *args, **kwargs): try: data = request.data lang = request.GET.get('lang') instance = self.get_object() oldmanager = instance.manager data.pop('createuser', None) data.pop('datasource', None) if request.user.has_perm('BD.manageProjectBD'): pass elif request.user.has_perm('BD.user_manageProjectBD', instance): data = { 'bd_status': data.get('bd_status', instance.bd_status_id) } else: raise InvestError(2009) with transaction.atomic(): projectBD = ProjectBDCreateSerializer(instance, data=data) if projectBD.is_valid(): newprojectBD = projectBD.save() oldmanager_id = data.get('manager', None) if oldmanager_id and oldmanager_id != oldmanager.id: add_perm('BD.user_manageProjectBD', newprojectBD.manager, newprojectBD) rem_perm('BD.user_manageProjectBD', oldmanager, newprojectBD) else: raise InvestError(4009, msg='项目BD修改失败——%s' % projectBD.error_messages) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( ProjectBDSerializer(newprojectBD).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def create(self, request, *args, **kwargs): try: data = request.data lang = request.GET.get('lang') comments = data.get('comments', None) data['createuser'] = request.user.id data['datasource'] = request.user.datasource.id if request.user.has_perm('BD.manageProjectBD'): pass elif request.user.has_perm('BD.user_addProjectBD'): data['manager'] = request.user.id else: raise InvestError(2009) with transaction.atomic(): projectBD = ProjectBDCreateSerializer(data=data) if projectBD.is_valid(): newprojectBD = projectBD.save() if newprojectBD.manager: add_perm('BD.user_manageProjectBD', newprojectBD.manager, newprojectBD) else: raise InvestError(4009, msg='项目BD创建失败——%s' % projectBD.error_messages) if comments: data['projectBD'] = newprojectBD.id commentinstance = ProjectBDCommentsCreateSerializer( data=data) if commentinstance.is_valid(): commentinstance.save() return JSONResponse( SuccessResponse( returnDictChangeToLanguage( ProjectBDSerializer(newprojectBD).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def destroy(self, request, *args, **kwargs): try: lang = request.GET.get('lang') instance = self.get_object() if request.user.has_perm('timeline.admin_deletelineremark'): pass elif request.user.has_perm('timeline.user_deletelineremark', instance): pass else: raise InvestError(code=2009, msg='没有权限') with transaction.atomic(): instance.is_deleted = True instance.deleteduser = request.user instance.deletedtime = datetime.datetime.now() instance.save() return JSONResponse(SuccessResponse(returnDictChangeToLanguage(TimeLineRemarkSerializer(instance).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse(ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def retrieve(self, request, *args, **kwargs): try: lang = request.GET.get('lang') instance = self.get_object() if request.user.has_perm('timeline.admin_getline'): serializerclass = TimeLineSerializer elif request.user.has_perm( 'timeline.user_getline', instance) or request.user in [ instance.proj.takeUser, instance.proj.makeUser ]: serializerclass = TimeLineSerializer else: raise InvestError(code=2009) serializer = serializerclass(instance) return JSONResponse( SuccessResponse( returnDictChangeToLanguage(serializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def retrieve(self, request, *args, **kwargs): try: org = self.get_object() orgusers = org.org_users.all().filter(is_deleted=False) lang = request.GET.get('lang') if request.user.has_perm('org.admin_getorg'): orgserializer = OrgDetailSerializer elif request.user.has_perm('org.user_getorg', org): orgserializer = OrgDetailSerializer elif request.user.trader_relations.all().filter( is_deleted=False, investoruser__in=orgusers).exists(): orgserializer = OrgDetailSerializer else: orgserializer = OrgCommonSerializer serializer = orgserializer(org) return JSONResponse( SuccessResponse( returnDictChangeToLanguage(serializer.data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def addDataroom(self, request, *args, **kwargs): #导数据专用 1 public 2 support 3 investor try: data = request.data lang = request.GET.get('lang') projid = data.get('proj',None) investorid = data.get('investor', None) traderid = data.get('trader', None) dataroomtype = data.get('type',False) if data.get('createuser', None) is None: createuser = request.user.id else: createuser = data.get('createuser') createdtime = data.pop('createdtime', None) if createdtime not in ['None', None, u'None', 'none']: createdtime = datetime.datetime.strptime(createdtime.encode('utf-8')[0:19], "%Y-%m-%d %H:%M:%S") else: createdtime = datetime.datetime.now() try: proj = project.objects.get(id=projid,datasource=request.user.datasource,is_deleted=False) except project.DoesNotExist: raise InvestError(code=4002) with transaction.atomic(): if dataroomtype == 1: dataroomdata = {'proj':projid,'datasource':request.user.datasource.id,'createuser':createuser,'createdtime':createdtime} publicdataroom = self.get_queryset().filter(proj=proj, isPublic=True) if publicdataroom.exists(): responsedic = DataroomCreateSerializer(publicdataroom.first()).data else: dataroomdata['user'] = proj.supportUser_id dataroomdata['isPublic'] = True publicdataroomserializer = DataroomCreateSerializer(data=dataroomdata) if publicdataroomserializer.is_valid(): publicdataroom = publicdataroomserializer.save() responsedic = publicdataroomserializer.data else: raise InvestError(code=20071, msg=publicdataroomserializer.errors) elif dataroomtype == 2: dataroomdata = {'proj': projid, 'datasource': request.user.datasource.id,'createuser': createuser,'createdtime':createdtime} projdataroom = self.get_queryset().filter(proj=proj, user_id=proj.supportUser_id, isPublic=False) if projdataroom.exists(): responsedic = DataroomCreateSerializer(projdataroom.first()).data else: dataroomdata['user'] = proj.supportUser_id dataroomdata['isPublic'] = False supportordataroomserializer = DataroomCreateSerializer(data=dataroomdata) if supportordataroomserializer.is_valid(): supportdataroom = supportordataroomserializer.save() userlist1 = [supportdataroom.createuser, proj.makeUser, proj.takeUser, ] for user in userlist1: add_perm('dataroom.user_getdataroom', user, supportdataroom) add_perm('dataroom.user_getdataroom', supportdataroom.user, supportdataroom) add_perm('dataroom.user_changedataroom', supportdataroom.user, supportdataroom) responsedic = supportordataroomserializer.data else: raise InvestError(code=20071, msg=supportordataroomserializer.errors) elif dataroomtype == 3: dataroomdata = {'proj': projid, 'datasource': request.user.datasource.id, 'createuser': createuser,'createdtime':createdtime} investordataroom = self.get_queryset().filter(proj=proj, user_id=investorid, trader_id=traderid,investor_id=investorid) if investordataroom.exists(): responsedic = DataroomCreateSerializer(investordataroom.first()).data else: dataroomdata['user'] = None dataroomdata['isPublic'] = False dataroomdata['investor'] = investorid dataroomdata['trader'] = traderid investordataroomserializer = DataroomCreateSerializer(data=dataroomdata) if investordataroomserializer.is_valid(): investordata = investordataroomserializer.save() userlist = [investordata.investor, investordata.trader, investordata.createuser, investordata.proj.makeUser, investordata.proj.takeUser, investordata.proj.supportUser] for user in userlist: add_perm('dataroom.user_getdataroom', user, investordata) add_perm('dataroom.user_changedataroom', investordata.investor, investordata) responsedic = investordataroomserializer.data else: raise InvestError(code=20071,msg=investordataroomserializer.errors) else: responsedic = None return JSONResponse(SuccessResponse(returnDictChangeToLanguage(responsedic, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse(ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def update(self, request, *args, **kwargs): try: timeline = self.get_object() if request.user.has_perm( 'timeline.admin_changeline') or request.user.has_perm( 'timeline.user_changeline', timeline) or request.user in [ timeline.proj.takeUser, timeline.proj.makeUser ]: pass else: raise InvestError(2009, msg='没有相应权限') data = request.data lang = request.GET.get('lang') timelinedata = data.pop('timelinedata', None) statudata = data.pop('statusdata', None) sendmessage = False with transaction.atomic(): newactivetimelinestatu, newtimeline = None, None if statudata: timelinetransationStatus = statudata.get( 'transationStatus') if timelinetransationStatus: statudata['lastmodifyuser'] = request.user.id statudata['lastmodifytime'] = datetime.datetime.now() statudata['timeline'] = timeline.id statudata['isActive'] = True timelinestatus = timeline.timeline_transationStatus.all( ).filter(transationStatus__id=timelinetransationStatus, is_deleted=False) if timelinestatus.exists(): activetimelinestatu = timelinestatus.first() if not activetimelinestatu.isActive: sendmessage = True else: activetimelinestatu = None sendmessage = True timeline.timeline_transationStatus.all().update( isActive=False) timelinestatu = TimeLineStatuCreateSerializer( activetimelinestatu, data=statudata) if timelinestatu.is_valid(): newactivetimelinestatu = timelinestatu.save() else: raise InvestError(code=20071, msg=timelinestatu.errors) if timelinedata: timelinedata['lastmodifyuser'] = request.user.id timelinedata['lastmodifytime'] = datetime.datetime.now() timelinedata['datasource'] = request.user.datasource_id timelinedata['proj'] = timeline.proj_id timelinedata['investor'] = timeline.investor_id if timelinedata.get('trader', None) is None: timelinedata['trader'] = timeline.trader_id if timelinedata.get('isClose', None) in [ 'true', 'True', '1', 1, 'Yes', 'yes' ]: timelinedata['closeDate'] = datetime.datetime.now() else: timelinedata['closeDate'] = None timelineseria = TimeLineUpdateSerializer(timeline, data=timelinedata) if timelineseria.is_valid(): newtimeline = timelineseria.save() else: raise InvestError(code=20071, msg=timelineseria.errors) cache_delete_key(self.redis_key + '_%s' % newtimeline.id) if sendmessage: sendmessage_timelineauditstatuchange( newactivetimelinestatu, newtimeline.proj.takeUser, ['app', 'email', 'webmsg'], sender=request.user) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( TimeLineSerializer(timeline).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def create(self, request, *args, **kwargs): try: data = request.data timelinedata = data.pop('timelinedata', None) statudata = data.pop('statusdata', None) lang = request.GET.get('lang') timelinedata['createuser'] = request.user.id timelinedata['datasource'] = request.user.datasource_id if timelinedata.get( 'isClose', None) in ['true', 'True', '1', 1, 'Yes', 'yes']: timelinedata['closeDate'] = datetime.datetime.now() with transaction.atomic(): timelineserializer = TimeLineCreateSerializer( data=timelinedata) if timelineserializer.is_valid(): newtimeline = timelineserializer.save() if statudata: statudata['timeline'] = newtimeline.id statudata['datasource'] = request.user.datasource_id timelinestatu = TimeLineStatuCreateSerializer( data=statudata) if timelinestatu.is_valid(): timelinestatu.save() else: raise InvestError(code=20071, msg=timelinestatu.errors) else: statudata = { 'createuser': request.user.id, 'createdtime': datetime.datetime.now(), 'timeline': newtimeline.id, 'isActive': True, 'transationStatus': 1, 'datasource': 1, } timelinestatu = TimeLineStatuCreateSerializer( data=statudata) if timelinestatu.is_valid(): timelinestatu.save() else: raise InvestError(code=20071, msg=timelinestatu.errors) else: raise InvestError(code=20071, msg=timelineserializer.errors) userlist = [ newtimeline.investor, newtimeline.trader, newtimeline.createuser, newtimeline.proj.makeUser, newtimeline.proj.takeUser, newtimeline.proj.supportUser ] userlist = set(userlist) for user in userlist: add_perm('timeline.user_getline', user, newtimeline) add_perm('timeline.user_changeline', newtimeline.trader, newtimeline) add_perm('timeline.user_deleteline', newtimeline.trader, newtimeline) add_perm('timeline.user_changeline', newtimeline.createuser, newtimeline) add_perm('timeline.user_deleteline', newtimeline.createuser, newtimeline) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( TimeLineSerializer(newtimeline).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def update(self, request, *args, **kwargs): data = request.data lang = request.GET.get('lang') IPOdate = data.pop('IPOdate', None) if IPOdate not in ['None', None, u'None', 'none']: data['IPOdate'] = datetime.datetime.strptime( IPOdate[0:10], '%Y-%m-%d') data['lastmodifyuser'] = request.user.id data['lastmodifytime'] = datetime.datetime.now() try: org = self.get_object() if request.user.has_perm('org.admin_changeorg'): pass elif request.user.has_perm('org.user_changeorg', org): pass else: raise InvestError(code=2009) with transaction.atomic(): orgTransactionPhases = data.pop('orgtransactionphase', None) orgupdateserializer = OrgUpdateSerializer(org, data=data) if orgupdateserializer.is_valid(): org = orgupdateserializer.save() if orgTransactionPhases: transactionPhaselist = TransactionPhases.objects.filter( is_deleted=False).in_bulk(orgTransactionPhases) addlist = [ item for item in transactionPhaselist if item not in org.orgtransactionphase.all() ] removelist = [ item for item in org.orgtransactionphase.all() if item not in transactionPhaselist ] org.org_orgTransactionPhases.filter( transactionPhase__in=removelist, is_deleted=False).update( is_deleted=True, deletedtime=datetime.datetime.now(), deleteduser=request.user) usertaglist = [] for transactionPhase in addlist: usertaglist.append( orgTransactionPhase( org=org, transactionPhase_id=transactionPhase, createuser=request.user, createdtime=datetime.datetime.now())) org.org_orgTransactionPhases.bulk_create(usertaglist) else: raise InvestError(code=20071, msg='data有误_%s\n%s' % (orgupdateserializer.error_messages, orgupdateserializer.errors)) cache_delete_key(self.redis_key + '_%s' % org.id) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( OrgDetailSerializer(org).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))
def destroy(self, request, *args, **kwargs): try: instance = self.get_object() lang = request.GET.get('lang') if request.user.has_perm('org.admin_deleteorg'): pass elif request.user.has_perm('org.user_deleteorg', instance): pass else: raise InvestError(code=2009) with transaction.atomic(): for link in [ 'org_users', 'org_orgTransactionPhases', 'org_remarks', 'org_unreachuser' ]: if link in ['org_users']: manager = getattr(instance, link, None) if not manager: continue # one to one if isinstance(manager, models.Model): if hasattr( manager, 'is_deleted') and not manager.is_deleted: raise InvestError( code=2010, msg=u'{} 上有关联数据'.format(link)) else: try: manager.model._meta.get_field('is_deleted') if manager.all().filter( is_deleted=False).count(): raise InvestError( code=2010, msg=u'{} 上有关联数据'.format(link)) except FieldDoesNotExist: if manager.all().count(): raise InvestError( code=2010, msg=u'{} 上有关联数据,且没有is_deleted字段'. format(link)) else: manager = getattr(instance, link, None) if not manager: continue # one to one if isinstance(manager, models.Model): if hasattr( manager, 'is_deleted') and not manager.is_deleted: manager.is_deleted = True manager.save() else: try: manager.model._meta.get_field('is_deleted') if manager.all().filter( is_deleted=False).count(): manager.all().update(is_deleted=True) except FieldDoesNotExist: pass instance.is_deleted = True instance.deleteduser = request.user instance.deletetime = datetime.datetime.utcnow() instance.save() cache_delete_key(self.redis_key + '_%s' % instance.id) return JSONResponse( SuccessResponse( returnDictChangeToLanguage( OrgDetailSerializer(instance).data, lang))) except InvestError as err: return JSONResponse(InvestErrorResponse(err)) except Exception: catchexcption(request) return JSONResponse( ExceptionResponse(traceback.format_exc().split('\n')[-2]))