From 13211a479fd30d73c8aca54bff6ec8ea8af431e3 Mon Sep 17 00:00:00 2001 From: ngfchl Date: Wed, 7 Sep 2022 00:42:06 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E6=AD=A3=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E9=87=8F=E4=B8=8B=E8=BD=BD=E9=87=8F=E4=B8=BAInt=E5=9E=8B?= =?UTF-8?q?=EF=BC=8C=E6=96=B9=E4=BE=BF=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_pt/views.py | 14 +++++ pt_site/UtilityTool.py | 7 ++- pt_site/admin.py | 55 +++++++++++++++---- ...07_alter_sitestatus_downloaded_and_more.py | 23 ++++++++ pt_site/models.py | 4 +- 5 files changed, 87 insertions(+), 16 deletions(-) create mode 100644 pt_site/migrations/0007_alter_sitestatus_downloaded_and_more.py diff --git a/auto_pt/views.py b/auto_pt/views.py index c3c242f..3aa4b9f 100644 --- a/auto_pt/views.py +++ b/auto_pt/views.py @@ -9,6 +9,7 @@ from django.http import JsonResponse from django.shortcuts import render from pt_site import views as tasks +from pt_site.UtilityTool import FileSizeConvert from pt_site.models import SiteStatus, MySite, Site from pt_site.views import scheduler, pt_spider from ptools.base import CommonResponse @@ -192,6 +193,18 @@ def do_update(request): print(i.decode('utf8')) # 更新Xpath规则 print('拉取更新完毕,开始更新Xpath规则') + # 字符串型的数据量转化为int型 + status_list = SiteStatus.objects.all() + for status in status_list: + if not status.downloaded: + status.downloaded = 0 + if not status.uploaded: + status.uploaded = 0 + if type(status.downloaded) == str and 'B' in status.downloaded: + status.downloaded = FileSizeConvert.parse_2_byte(status.downloaded) + if type(status.uploaded) == str and 'B' in status.uploaded: + status.uploaded = FileSizeConvert.parse_2_byte(status.uploaded) + status.save() with open('./main_pt_site_site.json', 'r') as f: # print(f.readlines()) data = json.load(f) @@ -218,6 +231,7 @@ def do_update(request): msg='更新成功,重启指令发送成功,容器重启中 ...' if flag else '更新成功,未映射docker路径请手动重启容器 ...' ).to_dict(), safe=False) except Exception as e: + raise return JsonResponse(data=CommonResponse.error( msg='更新失败!' + str(e) ).to_dict(), safe=False) diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index de3f6cd..0c4f579 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -891,10 +891,11 @@ class PtSpider: downloaded = ''.join( details_html.xpath(site.downloaded_rule) ).replace(':', '').replace('\xa0\xa0', '').strip(' ') - + downloaded = FileSizeConvert.parse_2_byte(downloaded) uploaded = ''.join( details_html.xpath(site.uploaded_rule) ).replace(':', '').strip(' ') + uploaded = FileSizeConvert.parse_2_byte(uploaded) invitation = ''.join( details_html.xpath(site.invitation_rule) @@ -1011,8 +1012,8 @@ class PtSpider: result = SiteStatus.objects.update_or_create(site=my_site, updated_at__date__gte=datetime.today(), defaults={ 'ratio': float(ratio) if ratio else 0, - 'downloaded': downloaded, - 'uploaded': uploaded, + 'downloaded': int(downloaded), + 'uploaded': int(uploaded), 'my_sp': float(my_sp), 'my_bonus': float(my_bonus) if my_bonus != '' else 0, # 做种体积 diff --git a/pt_site/admin.py b/pt_site/admin.py index 50ba958..c6d880a 100644 --- a/pt_site/admin.py +++ b/pt_site/admin.py @@ -154,6 +154,7 @@ class SiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin 'seed_vol_rule', 'my_hr_rule', 'mailbox_rule', + 'notice_rule', 'time_join_rule', 'latest_active_rule', ), @@ -195,6 +196,7 @@ class StatusInlines(admin.TabularInline): 'my_sp', 'my_bonus', 'seed_vol', 'updated_at' ] + classes = ['collapse'] readonly_fields = ['updated_at'] ordering = ['-updated_at'] # 自定义模板,删除外键显示 @@ -213,6 +215,32 @@ class StatusInlines(admin.TabularInline): return False +class SignInInlines(admin.StackedInline): + model = SignIn + fields = [ + 'sign_in_today', 'sign_in_info', + 'updated_at' + ] + classes = ['collapse'] + readonly_fields = ['updated_at'] + ordering = ['-updated_at'] + + # 自定义模板,删除外键显示 + # template = 'admin/pt_site/inline_status/tabular.html' + + # 禁止添加按钮 + def has_add_permission(self, request, obj=None): + return False + + # 禁止删除按钮 + def has_delete_permission(self, request, obj=None): + return False + + # 禁止修改按钮 + def has_change_permission(self, request, obj=None): + return False + + @admin.register(MySite) class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin formats = (base_formats.XLS, base_formats.CSV, base_formats.JSON) @@ -243,6 +271,7 @@ class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin # empty_value_display = '**' inlines = ( StatusInlines, + SignInInlines ) def edit(self, obj: MySite): @@ -458,29 +487,22 @@ class MySiteAdmin(ImportExportModelAdmin): # instead of ModelAdmin fieldsets = ( ['用户信息', { 'fields': ( - ('site',), + ('site', 'sign_in', 'hr', 'search'), ('user_id', 'passkey',), 'cookie', - # 'time_join' - ), - }], - ['用户设置', { - 'fields': ( - ('sign_in', 'hr',), - ('search',), ), }], ) +""" @admin.register(SiteStatus) class SiteStatusAdmin(ImportExportModelAdmin): formats = (base_formats.XLS, base_formats.CSV, base_formats.JSON) list_display = ['site', - # 'sign_in', 'my_level', 'invitation', 'seed', 'leech', - 'uploaded', 'downloaded', 'ratio', + 'upload', 'download', 'ratio', 'my_sp', 'my_bonus', - # 'my_hr', 'time_join', 'latest_active', + 'seed_vol', 'updated_at'] list_filter = ['site', 'updated_at'] @@ -489,6 +511,16 @@ class SiteStatusAdmin(ImportExportModelAdmin): ordering = ['site__sort_id'] autocomplete_fields = ('site',) + # 自定义更新时间,提醒今日是否更新 + def upload(self, obj: SiteStatus): + return FileSizeConvert.parse_2_file_size(obj.uploaded) + + def download(self, obj: SiteStatus): + return FileSizeConvert.parse_2_file_size(obj.downloaded) + + upload.short_description = '上传量' + download.short_description = '下载量' + # 禁止添加按钮 def has_add_permission(self, request): return False @@ -528,6 +560,7 @@ class SiteStatusAdmin(ImportExportModelAdmin): # # print(request.META) # # return super(SiteStatusAdmin, self).changelist_view(request, extra_context=extra_context) +""" @admin.register(Downloader) diff --git a/pt_site/migrations/0007_alter_sitestatus_downloaded_and_more.py b/pt_site/migrations/0007_alter_sitestatus_downloaded_and_more.py new file mode 100644 index 0000000..37880f0 --- /dev/null +++ b/pt_site/migrations/0007_alter_sitestatus_downloaded_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1 on 2022-09-06 16:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pt_site', '0006_site_notice_rule_alter_site_mailbox_rule'), + ] + + operations = [ + migrations.AlterField( + model_name='sitestatus', + name='downloaded', + field=models.IntegerField(default=0, verbose_name='下载量'), + ), + migrations.AlterField( + model_name='sitestatus', + name='uploaded', + field=models.IntegerField(default=0, verbose_name='上传量'), + ), + ] diff --git a/pt_site/models.py b/pt_site/models.py index 42e2725..90fe9b2 100644 --- a/pt_site/models.py +++ b/pt_site/models.py @@ -266,8 +266,8 @@ class SiteStatus(BaseEntity): # 获取日期,只保留当天最新数据 site = models.ForeignKey(verbose_name='站点名称', to=MySite, on_delete=models.CASCADE) # 签到,有签到功能的访问签到页面,无签到的访问个人主页 - uploaded = models.CharField(verbose_name='上传量', default='0', max_length=16) - downloaded = models.CharField(verbose_name='下载量', default='0', max_length=16) + uploaded = models.IntegerField(verbose_name='上传量', default=0) + downloaded = models.IntegerField(verbose_name='下载量', default=0) ratio = models.FloatField(verbose_name='分享率', default=0) my_sp = models.FloatField(verbose_name='魔力值', default=0) my_bonus = models.FloatField(verbose_name='做种积分', default=0)