Skip to content

Commit

Permalink
Bump Django 2.1.2, remove ColdStartRating (#636)
Browse files Browse the repository at this point in the history
* Bump Django 2, remove ColdStartRating

* Bump Django 2.1.2
  • Loading branch information
jilljenn committed Oct 7, 2018
1 parent 9a33bc5 commit 6a6153f
Show file tree
Hide file tree
Showing 17 changed files with 48 additions and 66 deletions.
5 changes: 2 additions & 3 deletions mangaki/mangaki/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.contrib import admin
from django.contrib import messages
from django.contrib.admin import helpers
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import transaction
from django.db.models import Count
from django.template.response import TemplateResponse
Expand All @@ -14,7 +14,7 @@
Work, TaggedWork, WorkTitle, Genre, Track, Tag, Artist, Studio, Editor, Rating, Page,
Suggestion, Evidence, Announcement, Recommendation, Pairing, Reference, Top, Ranking,
Role, Staff, FAQTheme,
FAQEntry, ColdStartRating, Trope, Language,
FAQEntry, Trope, Language,
ExtLanguage, WorkCluster,
UserBackgroundTask,
ActionType,
Expand Down Expand Up @@ -712,7 +712,6 @@ class EvidenceAdmin(admin.ModelAdmin):
admin.site.register(Page)
admin.site.register(FAQEntry)
admin.site.register(Recommendation)
admin.site.register(ColdStartRating)
admin.site.register(Trope)
admin.site.register(Language)
admin.site.register(ExtLanguage)
Expand Down
37 changes: 10 additions & 27 deletions mangaki/mangaki/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.search import SearchVectorField
from django.core.files import File
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models, transaction
from django.db.models import CharField, F, Func, Lookup, Value, Q, FloatField, ExpressionWrapper
from django.db.models.functions import Cast
Expand Down Expand Up @@ -130,7 +130,7 @@ def __str__(self):


class Work(models.Model):
redirect = models.ForeignKey('Work', blank=True, null=True)
redirect = models.ForeignKey('Work', on_delete=models.SET_NULL, blank=True, null=True)
title = models.CharField(max_length=255)
source = models.CharField(max_length=1044, blank=True) # Rationale: JJ a trouvé que lors de la migration SQLite → PostgreSQL, bah il a pas trop aimé. (max_length empirique)
ext_poster = models.CharField(max_length=128, db_index=True)
Expand Down Expand Up @@ -224,14 +224,14 @@ def __str__(self):


class WorkTitle(models.Model):
work = models.ForeignKey('Work')
work = models.ForeignKey('Work', on_delete=models.CASCADE)
# 255 should be safe, we have seen titles of 187 characters in Japanese.
# So we could expect longer titles in English.
title = models.CharField(max_length=255, blank=True, db_index=True)
title_search = SearchVectorField('title')
language = models.ForeignKey('Language',
language = models.ForeignKey('Language', on_delete=models.SET_NULL,
null=True)
ext_language = models.ForeignKey('ExtLanguage',
ext_language = models.ForeignKey('ExtLanguage', on_delete=models.SET_NULL,
null=True)
type = models.CharField(max_length=9, choices=(
('main', 'principal'),
Expand Down Expand Up @@ -271,7 +271,7 @@ class ExtLanguage(models.Model):
max_length=8,
db_index=True
)
lang = models.ForeignKey('Language')
lang = models.ForeignKey('Language', on_delete=models.CASCADE)

class Meta:
unique_together = ('ext_lang', 'source')
Expand Down Expand Up @@ -349,8 +349,8 @@ def __str__(self):


class TaggedWork(models.Model):
work = models.ForeignKey('Work')
tag = models.ForeignKey('Tag')
work = models.ForeignKey('Work', on_delete=models.CASCADE)
tag = models.ForeignKey('Tag', on_delete=models.CASCADE)
weight = models.IntegerField(default=0)

class Meta:
Expand Down Expand Up @@ -583,12 +583,12 @@ def get_field_changeset(works):


class WorkCluster(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
works = models.ManyToManyField(Work)
reported_on = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=11, choices=CLUSTER_CHOICES, default='unprocessed')
checker = models.ForeignKey(User, related_name='reported_clusters', on_delete=models.CASCADE, blank=True, null=True)
resulting_work = models.ForeignKey(Work, related_name='clusters', blank=True, null=True)
resulting_work = models.ForeignKey(Work, on_delete=models.SET_NULL, related_name='clusters', blank=True, null=True)
merged_on = models.DateTimeField(blank=True, null=True)
origin = models.ForeignKey(Suggestion, related_name='origin_suggestion', on_delete=models.CASCADE, blank=True, null=True)

Expand Down Expand Up @@ -666,23 +666,6 @@ class Ranking(models.Model):
nb_stars = models.PositiveIntegerField()


class ColdStartRating(models.Model):
user = models.ForeignKey(User, related_name='cold_start_rating')
work = models.ForeignKey(Work)
choice = models.CharField(max_length=8, choices=(
('like', 'J\'aime'),
('dislike', 'Je n\'aime pas'),
('dontknow', 'Je ne connais pas')
))
date = models.DateField(auto_now=True)

class Meta:
unique_together = ('user', 'work')

def __str__(self):
return '%s %s %s' % (self.user, self.choice, self.work)


class FAQTheme(models.Model):
order = models.IntegerField(unique=True)
theme = models.CharField(max_length=200)
Expand Down
1 change: 0 additions & 1 deletion mangaki/mangaki/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware'
)
Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/tests/test_change_default_title.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.contrib import admin
from mangaki.models import Work, Category, WorkTitle, Editor, Studio
Expand Down
4 changes: 2 additions & 2 deletions mangaki/mangaki/tests/test_merge.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from unittest.mock import patch, Mock

from django.test import TestCase
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.contrib import admin

Expand Down Expand Up @@ -95,7 +95,7 @@ def test_merge_confirmed(self):
'fields_to_choose': '',
'fields_required': ''
}
with self.assertNumQueries(40):
with self.assertNumQueries(39):
self.client.post(merge_url, context)
self.assertEqual(list(Rating.objects.filter(user__in=self.users).values_list('choice', flat=True)), ['favorite'] * 4)
self.assertEqual(Work.all_objects.filter(redirect__isnull=True).count(), 1)
Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/tests/test_rating.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model

from mangaki.models import Studio, Category, Rating, Editor, Work
Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/tests/test_reco.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import shutil

from django.test import TestCase
from django.core.urlresolvers import reverse_lazy
from django.urls import reverse_lazy
from django.contrib.auth import get_user_model

from mangaki.models import Category, Work, Rating
Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/tests/test_refresh_from_anidb.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.conf import settings
from django.test import TestCase

from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.contrib import admin

Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/tests/test_research.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from mangaki.models import Profile
from mangaki.utils.tokens import compute_token, KYOTO_SALT
Expand Down
3 changes: 2 additions & 1 deletion mangaki/mangaki/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.urls import path
from django.contrib import admin
from django_js_reverse.views import urls_js

Expand Down Expand Up @@ -76,5 +77,5 @@
import debug_toolbar

urlpatterns += [
url(r'^__debug__/', include(debug_toolbar.urls)),
path('__debug__/', include(debug_toolbar.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
3 changes: 0 additions & 3 deletions mangaki/mangaki/utils/archive_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
WorkCluster,
Recommendation,
Pairing,
ColdStartRating,
UserBackgroundTask,
UserArchive
)
Expand Down Expand Up @@ -54,7 +53,6 @@ def export_archive_records(user: User, writer):
WorkCluster: export_workclusters,
Recommendation: ['target_user__username', 'work__title'],
Pairing: ['date', 'artist__name', 'work__title', 'is_checked'],
ColdStartRating: ['work__title', 'choice', 'date'],
UserBackgroundTask: ['created_on', 'task_id', 'tag'],
UserArchive: export_archive_records
}
Expand All @@ -70,7 +68,6 @@ def export_archive_records(user: User, writer):
WorkCluster: 'work_clusters.csv',
Recommendation: 'recommendations.csv',
Pairing: 'pairings.csv',
ColdStartRating: 'cold_start_ratings.csv',
UserBackgroundTask: 'user_background_tasks.csv',
UserArchive: 'user_archives.csv'
}
Expand Down
1 change: 0 additions & 1 deletion mangaki/mangaki/utils/recommendations.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import numpy as np
import pandas as pd
from scipy.sparse import coo_matrix

from mangaki.models import Rating, Work
from mangaki.utils.fit_algo import fit_algo, get_algo_backup
Expand Down
3 changes: 1 addition & 2 deletions mangaki/mangaki/utils/work_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
Suggestion,
Pairing,
Reference,
ColdStartRating,
WorkTitle,
Work
)
Expand Down Expand Up @@ -170,7 +169,7 @@ def redirect_related_objects(self):
Trope.objects.filter(origin_id__in=work_ids).update(origin_id=self.target_work.id)
TaggedWork.objects.filter(work_id__in=work_ids).exclude(tag_id__in=existing_tag_ids).update(
work_id=self.target_work.id)
for model in [WorkTitle, Suggestion, Recommendation, Pairing, ColdStartRating]:
for model in [WorkTitle, Suggestion, Recommendation, Pairing]:
model.objects.filter(work_id__in=work_ids).update(work_id=self.target_work.id)

Work.objects.filter(id__in=work_ids).exclude(id=self.target_work.id).update(redirect=self.target_work)
Expand Down
12 changes: 6 additions & 6 deletions mangaki/mangaki/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
from mangaki.choices import TOP_CATEGORY_CHOICES, SORT_MODE_CHOICES
from mangaki.forms import SuggestionForm
from mangaki.mixins import AjaxableResponseMixin, JSONResponseMixin
from mangaki.models import (Artist, Category, ColdStartRating, FAQTheme, Page, Pairing, Profile, Ranking, Rating,
from mangaki.models import (Artist, Category, FAQTheme, Page, Pairing, Profile, Ranking, Rating,
Recommendation, Staff, Suggestion, Evidence, Top, Trope, Work, WorkCluster)
from mangaki.utils.mal import client
from mangaki.tasks import import_mal, get_current_mal_import, redis_pool
Expand Down Expand Up @@ -393,7 +393,7 @@ def get_profile(request,
user = get_object_or_404(User.objects.select_related('profile'), username=username)
else:
user = request.user
is_anonymous = not request.user.is_authenticated()
is_anonymous = not request.user.is_authenticated

if is_anonymous or username is None:
is_shared = True
Expand Down Expand Up @@ -437,7 +437,7 @@ def get_profile(request,

def get_profile_preferences(request,
username: str = None):
if username is None and request.user.is_authenticated():
if username is None and request.user.is_authenticated:
return redirect('profile-preferences', request.user.username, permanent=True)

user, ctx = get_profile(request, username)
Expand All @@ -459,7 +459,7 @@ def get_profile_works(request,
username: str = None,
category: str = None,
status: str = None):
if username is None and request.user.is_authenticated():
if username is None and request.user.is_authenticated:
return redirect('profile-works', request.user.username, category or 'anime', status or 'seen', permanent=True)

user, ctx = get_profile(request, username)
Expand Down Expand Up @@ -987,13 +987,13 @@ def update_evidence(request):
evidence.save()

next_url = request.GET.get('next')
if next_url and is_safe_url(url=next_url, host=request.get_host()):
if next_url and is_safe_url(url=next_url, allowed_hosts=request.get_host()):
return redirect(next_url)
return redirect('fix-index')


def generic_error_view(error, error_code):
def error_view(request):
def error_view(request, exception=None):
try:
trope = Trope.objects.order_by('?').first()
except DatabaseError:
Expand Down
2 changes: 1 addition & 1 deletion mangaki/mangaki/wrappers/anilist.py
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ def insert_works_into_database_from_anilist(entries: List[AniListEntry],

# Build genres for this Work
genres = [Genre.objects.get_or_create(title=genre)[0] for genre in entry.genres]
work.genre.set(genres, bulk=True, clear=(not created_work))
work.genre.set(genres, clear=(not created_work))

# Create WorkTitle entries in the database for this Work
build_work_titles(work, titles)
Expand Down
2 changes: 1 addition & 1 deletion requirements/dev.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-r ./production.txt
# General development
django-debug-toolbar==1.8
django-debug-toolbar==1.10.1
django-extensions
django-nose
flake8
Expand Down
31 changes: 18 additions & 13 deletions requirements/production.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
Django==1.11.15
django-allauth==0.28
markdown<3 # https://github.com/encode/django-rest-framework/issues/6203
# Django
Django==2.1.2
django-allauth==0.38.0
django-bootstrap4
django-celery-beat==1.1.*
django-js-reverse==0.8.2
django-sendfile==0.3.*
djangorestframework==3.8.2
psycopg2-binary
numpy>=1.13
scipy>=1
pandas
beautifulsoup4
natsort
django-js-reverse
responses==0.5.1
markdown==3.0.1
jinja2 # For tokens and newsletter
# API
lxml==3.6.*
raven==6.1.*
djangorestframework==3.6.*
beautifulsoup4
coreapi==2.3.*
# Tasks
celery>=4.2
django-celery-beat==1.1.*
redis==2.10.*
python-redis-lock==3.2.*
raven==6.1.*
# Version number
setuptools-scm==1.15.*
django-sendfile==0.3.*
# Algo
numpy>=1.13
pandas
natsort # Used for sorting profile, will be removed
git+https://github.com/mangaki/zero

0 comments on commit 6a6153f

Please sign in to comment.