~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to check_input/models.py

  • Committer: franku
  • Date: 2017-11-24 09:24:41 UTC
  • mto: This revision was merged to the branch mainline in revision 477.
  • Revision ID: somal@arcor.de-20171124092441-i3fuv708y2hk6b00
refactoring of variables; moved spam_check into the model

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
from django.contrib.auth.models import User
3
3
from django.contrib.contenttypes.models import ContentType
4
4
from django.contrib.contenttypes.fields import GenericForeignKey
5
 
 
6
 
 
7
 
class FoundSpam(models.Model):
8
 
    spam_text = models.CharField(max_length=200)
9
 
    user = models.ForeignKey(User)
10
 
    content_type = models.ForeignKey(ContentType)
 
5
from django.conf import settings
 
6
import re
 
7
 
 
8
 
 
9
class SuspiciousInput(models.Model):
 
10
    """Model for collecting suspicios user input.
 
11
    
 
12
    content_object = Models instance of a saved(!) object
 
13
    user = user
 
14
    text = text to check for suspicious content
 
15
    """
 
16
    
 
17
    text = models.CharField(max_length=200, verbose_name="suspicious user input")
 
18
    user = models.ForeignKey(User, verbose_name="related user")
 
19
    content_type = models.ForeignKey(ContentType, verbose_name="related model")
11
20
    object_id = models.PositiveIntegerField()
12
21
    content_object = GenericForeignKey('content_type', 'object_id')
 
22
    
 
23
    class Meta:
 
24
        ordering = ['content_type_id']
 
25
        default_permissions = ('change',)
13
26
 
14
27
    def __unicode__(self):
15
 
        return self.spam_text
 
28
        return self.text
 
29
    
 
30
    def is_suspicious(self):
 
31
        if any(x in self.text.lower() for x in settings.ANTI_SPAM_KWRDS):
 
32
            return True
 
33
        if re.search(settings.ANTI_SPAM_PHONE_NR, self.text):
 
34
            return True
 
35
        return False
 
36
 
 
37
    def save(self, *args, **kwargs):
 
38
        is_spam = self.is_suspicious()
 
39
        if is_spam:
 
40
            super(SuspiciousInput, self).save(*args, **kwargs)
 
41
        return is_spam
 
 
b'\\ No newline at end of file'