示例#1
0
    def get(self):
        #stream_id, start_time, end_time
        stream_id = int(self.request.get('stream_id'))
        start_time = self.request.get('start_time')
        end_time = self.request.get('end_time')
        stream = Stream.query_by_id(int(stream_id))
        stream.views = stream.views + 1
        stream.put()

        images = []
        LatLngBounds = {
            'minLat': -85,
            'maxLat': 85,
            'minLng': -180,
            'maxLng': 180,
        }

        start_time = datetime.datetime.strptime(start_time, "%b %d %Y")
        end_time = datetime.datetime.strptime(end_time, "%b %d %Y") + datetime.timedelta(days=1, hours=12)
        print start_time, end_time
        for photo_id in stream.photos:
            photo = Photo.get_by_id(photo_id)
            if photo.updated_time >= start_time and photo.updated_time <= end_time:
                images.append({
                    'image': photo_id,
                    'updated_time': photo.updated_time.isoformat(),
                    'lat': randint(LatLngBounds['minLat'], LatLngBounds['maxLat']),
                    'lng': randint(LatLngBounds['minLng'], LatLngBounds['maxLat']),
                })
        self.response.write(json.dumps({
            'images': images,
            'status': 0,
        }))
示例#2
0
    def get(self):
        user = users.get_current_user()
        if user is None:
            self.redirect('/')
            return

        BASE = GetPath(self.request.url, self.request.path)
        re = requests.get(BASE + "/api/management",
                          params={"user_id": user.user_id()},
                          timeout=10)

        own_stream = []
        sub_stream = []
        if re:
            res = re.json()
            for r in res['own_stream']:
                s = Stream.query_by_id(int(r))
                own_stream.append({
                    "id": r,
                    "name": s.name,
                    "size": len(s.photos),
                    "updated_time": s.updated_time,
                    "views": s.views
                })

            for r in res['sub_stream']:
                s = Stream.query_by_id(int(r))
                sub_stream.append({
                    "id": r,
                    "name": s.name,
                    "size": len(s.photos),
                    "updated_time": s.updated_time,
                    "views": s.views
                })

        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
        template_values = {
            'login_logout_url': url,
            'url_linktext': url_linktext,
            'own_stream': own_stream,
            'sub_stream': sub_stream,
            'user_id': user.user_id(),
        }
        template = JINJA_ENVIRONMENT.get_template('manage.html')
        self.response.write(template.render(template_values))
示例#3
0
    def get(self):
        user = users.get_current_user()
        if user is None:
            self.redirect('/')
            return

        BASE = GetPath(self.request.url, self.request.path)
        re = requests.get(BASE+"/api/management", params={"user_id":user.user_id()}, timeout=10)

        own_stream = []
        sub_stream = []
        if re:
            res = re.json()
            for r in res['own_stream']:
                s = Stream.query_by_id(int(r))
                own_stream.append({
                    "id": r,
                    "name": s.name,
                    "size": len(s.photos),
                    "updated_time": s.updated_time,
                    "views": s.views
                })
            
            for r in res['sub_stream']:
                s = Stream.query_by_id(int(r))
                sub_stream.append({
                    "id": r,
                    "name": s.name,
                    "size": len(s.photos),
                    "updated_time": s.updated_time,
                    "views": s.views
                })

        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'
        template_values = {
            'login_logout_url' : url,
            'url_linktext': url_linktext,
            'own_stream': own_stream,
            'sub_stream': sub_stream,
            'user_id': user.user_id(),
        }
        template = JINJA_ENVIRONMENT.get_template('manage.html')
        self.response.write(template.render(template_values))
示例#4
0
    def update_stream(self, image_):
        stream_id = self.request.get('stream_id')
        comment = self.request.get('comment')
        lat = self.request.get('Latitude')
        lng = self.request.get('Longitude')
        description = self.request.get('description')
        step = self.request.get('step')
        woInstructions = {}
        woPics = {}

        if (lat == '') or (lng == ''):
            lat = 0.0
            lng = 0.0
        photo = Photo(image=image_,
                      stream_id=stream_id,
                      comment=comment,
                      Latitude=lat,
                      Longitude=lng)
        key = photo.put()

        stream = Stream.query_by_id(int(stream_id))
        if (stream.woPics == None):
            print "no pics in steps"
            woPics[step] = key.id()
        else:
            print "pics present"
            woPics = stream.woPics
            if type(woPics) is not dict:
                woPics = ast.literal_eval(woPics)

            woPics[step] = key.id()
            print woPics

        if (stream.woInstructions == None):
            print "no inst in steps"
            woInstructions[step] = description
        else:
            print "inst present"
            woInstructions = stream.woInstructions
            if type(woInstructions) is not dict:
                woInstructions = ast.literal_eval(woInstructions)

            woInstructions[step] = description

        if len(stream.cover) == 0:
            stream.cover = str(key.id())

        stream.photos.append(key.id())
        stream.woPics = woPics
        stream.woInstructions = woInstructions
        print "number of keys is %d" % len(woPics.keys())
        stream.totalSteps = len(woPics.keys())
        stream.put()
 def post(self):
     img = self.request.get('image')
     stream_id = self.request.get('stream_id')
     comment = self.request.get('comment')
     photo = Photo(image=img, stream_id=stream_id, comment=comment)
     key = photo.put()
     print img, stream_id, comment
     stream = Stream.query_by_id(int(stream_id))
     if len(stream.cover) == 0:
         stream.cover = str(key.id())
     stream.photos.append(key.id())
     stream.put()
 def post(self):
     img = self.request.get('image')
     stream_id = self.request.get('stream_id')
     comment = self.request.get('comment')
     photo = Photo(image=img, stream_id=stream_id, comment=comment)
     key = photo.put()
     print img, stream_id, comment
     stream = Stream.query_by_id(int(stream_id))
     if len(stream.cover) == 0:
         stream.cover = str(key.id())
     stream.photos.append(key.id())
     stream.put()
示例#7
0
    def update_stream(self, image_):
        stream_id = self.request.get('stream_id')
        comment = self.request.get('comment')
        lat = self.request.get('Latitude')
        lng = self.request.get('Longitude')
        description = self.request.get('description')
        step = self.request.get('step')
        woInstructions = {}
        woPics = {}

        if (lat == '') or (lng == ''):
            lat = 0.0
            lng = 0.0
        photo = Photo(image=image_, stream_id=stream_id, comment=comment,
                      Latitude=lat, Longitude=lng)
        key = photo.put()

        stream = Stream.query_by_id(int(stream_id))
        if(stream.woPics == None):
            print "no pics in steps"
            woPics[step]=key.id()
        else:
            print "pics present"
            woPics= stream.woPics
            if type(woPics) is not dict:
                woPics = ast.literal_eval(woPics)

            woPics[step]=key.id()
            print woPics

        if(stream.woInstructions == None):
            print "no inst in steps"
            woInstructions[step] = description
        else:
            print "inst present"
            woInstructions=stream.woInstructions
            if type(woInstructions) is not dict:
                woInstructions=ast.literal_eval(woInstructions)

            woInstructions[step] = description

        if len(stream.cover) == 0:
            stream.cover = str(key.id())

        stream.photos.append(key.id())
        stream.woPics = woPics
        stream.woInstructions = woInstructions
        print "number of keys is %d" % len(woPics.keys())
        stream.totalSteps = len(woPics.keys())
        stream.put()
示例#8
0
    def get(self):
        #stream_id, st, ed
        stream_id = int(self.request.get('stream_id'))
        if self.request.get('st'):
            st = int(self.request.get('st'))
        else:
            st = 1
        stream = Stream.query_by_id(int(stream_id))
        stream.views = stream.views + 1
        stream.put()
        length = len(stream.photos)
        st = min(max(st, 1), length)
        ed = min(st + 3, length + 1)
        images = stream.photos[-st:-ed:-1]

        woPics = stream.woPics
        woInstructions = stream.woInstructions
        if self.request.get('all'):
            images = stream.photos[:]
        if ed == length + 1:
            ed = -1

        LatLngBounds = {
            'minLat': -85,
            'maxLat': 85,
            'minLng': -180,
            'maxLng': 180,
        }

        locations = [{
            'lat':
            randint(LatLngBounds['minLat'], LatLngBounds['maxLat']),
            'lng':
            randint(LatLngBounds['minLng'], LatLngBounds['maxLat']),
        } for i in range(len(images))]

        self.response.write(
            json.dumps({
                'images': images,
                'locations': locations,
                'st': st,
                'ed': ed,
                'size': length,
                'woPics': woPics,
                'woInstructions': woInstructions,
            }))
示例#9
0
    def get(self):
        #stream_id, st, ed
        stream_id = int(self.request.get('stream_id'))
        if self.request.get('st'):
            st = int(self.request.get('st'))
        else:
            st = 1
        stream = Stream.query_by_id(int(stream_id))
        stream.views = stream.views + 1
        stream.put()
        length = len(stream.photos)
        st = min(max(st, 1), length)
        ed = min(st + 3, length + 1)
        images = stream.photos[-st:-ed:-1]

        woPics=stream.woPics
        woInstructions=stream.woInstructions
        if self.request.get('all'):
            images = stream.photos[:]
        if ed == length + 1:
            ed = -1

        LatLngBounds = {
            'minLat': -85,
            'maxLat': 85,
            'minLng': -180,
            'maxLng': 180,
        }

        locations = [{
            'lat': randint(LatLngBounds['minLat'], LatLngBounds['maxLat']),
            'lng': randint(LatLngBounds['minLng'], LatLngBounds['maxLat']),
        } for i in range(len(images))]

        self.response.write(json.dumps({
            'images': images,
            'locations': locations,
            'st': st,
            'ed': ed,
            'size': length,
            'woPics': woPics,
            'woInstructions': woInstructions,
        }))
    def get(self):
        user_id = self.request.get('user_id')
        streams = Stream.query()
        sub_stream = Subscribe.query_by_user(user_id)
        sub_stream_ids = [obj.stream for obj in sub_stream.iter()] #list of stream IDs

        #iterate through streams and get last image
        recentImages = []
        streamName = []
        streamIDs = []
        for stream_id in sub_stream_ids:
            stream = Stream.query_by_id(int(stream_id))
            if len(stream.photos) != 0:
                recentImages.append(stream.photos[-1])
                streamName.append(stream.name)
                streamIDs.append(stream_id)

        self.response.write(json.dumps({"recentImages": recentImages, "streamName": streamName,
                                        "id": streamIDs}))
示例#11
0
    def get(self):
        user_id = self.request.get('user_id')
        streams = Stream.query()
        sub_stream = Subscribe.query_by_user(user_id)
        sub_stream_ids = [obj.stream
                          for obj in sub_stream.iter()]  #list of stream IDs

        #iterate through streams and get last image
        recentImages = []
        streamName = []
        streamIDs = []
        for stream_id in sub_stream_ids:
            stream = Stream.query_by_id(int(stream_id))
            if len(stream.photos) != 0:
                recentImages.append(stream.photos[-1])
                streamName.append(stream.name)
                streamIDs.append(stream_id)

        self.response.write(
            json.dumps({
                "recentImages": recentImages,
                "streamName": streamName,
                "id": streamIDs
            }))
示例#12
0
    def get(self):
        user = users.get_current_user()
        if user is None:
            self.redirect('/')
            return

        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'

        #if stream_id is None
        stream_id = self.request.get('stream_id')
        BASE = GetPath(self.request.url, self.request.path)
        if stream_id:
            st = self.request.get('st')
            if len(st)==0:
                st = 1

            data = {"stream_id": stream_id, "st":st}
            print data
            re = requests.get(BASE+"/api/view", params=data)
            allphotos = []
            woPicsList = []
            woInstList = []
            st = 1
            multipage = True
            if re:
                allphotos = re.json()['images'] #get three photo each time.
                st = re.json()['ed']
                woPics=re.json()['woPics']
                woInstructions=re.json()['woInstructions']
                if woInstructions is not None:
                    sortedList= sorted(woInstructions.keys())
                    for x in sortedList:
                        #print "santamaria"
                        woPicsList.append(woPics[x])
                        woInstList.append(woInstructions[x])

                if re.json()['size'] < 4:
                    multipage = False
            #if user doesn't own the stream, he should not upload photo
            user_id = user.user_id()
            disableModify = True
            if str(Stream.query_by_id(int(stream_id)).author) == str(user_id):
                disableModify = False
            #subscribe
            subscribed = Subscribe.subscribed(stream_id, user_id)

            template_values = {
                'login_logout_url' : url,
                'url_linktext': url_linktext,
                'allphotos':allphotos,
                'disableModify': disableModify,
                'stream_id': stream_id,
                'user_id': user.user_id(),
                'subscribed': subscribed,
                'st': st,
                'multipage': multipage,
                'woPics': woPicsList,
                'woInstructions': woInstList,
            }

            template = JINJA_ENVIRONMENT.get_template('viewstream.html')
            self.response.write(template.render(template_values))
        else:
            re = requests.get(BASE+"/api/allstreams")
            allstreams = []
            if re:
                allstreams = re.json()["allstreams"]

            template_values = {"allstreams" : allstreams,
                               "img_1": 'http://ohtoptens.com/wp-content/uploads/2015/06/Flower-Images-and-Wallpapers3.jpg',
                               'login_logout_url' : url,
                               'url_linktext': url_linktext
            }
            template = JINJA_ENVIRONMENT.get_template('view.html')
            self.response.write(template.render(template_values))
示例#13
0
    def get(self):
        user = users.get_current_user()
        if user is None:
            self.redirect('/')
            return

        url = users.create_logout_url(self.request.uri)
        url_linktext = 'Logout'

        #if stream_id is None
        stream_id = self.request.get('stream_id')
        BASE = GetPath(self.request.url, self.request.path)
        if stream_id:
            st = self.request.get('st')
            if len(st) == 0:
                st = 1

            data = {"stream_id": stream_id, "st": st}
            print data
            re = requests.get(BASE + "/api/view", params=data)
            allphotos = []
            woPicsList = []
            woInstList = []
            st = 1
            multipage = True
            if re:
                allphotos = re.json()['images']  #get three photo each time.
                st = re.json()['ed']
                woPics = re.json()['woPics']
                woInstructions = re.json()['woInstructions']
                if woInstructions is not None:
                    sortedList = sorted(woInstructions.keys())
                    for x in sortedList:
                        #print "santamaria"
                        woPicsList.append(woPics[x])
                        woInstList.append(woInstructions[x])

                if re.json()['size'] < 4:
                    multipage = False
            #if user doesn't own the stream, he should not upload photo
            user_id = user.user_id()
            disableModify = True
            if str(Stream.query_by_id(int(stream_id)).author) == str(user_id):
                disableModify = False
            #subscribe
            subscribed = Subscribe.subscribed(stream_id, user_id)

            template_values = {
                'login_logout_url': url,
                'url_linktext': url_linktext,
                'allphotos': allphotos,
                'disableModify': disableModify,
                'stream_id': stream_id,
                'user_id': user.user_id(),
                'subscribed': subscribed,
                'st': st,
                'multipage': multipage,
                'woPics': woPicsList,
                'woInstructions': woInstList,
            }

            template = JINJA_ENVIRONMENT.get_template('viewstream.html')
            self.response.write(template.render(template_values))
        else:
            re = requests.get(BASE + "/api/allstreams")
            allstreams = []
            if re:
                allstreams = re.json()["allstreams"]

            template_values = {
                "allstreams": allstreams,
                "img_1":
                'http://ohtoptens.com/wp-content/uploads/2015/06/Flower-Images-and-Wallpapers3.jpg',
                'login_logout_url': url,
                'url_linktext': url_linktext
            }
            template = JINJA_ENVIRONMENT.get_template('view.html')
            self.response.write(template.render(template_values))