13
13
from .listeners import start_listening
14
14
from .utils import sanitize_markdown
15
15
16
- VERSIONS = getattr (settings , ' CAB_VERSIONS' , ())
16
+ VERSIONS = getattr (settings , " CAB_VERSIONS" , ())
17
17
18
18
19
19
class LanguageManager (models .Manager ):
20
20
def top_languages (self ):
21
- return self .annotate (score = Count (' snippet' )).order_by (' -score' )
21
+ return self .annotate (score = Count (" snippet" )).order_by (" -score" )
22
22
23
23
24
24
class Language (models .Model ):
@@ -31,39 +31,43 @@ class Language(models.Model):
31
31
objects = LanguageManager ()
32
32
33
33
class Meta :
34
- ordering = (' name' ,)
34
+ ordering = (" name" ,)
35
35
36
36
def __str__ (self ):
37
37
return self .name
38
38
39
39
def get_absolute_url (self ):
40
- return reverse (' cab_language_detail' , kwargs = {' slug' : self .slug })
40
+ return reverse (" cab_language_detail" , kwargs = {" slug" : self .slug })
41
41
42
42
def get_lexer (self ):
43
43
return lexers .get_lexer_by_name (self .language_code )
44
44
45
45
46
46
class SnippetManager (models .Manager ):
47
47
def top_authors (self ):
48
- return User .objects .annotate (
49
- score = Count ('snippet' )).order_by ('-score' , 'username' )
48
+ return User .objects .annotate (score = Count ("snippet" )).order_by (
49
+ "-score" , "username"
50
+ )
50
51
51
52
def top_tags (self ):
52
- return self .model .tags .most_common ().order_by (' -num_times' , ' name' )
53
+ return self .model .tags .most_common ().order_by (" -num_times" , " name" )
53
54
54
55
def top_rated (self ):
55
56
# this is slow
56
57
# return self.annotate(score=Sum('ratings__score')).order_by('-score')
57
- return self .all ().order_by (' -rating_score' , ' -pub_date' )
58
+ return self .all ().order_by (" -rating_score" , " -pub_date" )
58
59
59
60
def most_bookmarked (self ):
60
61
# this is slow
61
62
# self.annotate(score=Count('bookmarks')).order_by('-score')
62
- return self .all ().order_by (' -bookmark_count' , ' -pub_date' )
63
+ return self .all ().order_by (" -bookmark_count" , " -pub_date" )
63
64
64
65
def matches_tag (self , tag ):
65
66
return self .filter (tags__in = [tag ])
66
67
68
+ def active_snippet (self ):
69
+ return self .exclude (flags__flag = SnippetFlag .FLAG_SPAM )
70
+
67
71
68
72
class Snippet (models .Model ):
69
73
title = models .CharField (max_length = 255 )
@@ -73,7 +77,7 @@ class Snippet(models.Model):
73
77
description_html = models .TextField (editable = False )
74
78
code = models .TextField ()
75
79
highlighted_code = models .TextField (editable = False )
76
- version = models .CharField (max_length = 5 , choices = VERSIONS , default = ' 0.0' )
80
+ version = models .CharField (max_length = 5 , choices = VERSIONS , default = " 0.0" )
77
81
pub_date = models .DateTimeField (auto_now_add = True )
78
82
updated_date = models .DateTimeField (auto_now = True )
79
83
bookmark_count = models .IntegerField (default = 0 ) # denormalized count
@@ -85,7 +89,7 @@ class Snippet(models.Model):
85
89
objects = SnippetManager ()
86
90
87
91
class Meta :
88
- ordering = (' -pub_date' ,)
92
+ ordering = (" -pub_date" ,)
89
93
90
94
def __str__ (self ):
91
95
return self .title
@@ -96,15 +100,15 @@ def save(self, *args, **kwargs):
96
100
super (Snippet , self ).save (* args , ** kwargs )
97
101
98
102
def get_absolute_url (self ):
99
- return reverse (' cab_snippet_detail' , kwargs = {' snippet_id' : self .id })
103
+ return reverse (" cab_snippet_detail" , kwargs = {" snippet_id" : self .id })
100
104
101
105
def highlight (self ):
102
- return highlight (self . code ,
103
- self .language .get_lexer (),
104
- formatters . HtmlFormatter ( linenos = True ) )
106
+ return highlight (
107
+ self . code , self .language .get_lexer (), formatters . HtmlFormatter ( linenos = True )
108
+ )
105
109
106
110
def get_tagstring (self ):
107
- return ", " .join ([t .name for t in self .tags .order_by (' name' ).all ()])
111
+ return ", " .join ([t .name for t in self .tags .order_by (" name" ).all ()])
108
112
109
113
def get_version (self ):
110
114
return dict (VERSIONS )[self .version ]
@@ -119,28 +123,30 @@ def update_bookmark_count(self):
119
123
120
124
def mark_as_inappropiate (self ):
121
125
snippet_flag = SnippetFlag (
122
- snippet = self , user = self .author , flag = SnippetFlag .FLAG_INAPPROPRIATE )
126
+ snippet = self , user = self .author , flag = SnippetFlag .FLAG_INAPPROPRIATE
127
+ )
123
128
snippet_flag .save ()
124
129
125
130
def mark_as_spam (self ):
126
131
snippet_flag = SnippetFlag (
127
- snippet = self , user = self .author , flag = SnippetFlag .FLAG_SPAM )
132
+ snippet = self , user = self .author , flag = SnippetFlag .FLAG_SPAM
133
+ )
128
134
snippet_flag .save ()
129
135
130
136
131
137
class SnippetFlag (models .Model ):
132
138
FLAG_SPAM = 1
133
139
FLAG_INAPPROPRIATE = 2
134
140
FLAG_CHOICES = (
135
- (FLAG_SPAM , ' Spam' ),
136
- (FLAG_INAPPROPRIATE , ' Inappropriate' ),
141
+ (FLAG_SPAM , " Spam" ),
142
+ (FLAG_INAPPROPRIATE , " Inappropriate" ),
137
143
)
138
- snippet = models .ForeignKey (Snippet , related_name = ' flags' , on_delete = models .CASCADE )
144
+ snippet = models .ForeignKey (Snippet , related_name = " flags" , on_delete = models .CASCADE )
139
145
user = models .ForeignKey (User , on_delete = models .CASCADE )
140
146
flag = models .IntegerField (choices = FLAG_CHOICES )
141
147
142
148
def __str__ (self ):
143
- return ' %s flagged as %s by %s' % (
149
+ return " %s flagged as %s by %s" % (
144
150
self .snippet .title ,
145
151
self .get_flag_display (),
146
152
self .user .username ,
@@ -155,12 +161,16 @@ def remove_and_ban(self):
155
161
156
162
157
163
class Bookmark (models .Model ):
158
- snippet = models .ForeignKey (Snippet , related_name = 'bookmarks' , on_delete = models .CASCADE )
159
- user = models .ForeignKey (User , related_name = 'cab_bookmarks' , on_delete = models .CASCADE )
164
+ snippet = models .ForeignKey (
165
+ Snippet , related_name = "bookmarks" , on_delete = models .CASCADE
166
+ )
167
+ user = models .ForeignKey (
168
+ User , related_name = "cab_bookmarks" , on_delete = models .CASCADE
169
+ )
160
170
date = models .DateTimeField (auto_now_add = True )
161
171
162
172
class Meta :
163
- ordering = (' -date' ,)
173
+ ordering = (" -date" ,)
164
174
165
175
def __str__ (self ):
166
176
return "%s bookmarked by %s" % (self .snippet , self .user )
0 commit comments