예제 #1
0
    def get(self):

        template_values = {
            'user': users.get_current_user(),
            'admin': users.is_current_user_admin(),
            'date_string': datetime.now().ctime(),
            'url': users.create_logout_url(self.request.host_url),
            'link_text': 'logout',
        }

        if self.request.get('kanji'):

            kanji = kanji_entry.all().filter("kanji =",
                                             self.request.get('kanji')).get()
            template_values['kanji'] = kanji

            if not template_values['kanji']:
                template_values['message'] = 'no kanji found'

            next_page = 'template/kanji.html'

        else:

            # setup paged query
            kanji_query = PagedQuery(kanji_entry.all(), PAGESIZE)

            # retreive requested page number, defaulting to page 1
            bookmark = self.request.get('bookmark')
            if bookmark:
                bookmark = int(bookmark)
            else:
                bookmark = 1
            logging.info('bookmark=' + str(bookmark))

            template_values['bookmark'] = str(bookmark)
            template_values['kanji_list'] = kanji_query.fetch_page(bookmark)
            template_values['page_links'] = PageLinks(
                page=bookmark,
                page_count=kanji_query.page_count(),
                url_root="/kanji",
                page_field="bookmark",
                page_range=10).get_links()

            next_page = 'template/kanjilist.html'

        path = os.path.join(os.path.dirname(__file__), next_page)
        self.response.out.write(template.render(path, template_values))
예제 #2
0
    def get( self ):

        template_values = {
            'user': users.get_current_user(),
            'admin': users.is_current_user_admin(),
            'date_string': datetime.now().ctime(),
            'url': users.create_logout_url( self.request.host_url ),
            'link_text': 'logout',
        }

        if self.request.get( 'kanji' ):

            kanji = kanji_entry.all().filter( "kanji =", self.request.get( 'kanji' ) ).get()
            template_values['kanji'] = kanji

            if not template_values['kanji']:
                template_values['message'] = 'no kanji found'

            next_page = 'template/kanji.html'

        else:

            # setup paged query
            kanji_query = PagedQuery( kanji_entry.all(), PAGESIZE )

            # retreive requested page number, defaulting to page 1
            bookmark = self.request.get( 'bookmark' )
            if bookmark:
                bookmark = int( bookmark )
            else:
                bookmark = 1
            logging.info( 'bookmark=' + str( bookmark ) )

            template_values['bookmark'] = str( bookmark )
            template_values['kanji_list'] = kanji_query.fetch_page( bookmark )
            template_values['page_links'] = PageLinks( 
            page = bookmark,
            page_count = kanji_query.page_count(),
            url_root = "/kanji",
            page_field = "bookmark",
            page_range = 10 ).get_links()

            next_page = 'template/kanjilist.html'

        path = os.path.join( os.path.dirname( __file__ ), next_page )
        self.response.out.write( template.render( path, template_values ) )
예제 #3
0
    def post(self):
        # add kanji to datastore

        template_values = {
            'timestamp': time.mktime(datetime.utcnow().timetuple()),
            'count': 0,
        }

        kanji_list = []
        existing_kanji = []
        kanji_query = kanji_entry.all()
        for kanji in kanji_query:
            existing_kanji.append(kanji.kanji)

        # kanji_list is a set of unique strings
        new_kanji = self.request.get('kanji')
        new_index = self.request.get('index')
        new_kanji = new_kanji.strip()

        if new_kanji in existing_kanji:
            message = "%s already in kanji list" % (new_kanji)

        elif new_kanji and not new_kanji in existing_kanji:
            new_entry = kanji_entry(kanji=new_kanji)
            if new_index:
                new_entry.index = int(new_index)
            new_entry = kanji_entry.get(new_entry.put())
            message = "%s added to kanji list" % (new_kanji)

            kanji_list.append(new_entry)

        else:
            message = "%s NOT added to kanji list" % (new_kanji)

        logging.info(message)
        template_values['message'] = message

        if kanji_list:
            template_values['kanji_list'] = kanji_list
            template_values['count'] = len(kanji_list)

        next_page = 'template/kanjifeed.xml'
        path = os.path.join(os.path.dirname(__file__), next_page)
        self.response.out.write(template.render(path, template_values))
예제 #4
0
    def post( self ):
        # add kanji to datastore

        template_values = {
            'timestamp': time.mktime( datetime.utcnow().timetuple() ),
            'count': 0,
        }

        kanji_list = []
        existing_kanji = []
        kanji_query = kanji_entry.all()
        for kanji in kanji_query:
            existing_kanji.append( kanji.kanji )

        # kanji_list is a set of unique strings
        new_kanji = self.request.get( 'kanji' )
        new_index = self.request.get( 'index' )
        new_kanji = new_kanji.strip()

        if new_kanji in existing_kanji:
            message = "%s already in kanji list" % ( new_kanji )

        elif new_kanji and not new_kanji in existing_kanji:
            new_entry = kanji_entry( kanji = new_kanji )
            if new_index:
                new_entry.index = int( new_index )
            new_entry = kanji_entry.get( new_entry.put() )
            message = "%s added to kanji list" % ( new_kanji )

            kanji_list.append( new_entry )

        else:
            message = "%s NOT added to kanji list" % ( new_kanji )

        logging.info( message )
        template_values['message'] = message

        if kanji_list:
            template_values['kanji_list'] = kanji_list
            template_values['count'] = len( kanji_list )

        next_page = 'template/kanjifeed.xml'
        path = os.path.join( os.path.dirname( __file__ ), next_page )
        self.response.out.write( template.render( path, template_values ) )
예제 #5
0
    def get(self):
        # returns all kanji in datastore

        kanji_list = []

        template_values = {
            'timestamp': time.mktime(datetime.utcnow().timetuple()),
            'count': 0,
        }

        kanji_query = kanji_entry.all()
        for kanji in kanji_query:
            kanji_list.append(kanji)

        if kanji_list:
            template_values['kanji_list'] = kanji_list
            template_values['count'] = len(kanji_list)

        next_page = 'template/kanjifeed.xml'

        path = os.path.join(os.path.dirname(__file__), next_page)
        self.response.out.write(template.render(path, template_values))
예제 #6
0
    def get( self ):
        # returns all kanji in datastore

        kanji_list = []

        template_values = {
            'timestamp': time.mktime( datetime.utcnow().timetuple() ),
            'count': 0,
        }

        kanji_query = kanji_entry.all()
        for kanji in kanji_query:
            kanji_list.append( kanji )

        if kanji_list:
            template_values['kanji_list'] = kanji_list
            template_values['count'] = len( kanji_list )

        next_page = 'template/kanjifeed.xml'

        path = os.path.join( os.path.dirname( __file__ ), next_page )
        self.response.out.write( template.render( path, template_values ) )
예제 #7
0
    def post( self ):

        new_words = []
        existing_words = []
        data = get_system_data()

        template_values = {
            'timestamp': time.mktime( datetime.utcnow().timetuple() ),
            'count': 0,
        }

        word_query = vocabulary_word.all()
        for word in word_query:
            existing_words.append( word )

        new_word = self.request.get( 'word' )

        if new_word:
            # retrieve existing record if any or create new record
            vocab_query = vocabulary_word.all()
            vocab_query.filter( "word =", new_word )
            vocab = vocab_query.get()

            is_new_word = False

            if not vocab:
                vocab = vocabulary_word( word = new_word )
                is_new_word = True

            # insert any new readings and meanings
            new_readings = self.request.get_all( 'reading' )
            for new_reading in new_readings:
                new_reading = new_reading.strip()
                if new_reading and not new_reading in vocab.readings:
                    vocab.readings.append( new_reading )

            new_meanings = self.request.get_all( 'meaning' )
            for new_meaning in new_meanings:
                new_meaning = new_meaning.strip()
                if new_meaning and not new_meaning in vocab.meanings:
                    vocab.meanings.append( new_meaning )

            # link related kanji
            for related_kanji in self.request.get_all( 'kanji' ):
                logging.info( "adding kanji '%s'" % related_kanji )
                try:
                    kanji_query = kanji_entry.all()
                    kanji_query.filter( "kanji =", related_kanji )
                    related_kanji_entry = kanji_query.get()
                    if related_kanji_entry:
                        vocab.related_kanji.append( related_kanji_entry.key() )

                    if related_kanji_entry.kanji_index > vocab.max_kanji_index:
                        vocab.max_kanji_index = related_kanji_entry.kanji_index

                except:
                    logging.error( "failed to add related kanji %s" % related_kanji )

            vocab = vocabulary_word.get( vocab.put() )

            if is_new_word:
                data.word_count = data.word_count + 1
                data.put()

            message = "new word '%s' created" % ( vocab.word )

            new_words.append( vocab )

        template_values['message'] = message

        if new_words:
            template_values['words'] = new_words
            template_values['count'] = len( new_words )

        next_page = 'template/vocabfeed.xml'

        path = os.path.join( os.path.dirname( __file__ ), next_page )
        self.response.out.write( template.render( path, template_values ) )
예제 #8
0
    def post(self):

        new_words = []
        existing_words = []
        data = get_system_data()

        template_values = {
            'timestamp': time.mktime(datetime.utcnow().timetuple()),
            'count': 0,
        }

        word_query = vocabulary_word.all()
        for word in word_query:
            existing_words.append(word)

        new_word = self.request.get('word')

        if new_word:
            # retrieve existing record if any or create new record
            vocab_query = vocabulary_word.all()
            vocab_query.filter("word =", new_word)
            vocab = vocab_query.get()

            is_new_word = False

            if not vocab:
                vocab = vocabulary_word(word=new_word)
                is_new_word = True

            # insert any new readings and meanings
            new_readings = self.request.get_all('reading')
            for new_reading in new_readings:
                new_reading = new_reading.strip()
                if new_reading and not new_reading in vocab.readings:
                    vocab.readings.append(new_reading)

            new_meanings = self.request.get_all('meaning')
            for new_meaning in new_meanings:
                new_meaning = new_meaning.strip()
                if new_meaning and not new_meaning in vocab.meanings:
                    vocab.meanings.append(new_meaning)

            # link related kanji
            for related_kanji in self.request.get_all('kanji'):
                logging.info("adding kanji '%s'" % related_kanji)
                try:
                    kanji_query = kanji_entry.all()
                    kanji_query.filter("kanji =", related_kanji)
                    related_kanji_entry = kanji_query.get()
                    if related_kanji_entry:
                        vocab.related_kanji.append(related_kanji_entry.key())

                    if related_kanji_entry.kanji_index > vocab.max_kanji_index:
                        vocab.max_kanji_index = related_kanji_entry.kanji_index

                except:
                    logging.error("failed to add related kanji %s" %
                                  related_kanji)

            vocab = vocabulary_word.get(vocab.put())

            if is_new_word:
                data.word_count = data.word_count + 1
                data.put()

            message = "new word '%s' created" % (vocab.word)

            new_words.append(vocab)

        template_values['message'] = message

        if new_words:
            template_values['words'] = new_words
            template_values['count'] = len(new_words)

        next_page = 'template/vocabfeed.xml'

        path = os.path.join(os.path.dirname(__file__), next_page)
        self.response.out.write(template.render(path, template_values))