Show More
@@ -0,0 +1,1 b'' | |||
|
1 | __author__ = 'vurdalak' |
@@ -0,0 +1,1 b'' | |||
|
1 | __author__ = 'vurdalak' |
@@ -0,0 +1,29 b'' | |||
|
1 | from datetime import datetime, timedelta | |
|
2 | from django.core.management import BaseCommand | |
|
3 | from django.db import transaction | |
|
4 | from django.db.models import Count | |
|
5 | from boards.models import User, Post | |
|
6 | ||
|
7 | __author__ = 'neko259' | |
|
8 | ||
|
9 | OLD_USER_AGE_DAYS = 90 | |
|
10 | ||
|
11 | ||
|
12 | class Command(BaseCommand): | |
|
13 | help = 'Removes empty users (that don\'t have posts or tags' | |
|
14 | ||
|
15 | @transaction.atomic | |
|
16 | def handle(self, *args, **options): | |
|
17 | old_registration_date = datetime.now().date() - timedelta( | |
|
18 | OLD_USER_AGE_DAYS) | |
|
19 | ||
|
20 | old_users = User.objects.annotate(tags_count=Count('fav_tags')).filter( | |
|
21 | tags_count=0).filter(registration_time__lt=old_registration_date) | |
|
22 | deleted_users = 0 | |
|
23 | for user in old_users: | |
|
24 | if not Post.objects.filter(user=user).exists(): | |
|
25 | self.stdout.write('Deleting user %s' % user.user_id) | |
|
26 | user.delete() | |
|
27 | deleted_users += 1 | |
|
28 | ||
|
29 | self.stdout.write('Deleted %d users' % deleted_users) No newline at end of file |
@@ -161,8 +161,7 b' class PagesTest(TestCase):' | |||
|
161 | 161 | |
|
162 | 162 | response_not_existing = client.get(THREAD_PAGE + str( |
|
163 | 163 | existing_post_id + 1) + '/') |
|
164 | self.assertEqual(PAGE_404, | |
|
165 | response_not_existing.templates[0].name, | |
|
164 | self.assertEqual(PAGE_404, response_not_existing.templates[0].name, | |
|
166 | 165 | u'Not existing thread is opened') |
|
167 | 166 | |
|
168 | 167 | response_existing = client.get(TAG_PAGE + tag_name + '/') |
@@ -177,7 +176,7 b' class PagesTest(TestCase):' | |||
|
177 | 176 | |
|
178 | 177 | reply_id = Post.objects.create_post('', TEST_TEXT, |
|
179 | 178 | thread=Post.objects.all()[0] |
|
180 | .thread) | |
|
179 | .get_thread()) | |
|
181 | 180 | response_not_existing = client.get(THREAD_PAGE + str( |
|
182 | 181 | reply_id) + '/') |
|
183 | 182 | self.assertEqual(PAGE_404, |
@@ -37,9 +37,6 b' def api_get_threaddiff(request, thread_i' | |||
|
37 | 37 | |
|
38 | 38 | thread = get_object_or_404(Post, id=thread_id).get_thread() |
|
39 | 39 | |
|
40 | logger.info('Getting thread #%s diff since %s' % (thread_id, | |
|
41 | last_update_time)) | |
|
42 | ||
|
43 | 40 | filter_time = datetime.fromtimestamp(float(last_update_time) / 1000000, |
|
44 | 41 | timezone.get_current_timezone()) |
|
45 | 42 |
@@ -13,8 +13,6 b' import neboard' | |||
|
13 | 13 | |
|
14 | 14 | BAN_REASON_SPAM = 'Autoban: spam bot' |
|
15 | 15 | |
|
16 | OLD_USER_AGE_DAYS = 90 | |
|
17 | ||
|
18 | 16 | PARAMETER_FORM = 'form' |
|
19 | 17 | |
|
20 | 18 | |
@@ -74,9 +72,6 b' class BaseBoardView(View):' | |||
|
74 | 72 | user = User.objects.create(user_id=new_id, rank=RANK_USER, |
|
75 | 73 | registration_time=time_now) |
|
76 | 74 | |
|
77 | # TODO Move this to manage.py commands | |
|
78 | #self._delete_old_users() | |
|
79 | ||
|
80 | 75 | session['user_id'] = user.id |
|
81 | 76 | else: |
|
82 | 77 | user = User.objects.select_related('fav_tags').get( |
@@ -97,21 +92,6 b' class BaseBoardView(View):' | |||
|
97 | 92 | |
|
98 | 93 | return theme |
|
99 | 94 | |
|
100 | def _delete_old_users(self): | |
|
101 | """ | |
|
102 | Delete users with no favorite tags and posted messages. These can be spam | |
|
103 | bots or just old user accounts | |
|
104 | """ | |
|
105 | ||
|
106 | old_registration_date = datetime.now().date() - timedelta( | |
|
107 | OLD_USER_AGE_DAYS) | |
|
108 | ||
|
109 | for user in User.objects.annotate(tags_count=Count('fav_tags')).filter( | |
|
110 | tags_count=0).filter( | |
|
111 | registration_time__lt=old_registration_date): | |
|
112 | if not Post.objects.filter(user=user).exists(): | |
|
113 | user.delete() | |
|
114 | ||
|
115 | 95 | @transaction.atomic |
|
116 | 96 | def _ban_current_user(self, request): |
|
117 | 97 | """ |
@@ -23,7 +23,10 b" PARAMETER_BUMPABLE = 'bumpable'" | |||
|
23 | 23 | class ThreadView(BaseBoardView, PostMixin, FormMixin): |
|
24 | 24 | |
|
25 | 25 | def get(self, request, post_id, mode=MODE_NORMAL, form=None): |
|
26 | opening_post = Post.objects.filter(id=post_id).only('thread_new')[0] | |
|
26 | try: | |
|
27 | opening_post = Post.objects.filter(id=post_id).only('thread_new')[0] | |
|
28 | except IndexError: | |
|
29 | raise Http404 | |
|
27 | 30 | |
|
28 | 31 | # If this is not OP, don't show it as it is |
|
29 | 32 | if not opening_post or not opening_post.is_opening(): |
General Comments 0
You need to be logged in to leave comments.
Login now