예제 #1
0
    def post(self):
        self.response.headers['Content-Type'] = 'text/html'
        action = self.request.get('button')
        user = users.get_current_user()

        user_key = ndb.Key('MyUser', user.user_id())
        user_info = user_key.get()

        if action == 'Add':
            original_word = (self.request.get('Word')).lower()

            if not re.match("^[a-z]*$", original_word.lower()):
                message = "Please enter alphabets only"

            else:

                Word = lexi(self.request.get('Word'))
                anagram_key = ndb.Key('Anagram', user.email() + Word)
                anagram = anagram_key.get()
                # & anagram.User != user
                if anagram == None:
                    new_anagram = Anagram(id=user.email() + Word,
                                          AnagramKey=Word)
                    new_anagram.User = user.email()
                    new_anagram.WordList.append(original_word)
                    new_anagram.WordCount = 1
                    new_anagram.LetterCount = len(original_word)
                    new_anagram.put()

                    user_info.myAnagram = user_info.myAnagram + 1
                    user_info.myWordCount = user_info.myWordCount + 1
                    user_info.put()

                    message = "Word added"

                else:
                    flag = False
                    for word in anagram.WordList:
                        if word == original_word:
                            flag = True
                            break
                        else:
                            flag = False

                    if flag:
                        message = "Word already exists"
                    else:
                        # anagram.User=user.email()
                        anagram.WordList.append(original_word)
                        anagram.WordCount = anagram.WordCount + 1
                        anagram.put()
                        message = "Word added"

                        user_info.myWordCount = user_info.myWordCount + 1
                        user_info.put()

            template_values = {'message': message}
            template = JINJA_ENVIRONMENT.get_template('add.html')
            self.response.write(template.render(template_values))
예제 #2
0
    def post(self):

        self.response.headers["Content-Type"] = "text/html"

        file = self.request.get("textfile")
        openFile = open(file)
        readLine = openFile.readline()

        while readLine:

            text_word = (readLine.strip('\n\r')).lower()
            sorted_key = Services().sorted_key(word=text_word)

            list_word = Anagram.query()
            list_word = list_word.filter(
                Anagram.anagram_key == sorted_key,
                Anagram.user_id == Services().get_current_user_id())
            list_word = list_word.fetch()

            valid_permutation = Services().validpermutations(text=sorted_key)

            if len(valid_permutation) > 0:

                if len(list_word) > 0:

                    anagram = list_word[0]

                    if text_word not in anagram.inputed_words:
                        inputed_words = anagram.inputed_words
                        inputed_words.append(text_word)
                        anagram.inputed_words = inputed_words
                        anagram.inputed_words_count = anagram.inputed_words_count + 1
                        anagram.put()

                else:

                    new_anagram = Anagram(
                        anagram_key=sorted_key,
                        anagram_words=Services().possiblepermutations(
                            text=sorted_key),
                        inputed_words=[text_word],
                        inputed_words_count=1,
                        word_length=len(text_word),
                        user_id=Services().get_current_user_id())
                    new_anagram.put()

            readLine = openFile.readline()

        openFile.close()

        message = "Upload completed"

        template_values = {'message': message}

        template = JINJA_ENVIRONMENT.get_template("importdata.html")
        self.response.write(template.render(template_values))
예제 #3
0
def add_new_anagram(my_user, text, anagram_id, anagram_key):
    if is_english_word(text):
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generate_id(text)
        anagram.length = len(text)
        anagram.user_id = my_user.key.id()
        anagram.put()
        # add key of the new anagram to the users KeyProperty
        my_user.anagrams.append(anagram_key)
        my_user.put()
예제 #4
0
def addanagram_new(my_user, text, words, anagram_id, anagram_key):
    if englishword(text):
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generateid_for_users(text)
        anagram.length = len(text)
        anagram.words_count = len(anagram.words)
        anagram.sub_words = words
        anagram.user_id = my_user.key.id()
        anagram.put()
        my_user.anagrams.append(anagram_key)
        my_user.put()
    def post(self):

        self.response.headers["Content-Type"] = "text/html"

        if self.request.get("addword") == "Add Word":
            user_word = self.request.get("word").lower()

            if Services().get_current_user() == None or user_word == None or user_word == "" :
                self.redirect("/addword")
                return

            current_user_id = Services().get_current_user_id()
            sorted_key = Services().sorted_key(word =user_word)

            list_word = Anagram.query()
            list_word = list_word.filter(Anagram.anagram_key == sorted_key,Anagram.user_id == current_user_id)
            list_word = list_word.fetch()

            valid_permutation = Services().validpermutations(text=sorted_key)


            if len(valid_permutation) == 0:
                self.redirect("/addword")
                return

            if len(list_word) > 0:
                anagram = list_word[0]

                if user_word in anagram.inputed_words:
                    self.redirect("/addword")
                    return

                inputed_words = anagram.inputed_words
                inputed_words.append(user_word)
                anagram.inputed_words = inputed_words
                anagram.inputed_words_count = anagram.inputed_words_count + 1
                anagram.put()

            else:

                new_anagram = Anagram(anagram_key=sorted_key,
                                   anagram_words = Services().possiblepermutations(text=sorted_key),
                                   inputed_words = [user_word],
                                   inputed_words_count = 1,
                                   word_length = len(user_word),
                                   user_id = current_user_id)
                new_anagram.put()

        self.redirect("/")
예제 #6
0
    def post(self):
        self.response.headers["Content-Type"] = "text/html"
        # checking whether the key is add word
        if self.request.get("newdevice") == "Add Word":
            inputed_word = self.request.get("word").lower()
            # checking whether the inputed word is null or not  and redirecting to the add word paeg
            if Services().get_current_user(
            ) == None or inputed_word == None or inputed_word == "":
                self.redirect("/newdevice")
                return
            current_user_id = Services().get_current_user_id()
            sorted_key = Services().sorted_key(word=inputed_word)
            list_word = Anagram.query()
            list_word = list_word.filter(Anagram.anagram_key == sorted_key,
                                         Anagram.user_id == current_user_id)
            list_word = list_word.fetch()
            valid_permutation = Services().validpermutations(text=sorted_key)
            # checking whether the inputed word has valid permutations or not
            if len(valid_permutation) == 0:
                self.redirect("/newdevice")
                return
# checking whether the there are any word in the list or redirecting to the add word page
            if len(list_word) > 0:
                anagram = list_word[0]
                if inputed_word in anagram.input_words:
                    self.redirect("/newdevice")
                    return

                inputed_words = anagram.input_words
                inputed_words.append(inputed_word)
                anagram.input_words = inputed_words
                anagram.input_words_count = anagram.input_words_count + 1
                anagram.put()

            else:

                new_anagram = Anagram(
                    anagram_key=sorted_key,
                    anagram_words=Services().permutations(text=sorted_key),
                    input_words=[inputed_word],
                    input_words_count=1,
                    word_length=len(inputed_word),
                    user_id=current_user_id)
                new_anagram.put()
        self.redirect("/")
def add_new_anagram(my_user, text, anagram_id, anagram_key):
    if text:
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generate_id(text)
        anagramList = list(text)
        anagram.sub_anagram = generateSubAnagrams(anagramList)
        anagram.length = len(text)
        anagram.user_id = my_user.key.id()
        anagram.put()

        my_user.anagrams.append(anagram_key)
        if anagram.sorted_word is not None:
            my_user.anagram_count += 1
        my_user.anagram_count
        if anagram.words is not None:
            my_user.words_count += 1
        my_user.words_count
        my_user.put()
예제 #8
0
    def post(self):
        self.response.headers['Content-Type'] = 'text/html'
        action = self.request.get('button')

        user = users.get_current_user()
        myuser_key = ndb.Key('MyUser', user.user_id())
        myuser = myuser_key.get()
        file = self.request.get('myFile')

        if action == 'UPLOAD':

            f = open(file)
            line = f.readline()
            # count = 1
            while line:
                original_word = (line.strip('\n\r')).lower()
                lexi_word = lexi(original_word)

                anagram_key = ndb.Key('Anagram',user.email()+lexi_word)
                anagram = anagram_key.get()
                if anagram == None:
                    new_anagram = Anagram(id=user.email()+lexi_word,AnagramKey=lexi_word)
                    new_anagram.User=user.email()
                    new_anagram.WordList.append(original_word)
                    new_anagram.WordCount = 1
                    new_anagram.LetterCount =  len(original_word)
                    new_anagram.put()

                    myuser.myAnagram = myuser.myAnagram + 1
                    myuser.myWordCount = myuser.myWordCount + 1
                    myuser.put()
                else:
                    flag = False
                    for word in anagram.WordList:
                        if word == original_word:
                            flag = True
                            break
                        else:
                            flag = False

                    if flag:
                        message = "Word already exists"
                    else:
                        # anagram.User=user.email()
                        anagram.WordList.append(original_word)
                        anagram.WordCount = anagram.WordCount + 1
                        anagram.put()
                        # message = "Word added"


                        myuser.myWordCount = myuser.myWordCount + 1
                        myuser.put()

                # count = count + 1
                line = f.readline()

            f.close()

        template_values={
                'message':"File Uploaded"
                }
        template = JINJA_ENVIRONMENT.get_template('upload.html')
        self.response.write(template.render(template_values))