예제 #1
0
    def post(self):
        appcode = self.request.get('appcode', None)
        imagenum = self.request.get('imagenum', '0')
        plugin = None
        if 0 < Plugin.all().filter('appcode =', appcode).count():
            for p in Plugin.all().filter('appcode =', appcode):
                plugin = p
        if not plugin:
            self.flush({"status": 404})
            return

        result = {'status': 200}
        if int(imagenum) != len(plugin.imagelist):
            for imgid in plugin.imagelist:
                    b = blobstore.BlobInfo.get(imgid)
                    if b:
                        b.delete()
            imgurllist = []
            for i in range(10):
                imgurllist.append(blobstore.create_upload_url('/imageupload?pluginid=%s' % (plugin.key().id())))
            result['upload_image_url'] = imgurllist
        if not plugin.apkkey:
            result['upload_url'] = blobstore.create_upload_url('/upload?pluginid=%s' % (plugin.key().id()))
        if not plugin.imageid:
            result['upload_icon_url'] = blobstore.create_upload_url('/iconupload?pluginid=%s' % (plugin.key().id()))
        self.flush(result)
예제 #2
0
파일: kind.py 프로젝트: wangjian2254/mogu3
    def get(self):
        kindid = self.request.get('kindid',None)

        if kindid:
            kindid = int(kindid)
            # kind = Kind.get_by_id(kindid)
        else:
            return self.redirect('/KindList')
        url = urllib.quote( 'FenKindPlugin?kindid=%s'%kindid)
        kindlist = []
        allpluginlist = Plugin.all().filter('isdel =',False)

        for kind in Kind.get_by_id([kindid]):
            if not kind:
                continue
            pluginlist = Plugin.get_by_id(kind.applist)
            pluginlistempty= []
            for p in allpluginlist:
                f = False
                for pl in pluginlist:
                    if p.key().id() == pl.key().id():
                        f = True
                        break
                if not f:
                    pluginlistempty.append(p)
            kindlist.append((kind,pluginlist,pluginlistempty))
        self.render('template/kind/fenkindplugin.html',{"kindlist":kindlist, 'url':url})
예제 #3
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def get(self, *args):
     pluginid = self.request.get('pluginid')
     kindid = self.request.get('kindid')
     plugin = Plugin.get_by_id(int(pluginid))
     query = Plugin.all().filter('kindids =', int(kindid)).order('index_time').fetch(1)
     for p in query:
         if p.key().id() != plugin.key().id():
             import datetime as dt
             plugin.index_time = p.index_time - dt.timedelta(minutes=1)
             plugin.put()
             self.getResult(True, u'置顶成功。', None)
         else:
             self.getResult(False, u'置顶失败。', None)
예제 #4
0
    def get(self):
        pluginVersionDict = {}
        query=Plugin.all()
        appcode=self.request.get('appcode',None)
        if appcode:
            query.filter('appcode =',appcode)
        for plugin in query.order('-lastUpdateTime'):
            if plugin.isdel:
                pluginVersionDict[plugin.appcode] = {'isdel': plugin.isdel}
            else:
                pluginVersionDict[plugin.appcode] = {'plugin': plugin, 'isdel': plugin.isdel}
                pluginVersion = memcache.get('newpluginVersion' + plugin.appcode)
                if not pluginVersion:
                    pluginVersion = PluginVersion.all().filter('plugin =', plugin.key().id()).order(
                        '-versionnum').fetch(1)
                    if len(pluginVersion):
                        pluginVersion = pluginVersion[0]
                        memcache.set('newpluginVersion' + plugin.appcode, pluginVersion, 360000)
                if pluginVersion:
                    pluginVersionDict[plugin.appcode]['pluginVersion'] = pluginVersion
                    pluginVersionDict[plugin.appcode]['newversionnum'] = pluginVersion.versionnum
                if not pluginVersion.data and not pluginVersion.datakey:
                    del pluginVersionDict[appcode]

        # 输出 json 字符串 plugin 对象
        result={'pluginlist':jsonToStr(pluginVersionDict),"notice":[]}
        self.flush(result)
예제 #5
0
 def post(self):
     appcodes = self.request.get('appcodes', '').split(',')
     pluginVersionDict = {}
     for appcode in appcodes:
         versionnum = self.request.get(appcode, '')
         pluginVersionDict[appcode] = {'versionnum': versionnum, 'isdel': True}
         plugin = memcache.get('plugin' + appcode)
         if not plugin:
             plugin = Plugin.all().filter('appcode =', appcode).fetch(1)
             if len(plugin):
                 plugin = plugin[0]
                 memcache.set('plugin' + appcode, plugin, 360000)
         if plugin and plugin.isdel == False:
             pluginVersionDict[appcode]['isdel'] = False
             pluginVersion = memcache.get('newpluginVersion' + appcode)
             if not pluginVersion:
                 pluginVersion = PluginVersion.all().filter('plugin =', plugin.key().id()).order(
                     '-versionnum').fetch(1)
                 if len(pluginVersion):
                     pluginVersion = pluginVersion[0]
                     memcache.set('newpluginVersion' + appcode, pluginVersion, 360000)
             if pluginVersion:
                 pluginVersionDict[appcode]['plugin'] = plugin
                 pluginVersionDict[appcode]['pluginVersion'] = pluginVersion
                 pluginVersionDict[appcode]['newversionnum'] = pluginVersion.versionnum
             if not pluginVersion.data and not pluginVersion.datakey:
                 del pluginVersionDict[appcode]
     # 输出 json 字符串 plugin 对象
     if pluginVersionDict:
         msg=[{"msg":u"新收到%s条插件更新信息"%(len(pluginVersionDict.keys()),),"type":1}]
     else:
         msg=[]
     result={'pluginlist':jsonToStr(pluginVersionDict),"notice":[]}
     self.flush(result)
예제 #6
0
    def get(self):
        id = self.request.get('id', None)
        plugin = {}
        if id:
            plugin = Plugin.get_by_id(int(id))

        self.render('template/plugin/pluginUpdate.html', {'plugin': plugin, 'id': id})
예제 #7
0
 def post(self):
     noteupdate = datetime.datetime.utcnow() + timezone
     id = self.request.get('id', None)
     title = self.request.get('title', None)
     type = self.request.get('type', None)
     pluginid = self.request.get('plugin', None)
     startdate = self.request.get('startdate', None)
     enddate = self.request.get('enddate', None)
     plugin = None
     if type == '2' and pluginid:
         plugin = Plugin.get_by_id(int(pluginid))
     if id:
         notice = Notice.get_by_id(int(id))
         notice.content = []
     else:
         notice = Notice()
     if plugin:
         notice.plugin = plugin.key().id()
         notice.pluginimg = plugin.imageid
     notice.title = title
     notice.startdate = datetime.datetime.strptime(startdate + ' 00:00:00', '%Y/%m/%d %H:%M:%S')
     notice.enddate = datetime.datetime.strptime(enddate + ' 23:59:59', '%Y/%m/%d %H:%M:%S')
     notice.type = int(type)
     notice.lastUpdateTime = noteupdate
     notice.put()
     deleteNoticeMemcache()
     noticeconten = []
     for item in notice.content:
         noticeconten.append(json.loads(item))
     noticedict = {'id': notice.key().id(), 'title': notice.title, 'type': notice.type,
                   'lastUpdateTime': notice.lastUpdateTime.strftime('%Y-%m-%d %H:%M'),
                   'startdate': notice.startdate.strftime('%Y-%m-%d %H:%M'), 'pluginid': notice.plugin,
                   'enddate': notice.enddate.strftime('%Y-%m-%d %H:%M'), 'pluginimg': notice.pluginimg,
                   'noticeconten': noticeconten}
     self.getResult(True, u'保存系统信息成功', noticedict)
예제 #8
0
 def get(self):
     #url 缓存
     cachename = 'plugininfoall'
     cacheresult = memcache.get(cachename)
     if cacheresult:
         self.flush(cacheresult)
         return
     #无 url缓存
     allkindlist = memcache.get('allkindlist')
     if not allkindlist:
         allkindlist = Kind.get_by_id(getKindSort().kindlist)
         memcache.set('allkindlist', allkindlist, 3600 * 24)
     kindlist = []
     pluginlist = []
     for i, kind in enumerate(allkindlist):
         pluginquery = Plugin.all().filter('kindids =', kind.key().id()).filter('isactive =', True).order('index_time')
         k = {'name': kind.name, 'index': i, 'list': []}
         for p in pluginquery.fetch(7):
             pluginlist.append(json_to_str(p))
             k['list'].append(p.appcode)
         kindlist.append(k)
     # 输出 json 字符串 plugin 对象
     # result = {'pluginlist': jsonToStr(pluginVersionDict), "notice": [], 'kind': kindlist, 'status': 200,
     #           'success': True, 'message': u''}
     self.getResult(True, u'', {'pluginlist': pluginlist, 'kind': kindlist, "notice": []}, cachename=cachename)
예제 #9
0
    def get(self):
        id = self.request.get('id', None)
        pluginid = self.request.get('pluginid', None)
        plugin = {}
        pluginVersionList = []
        if pluginid:
            plugin = Plugin.get_by_id(int(pluginid))
            pluginVersionList = PluginVersion.all().filter('plugin =', int(pluginid)).order('-versionnum')

        pluginVersion = {}
        if id:
            pluginVersion = PluginVersion.get_by_id(int(id))
            if not pluginid or pluginVersion.plugin != int(pluginid):
                plugin = Plugin.get_by_id(pluginVersion.plugin)

        self.render('template/plugin/pluginUpload.html',
                    {'plugin': plugin, 'pluginVersion': pluginVersion, 'pluginVersionList': pluginVersionList, 'id': id,
                     'pluginid': pluginid})
예제 #10
0
    def get(self):
        pluginid = self.request.get('pluginid', '')
        id = self.request.get('id', '')
        pluginVersionList=[]
        if pluginid:
            plugin = Plugin.get_by_id(int(pluginid))
            pluginVersionList = PluginVersion.all().filter('plugin =', int(pluginid)).order('-versionnum')

        pluginVersion = {}
        if id:
            pluginVersion = PluginVersion.get_by_id(int(id))
            if not pluginid or pluginVersion.plugin != int(pluginid):
                plugin = Plugin.get_by_id(pluginVersion.plugin)
        data={'plugin': plugin, 'pluginVersion': pluginVersion, 'pluginVersionList': pluginVersionList, 'id': id,
                     'pluginid': pluginid}
        upload_url = blobstore.create_upload_url('/upload?pluginversionid=%s'%(pluginVersion.key().id()))
        data['upload_url']=upload_url
        self.render('template/plugin/pluginUpload2.html',data)
예제 #11
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def get(self, *args):
     cachename = 'appnamelist'
     cacheresult = memcache.get(cachename)
     if cacheresult:
         self.flush(cacheresult)
         return
     l = []
     for p in Plugin.all().filter('isactive =', True).order('__key__'):
         l.append({'id': p.key().id(), 'name': p.name, 'icon': p.imageid})
     self.getResult(True, u'', l, cachename=cachename)
예제 #12
0
 def get(self):
     id = self.request.get('id', None)
     plugin = {}
     pluginVersion = {}
     if id:
         plugin = Plugin.get_by_id(int(id))
         pvl = PluginVersion.all().filter('plugin =', int(id)).order('-versionnum').fetch(1)
         if pvl:
             pluginVersion = pvl[0]
     self.render('template/plugin/pluginDetail.html', {'plugin': plugin, 'pluginVersion': pluginVersion})
예제 #13
0
파일: kind.py 프로젝트: wangjian2254/mogu3
    def get(self):
        kindlist = []
        allpluginlist = Plugin.all().filter('isdel =',False)

        for kind in Kind.get_by_id(getKindSort().kindlist):
            if not kind:
                continue
            pluginlist = Plugin.get_by_id(kind.applist)
            pluginlistempty= []
            for p in allpluginlist:
                f = False
                for pl in pluginlist:
                    if p.key().id() == pl.key().id():
                        f = True
                        break
                if not f:
                    pluginlistempty.append(p)
            kindlist.append((kind,pluginlist,pluginlistempty))
        self.render('template/kind/kindList.html',{"kindlist":kindlist})
예제 #14
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def get(self, *args):
     pluginid = self.request.get('pluginid')
     kindid = self.request.get('kindid')
     plugin = Plugin.get_by_id(int(pluginid))
     if int(kindid) in plugin.kindids:
         plugin.kindids.remove(int(kindid))
         plugin.put()
         self.getResult(True, u'应用移出成功。', None)
     else:
         self.getResult(False, u'应用已经不在分类内了。', None)
예제 #15
0
 def post(self, *args):
     id = self.request.get('id', None)
     pluginid = self.request.get('pluginid', None)
     if id and pluginid:
         id = int(id)
         plugin = Plugin.get_by_id(int(pluginid))
         if id in plugin.kindids:
             plugin.kindids.remove(id)
             plugin.put()
     self.getResult(True, u'分类删除应用成功', None)
예제 #16
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def get(self, *args):
     pluginid = self.request.get('pluginid')
     kindid = self.request.get('kindid')
     plugin = Plugin.get_by_id(int(pluginid))
     if int(kindid) not in plugin.kindids:
         plugin.kindids.append(int(kindid))
         plugin.put()
         self.getResult(True, u'加入分类成功。', None)
     else:
         self.getResult(False, u'应用已经在分类内了。', None)
예제 #17
0
 def get(self):
     id = self.request.get('id', None)
     notice = {}
     if id:
         notice = Notice.get_by_id(int(id))
     noticeconten=[]
     if notice:
         for item in notice.content:
             noticeconten.append(json.loads(item))
     pluginList = Plugin.all().filter('isdel =', False).order('-lastUpdateTime')
     self.render('template/notice/noticeDetail.html', {'notice': notice, 'noticecontent':noticeconten, 'id': id, 'pluginList': pluginList})
예제 #18
0
 def post(self):
     appcode = self.request.get('appcode', None)
     for plugin in Plugin.all().filter('appcode =', appcode):
         for pv in PluginVersion.all().filter('plugin =',plugin.key().id()):
             if pv.datakey:
                 b=blobstore.BlobInfo.get(pv.datakey)
                 if b:
                     b.delete()
             upload_url = blobstore.create_upload_url('/upload?pluginversionid=%s'%(pv.key().id()))
             return self.flush({'status' : 200, 'upload_url' : upload_url})
     return self.flush({'status':500,'message':u'插件已经存在'})
예제 #19
0
 def get(self):
     id = self.request.get('id', None)
     if id:
         plugin = Plugin.get_by_id(int(id))
         for pv in PluginVersion.all().filter('plugin =', int(id)):
             if pv.imageids:
                 db.delete(Images.get_by_id(pv.imageids))
             pv.delete()
         plugin.delete()
         self.flush(getResult(id, True, u'删除成功。'))
     else:
         self.flush(getResult('', False, u'删除失败,未提供插件id。'))
예제 #20
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def get(self, *args):
     user = get_current_user(self)
     pluginid = self.request.get('pluginid')
     plugin = Plugin.get_by_id(int(pluginid))
     if not plugin:
         self.getResult(True, u'删除成功。', None)
         return
     if user.get("auth") == 'admin' or user.get('username') == plugin.username:
         plugin.delete()
         self.getResult(True, u'删除成功。', None)
     else:
         self.getResult(False, u'删除失败,权限不足。', None)
예제 #21
0
    def post(self):
        pluginid = self.request.get('pluginid', '')
        needBigData=False
        id = self.request.get('id', '')
        versioncode = self.request.get('versioncode', '')
        versionnum = self.request.get('versionnum', '')
        updateDesc = self.request.get('updateDesc', '')
        if id:
            pluginVersion = PluginVersion.get_by_id(int(id))
        else:
            pluginVersion = PluginVersion()
            pluginVersion.plugin = int(pluginid)
        pluginVersion.versioncode = versioncode
        pluginVersion.versionnum = int(versionnum)
        pluginVersion.updateDesc = updateDesc

        appdata = self.request.POST.get('data')
        if appdata != '' and appdata != u'' and appdata != None:
            pluginVersion.data = db.Blob(appdata.file.read())
            pluginVersion.size = appdata.bufsize
        else:
            needBigData=True
        for i in range(1, 11):
            imgfilename = 'image' + str(i)
            imgfield = self.request.POST.get(imgfilename)
            if imgfield != '' and imgfield != u'' and imgfield != None:
                if imgfield.type.lower() not in ['image/pjpeg', 'image/x-png', 'image/jpeg', 'image/png', 'image/gif',
                                                 'image/jpg']:
                    continue
                imgfile = Images()
                imgfile.filename = imgfield.filename
                imgfile.filetype = imgfield.type
                imgfile.data = db.Blob(imgfield.file.read())
                imgfile.size = imgfield.bufsize
                imgfile.put()
                pluginVersion.imageids.append(imgfile.key().id())
        pluginVersion.put()
        plugin = {}
        pluginVersionList = []
        if pluginid:
            plugin = Plugin.get_by_id(int(pluginid))
            pluginVersionList = PluginVersion.all().filter('plugin =', int(pluginid)).order('-versionnum')

        data={'plugin': plugin, 'pluginVersion': pluginVersion, 'pluginVersionList': pluginVersionList, 'id': id,
                     'pluginid': pluginid, 'result': 'succeed', 'msg': u'操作成功。','needBigData':needBigData}
        if needBigData:
            upload_url = blobstore.create_upload_url('/upload?pluginversionid=%s'%(pluginVersion.key().id()))
            data['upload_url']=upload_url
            data['msg']= u'请上传APK文件。'
            self.render('template/plugin/pluginUpload2.html',data)
        else:
            self.render('template/plugin/pluginUpload.html',data )
예제 #22
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def post(self):
     upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
     if not upload_files:
         self.response.out.write(
             json.dumps({'success': False, 'message': u'上传应用图片失败', 'status_code': 200, 'dialog': 1}))
         return
     blob_info = upload_files[0]
     pluginid = self.request.get('pluginid')
     plugin = Plugin.get_by_id(int(pluginid))
     plugin.imagelist.append('%s.%s' % (str(blob_info.key()), blob_info.filename.split('.')[-1]))
     plugin.put()
     self.response.out.write(json.dumps(
         {'success': True, 'result': '%s.%s' % (str(blob_info.key()), blob_info.filename.split('.')[-1]),
          'message': u'上传应用图片成功', 'status_code': 200, 'dialog': 1}))
예제 #23
0
파일: views.py 프로젝트: wangjian2254/mogu3
    def post(self, *args):
        pluginid = self.request.get('pluginid')
        updatedesc = self.request.get('updatedesc')

        if not pluginid:
            self.getResult(False, u'请选择应用。', None)
            return
        else:
            plugin = Plugin.get_by_id(int(pluginid))
        plugin.updatedesc = updatedesc
        plugin.put()
        upload_url = blobstore.create_upload_url('/upload?pluginid=%s' % (plugin.key().id()))
        self.getResult(True, u'保存应用成功',
                       {"pluginid": plugin.key().id(), 'upload_url': upload_url})
예제 #24
0
파일: views.py 프로젝트: wangjian2254/mogu3
    def get(self, *args):
        user = get_current_user(self)
        l = []
        count = 0
        query = []
        cachename = ''
        if user.get('auth') == 'admin':
            page = int(self.request.get('page', '0'))
            kind = self.request.get('kind', '')
            cachename = 'applist_%s_%s' % (kind, page)
            cacheresult = memcache.get(cachename)
            if cacheresult:
                self.flush(cacheresult)
                return

            if kind:
                query = Plugin.all().order('index_time')
                query = query.filter('kindids =', int(kind))
                count = query.count()
            else:
                query = Plugin.all().order('__key__')
                count = PluginCount.getPluginCount()
            if not page:
                query = query.fetch(30)
            else:
                query = query.fetch(30, 30 * page)

        if user.get('auth') == 'user':
            cachename = 'user_applist_%s' % (user.get('username'))
            cacheresult = memcache.get(cachename)
            if cacheresult:
                self.flush(cacheresult)
                return
            query = Plugin.all().filter('username ='******'username')).order('__key__')
            count = query.count()
        self.plugin_dict(l, count, query, cachename)
예제 #25
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def post(self):
     upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
     if not upload_files:
         self.response.out.write(
             json.dumps({'success': False, 'message': u'上传图标失败', 'status_code': 200, 'dialog': 1}))
         return
     blob_info = upload_files[0]
     pluginid = self.request.get('pluginid')
     plugin = Plugin.get_by_id(int(pluginid))
     if plugin.imageid:
         b = BlobInfo.get(plugin.imageid.split('.')[0])
         if b:
             b.delete()
     plugin.imageid = '%s.%s' % (str(blob_info.key()), blob_info.filename.split('.')[-1])
     plugin.put()
     self.response.out.write(json.dumps({'success': True, 'message': u'上传图标成功', 'status_code': 200, 'dialog': 1}))
예제 #26
0
파일: views.py 프로젝트: wangjian2254/mogu3
    def post(self):
        imgid=self.request.get("imagekey", '')
        filename = str(urllib.unquote(imgid))
        pluginid = self.request.get('pluginid')
        plugin = Plugin.get_by_id(int(pluginid))
        imgid = imgid.split('.')[0]


        if filename in plugin.imagelist:
            plugin.imagelist.remove(filename)
            plugin.put()
            img = BlobInfo.get(imgid)
            if img:
                img.delete()
            self.getResult(True, u'图片删除成功', None)
            return
        self.getResult(False, u'图片删除失败', None)
예제 #27
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def post(self):
     upload_files = self.get_uploads('file')  # 'file' is file upload field in the form
     if not upload_files:
         self.response.out.write(
             json.dumps({'success': False, 'message': u'上传APK失败', 'status_code': 200, 'dialog': 1}))
         return
     blob_info = upload_files[0]
     pluginid = self.request.get('pluginid')
     plugin = Plugin.get_by_id(int(pluginid))
     if plugin.apkkey:
         b = BlobInfo.get(plugin.apkkey)
         if b:
             b.delete()
     plugin.apkkey = str(blob_info.key())
     plugin.apkverson += 1
     plugin.type_status = 1
     plugin.put()
     self.response.out.write(json.dumps({'success': True, 'message': u'上传APK成功', 'status_code': 200, 'dialog': 1}))
예제 #28
0
파일: views.py 프로젝트: wangjian2254/mogu3
 def post(self):
     pluginids = self.request.get('pluginids','')
     import hashlib
     cachename = hashlib.md5(pluginids).hexdigest().upper()
     cacheresult = memcache.get(cachename)
     if cacheresult:
         self.flush(cacheresult)
         return
     pluginids = pluginids.split(',')
     ids = []
     for i in pluginids:
         try:
             ids.append(int(i))
         except:
             pass
     query = Plugin.get_by_id(ids)
     count = len(ids)
     l = []
     self.plugin_dict(l, count, query, cachename)
예제 #29
0
 def get(self):
     pid = self.request.get('pluginid', None)
     if pid:
         p = Plugin.get_by_id(int(pid))
     pvid = self.request.get('id', None)
     if not pvid:
         pvlist = PluginVersion.all().filter('plugin =', int(pid)).order('-versionnum').fetch(1)
         if len(pvlist):
             pvid = pvlist[0].key().id()
     if pvid:
         pv = PluginVersion.get_by_id(int(pvid))
         if pv:
             if pv.datakey:
                 self.redirect('/serve/%s' % pv.datakey)
                 return
             self.response.headers['Content-Type'] = 'application/octet-stream'
             self.response.headers['Content-Length'] = pv.size
             self.response.out.write(pv.data)
             return
     self.error(404)
예제 #30
0
def jsonStrNotice(noticelist):
    nlist = []
    for notice in noticelist:
        n = {'title': notice.title, 'id': notice.key().id(), 'content': [], 'isdel': notice.isdel, 'type': notice.type,
             'lastUpdateTime': notice.lastUpdateTime.strftime('%Y-%m-%d %H:%M'),
             'startdate': notice.startdate.strftime('%Y-%m-%d %H:%M'),
             'enddate': notice.enddate.strftime('%Y-%m-%d %H:%M')}
        if notice.type == 1:
            for c in notice.content:
                n['content'].append(json.loads(c))
        if notice.type == 2 and notice.plugin:
            plugin = Plugin.get_by_id(notice.plugin)
            n['pluginappcode'] = plugin.appcode
            n['content'].append({'content': plugin.desc, 'type': 'text'})
            n['content'].append({'content': plugin.updatedesc, 'type': 'text'})
            for imgid in plugin.imagelist:
                n['content'].append(
                    {'type': 'img', 'imgid': imgid, 'url': '%s/download/%s' % (WEBURL, imgid)})

        nlist.append(n)
    return nlist
예제 #31
0
def jsonStrNotice(noticelist):
    nlist=[]
    for notice in noticelist:
        n={'title':notice.title, 'id':notice.key().id(),'content':[], 'isdel':notice.isdel, 'type':notice.type, 'lastUpdateTime':notice.lastUpdateTime.strftime('%Y-%m-%d %H:%M'), 'startdate':notice.startdate.strftime('%Y-%m-%d %H:%M'),'enddate':notice.enddate.strftime('%Y-%m-%d %H:%M')}
        if notice.type==1:
            for c in notice.content:
                n['content'].append(json.loads(c))
        if notice.type==2 and notice.plugin:
            plugin=Plugin.get_by_id(notice.plugin)
            n['pluginappcode']=plugin.appcode
            n['content'].append({'content':plugin.desc, 'type':'text'})

            pluginVersionList=PluginVersion.all().filter('plugin =',plugin.key().id()).order('-versionnum').fetch(1)
            if len(pluginVersionList):
                pluginVersion=pluginVersionList[0]
                n['content'].append({'content':pluginVersion.updateDesc, 'type':'text'})
                n['pluginimg']=notice.pluginimg
                for imgid in pluginVersion.imageids:
                    n['content'].append({'type': 'img', 'imgid': imgid, 'url': '%s/download?image_id=%s' % (WEBURL, imgid)})
        nlist.append(n)
    return nlist
예제 #32
0
    def post(self):
        noteupdate = datetime.datetime.utcnow() + timezone
        id = self.request.get('id', None)
        name = self.request.get('name', None)
        # kind = self.request.get('kind', None)
        # kinds = []
        # if kind:
        #     kinds = kind.split()
        code = self.request.get('code', None)
        appcode = self.request.get('appcode', None)
        desc = self.request.get('desc', None)
        if id:
            plugin = Plugin.get_by_id(int(id))
        else:
            plugin = Plugin()

        plugin.name = name
        # plugin.kinds = kinds
        plugin.code = code
        plugin.appcode = appcode
        plugin.desc = desc
        plugin.lastUpdateTime = noteupdate
        if not id and 0 < Plugin.all().filter('appcode =', appcode).count():
            self.render('template/plugin/pluginUpdate.html',
                        {'plugin': plugin, 'id': id, 'result': 'warning', 'msg': u'插件包名已经存在。'})
            return
        plugin.put()
        self.render('template/plugin/pluginUpdate.html',
                    {'plugin': plugin, 'id': plugin.key().id(), 'result': 'succeed', 'msg': u'修改成功。'})
예제 #33
0
 def get(self):
     pluginList = Plugin.all().filter('isdel =', False).order('-date')
     self.render('template/plugin/pluginList.html', {'pluginList': pluginList})
예제 #34
0
    def post(self):
        noteupdate = datetime.datetime.utcnow() + timezone
        id = self.request.get('id', None)
        title = self.request.get('title', None)
        indexs = self.request.get('index', '').split(',')
        type = self.request.get('type', None)
        pluginid = self.request.get('plugin', None)
        pluginimg = self.request.get('pluginimg', None)
        startdate = self.request.get('startdate', None)
        enddate = self.request.get('enddate', None)
        plugin = None
        if type == '2' and pluginid:
            plugin = Plugin.get_by_id(int(pluginid))

        if id:
            notice = Notice.get_by_id(int(id))
            notice.content=[]
        else:
            notice = Notice()
        if plugin:
            notice.plugin=plugin.key().id()
            notice.pluginimg=int(pluginimg)
        notice.title = title
        notice.startdate=datetime.datetime.strptime(startdate+' 00:00:00','%Y-%m-%d %H:%M:%S')
        notice.enddate=datetime.datetime.strptime(enddate+' 23:59:59','%Y-%m-%d %H:%M:%S')
        for inputname in indexs:
            content = self.request.POST.get(inputname, '')
            if content != '' and content != u'' and content != None:
                if inputname.find('image') == 0:
                    # imgfield = self.request.POST.get(inputname)
                    if content != '' and content != u'' and content != None:
                        if isinstance(content,unicode):
                            try:
                                content=int(content)
                                notice.content.append(json.dumps({'type': 'img', 'imgid': content, 'url': '%s/download?image_id=%s' % (WEBURL, content)}))
                                continue
                            except:
                                pass


                        elif content.type.lower() not in ['image/pjpeg', 'image/x-png', 'image/jpeg', 'image/png',
                                                        'image/gif',
                                                        'image/jpg']:
                            continue
                        imgfile = Images()
                        imgfile.filename = content.filename
                        imgfile.filetype = content.type
                        imgfile.data = db.Blob(content.file.read())
                        imgfile.size = content.bufsize
                        imgfile.put()
                    notice.content.append(json.dumps({'type': 'img', 'imgid': imgfile.key().id(), 'url': '%s/download?image_id=%s' % (WEBURL, imgfile.key().id())}))
                if inputname.find('content') == 0:
                    notice.content.append(json.dumps({'type': 'text', 'content': content}))
        notice.type = int(type)

        notice.lastUpdateTime = noteupdate

        notice.put()
        deleteNoticeMemcache()
        noticeconten=[]
        for item in notice.content:
            noticeconten.append(json.loads(item))
        pluginList = Plugin.all().filter('isdel =', False).order('-lastUpdateTime')
        self.render('template/notice/noticeUpdate.html',
                    {'notice': notice,'noteupdate':noteupdate, 'noticecontent':noticeconten, 'id': notice.key().id(), 'pluginList': pluginList, 'result': 'succeed',
                     'msg': u'修改成功。'})