This commit is contained in:
Your Name 2022-06-05 22:07:41 -04:00
parent 195a812f95
commit 82afed2ba4
9 changed files with 25 additions and 27 deletions

View file

@ -167,7 +167,7 @@ def retrieve(request, id):
else:
mark_form = BookMarkForm(initial={
'book': book,
'visibility': request.user.preference.default_visibility if request.user.is_authenticated else 0,
'visibility': request.user.get_preference().default_visibility if request.user.is_authenticated else 0,
'tags': mark_tags
})

View file

@ -34,12 +34,7 @@ logger = logging.getLogger(__name__)
@login_required
def home(request):
try:
classic = request.user.preference.classic_homepage
except ObjectDoesNotExist:
Preference.objects.create(user=user)
classic = request.user.preference.classic_homepage
if classic:
if request.user.get_preference().classic_homepage:
return user_home(request, request.user.id)
else:
return user_timeline(request)

View file

@ -168,7 +168,7 @@ def retrieve(request, id):
else:
mark_form = GameMarkForm(initial={
'game': game,
'visibility': request.user.preference.default_visibility if request.user.is_authenticated else 0,
'visibility': request.user.get_preference().default_visibility if request.user.is_authenticated else 0,
'tags': mark_tags
})

View file

@ -388,11 +388,11 @@ def share_mark(mark):
visibility = TootVisibilityEnum.DIRECT
elif mark.visibility == 1:
visibility = TootVisibilityEnum.PRIVATE
elif user.preference.mastodon_publish_public:
elif user.get_preference().mastodon_publish_public:
visibility = TootVisibilityEnum.PUBLIC
else:
visibility = TootVisibilityEnum.UNLISTED
tags = '\n' + user.preference.mastodon_append_tag.replace('[category]', str(mark.item.verbose_category_name)) if user.preference.mastodon_append_tag else ''
tags = '\n' + user.get_preference().mastodon_append_tag.replace('[category]', str(mark.item.verbose_category_name)) if user.get_preference().mastodon_append_tag else ''
stars = rating_to_emoji(mark.rating, MastodonApplication.objects.get(domain_name=user.mastodon_site).star_mode)
content = f"{mark.translated_status}{mark.item.title}{stars}\n{mark.item.url}\n{mark.text}{tags}"
response = post_toot(user.mastodon_site, content, visibility, user.mastodon_token)
@ -415,11 +415,11 @@ def share_review(review):
visibility = TootVisibilityEnum.DIRECT
elif review.visibility == 1:
visibility = TootVisibilityEnum.PRIVATE
elif user.preference.mastodon_publish_public:
elif user.get_preference().mastodon_publish_public:
visibility = TootVisibilityEnum.PUBLIC
else:
visibility = TootVisibilityEnum.UNLISTED
tags = '\n' + user.preference.mastodon_append_tag.replace('[category]', str(review.item.verbose_category_name)) if user.preference.mastodon_append_tag else ''
tags = '\n' + user.get_preference().mastodon_append_tag.replace('[category]', str(review.item.verbose_category_name)) if user.get_preference().mastodon_append_tag else ''
content = f"发布了关于《{review.item.title}》的评论\n{review.url}\n{review.title}{tags}"
response = post_toot(user.mastodon_site, content, visibility, user.mastodon_token)
if response and response.status_code in [200, 201]:

View file

@ -168,7 +168,7 @@ def retrieve(request, id):
else:
mark_form = MovieMarkForm(initial={
'movie': movie,
'visibility': request.user.preference.default_visibility if request.user.is_authenticated else 0,
'visibility': request.user.get_preference().default_visibility if request.user.is_authenticated else 0,
'tags': mark_tags
})

View file

@ -186,7 +186,7 @@ def retrieve_song(request, id):
else:
mark_form = SongMarkForm(initial={
'song': song,
'visibility': request.user.preference.default_visibility if request.user.is_authenticated else 0,
'visibility': request.user.get_preference().default_visibility if request.user.is_authenticated else 0,
'tags': mark_tags
})
@ -729,7 +729,7 @@ def retrieve_album(request, id):
else:
mark_form = AlbumMarkForm(initial={
'album': album,
'visibility': request.user.preference.default_visibility if request.user.is_authenticated else 0,
'visibility': request.user.get_preference().default_visibility if request.user.is_authenticated else 0,
'tags': mark_tags
})

View file

@ -47,12 +47,13 @@ from common.importers.douban import DoubanImporter
@mastodon_request_included
@login_required
def preferences(request):
preference = request.user.get_preference()
if request.method == 'POST':
request.user.preference.default_visibility = int(request.POST.get('default_visibility'))
request.user.preference.classic_homepage = bool(request.POST.get('classic_homepage'))
request.user.preference.mastodon_publish_public = bool(request.POST.get('mastodon_publish_public'))
request.user.preference.mastodon_append_tag = request.POST.get('mastodon_append_tag', '').strip()
request.user.preference.save(update_fields=['default_visibility', 'classic_homepage', 'mastodon_publish_public', 'mastodon_append_tag'])
preference.default_visibility = int(request.POST.get('default_visibility'))
preference.classic_homepage = bool(request.POST.get('classic_homepage'))
preference.mastodon_publish_public = bool(request.POST.get('mastodon_publish_public'))
preference.mastodon_append_tag = request.POST.get('mastodon_append_tag', '').strip()
preference.save(update_fields=['default_visibility', 'classic_homepage', 'mastodon_publish_public', 'mastodon_append_tag'])
return render(request, 'users/preferences.html')
@ -61,8 +62,8 @@ def preferences(request):
def data(request):
return render(request, 'users/data.html', {
'latest_task': request.user.user_synctasks.order_by("-id").first(),
'import_status': request.user.preference.import_status,
'export_status': request.user.preference.export_status
'import_status': request.user.get_preference().import_status,
'export_status': request.user.get_preference().export_status
})

View file

@ -62,6 +62,12 @@ class User(AbstractUser):
def __str__(self):
return self.mastodon_username
def get_preference(self):
pref = self.preference
if not pref:
pref = Preference.objects.create(user=self)
return pref
def refresh_mastodon_data(self):
""" Try refresh account data from mastodon server, return true if refreshed successfully, note it will not save to db """
self.mastodon_last_refresh = timezone.now()

View file

@ -176,11 +176,7 @@ def home(request, id):
for review in music_reviews:
review.type = 'album' if review.__class__ == AlbumReview else 'song'
try:
layout = user.preference.get_serialized_home_layout()
except ObjectDoesNotExist:
Preference.objects.create(user=user)
layout = user.preference.get_serialized_home_layout()
layout = user.get_preference().get_serialized_home_layout()
return render(
request,