コード例 #1
0
 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]))
コード例 #2
0
 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]))
コード例 #3
0
 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]))
コード例 #4
0
 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]))
コード例 #5
0
 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]))
コード例 #6
0
 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]))
コード例 #7
0
 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]))
コード例 #8
0
 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]))
コード例 #9
0
 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]))
コード例 #10
0
 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]))
コード例 #11
0
    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]))
コード例 #12
0
 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]))
コード例 #13
0
 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]))
コード例 #14
0
    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]))
コード例 #15
0
 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]))
コード例 #16
0
 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]))
コード例 #17
0
 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]))
コード例 #18
0
 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]))