Ejemplo n.º 1
0
class AdminPage(BasePage):
    """Class to handle requests to the admin directory."""


    def RenderAdminPage(self):
        """Renders the admin page"""
        logging.info('RenderAdminPage called')
        
        self.template_values['title'] = self.userprefs.site_title+" gallery admin"
        self.template_values['album_name'] = "admin"
        self.template_values['logout_url'] = users.create_logout_url('/')
        if users.get_current_user() != self.userprefs.user:
            self.template_values['current_user'] = users.get_current_user()
        self.template_values['user'] = self.userprefs
        self.template_values['settings'] = settings
        self.template_values['debug'] = settings.DEBUG
        
        backend = self.userprefs.GetPhotoBackend()
        
        try:
            albums = backend.GetAllAlbums()
        except:
            albums = []
        album_list = []
        featured_albums = self.userprefs.featured_albums
        for a in albums:
            if a['title'] in featured_albums:
                a['featured'] = True
            else:
                a['featured'] = False
            album_list.append(a)
        album_list.append({'id': 'all', 'title': 'all', 'featured': ('all' in featured_albums)})
        
        self.template_values['all_albums'] = album_list
        path = os.path.join(os.path.dirname(__file__), 'admin.html')
        self.response.out.write(template.render(path, self.template_values))

    def InitializeUser(self):
        # Get the owner of the app
        self.userprefs = UserPrefs.all().get()

        if not self.userprefs:
            # Create the owner of the app
            self.userprefs = UserPrefs(user=users.get_current_user())
            self.userprefs.put()

    def get(self):
        """Default method called upon entry to the app."""

        self.InitializeUser()

        # Reset template values with every new request.
        self.template_values = {
        }

        self.RenderAdminPage()
    
    def post(self):
        """Save the admin settings."""
        
        self.InitializeUser()
        
        self.template_values = {
        }
        
        # Get the admin settings and save them
        try:
            if self.request.get('clear-cache'):
                backend = self.userprefs.GetPhotoBackend()
                
                backend.ClearCache()
                
                self.template_values['cache_cleared'] = True
            else:
                self.userprefs.photo_backend = int(self.request.get('backend'))
                self.userprefs.SetUsername(self.request.get('backend-id'))
                
                self.userprefs.site_title = self.request.get('site-title').strip()
                self.userprefs.site_header = self.request.get('site-header').strip()
                
                self.userprefs.thumb_size = int(self.request.get('thumb-size'))
                if self.userprefs.photo_backend == settings.PHOTO_BACKEND_FLICKR:
                    self.userprefs.thumb_size = 75
                elif self.userprefs.photo_backend == settings.PHOTO_BACKEND_PICASA and self.userprefs.thumb_size == 75:
                    self.userprefs.thumb_size = 72
                self.userprefs.thumb_cropped = bool(self.request.get('thumb-cropped'))
                self.userprefs.full_size = int(self.request.get('full-size'))
                self.userprefs.homepage_size = int(self.request.get('homepage-size'))
                
                backend = self.userprefs.GetPhotoBackend()
                
                homepage_album = self.request.get('homepage-album').strip()
                for album in backend.GetAllAlbums():
                    if album['title'] == homepage_album:
                        self.userprefs.homepage_album = homepage_album
                
                featured_albums = self.request.get('featured-album', allow_multiple=True)
                
                self.userprefs.featured_albums = featured_albums
                
                self.userprefs.merchant_id = self.request.get('merchant-id')
                self.userprefs.analytics_id = self.request.get('analytics-id')
                
                self.userprefs.put()
                
                self.template_values['saved'] = True
        except (TypeError, ValueError), e:
            self.template_values['error'] = True
            self.template_values['error_message'] = str(e)
        
        
        self.RenderAdminPage()
Ejemplo n.º 2
0
    def get(self): 
        #timeout = 0.2
        # logging.debug("a cold beer in the sun")
        user = users.get_current_user()
        if user:
            auth_url = users.create_logout_url(self.request.uri)
            auth_url_linktext = "Log Out"

            # storing the user to UserPrefs if we haven't already
            user_id = user.user_id()
#            pic = user.pic() googles innebygde userklasse har ikke pic, det er det din klasse som har.

            q = UserPrefs.all()
            user_object = q.filter("user_id =",user_id).get()

#            pic = user_object.pic() not callable
#            pic = user_object.nickname()

            if not user_object:
                user_object = UserPrefs() #need a new name, like UserObject.

            # else:
            #     if user_object.pic:
                    

            user_object.user_id = user_id
            user_object.nickname = user.nickname()
            user_object.email = user.email()
            user_object.put()

            



#         logging.debug("usr: %s", usr)
#         if False:
#             pass
# #         if usr:
# #             user_id = usr.user_id()
# #             nickname = usr.nickname()
# #             email = usr.email()

# #             auth_url = users.create_logout_url(self.request.uri)
# #             auth_url_linktext = "Logout"

# #             q = UserPrefs.all()
# #             q = q.filter("user_id =",user_id)
# # #            try: # if machine restarts, there will be nothing on localhost 
# #             [u] = q.fetch(1)

# #you need the try except or something similar because the db might be empty (restart machine local).

# #             nick = u.nickname # else, it's "" from above
# #             # except:
# #             #     u = 

# #             keys = u.companies
# #             companies = []
# #             for key in keys:
# #                 company = Company.get_by_id(int(key.id()))
# #                 companies.append(company)

# #             duplicates = []
# #             for company in u.companies:
# #                 if company in duplicates:
# #                     u.companies.remove(company)
# #                 else:
# #                     duplicates.append(company)

#         else:

#             auth_url = users.create_login_url(self.request.uri)
#             auth_url_linktext = "Login"

#             # q = Company.all() #you'll need a 'more' button to display more than these 20
#             # companies = q.fetch(1000) #fetch can't be async for now.
#             nick = ""

#             # u = UserPrefs()
#             # u.user_id = user_id
#             # u.nickname = nickname
#             # u.email = email
#             # u.put()

#         # company = Company()
#         # company.name = "Google Inc"
#         # company.name_lower = "google inc"
#         # company.ticker = "GOOG"
#         # company.ticker_lower = "goog"
#         # company.exchange = "NASDAQ"
#         # company.put()
#         # company = Company()
#         # company.name = "Apple Inc"
#         # company.name_lower = "apple inc"
#         # company.ticker = "AAPL"
#         # company.ticker_lower = "aapl"
#         # company.exchange = "NASDAQ"
#         # company.put()
#         # company = Company()
#         # company.name = "Facebook Inc"
#         # company.name_lower = "facebook inc"
#         # company.ticker = "FB"
#         # company.ticker_lower = "fb"
#         # company.exchange = "NASDAQ"
#         # company.put()

#         # u.companies = []
#         # u.put()


#         #dev only:
#         # c = Company.all().filter("ticker =","IBM").get()
#         # u.companies.remove(c.key())
#         # u.companies = []
#         # u.put()


#         # dupe check for subscribed companies:


#         # if u.companies == []: 
#         #     apple = Company.all().filter("name =","Apple Inc").get()
#         #     if apple == None:
#         #         apple = Company()
#         #         apple.name = "Apple Inc"
#         #         apple.name_lower = "apple inc"
#         #         apple.ticker = "AAPL"
#         #         apple.ticker_lower = "aapl"
#         #         apple.exchange = "NASDAQ"
#         #         apple.exchange_lower = "nasdaq"
#         #         apple.put()
#         #     else:
#         #         u.companies.append(apple.key())

#         #     google = Company.all().filter("name =","Google Inc").get()
#         #     if google == None:
#         #         google = Company()
#         #         google.name = "Google Inc"
#         #         google.name_lower = "google inc"
#         #         google.ticker = "GOOG"
#         #         google.ticker_lower = "goog"
#         #         google.exchange = "NASDAQ"
#         #         google.exchange_lower = "nasdaq"
#         #         google.put()
#         #     else:
#         #         u.companies.append(google.key())

#         #     facebook = Company.all().filter("name =","Facebook Inc").get()
#         #     if facebook == None:
#         #         facebook = Company()
#         #         facebook.name = "Facebook Inc"
#         #         facebook.name_lower = "facebook inc"
#         #         facebook.ticker = "FB"
#         #         facebook.ticker_lower = "fb"
#         #         facebook.exchange = "NASDAQ"
#         #         facebook.exchange_lower = "nasdaq"
#         #         facebook.put()
#         #     else:
#         #         u.companies.append(facebook.key())

#         #     u.put()

#         # company_names = []
#         # for company_key in u.companies:
#         #     company = Company.get_by_id(company_key.id())
#         #     # try: # in case there are zombie ids for that user:
#         #     company_names.append(company.name)
#         #     # except:
#         #     #     continue

# # #         # displaying all companies for debugging only:



# #         comp_keys_names = []
# #         for company in companies:




# # # her sjekker du en variabel som returneres av menyvalget. defaulten her er også week. 
# # # resultatet bestemmer hvilken ctr som blir ctr; if scope == "day": (pos_ctr = pos_ctr_day, neg_ctr = neg_ctr_day).


# #             # articles = [article for article in company.articles if article.clean]
# #             # [pos_rat,neg_rat] = utils.sentiment_count(articles)
# #             if company.pos_ctr > 0:
# #                 pos_arrow = "↑ "
# #                 pos_str = str(company.pos_ctr)
# #             else:
# #                 pos_arrow = ""
# #                 pos_str = ""
# #             if company.neg_ctr > 0:
# #                 neg_arrow = "↓ "
# #                 neg_str = str(company.neg_ctr)
# #             else:
# #                 neg_arrow = ""
# #                 neg_str = ""
# #             comp_keys_names.append([company.key(), company.ticker, pos_arrow, pos_str, neg_arrow, neg_str])

# # #         ##############db.delete(companies) don't do this either!

# # #         # you need a check here, to see what companies are already
# # #         # user companies!
# #         free_companies = ["Apple Inc", "Google Inc", "Facebook Inc"]

#         # for company in companies:
#         #     if company.ticker == "GE":
#         #         # company.name = "International Business Machines Corp."
#         #         # company.name_lower = "international business machines corp."
#         #         # company.ticker = "IBM"
#         #         # company.ticker_lower = "ibm"
#         #         company.exchange = "NYSE"
#         #         company.put()

# #             if comp.name in free_companies and comp.key() not in u.companies:
# #                 u.companies.append(comp.key())
# # # #                comp.user = u #why can't this be usr? usr is a UserPrefs object, isn't it???? No, it's a in-built user object.


# #                company.put()


# #                 u.put()

# #         q = article_objects = Article.all() # should be articles = company.articlestod
# #         q = q.order("-datetime")
# #         q = q.filter("clean =",True)
# #         article_objects = q.fetch(100)
# # #        article_objects = q # debug only
# #         ####db.delete(article_objects) stop doing this - delete attributes instead, run scripts to add new attributes
#         # keys_names = zip(u.companies,company_names)




#       #   self.response.out.write("""
#       #     <form action="/sign?%s" enctype="multipart/form-data" method="post">
#       #       <div><textarea name="content" rows="3" cols="60"></textarea></div>
#       #       <div><input type="submit" value="Sign Guestbook"></div>
#       #     </form>
#       #     <hr>
#       #     <form>Guestbook name: <input value="%s" name="guestbook_name">
#       #     <div><label>Avatar:</label></div>
#       #     <div><input type="file" name="img"/></div>
#       #     <input type="submit" value="switch"></form>
#       #   </body>
#       # </html>""" % (urllib2.urlencode({'guestbook_name': guestbook_name}),
#       #               cgi.escape(guestbook_name)))





            template_values = {
#            'nick' : nick,
#            'pic' : user_object.pic,
#            'pic' : user_object.key().id(),
                'user_key' : user_object.key(),
                'auth_url' : auth_url,
                'auth_url_linktext' : auth_url_linktext,
            }

        # if no user:
        else:
            auth_url = users.create_login_url(self.request.uri)
            auth_url_linktext = "Login"

            template_values = {
                'auth_url' : auth_url,
                'auth_url_linktext' : auth_url_linktext,
            }

        template = jinja_environment.get_template('index.html')
        self.response.out.write(template.render(template_values))