コード例 #1
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     user = users.get_current_user()
     if not user:
         template_values = {
             'login_url': users.create_login_url(self.request.uri)
         }
         template = JINJA_ENVIRONMENT.get_template('views/login.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
     else:
         owned_streams = (
             Stream.query(Stream.owner == user.email().lower())
             .order(-Stream.name).fetch()
         )
         subscribed_streams = (
             Stream.query(Stream.subscribers == user.email().lower())
             .order(-Stream.name).fetch()
         )
         template_values = {
             'owned_streams': owned_streams,
             'subscribed_streams': subscribed_streams
         }
         template = JINJA_ENVIRONMENT.get_template('views/manage.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #2
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     stream_name = self.request.get('stream_name')
     if stream_name:
         key = ndb.Key('Stream', stream_name)
         stream = key.get()
     else:
         stream = None
     if stream:
         increment = self.request.get('increment')
         if increment:
             stream.views += int(increment)
             stream.recent_views.append(datetime.datetime.now())
             stream.put()
         cursor = self.request.get('cursor')
         cursor = int(cursor) if cursor else 0
         upload_url = blobstore.create_upload_url('/upload_photo')
         template_values = {
             'stream': stream,
             'cursor': cursor,
             'upload_url': upload_url
         }
         template = JINJA_ENVIRONMENT.get_template('views/view-stream.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
     else:
         streams = Stream.query().order(Stream.date).fetch()
         template_values = {
             'streams': streams,
         }
         template = JINJA_ENVIRONMENT.get_template(
             'views/view-streams.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #3
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     stream_name = self.request.get('stream_name')
     if stream_name:
         key = ndb.Key('Stream', stream_name)
         stream = key.get()
     else:
         stream = None
     if stream:
         increment = self.request.get('increment')
         if increment:
             stream.views += int(increment)
             stream.recent_views.append(datetime.datetime.now())
             stream.put()
         cursor = self.request.get('cursor')
         cursor = int(cursor) if cursor else 0
         upload_url = blobstore.create_upload_url('/upload_photo')
         template_values = {
             'stream': stream,
             'cursor': cursor,
             'upload_url': upload_url
         }
         template = JINJA_ENVIRONMENT.get_template('views/view-stream.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
     else:
         streams = Stream.query().order(Stream.date).fetch()
         template_values = {
             'streams': streams,
         }
         template = JINJA_ENVIRONMENT.get_template('views/view-streams.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #4
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     MINUTES_PER_TICK = 5
     TICKS_PER_HOUR = 60 / MINUTES_PER_TICK
     TICKS_PER_DAY = 24 * TICKS_PER_HOUR
     config = TrendingEmailConfig.query().fetch(1)[0]
     if config:
         if config.mode == "none":
             config.ticks = 0
         elif config.mode == "minutes":
             config.ticks = 0
         elif config.mode == "hourly":
             config.ticks += 1
             config.ticks = config.ticks % TICKS_PER_HOUR
         elif config.mode == "daily":
             config.ticks += 1
             config.ticks = config.ticks % TICKS_PER_DAY
         if config.mode != "none" and config.ticks == 0:
             sender_address = 'Matthew Halpern <*****@*****.**>'
             subject = '[mh33338-conexus] Trending'
             streams = Stream.query().fetch()
             sorted_streams = sorted(streams, key=lambda s: len(s.recent_views),
                             reverse=True)
             body = "Trending Streams:\n\n"
             for idx, stream in enumerate(sorted_streams[:3]):
                 body += "%d. %s %s" % (idx + 1, stream.name,
                                        "http://mh33338-connexus.appspot" +
                                        ".com/view?stream_name=%s" %
                                        stream.name + "&increment=1\n")
             mail.send_mail(sender_address, "*****@*****.**", subject,
                            body)
コード例 #5
0
ファイル: connexus.py プロジェクト: ee382/connexus
 def get(self):
     tags = set()
     for stream in Stream.query().fetch():
         tags.update(stream.tags)
         tags.add(stream.key.id())
     meta = Meta.get_meta()
     meta.cached_tags = list(tags)
     meta.put()
コード例 #6
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     streams = Stream.query().fetch()
     logging.info("STREAMS %d" % len(streams))
     now = datetime.datetime.now()
     for stream in streams:
         stream.recent_views = filter(lambda rv: (now - rv).seconds < SECS_PER_HOUR,
                                      stream.recent_views)
         stream.put()
コード例 #7
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     user = users.get_current_user()
     if not user:
         template_values = {
             'login_url': users.create_login_url(self.request.uri)
         }
         template = JINJA_ENVIRONMENT.get_template('views/login.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
     else:
         owned_streams = (Stream.query(Stream.owner == user.email().lower()
                                       ).order(-Stream.name).fetch())
         subscribed_streams = (Stream.query(
             Stream.subscribers == user.email().lower()).order(
                 -Stream.name).fetch())
         template_values = {
             'owned_streams': owned_streams,
             'subscribed_streams': subscribed_streams
         }
         template = JINJA_ENVIRONMENT.get_template('views/manage.html')
         self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #8
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     query = self.request.get('query')
     if query:
         streams = Stream.query().order(Stream.date).fetch()
         matches = filter(lambda s: query in s.name or query in s.tags,
                          streams)[:5]
     else:
         query = ''
         matches = []
     template_values = {'query': query, 'matches': matches}
     template = JINJA_ENVIRONMENT.get_template('views/search.html')
     self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
     self.response.write(template.render(template_values))
コード例 #9
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     streams = Stream.query().fetch()
     sorted_streams = sorted(streams, key=lambda s: len(s.recent_views),
                             reverse=True)
     config = TrendingEmailConfig.query().fetch(1)[0]
     if not config:
         config = TrendingEmailConfig()
     template_values = {
         'streams': sorted_streams[:3],
         'email_mode': config.mode
     }
     template = JINJA_ENVIRONMENT.get_template('views/trending.html')
     self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
     self.response.write(template.render(template_values))
コード例 #10
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def post(self):
     user = users.get_current_user()
     if user:
         stream_names = self.request.POST.getall('stream')
         if stream_names:
             streams = Stream.query(Stream.name.IN(stream_names)).fetch()
             ndb.delete_multi(map(lambda s: s.key, streams))
         self.redirect('/manage')
     else:
         template_values = {'error': 'Error: user not logged in.'}
         template = JINJA_ENVIRONMENT.get_template('views/error.html')
         self.response.headers['Content-Type'] = \
             'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #11
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     streams = Stream.query().fetch()
     sorted_streams = sorted(streams,
                             key=lambda s: len(s.recent_views),
                             reverse=True)
     config = TrendingEmailConfig.query().fetch(1)[0]
     if not config:
         config = TrendingEmailConfig()
     template_values = {
         'streams': sorted_streams[:3],
         'email_mode': config.mode
     }
     template = JINJA_ENVIRONMENT.get_template('views/trending.html')
     self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
     self.response.write(template.render(template_values))
コード例 #12
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     query = self.request.get('query')
     if query:
         streams = Stream.query().order(Stream.date).fetch()
         matches = filter(lambda s: query in s.name or query in s.tags,
                          streams)[:5]
     else:
         query = ''
         matches = []
     template_values = {
         'query': query,
         'matches': matches
     }
     template = JINJA_ENVIRONMENT.get_template('views/search.html')
     self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
     self.response.write(template.render(template_values))
コード例 #13
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def post(self):
     user = users.get_current_user()
     if user:
         stream_names = self.request.POST.getall('stream')
         if stream_names:
             streams = Stream.query(Stream.name.IN(stream_names)).fetch()
             ndb.delete_multi(map(lambda s: s.key, streams))
         self.redirect('/manage')
     else:
         template_values = {
             'error': 'Error: user not logged in.'
         }
         template = JINJA_ENVIRONMENT.get_template('views/error.html')
         self.response.headers['Content-Type'] = \
             'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #14
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def post(self):
     user = users.get_current_user()
     if user:
         stream_names = self.request.POST.getall('stream')
         if stream_names:
             streams = Stream.query(Stream.name.IN(stream_names)).fetch()
             for stream in streams:
                 stream.subscribers.append(user.email().lower())
                 stream.put()
         self.redirect('/view?stream_name=%s' % stream_names[0])
     else:
         template_values = {'error': 'Error: user not logged in.'}
         template = JINJA_ENVIRONMENT.get_template('views/error.html')
         self.response.headers['Content-Type'] = \
             'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #15
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def post(self):
     user = users.get_current_user()
     if user:
         stream_names = self.request.POST.getall('stream')
         if stream_names:
             streams = Stream.query(Stream.name.IN(stream_names)).fetch()
             for stream in streams:
                 stream.subscribers.append(user.email().lower())
                 stream.put()
         self.redirect('/view?stream_name=%s' % stream_names[0])
     else:
         template_values = {
             'error': 'Error: user not logged in.'
         }
         template = JINJA_ENVIRONMENT.get_template('views/error.html')
         self.response.headers['Content-Type'] = \
             'text/html; charset=utf-8'
         self.response.write(template.render(template_values))
コード例 #16
0
ファイル: connexus.py プロジェクト: ee382/connexus
    def get(self):
        query = self.request.get('query')
        stream_list = []
        if query:
            for stream in Stream.query().fetch():
                if query in stream.key.id() or stream.check_tags(query):
                    stream_dict = stream.to_dict()
                    stream_list.append(stream_dict)
        data = populate_user()
        data['results'] = stream_list[:SEARCH_COUNT]
        data['results_count'] = len(stream_list)
        data['query'] = query

        if self.request.get('raw'):
            print data
            self.response.headers['Content-Type'] = 'application/json'
            for stream in data['results']:
                stream.pop('image_ids', None); stream.pop('date')
            print data
            return self.response.out.write(json.dumps(data))

        template = JINJA_ENVIRONMENT.get_template('search.html')
        self.response.write(template.render(data))
コード例 #17
0
 def post(self):
     stream_token = self.request.get("stream_token")
     stream = Stream.query(Stream.streamSecret == stream_token).get()
     stream.key.delete()
     self.response.write("Disconnected")
     vars.stream_manager.message_room(stream.lecture_id,{'cmd': "removeUser", 'id': users.get_current_user().user_id()});
コード例 #18
0
ファイル: controllers.py プロジェクト: azizclass/apt-mh3338
 def get(self):
     streams = Stream.query().order(Stream.date).fetch()
     for stream in streams:
         self.update_term(stream.name, stream.name)
         for tag in stream.tags:
             self.update_term(tag, stream.name)
コード例 #19
0
ファイル: connexus.py プロジェクト: ee382/connexus
 def show_all_streams(self):
     if self.request.get('trending') == 'true':
         return self.show_trending()
     streams = Stream.query().order(Stream.date).fetch()
     streams = [x.to_dict() for x in streams]
     return self.response.out.write(json.dumps(streams, cls=MyEncoder))