Esempio n. 1
0
 def _assign_if_is_yesno(self):
     if self.text.strip() in settings.YES_WORDS or self.text.strip() in settings.NO_WORDS:
         return Poll.objects(ptype='yesno', open=True).order_by('-created_at').first()
     elif fuzzy_match_strings(self.text, settings.YES_WORDS) or fuzzy_match_strings(self.text, settings.NO_WORDS):
         return Poll.objects(ptype='yesno', open=True).order_by('-created_at').first()
     else:
         # return None
         #always asign uninteligibal responses to the last yes/no poll (possibility to distort poll results)
         return Poll.objects(ptype='yesno', open=True).order_by('-created_at').first()
Esempio n. 2
0
 def _assign_if_is_yesno(self):
     if self.text.strip() in settings.YES_WORDS or self.text.strip(
     ) in settings.NO_WORDS:
         return Poll.objects(ptype='yesno',
                             open=True).order_by('-created_at').first()
     elif fuzzy_match_strings(self.text,
                              settings.YES_WORDS) or fuzzy_match_strings(
                                  self.text, settings.NO_WORDS):
         return Poll.objects(ptype='yesno',
                             open=True).order_by('-created_at').first()
     else:
         # return None
         #always asign uninteligibal responses to the last yes/no poll (possibility to distort poll results)
         return Poll.objects(ptype='yesno',
                             open=True).order_by('-created_at').first()
Esempio n. 3
0
    def process_response(self):
        outgoing_message = self.poll.default_response

        if self.categories().count() > 0:
            for category in self.categories():
                for rule in category.rules():
                    if self._regex_compare_str(self.text, rule):
                        PollResponseCategory(**dict(poll_response=self, response_category=category)).save()

        if not self.is_categorized():
            start_str = settings.POLL_RESPONSE_START_STR
            if self.text.lower().startswith(start_str.lower()):
                txt = self.text[len(start_str):len(self.text)].strip()
                txt = re.sub('[!@#$.,-]', '', txt)
                if self.categories().count() > 0:
                    for category in self.categories():
                        for rule in category.rules():
                            if self._regex_compare_str(txt, rule):
                                PollResponseCategory(**dict(poll_response=self, response_category=category)).save()

        #last resort, fuzzy match to yes' and nos
        if not self.is_categorized():
            for txt in self.split_text():
                if fuzzy_match_strings(txt, settings.YES_WORDS, match_ratio=96):
                    category = ResponseCategory.objects(**dict(name='yes', poll=self.poll)).first()
                    PollResponseCategory(**dict(poll_response=self, response_category=category)).save()
                    break
                elif fuzzy_match_strings(txt, settings.NO_WORDS, match_ratio=96):
                    category = ResponseCategory.objects(**dict(name='no', poll=self.poll)).first()
                    PollResponseCategory(**dict(poll_response=self, response_category=category)).save()
                    break
                else:
                    pass

        #categorization fails, give up
        if not self.is_categorized():
            unknown_category = self.categories().filter(default=True).first()
            PollResponseCategory(**dict(poll_response=self, response_category=unknown_category)).save()
            if unknown_category.error_category:
                self.has_errors = True
                outgoing_message = unknown_category.response

        self.save()

        if not outgoing_message:
            return self, None,
        else:
            return self, outgoing_message,
Esempio n. 4
0
    def process_response(self):
        outgoing_message = self.poll.default_response

        if self.categories().count() > 0:
            for category in self.categories():
                for rule in category.rules():
                    if self._regex_compare_str(self.text, rule):
                        PollResponseCategory(
                            **dict(poll_response=self,
                                   response_category=category)).save()

        if not self.is_categorized():
            start_str = settings.POLL_RESPONSE_START_STR
            if self.text.lower().startswith(start_str.lower()):
                txt = self.text[len(start_str):len(self.text)].strip()
                txt = re.sub('[!@#$.,-]', '', txt)
                if self.categories().count() > 0:
                    for category in self.categories():
                        for rule in category.rules():
                            if self._regex_compare_str(txt, rule):
                                PollResponseCategory(
                                    **dict(poll_response=self,
                                           response_category=category)).save()

        #last resort, fuzzy match to yes' and nos
        if not self.is_categorized():
            for txt in self.split_text():
                if fuzzy_match_strings(txt, settings.YES_WORDS,
                                       match_ratio=96):
                    category = ResponseCategory.objects(
                        **dict(name='yes', poll=self.poll)).first()
                    PollResponseCategory(
                        **dict(poll_response=self,
                               response_category=category)).save()
                    break
                elif fuzzy_match_strings(txt,
                                         settings.NO_WORDS,
                                         match_ratio=96):
                    category = ResponseCategory.objects(
                        **dict(name='no', poll=self.poll)).first()
                    PollResponseCategory(
                        **dict(poll_response=self,
                               response_category=category)).save()
                    break
                else:
                    pass

        #categorization fails, give up
        if not self.is_categorized():
            unknown_category = self.categories().filter(default=True).first()
            PollResponseCategory(
                **dict(poll_response=self,
                       response_category=unknown_category)).save()
            if unknown_category.error_category:
                self.has_errors = True
                outgoing_message = unknown_category.response

        self.save()

        if not outgoing_message:
            return self, None,
        else:
            return self, outgoing_message,