示例#1
0
 def post(self, **kwargs):
     batch = []
     blob_info = self.get_uploads('Filedata')[0]
     page_id = re.sub('\/edit\/page\/','',self.request.get('folder'))
     page_id = re.sub('\D*','', decrypt(page_id.decode('hex')))
     header_image_url = images.get_serving_url(str(blob_info.key()))
     
     #update uploaded file info
     uploaded_file = UploadedFiles.get_by_key_name(page_id)
     if not uploaded_file:
         uploaded_file = UploadedFiles(key_name=page_id,blob=blob_info.key(),page_id=page_id)
         batch.append(uploaded_file) 
     else:
         blobstore.delete(uploaded_file.blob.key())
         uploaded_file.blob=blob_info.key()
         batch.append(uploaded_file)
     
     #update page info
     page = Page.get_by_key_name(page_id)
     page.header_image_url = header_image_url
     batch.append(page) 
     
     if batch:
         db.put(batch)
     self.response.set_status(302)
示例#2
0
def event(page_id):
    s = ''
    page = Page.get_by_key_name(str(page_id))
    if page:
        s = 'data: %s\r\n\r\n' % page.url
    resp = make_response(s)
    resp.headers['Content-Type'] = 'text/event-stream'
    return resp
示例#3
0
 def get(self, **kwargs):
     page_id = self.request.get('page_id')
     try:
         page = Page.get_by_key_name(page_id)
         widgets = Widget.all().filter('page =', page).filter('deleted = ', False).order('order')
     except:
         page=None
         widgets=None
     self.render("app/fb-tab.html", page=page,widgets=widgets, method="get")
示例#4
0
 def post(self, **kwargs):
     try:
         privatekey = '792ec9274bc52418e995f355e3a8a4d1'
         if hashlib.md5(self.request.get("security_data") + privatekey).hexdigest() != self.request.get("security_hash"):
             self.abort(500)
         referrer = urllib.unquote(self.request.get("referrer"))
         referrer = referrer.split('|')
         uid = referrer[0]
         pages = referrer[1]
 
         subscriber_info = {}
         subscriber_info['details'] = self.request.get("details")
         subscriber_info['event'] = self.request.get("event")
         subscriber_info['productname'] = self.request.get("productname")
         subscriber_info['quantity'] = self.request.get("quantity")
         subscriber_info['reference'] = self.request.get("reference")
         subscriber_info['uid'] = uid
         subscriber_info['pages'] = pages
         subscriber_info['status'] = self.request.get("status")
         subscriber_info['type'] = self.request.get("type")
         subscriber_info['enddate'] = self.request.get("enddate")
         subscriber_info['nextperioddate'] = self.request.get("nextperioddate")
         subscriber_info = simplejson.dumps(subscriber_info)
         user = User.get_by_key_name(uid)
         user.subscriber_info = subscriber_info
         db.put(user)
         if self.request.get("event") == 'Active':
             pages = pages.split(',');
             batch = []
             for p in pages:
                 page = Page.get_by_key_name(p)
                 if page:
                     page.upgraded = '1'
                     page.upgraded_by = user
                     batch.append(page)
             db.put(batch)
         if self.request.get("event") == 'Inactive':
             pages = Page.all().filter('upgraded_by =', user)
             batch = []
             for p in pages:
                     p.upgraded = '0'
                     p.upgraded_by = None
                     batch.append(p)
             db.put(batch)
             
         self.response.set_status(200)
     except:
         logging.error('Listen Error')
         self.abort(500)
示例#5
0
    def post(self, **kwargs):
        #logging.info(self.request)
        signed_request = facebook.parse_signed_request(self.request.get('signed_request'),self.get_config('facebook','app_secret'))
        #logging.info(signed_request)
        try:
          user_id = signed_request['user_id']
        except:
          user_id = None
        page_id = signed_request['page']['id']
        liked = signed_request['page']['liked']
        admin = signed_request['page']['admin']
        options_dict = {}
        status = 'True'
        try:
          page = Page.get_by_key_name(page_id)
          #check active account or for expired account.
          if page.upgraded != '1':

            expire_date = page.created + datetime.timedelta(days=14)
            min_expire_date = datetime.datetime(2011,5,1)
        
            if (expire_date < min_expire_date):
              expire_date = min_expire_date

            if expire_date < datetime.datetime.now():
              status = 'False'

          
          
          widgets = Widget.all().filter('page =', page).filter('deleted = ', False).order('order')
          options = Option.all().filter('type_reference =', page)
          for option in options:
              options_dict[option.name] = {'id': str(option.key().id()), 'value': option.value}
        except:
          page=None
          widgets=None
          options_dict = None
        self.render("app/fb-tab.html", page=page,widgets=widgets, method="post",options=options_dict,admin=admin,status=status)



        
示例#6
0
def manage(page_id):
    if page_id <= 0 or 10 < page_id:
        return redirect(url_for('hello_world'))
    page = Page.get_by_key_name(str(page_id))
    if request.method == 'POST':
        url = request.form['url']
        if url.startswith('http://') or url.startswith('https://'):
            if page:
                page.url = url
            else:
                page = Page(key_name=str(page_id), url=url)
            page.put()
        return redirect(url_for('manage', page_id=page_id))
    else:
        url = ''
        if page:
            url = page.url
        return render_template('manage.html',
                               page_id=page_id,
                               url=url)
示例#7
0
 def get(self, **kwargs):
     user =  self.current_user
     admin = False
     method = kwargs.get('method')
     if method == 'scripturl':
         upload_url = blobstore.create_upload_url('/upload')
         
         self.response.out.write(upload_url)
     if method == 'headerimageurl':
         #pages = Page.get(user.pages)
         key_name = self.request.get("p")
         #for p in pages:
         #    if p.id == page_id:
         #        page = p
         #        admin = True
         #if admin:
         page = Page.get_by_key_name(key_name)
         if page:
             header_image_url = page.header_image_url
             
             self.response.out.write(header_image_url)
         else:
             
             self.response.out.write('')
     if method == 'getwidget':
         widget_id = self.request.get("wid")
         widget = Widget.get_by_key_name(widget_id)
         tenr = range(1,11)
         if widget:
             widget_type = widget.type
         if not widget:
             widget_type = self.request.get("wtype").lstrip('wi-')
             widget = dict(type=widget_type,
                         id=widget_id
                         )
         if widget_type:
             self.render('app/widgets/'+widget_type+".html", widget=widget,tenr=tenr)
         else:
             
             self.response.out.write("This widget cannot be found.")
示例#8
0
文件: main.py 项目: racheltho/wiki
 def get(self, pagename):
     page = Page.get_by_key_name(pagename)
     if page:
         self.render_secure("page.html", page=page)
     else:
         self.redirect('/_edit' + pagename)
示例#9
0
 def post(self, **kwargs):
     user =  self.current_user
     admin = False
     method = kwargs.get('method')
     if method == 'deletewidget':
         key_name = self.request.get("wid")
         widget = Widget.get_by_key_name(key_name)
         if widget:
             widget.deleted = True
             widget.last_modified_by = user
         try:
             db.put(widget)
             self.response.out.write('True')
         except:
             self.response.out.write('False')
             
     if method == 'savepageorder':
         page_order = self.request.get('pageorder')
         page_order = page_order.split(',')
         batch = []
         for k,v in enumerate(page_order):
             widget = Widget.get_by_key_name(v)
             if widget:
                 widget.order = k
                 widget.last_modified_by = user
                 batch.append(widget)
         try:
             db.put(batch)
             self.response.out.write('True')
         except:
             self.response.out.write('False')
             
     if method == 'savewidget':
         page = Page.get_by_key_name(self.request.get('pageid'))
         key_name = self.request.get('wid')
         widget = Widget.get_by_key_name(key_name)
         if self.request.get('wtype') == 'embedly':
            fields = simplejson.loads(self.request.get('wcontents'))
            #get_embedly_code({'id':self.request.get('wid'),"url":fields['embedly_url'],"type":"embedly"})
            deferred.defer(get_embedly_code,{'id':self.request.get('wid'),"url":fields['embedly_url'],"type":"embedly"})
         if self.request.get('wtype') == 'googlemaps':
            fields = simplejson.loads(self.request.get('wcontents'))
            deferred.defer(get_embedly_code,{'id':self.request.get('wid'),"url":fields['googlemaps_link'],"type":"googlemaps"})
         if not widget:
             widget = Widget(key_name=key_name,
                             id = key_name,
                             type = self.request.get('wtype'),
                             name = self.request.get('wname'),
                             page = page,
                             contents = self.request.get('wcontents'),
                             last_modified_by = user
                            )
             fields = simplejson.loads(self.request.get('wcontents'))
             for k,v in fields.iteritems():
                 db_type = k.split('__')
                 try:
                     db_type = db_type[1]
                 except IndexError:
                     db_type = None
                 logging.info(db_type)
                 if db_type == 'text':
                     setattr(widget, k, db.Text(v))
                 else:
                     setattr(widget, k, v)
         else:
             widget.name = self.request.get('wname')
             widget.contents = self.request.get('wcontents')
             widget.last_modified_by = user
             fields = simplejson.loads(self.request.get('wcontents'))
             for k,v in fields.iteritems():
                 db_type = k.split('__')
                 try:
                     db_type = db_type[1]
                 except IndexError:
                     db_type = None
                 logging.info(db_type)
                 if db_type == 'text':
                     setattr(widget, k, db.Text(v))
                 else:
                     setattr(widget, k, v)
         
         try:
             db.put(widget)
             self.response.out.write('True')
         except:
             self.response.out.write('False')
     if method == 'saveoption':
         try:
             option = Option.get_by_id(int(self.request.get('id')))
         except:
             option = None
         if self.request.get('otype') == 'page':
             link = Page.get_by_key_name(self.request.get('opageid'))
         if not option:
             option = Option(
                             name = self.request.get('oname'),
                             value = self.request.get('ovalue'),
                             type = self.request.get('otype'),
                             type_reference = link
                            )
         else:
             option.value = self.request.get('ovalue')
             
         try:
             db.put(option)
             self.response.out.write('True')
         except:
             self.response.out.write('False')
     if method == 'upgradedowngrade':
       try:
         username = self.get_config('saasy','username')
         password = self.get_config('saasy','password')
         product = self.get_config('saasy','product')
         qty = str(self.request.get('qty'))
         basic_auth = base64.b64encode('%s:%s' % (username, password)) 
         xml_data = "<subscription><productPath>/%s</productPath><quantity>%s</quantity><no-end-date/></subscription>" % (product,qty)
         subscriber_info=simplejson.loads(self.current_user.subscriber_info)
         url = "https://api.fastspring.com/company/seedprod/subscription/%s" % subscriber_info['reference']
         response = urlfetch.fetch(url=url,payload=xml_data,headers={'Authorization': 'Basic %s' % basic_auth ,'Content-Type': 'application/xml' },method=urlfetch.PUT)
         if response.status_code == 200:
           # Update Pages
           upgraded_pages = self.request.get('pages').split(',')
           pages = Page.get(user.pages)
           batch = []
           for p in pages:
             if p.id in upgraded_pages:
               p.upgraded = '1'
               p.upgraded_by = user
             else:
               if p.upgraded_by:
                 if p.upgraded_by.id == user.id:
                   p.upgraded = '0'
                   p.upgraded_by = None
             batch.append(p)
           db.put(batch)
                        
           self.response.out.write('True')
         else:
           self.response.out.write('False')
       except:
         self.response.out.write('False')
示例#10
0
 def get(self, **kwargs):
         
     '''Get Users Pages From Facebook'''
     try:
         fb_users_pages = self.graph.get_connections("me", "accounts")
         fb_page_ids = []
         for p in fb_users_pages['data']:
             #if p['category'] != 'Application' or p['id'] == '141947329155355':
             try:
                 if p['name']:
                   fb_page_ids.append(p["id"])
             except:
               pass
         fb_pages = self.graph.get_objects(fb_page_ids)
         
         '''Update Pages Cache'''
         batch = []
         for k,fb_page in fb_pages.items():
             try:
                 picture = fb_page["picture"]
             except KeyError:
                 picture = None
             try:
                 fan_count = fb_page["fan_count"]
             except KeyError:
                 fan_count = None
             try:
                 has_added_app = fb_page["has_added_app"]
             except KeyError:
                 has_added_app = None
             try:
                 category = fb_page["category"]
             except KeyError:
                 category = None
             page = Page.get_by_key_name(fb_page["id"])
             if not page:
                 page = Page(key_name=str(fb_page["id"]),
                             id=str(fb_page["id"]),
                             name=fb_page["name"],
                             link=fb_page["link"],
                             category=category,
                             picture=picture,
                             fan_count=str(fan_count),
                             has_added_app=has_added_app
                             )
                 batch.append(page)
             else:
                 page.picture = picture
                 page.fan_count=str(fan_count)
                 page.has_added_app = has_added_app
                 batch.append(page)
         if batch:                 
             page_keys = db.put(batch)
             user = self.current_user
             user.pages = page_keys
             db.put(user)
                          
     except:
         pass
         
     """Get Users Pages"""
     try:
         user = self.current_user
         pages = Page.get(user.pages)
         self.render("app/dashboard.html", admin=True,pages=pages)    
     except:
         pass