Beispiel #1
0
    def get(self, id, fig_key):
        user = users.get_current_user()
        if user is None:
        # go to login page
            print("View Stream Handler: Not logged in")
            self.redirect(users.create_login_page(self.request.uri))
            return



        current_stream = stream.get_by_id(int(id))
        if(not current_stream):
            self.redirect("/error/" + 'Wrong stream or page number')
            return

        flag = False
        if current_stream:
            #delete all the imgs, because they are huge
            for i in current_stream.figures:
                if str(i.blob_key) == fig_key:
                    blobstore.delete(i.blob_key)
                    current_stream.figures.remove(i)
                    flag = True
                    break

        if(not flag):
            self.redirect("/error/" + 'Designated fig does not exist')
            return
        current_stream.num_of_pics -= 1
        current_stream.put()
        time_sleep(NDB_UPDATE_SLEEP_TIME)

        return
Beispiel #2
0
    def get(self, id):
        user = users.get_current_user()
        if user is None:
            # go to login page
            print("View Stream Handler: Not logged in")
            self.redirect(users.create_login_page(self.request.uri))
            return

        current_stream = stream.get_by_id(int(id))
        if not current_stream:
            self.redirect("/error/" + 'Wrong stream or page number')
            return

        if current_stream:
            # delete all the imgs, because they are huge
            for i in current_stream.figures:
                if(not i.external):
                    blobstore.delete(i.blob_key)
            queried_user_profile = user_profile.query(user_profile.user_id == user.user_id()).get()
            if queried_user_profile:
                if current_stream.name in queried_user_profile.own_streams:
                    queried_user_profile.own_streams.remove(str(current_stream.name))
                if (not queried_user_profile.own_streams) and (not queried_user_profile.subscribed_streams):
                    # no own_streams nor subscribed_streams
                    queried_user_profile.key.delete()
                else:
                    queried_user_profile.put()
            current_stream.key.delete()
        time_sleep(NDB_UPDATE_SLEEP_TIME)
        self.redirect('/management')
        return
Beispiel #3
0
 def get(self, id, fig_key):
     user = users.get_current_user()
     if user is None:
     # go to login page
         print("View Stream Handler: Not logged in")
         self.redirect(users.create_login_page(self.request.uri))
         return
Beispiel #4
0
    def get(self,id):

        user = users.get_current_user()
        if user is None:
        # go to login page
            print("View Stream Handler: Not logged in")
            self.redirect(users.create_login_page(self.request.uri))
            return


        photo_info_list = []
        current_stream = stream.get_by_id(int(id))
        if(not current_stream):
            self.redirect("/error/" + 'Wrong stream or page number')
            return

        for photo in current_stream.figures:
            print('added photoinfo')
            print(str(photo.date))
            if(photo.external):
                photo_url = photo.ext_url
            else:
                photo_url = images.get_serving_url(photo.blob_key)

            current_info = {'time':(photo.date),
                            'lng':float(str(photo.location).split(',')[0]),
                            'lat':float(str(photo.location).split(',')[1]),
                            'url':photo_url}
            photo_info_list.append(current_info)
            print('added photoinfo')

        template_values = {'photo_info_list':photo_info_list,
                           'String1':current_stream.name,
                           'stream_id':current_stream.key.id()
                           }
        template = JINJA_ENVIRONMENT.get_template('geoview.html')
        self.response.write(template.render(template_values))
Beispiel #5
0
    def get(self, id, page):
        #Now the view is constrained to deliver 3*3 = 9 pics in a single page
        #so for the ith page, it covers from 9*(i-1) to 9*i-1
        user = users.get_current_user()
        if user is None:
        # go to login page
            print("View Stream Handler: Not logged in")
            self.redirect(users.create_login_page(self.request.uri))
            return
        if page is None:
            page = 1 #by default the 1st page

        PhotoUrls = []
        PhotoIdList = []
        # all_stream = stream.query()
        current_stream = stream.get_by_id(int(id))



        current_stream.num_of_view = len(current_stream.views)
        current_stream.put()

      #  nviews = Num_Of_Views[id]
        npage = int(page)
        for img in current_stream.figures[9*(npage-1):]:
            if(current_stream.figures.index(img) > 9*npage - 1):
                break
            if(not img.external):
                PhotoUrls.append(images.get_serving_url(img.blob_key)+"=s"+str(MAX_IMAGE_LENGTH))
            else:
                PhotoUrls.append(str(img.ext_url))
            #print(images.get_serving_url(img.blob_key))
            if(not img.external):
                PhotoIdList.append(img.blob_key)
            else: #use the timestamp as key to delete
                dtstring = str(img.date)
                dtkey = re.sub("[^0-9]", "", dtstring)
                PhotoIdList.append(dtkey)

        total_pages = int((current_stream.num_of_pics - 0.001)/9 + 1)
        print("total pages = " + str(total_pages))
        url_pages = []
        for i in range(1,total_pages+1):
            url_pages.append('/view/'+id+'/'+str(i))


      #  Add subscribe button
        """show message if owner or already subscribed; show button if not subscribed"""
        no_subscribe_message = "None"
        show_subscribe_button = True
        show_unsubscribe_button = False
        subscribe_return_url = self.request.uri
        unsubscribe_return_url = self.request.uri
        show_upload = False
        upload_url = blobstore.create_upload_url('/upload_photo')
        if user.user_id() == current_stream.owner:
        # The user owns the stream
            print "ViewStreamHandler: User owns the stream, no need to subscribe"
            show_subscribe_button = False
            no_subscribe_message = "You are the owner of the Stream"
            show_upload = True
        already_subscribed = False  # show Already Subscribed message instead of showing a button for subscribe
        for temp_user in current_stream.subscribers:  # this for loop is used to check the id of users
            if user.user_id() == temp_user.user_id():
                already_subscribed = True
                break
        if already_subscribed:
            show_subscribe_button = False
            show_unsubscribe_button = True
            no_subscribe_message = "You've already subscribed to the stream"

        template_values = {'String1': current_stream.name,
                           'url_list': PhotoUrls,
                           'fig_id_list': PhotoIdList,
                           'url_pages' : url_pages,
                           'num_of_pages': total_pages,
                           'nviews':current_stream.num_of_view,
                           'stream': current_stream,
                           'logout_url': users.create_logout_url('/'),
                           'no_subscribe_message': no_subscribe_message,
                           'show_subscribe_button': show_subscribe_button,
                           'show_unsubscribe_button': show_unsubscribe_button,
                           'show_upload': show_upload,
                           'upload_url':upload_url,
                           'subscribe_return_url': subscribe_return_url,
                           'unsubscribe_return_url': unsubscribe_return_url,}
        template = JINJA_ENVIRONMENT.get_template('refresh.html')
        self.response.write(template.render(template_values))