From 0cf08145cc99224f7f7c4e899c2b9d1d930c1844 Mon Sep 17 00:00:00 2001 From: jayhgq Date: Sun, 3 Nov 2024 22:00:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + CMS_Django_Backend.zip | Bin 0 -> 89452 bytes CMS_Django_Backend/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 180 bytes .../__pycache__/settings.cpython-311.pyc | Bin 0 -> 2765 bytes .../__pycache__/urls.cpython-311.pyc | Bin 0 -> 1593 bytes .../__pycache__/wsgi.cpython-311.pyc | Bin 0 -> 724 bytes CMS_Django_Backend/asgi.py | 16 ++ CMS_Django_Backend/settings.py | 143 ++++++++++++++++++ CMS_Django_Backend/urls.py | 30 ++++ CMS_Django_Backend/wsgi.py | 16 ++ README.md | 5 +- apps/api/__init__.py | 0 apps/api/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 170 bytes apps/api/__pycache__/apps.cpython-311.pyc | Bin 0 -> 540 bytes apps/api/__pycache__/common.cpython-311.pyc | Bin 0 -> 7808 bytes apps/api/__pycache__/config.cpython-311.pyc | Bin 0 -> 641 bytes apps/api/__pycache__/models.cpython-311.pyc | Bin 0 -> 1882 bytes apps/api/__pycache__/urls.cpython-311.pyc | Bin 0 -> 400 bytes apps/api/__pycache__/views.cpython-311.pyc | Bin 0 -> 3002 bytes apps/api/admin.py | 3 + apps/api/apps.py | 6 + apps/api/common.py | 125 +++++++++++++++ apps/api/config.py | 8 + apps/api/migrations/0001_initial.py | 31 ++++ apps/api/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1758 bytes ...02_alter_sysconfig_options.cpython-311.pyc | Bin 0 -> 740 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 181 bytes apps/api/models.py | 24 +++ apps/api/tests.py | 3 + apps/api/urls.py | 6 + apps/api/views.py | 44 ++++++ apps/auth/__init__.py | 0 .../auth/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 171 bytes apps/auth/__pycache__/apps.cpython-311.pyc | Bin 0 -> 543 bytes apps/auth/__pycache__/models.cpython-311.pyc | Bin 0 -> 5322 bytes apps/auth/__pycache__/urls.cpython-311.pyc | Bin 0 -> 671 bytes apps/auth/__pycache__/views.cpython-311.pyc | Bin 0 -> 9023 bytes apps/auth/admin.py | 3 + apps/auth/apps.py | 6 + apps/auth/migrations/0001_initial.py | 31 ++++ .../0002_menu_role_rolemenu_roleuser.py | 52 +++++++ ...3_alter_menu_order_alter_menu_parent_id.py | 23 +++ apps/auth/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1828 bytes ...enu_role_rolemenu_roleuser.cpython-311.pyc | Bin 0 -> 3079 bytes ...order_alter_menu_parent_id.cpython-311.pyc | Bin 0 -> 1023 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 182 bytes apps/auth/models.py | 67 ++++++++ apps/auth/tests.py | 3 + apps/auth/urls.py | 9 ++ apps/auth/views.py | 131 ++++++++++++++++ apps/home/__init__.py | 0 .../home/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 171 bytes apps/home/__pycache__/apps.cpython-311.pyc | Bin 0 -> 543 bytes apps/home/__pycache__/models.cpython-311.pyc | Bin 0 -> 223 bytes apps/home/__pycache__/views.cpython-311.pyc | Bin 0 -> 1007 bytes apps/home/admin.py | 3 + apps/home/apps.py | 6 + apps/home/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 182 bytes apps/home/models.py | 3 + apps/home/tests.py | 3 + apps/home/views.py | 20 +++ data/db.sqlite3 | Bin 0 -> 73728 bytes data/db_cypher.sqlite3 | Bin 0 -> 73728 bytes data/initdata.json | 16 ++ manage.py | 22 +++ upload/avatar/default.jpg | Bin 0 -> 39957 bytes 70 files changed, 858 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 CMS_Django_Backend.zip create mode 100644 CMS_Django_Backend/__init__.py create mode 100644 CMS_Django_Backend/__pycache__/__init__.cpython-311.pyc create mode 100644 CMS_Django_Backend/__pycache__/settings.cpython-311.pyc create mode 100644 CMS_Django_Backend/__pycache__/urls.cpython-311.pyc create mode 100644 CMS_Django_Backend/__pycache__/wsgi.cpython-311.pyc create mode 100644 CMS_Django_Backend/asgi.py create mode 100644 CMS_Django_Backend/settings.py create mode 100644 CMS_Django_Backend/urls.py create mode 100644 CMS_Django_Backend/wsgi.py create mode 100644 apps/api/__init__.py create mode 100644 apps/api/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/api/__pycache__/apps.cpython-311.pyc create mode 100644 apps/api/__pycache__/common.cpython-311.pyc create mode 100644 apps/api/__pycache__/config.cpython-311.pyc create mode 100644 apps/api/__pycache__/models.cpython-311.pyc create mode 100644 apps/api/__pycache__/urls.cpython-311.pyc create mode 100644 apps/api/__pycache__/views.cpython-311.pyc create mode 100644 apps/api/admin.py create mode 100644 apps/api/apps.py create mode 100644 apps/api/common.py create mode 100644 apps/api/config.py create mode 100644 apps/api/migrations/0001_initial.py create mode 100644 apps/api/migrations/__init__.py create mode 100644 apps/api/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 apps/api/migrations/__pycache__/0002_alter_sysconfig_options.cpython-311.pyc create mode 100644 apps/api/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/api/models.py create mode 100644 apps/api/tests.py create mode 100644 apps/api/urls.py create mode 100644 apps/api/views.py create mode 100644 apps/auth/__init__.py create mode 100644 apps/auth/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/auth/__pycache__/apps.cpython-311.pyc create mode 100644 apps/auth/__pycache__/models.cpython-311.pyc create mode 100644 apps/auth/__pycache__/urls.cpython-311.pyc create mode 100644 apps/auth/__pycache__/views.cpython-311.pyc create mode 100644 apps/auth/admin.py create mode 100644 apps/auth/apps.py create mode 100644 apps/auth/migrations/0001_initial.py create mode 100644 apps/auth/migrations/0002_menu_role_rolemenu_roleuser.py create mode 100644 apps/auth/migrations/0003_alter_menu_order_alter_menu_parent_id.py create mode 100644 apps/auth/migrations/__init__.py create mode 100644 apps/auth/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 apps/auth/migrations/__pycache__/0002_menu_role_rolemenu_roleuser.cpython-311.pyc create mode 100644 apps/auth/migrations/__pycache__/0003_alter_menu_order_alter_menu_parent_id.cpython-311.pyc create mode 100644 apps/auth/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/auth/models.py create mode 100644 apps/auth/tests.py create mode 100644 apps/auth/urls.py create mode 100644 apps/auth/views.py create mode 100644 apps/home/__init__.py create mode 100644 apps/home/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/home/__pycache__/apps.cpython-311.pyc create mode 100644 apps/home/__pycache__/models.cpython-311.pyc create mode 100644 apps/home/__pycache__/views.cpython-311.pyc create mode 100644 apps/home/admin.py create mode 100644 apps/home/apps.py create mode 100644 apps/home/migrations/__init__.py create mode 100644 apps/home/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 apps/home/models.py create mode 100644 apps/home/tests.py create mode 100644 apps/home/views.py create mode 100644 data/db.sqlite3 create mode 100644 data/db_cypher.sqlite3 create mode 100644 data/initdata.json create mode 100644 manage.py create mode 100644 upload/avatar/default.jpg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e8ecb4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +.venv/ \ No newline at end of file diff --git a/CMS_Django_Backend.zip b/CMS_Django_Backend.zip new file mode 100644 index 0000000000000000000000000000000000000000..9ad9b306e9d69926871f06db579b52bbef81c5c6 GIT binary patch literal 89452 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 literal 0 HcmV?d00001 diff --git a/CMS_Django_Backend/__init__.py b/CMS_Django_Backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CMS_Django_Backend/__pycache__/__init__.cpython-311.pyc b/CMS_Django_Backend/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd2958aae88ec07a8320fd9589a395b71069727a GIT binary patch literal 180 zcmZ3^%ge<81eee4NdwW3K?DpiLK&agfQ;!3DGb33nv8xc8H$*I{LdiCU+%6}F$I++ z8TolJPWk!S&c4B6MtTM@Ksw$fD={xUKi(-ZIXg8k1)ETOd}dx|NqoFsLFF$Fo80`A f(wtPgB37WeAe)Q%fy4)9Mn=XD3^1aI87Kw->AozG literal 0 HcmV?d00001 diff --git a/CMS_Django_Backend/__pycache__/settings.cpython-311.pyc b/CMS_Django_Backend/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a7f80179b26122a42b78d4fca780e355b9b9a85 GIT binary patch literal 2765 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 HDmm;MOiYIM literal 0 HcmV?d00001 diff --git a/apps/api/__pycache__/common.cpython-311.pyc b/apps/api/__pycache__/common.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46ccadc5f177fe307bf92b00fb1310e8f31949d3 GIT binary patch literal 7808 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 XBRtPM!7$K~^mtn=zqc5}5Nu;Z5uiwsk{$|b z5TfThC@9cXNHmm2p`v2XN7BGro|)aVXI6Kg&87e=z4uXlLVlM`w-UdilSgq48f*fC zHZXFh0X*WX$^xeCKtZo`2a@&QrZb7+8aP;lfu%9RG^XEbmd+Awuo5hZe;UFldv3K} z+YrXS6Y_<*f+oy*SZ?|UJP;YhTm1CEW0hVk`bsT>IumioB^)BFx+LRW2^c}P3q%-| zI0elUA#YSgTJ_X*j(I4(^7-%O^(EVHVv=i@JnyKywX-{0oUxJV+M(mtJX&%pN8Dw$ zf&bkB{%hKPIcs(+l8bsX}k!f zB1P%3$IcoYb%xTDGp8X}q%<(`+aQDR06|vjv;=ttF%T5tJVLAYyp4{(j^(4IK43(E z(AtPnBsm?yUr>(H3@=NW4oT-;(6_mw_F4^w@gPoHL=owPkVxwzX!{pF4l{NwUN47AyBm(IXaRL(Og>sxn%{taOxX73BpC{Bz}G~?|a{S z^WIGIEEo(R82`LHS|o0S{-TrC@HUn6`=D$hj4+czX+~ri{>(EtuQODmcuqM z?80LY(TzPbDB`WtX@nuZbQUWqEzvYvua4&Ae2t+Y6eKbji7w2DZWmHKE3FhD7J=fH%qcdyHV;Vn$C6(0+G-P=%$U3i)qbvjsjZeR&HSZ+bBdL5C%`1TqSyR6pr zLF@V*b^#ASy9Nn6Q_y1B%wlp$?}rou!!S<&I6OW4x&F1i{%ypgaxI|BQ;im_e%wNxtbbkmv7Ees!dane z>+5GP%MsU=mretnl%Ad(9{hc902Uh4GV7Gjw$wIX)Hk0;7|UpR)Sf=C{Zs}I3uVum zD4T-#Wj&vjGTF})?XCeI)#+t84};i5U!fIv+XL#%Ou?1#(2~)&rlb}%>M(ry?t^#Y zxk7$9n~6uW+11$O%qRCo-;Bds8e5SwOIax@CsvgVj?1~61|k`^FV<+TKsqEz%d3*~ zWmmh2qs^smVAtqnFQRIw`}>07?>nd2T)U60{LcljT)&Ul1zEcJSy}{i*cV$P!f1?nAM!w%2gEy#5BF!iNF_rCyWm-^%az9ASf7mIF?YQ^v9`_g@e`@ezg%?d;EIw${YWsZ#7p-tnlZygfczDBShKF}nj~0yZcqKe; zhR2KJRbgaf#1ux#Q-%<$2r*NL6({}|dpv6h(-mRb6sC(44G-h(Z=kmDG2RHBI>jrx zc5#EjE-Eb}J!~wtF2*Qcu-opPr2jN_xv#h2(*K@)7~fal0B3sKwMh^SH^VShG-O== YHv9quIsI2`_nmb1HKd3ru4Q%No{Y%nS^xffxeP8KYQJ*n$}}*BP@8xo|x2rnw;g7nk%-5V5BVYa$!gF~a#x_pA@!>++-pMYIKpC~G|ojy@``>hfY z3F3-`djh?FYI>;%F~HOCJb4r7QDi_vsDD}=E47@K^3-{dUz*kpQ<8RCiDJat3ys&5 zzk}~fY|*Hne1+Qjbpm-AJk{YGalnU*t+Hz&m`&r9!=+mwGSB z;s5v(`ttR^qCfGH%rqjYp_qk52s?+hQe#oVvqRdG==+L%Q>ZlGGu!wzn-Omq*6z@D zPmSBCZD>2a8EvB+#(}30!`J{Vckp`V(2@LcB5*}v`_ zc)asO?%v)2FNCFlG?Q#^408_bGa)&Mt#^9${gC2{cbFC^IGoSXy)W; zcr9~&SN8O&M|bZ{j9$#_k7cgxnbA1qBA<6UXi6*NpjC0&Nf3zcIZA@AlW2+O^ z7TMY|!lq5NDHE48amPMRn3`o%^CU7Fn$ujvsrO`Vd5T++r8QLlH8hj z_vdkLO@i~toF~O?Npf2f950jJKk`Z1GCO6dPg?3@)d|Zo*|KbGMbfe|ZdsYOFG$&2 zlJ=I1o`k(!wznT<(sLVQU5UAi<++RFHH$OEpfzc4y*lScUBbRfwy%1@#5Qkqy=+^O zvb7~`ZDWpvtwXkTq-?IF&Gm3o+~!KyHp;e*DVry0^CWCv$fWZlU1@85j7eCVWNTC0 z-1IDMvP~il<1CUiTNSTfaI6go^aNWkv-NSdK5gORbuAZbfk01Kmdci;akjEQgEq;4 zKN!U&kn>$GL)Sd?yV*(T$`4+H;r=}1s#^MfW8*3_{Xj-uo%uA~0Zzzi%A;-s z7zMLJQ!$E?N=`|h8lq;zsOeJ?!Chx28x^C_FtvjMj8exEjMA*bRtV~#@#`?)g@ll( z4h<#%iQfPsl0%}Q0XM;*7=1in*nAEU5TV!y1U8>m3!9HMk7!?M>T4j_Zes_1u<;%G zSE_@)&UDc099E@JdACSa+8MCB-oKQfR+&{1#h*CFYnlC9*^w=jwu;?V$ zDNHho$rS^W+l68&IB@zSp-?1@$w`RGRiR8pE=`y~7A7aV3M;staHK>rN!3s22~ecw z@j2T8m$`wU@Gfox8M!8j<3J{9ilWAmBVOLe(V}>HA4i+w|K7*Z`|+9jI9eDl?|&F9 zBXjoI57>9=#trl1hWQCYoouM9oK3PwQ$4AfO+hsQ`J0C6?z+67RaG%W1!P)P5U5hz H3XA&(LlOb8 literal 0 HcmV?d00001 diff --git a/apps/api/admin.py b/apps/api/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apps/api/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/api/apps.py b/apps/api/apps.py new file mode 100644 index 0000000..ae75201 --- /dev/null +++ b/apps/api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.api' diff --git a/apps/api/common.py b/apps/api/common.py new file mode 100644 index 0000000..46825fd --- /dev/null +++ b/apps/api/common.py @@ -0,0 +1,125 @@ +import re + + +class CaesarCypherClass: + """ + 恺撒密码,提供以恺撒密码方法进行加密及解密的方法,加密方法使用CaesarEncode()函数,解密方法使用CaesarDecode()函数 + """ + + def __init__(self, *args, **kwargs): + pass + + @staticmethod + def caesar_encode(s): + """ + 恺撒密码加密方法,需要提供需要加密的明文。 + """ + s_encode = '' + for c in s: + if 'a' <= c <= 'z': + s_encode += chr(ord('a') + (ord(c) - ord('a') + 3) % 26) + elif 'A' <= c <= 'Z': + s_encode += chr(ord('A') + (ord(c) - ord('A') + 3) % 26) + elif 0x4E00 <= ord(c) <= 0x9FA5: + s_encode += chr(ord(c) + 3) + elif '0' <= c <= '9': + s_encode += chr(ord('0') + (ord(c) - ord('0') + 3) % 10) + else: + s_encode += c + return s_encode + + @staticmethod + def caesar_decode(s): + """ + 恺撒密码解密方法,需要提供需要解密的密文。 + """ + s_decode = '' + for c in s: + if 'a' <= c <= 'z': + s_decode += chr(ord('a') + (ord(c) - ord('a') - 3) % 26) + elif 'A' <= c <= 'Z': + s_decode += chr(ord('A') + (ord(c) - ord('A') - 3) % 26) + elif 0x4E00 <= ord(c) <= 0x9FA5: + s_decode += chr(ord(c) - 3) + elif '0' <= c <= '9': + s_decode += chr(ord('0') + (ord(c) - ord('0') - 3) % 10) + else: + s_decode += c + return s_decode + + +class Base64CypherClass: + """ + Base64的加解密算法,最简单的加密方式,可加密短的文字、小图片、小文件,图片文件大小不宜超过10M + """ + def __init__(self, *args, **kwargs): + """ + Base64类初始化函数 + :param args: + :param kwargs: + """ + import importlib + self.base64 = importlib.import_module('base64') + self.os = importlib.import_module('os') + self.time = importlib.import_module('time') + self.re = importlib.import_module('re') + + @staticmethod + def base64_encode_str(self, s): + """ + Base64字符串加密 + :param self: + :param s: 要加密的字符串 + :return: 加密后的字符串 + """ + return self.base64.b64encode(s.encode('utf-8')) + + @staticmethod + def base64_decode_str(self, s): + """ + Base64字符串解密,解密前先判断是否为Base64加密方式 + :param self: + :param s: 要解密的字符串 + :return: 解密后的字符串 + """ + try: + self.base64.b64decode(s) + return self.base64.b64decode(s).decode('utf-8') + except Exception as e: + return f"base64解密失败,请确定加密方式是否正确。错误信息:{e}" + + @staticmethod + def base64_encode_pic(self, pic): + """ + Base64加密图片,路径不存在则返回"图片路径不存在" + :param self: + :param pic: 要加密的图片路径 + :return: 返回加密的base64字符 + """ + if self.os.path.exists(pic): + with open(pic, 'rb') as f: + read_pic = open(pic, 'rb') + read_data = read_pic.read() + read_pic.close() + return self.base64.b64encode(read_data) + else: + return "图片路径不存在" + + @staticmethod + def base64_decode_pic(self, pic_bs64): + """ + Base64解密图片 + :param self: + :param pic_bs64: + :return: 返回图片路径 + """ + pic_path = f"upload/temp/pic{int(self.time.time())}" + if self.os.path.exists(f"{pic_path}.jpg"): + self.os.remove(f"{pic_path}.jpg") + elif not self.os.path.exists("upload/temp/pic"): + self.os.path.mkdir("upload/temp/pic") + + with open(f"{pic_path}.jpg", 'wb') as f: + f.write(self.base64.b64decode(pic_bs64)) + + return f"{pic_path}.jpg" diff --git a/apps/api/config.py b/apps/api/config.py new file mode 100644 index 0000000..1315252 --- /dev/null +++ b/apps/api/config.py @@ -0,0 +1,8 @@ +class Config: + config = { + "isCypher": False, + "CypherMethod": "base64" + } + + def getconfig(self, config_name): + return self.config[config_name] diff --git a/apps/api/migrations/0001_initial.py b/apps/api/migrations/0001_initial.py new file mode 100644 index 0000000..1b662fa --- /dev/null +++ b/apps/api/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 5.1 on 2024-08-18 14:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='SysConfig', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('name', models.CharField(blank=True, max_length=50, null=True, unique=True, verbose_name='名称')), + ('identity', models.CharField(blank=True, max_length=100, null=True, verbose_name='标识')), + ('param', models.CharField(blank=True, max_length=200, null=True, verbose_name='参数')), + ('desc', models.CharField(max_length=500, verbose_name='描述')), + ('create_by', models.CharField(max_length=50, verbose_name='创建人')), + ('create_time', models.DateTimeField(verbose_name='创建时间')), + ('update_by', models.CharField(max_length=50, verbose_name='更新人')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ], + options={ + 'verbose_name': '系统配置表', + }, + ), + ] diff --git a/apps/api/migrations/__init__.py b/apps/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/api/migrations/__pycache__/0001_initial.cpython-311.pyc b/apps/api/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ce3caea0cb78a9a414c683a82c40cbfc1c0c642 GIT binary patch literal 1758 zcma)6O-vg{6rNrG;I$1|6Ns^ijhjSG7Bv=$a%!VW4J47O5aAF(>sneCX0X>kyUwni z#yz2`KevEDKqd=vOq|KFah3rrxCtQp6@WIx zq-`xMSS72qLoRNE_DLW(>QpSSraLDmHK`!0if%e{Dnwa*uB}PGe2dwC#!!<8#2E5j8+q+ETg4c=M&vi4oYv_quN$p<8ymIt-P z#l1f&0^8KK6uCJKNd+X%mWs5bb{;<7*;xO3eckl51O+*ViWJ%u)s|n>m!Atv(=1oa z!?(0+kDu4RuUOhG!J&3j)Y4{6msBjMqN09oonw(Az1Qw<8@n4n)W3eT`};3@KRy#| zS~uA>o%1rvLf!0A^H$5<7QCiQw4yAErdt$A2Ntu4ti7UmuP9|{nFV0nes!C{qn(j8F#i*=^qd4i2xpYXpZYeVb>u#;};g!BjPvGJ+}0 z%Ws>Q+jNB~u7;+4hBT)WKcIcOy-3TLeXv1+23jSCcJVTZ};jq7T&+& jYz)IRoPZH9xX}4FoB_t!0G(vXZSdz_Q^CP8Qp@f?#hmZW literal 0 HcmV?d00001 diff --git a/apps/api/migrations/__pycache__/0002_alter_sysconfig_options.cpython-311.pyc b/apps/api/migrations/__pycache__/0002_alter_sysconfig_options.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..311493d0bf147f6abb3876f2d35998c6f1f6644c GIT binary patch literal 740 zcmZuvzi-n(6ncl%I4oL9M{_Z`!@80+B={`+QJAn4&;9ye_ zfS)?ZEI)Qmm(ke)28{U7CUru2}xiHCsoFhdf|BXb2uhdLnA(uHWHN zO)~C38x>QI4EcBio=OFC}7680iJ#}q7d;)e+R$x1A+=MvK>S^cMp1NOpO=ddt; zG;{6f%8kLo%|Yo_k~eMV1Q5Oa;ix||hWE1Sw@X{Qyok=}fyI;$Bet%Tlr x;m&AsE74U9@!>)I93e3YA=nAIK7hHuzr?ygtOWjr_s-#^`4gQu`%gAi{0-ve#1jAj literal 0 HcmV?d00001 diff --git a/apps/api/migrations/__pycache__/__init__.cpython-311.pyc b/apps/api/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c2b0cd496e796019f68a0e3809dc821e0bcf88a GIT binary patch literal 181 zcmZ3^%ge<81X_9f(?IlN5CH>>P{wCAAY(d13PUi1CZpdC%vKQO?EB4(f%0IVD=(f|Me literal 0 HcmV?d00001 diff --git a/apps/api/models.py b/apps/api/models.py new file mode 100644 index 0000000..36b9bd7 --- /dev/null +++ b/apps/api/models.py @@ -0,0 +1,24 @@ +from django.db import models + + +# Create your models here. +class SysConfig(models.Model): + """ + 系统配置表 + """ + id = models.AutoField(verbose_name="id", primary_key=True, unique=True) + name = models.CharField(max_length=50, unique=True, verbose_name="名称", null=True, blank=True) + identity = models.CharField(max_length=100, verbose_name="标识", null=True, blank=True) + param = models.CharField(max_length=200, verbose_name="参数", null=True, blank=True) + desc = models.CharField(max_length=500, verbose_name="描述") + create_by = models.CharField(verbose_name="创建人", max_length=50) + create_time = models.DateTimeField(verbose_name="创建时间") + update_by = models.CharField(verbose_name="更新人", max_length=50) + update_time = models.DateTimeField(verbose_name="更新时间", auto_now=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = "系统配置表" + diff --git a/apps/api/tests.py b/apps/api/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apps/api/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apps/api/urls.py b/apps/api/urls.py new file mode 100644 index 0000000..aeafe34 --- /dev/null +++ b/apps/api/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from apps.api import views + +urlpatterns = [ + path("getconfig/", views.get_config, name="getconfig"), +] diff --git a/apps/api/views.py b/apps/api/views.py new file mode 100644 index 0000000..f24f988 --- /dev/null +++ b/apps/api/views.py @@ -0,0 +1,44 @@ +from django.shortcuts import HttpResponse +from apps.api import models as m_api +from django.views.decorators.http import require_http_methods, require_POST, require_GET +from apps.api.common import CaesarCypherClass, Base64CypherClass +from apps.api.config import Config + +config = Config() +caesar = CaesarCypherClass() +base64 = Base64CypherClass() + + +# Create your views here. +@require_POST +def get_config(request): + """ + 获取系统配置的接口,通过identity标识字段查询param参数并返回,如果使用加密版数据库则根据加密方式进行解密后返回 + :param request: identity标识字段 + :return: 获取到的参数param + """ + try: + identity = request.POST.get("param") + if config.getconfig("isCypher"): # 启用加密数据库 + param_base64 = m_api.SysConfig.objects.using("cypher").filter(identity=identity).first().param + if config.getconfig("CypherMethod") == "caesar": # 加密方式为Caesar + param = caesar.caesar_decode(param_base64) + return HttpResponse(param) + else: # 加密方式为Base64 + param = base64.base64_decode_str(base64, param_base64) + return HttpResponse(param) + else: # 不加密的数据库 + param = m_api.SysConfig.objects.using("default").filter(identity=identity).first().param + return HttpResponse(param) + except Exception as e: + print(f"报错了:{e}") + return HttpResponse(f"报错了:{e}") + + +@require_POST +def add_config(request): + try: + pass + except Exception as e: + print(f"报错了:{e}") + return HttpResponse(f"报错了:{e}") diff --git a/apps/auth/__init__.py b/apps/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/auth/__pycache__/__init__.cpython-311.pyc b/apps/auth/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d36a05f8bb7a441926e6f9384df009d94da9d25 GIT binary patch literal 171 zcmZ3^%ge<81V!lw(m?cM5CH>>P{wCAAY(d13PUi1CZpdaUO(iaIbbW{D6Jst{63fdSE_5~Evm$dh`qo{yl!1Ts~i4!)Z?Df@4h*!kmAr*E&F;YRm?3%_qIZHce;kO}B}zdM)=*7<)}nSaSE`Frb=nduC~vrJ zRgO#9H$}-nOf@Z45-1^75Uuma>8DPDZFI#j!%I|4nGmvo{rT^`+>*%d68@@(+NZev J`X`h$`v!^|h;RS^ literal 0 HcmV?d00001 diff --git a/apps/auth/__pycache__/models.cpython-311.pyc b/apps/auth/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..918d2bad4f7aa18ccdf700390f50ecceb3838e3a GIT binary patch literal 5322 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 literal 0 HcmV?d00001 diff --git a/apps/auth/__pycache__/urls.cpython-311.pyc b/apps/auth/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7985e126f970e57abd5bc18ded78aaed2a7cd32 GIT binary patch literal 671 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 K1eq$U{(k^k-*`v> literal 0 HcmV?d00001 diff --git a/apps/auth/admin.py b/apps/auth/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apps/auth/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/auth/apps.py b/apps/auth/apps.py new file mode 100644 index 0000000..263ccf1 --- /dev/null +++ b/apps/auth/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AuthConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.auth' diff --git a/apps/auth/migrations/0001_initial.py b/apps/auth/migrations/0001_initial.py new file mode 100644 index 0000000..866e3a1 --- /dev/null +++ b/apps/auth/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 5.1 on 2024-08-18 14:07 + +import apps.auth.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('username', models.CharField(blank=True, max_length=50, null=True, unique=True, verbose_name='用户名')), + ('pwd', models.CharField(blank=True, max_length=1000, null=True, verbose_name='密码')), + ('email', models.EmailField(max_length=100, verbose_name='电子邮件')), + ('phone', models.CharField(blank=True, max_length=11, null=True, verbose_name='手机')), + ('create_time', models.DateTimeField(verbose_name='注册时间')), + ('avatar', models.ImageField(upload_to=apps.auth.models.user_directory_path, verbose_name='头像')), + ('last_login_time', models.DateTimeField(auto_now=True, verbose_name='最后登录时间')), + ], + options={ + 'verbose_name': '用户表', + }, + ), + ] diff --git a/apps/auth/migrations/0002_menu_role_rolemenu_roleuser.py b/apps/auth/migrations/0002_menu_role_rolemenu_roleuser.py new file mode 100644 index 0000000..82c9c95 --- /dev/null +++ b/apps/auth/migrations/0002_menu_role_rolemenu_roleuser.py @@ -0,0 +1,52 @@ +# Generated by Django 5.1 on 2024-09-17 09:09 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Menu', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('menu_name', models.CharField(max_length=50, verbose_name='菜单名称')), + ('parent_id', models.IntegerField(max_length=50, verbose_name='父菜单')), + ('path', models.CharField(max_length=128, verbose_name='路由地址')), + ('order', models.IntegerField(default=0, max_length=5, verbose_name='排序')), + ('create_time', models.DateTimeField(verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='最后更新时间')), + ], + ), + migrations.CreateModel( + name='Role', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('role_name', models.CharField(max_length=50, verbose_name='角色名称')), + ('role_name_en', models.CharField(max_length=50, verbose_name='角色英文名称')), + ('create_time', models.DateTimeField(verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='最后更新时间')), + ], + ), + migrations.CreateModel( + name='RoleMenu', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('menu_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth.menu', verbose_name='菜单ID')), + ('role_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth.role', verbose_name='角色ID')), + ], + ), + migrations.CreateModel( + name='RoleUser', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='id')), + ('role_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth.role', verbose_name='角色ID')), + ('user_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='auth.user', verbose_name='用户ID')), + ], + ), + ] diff --git a/apps/auth/migrations/0003_alter_menu_order_alter_menu_parent_id.py b/apps/auth/migrations/0003_alter_menu_order_alter_menu_parent_id.py new file mode 100644 index 0000000..f0eaf2b --- /dev/null +++ b/apps/auth/migrations/0003_alter_menu_order_alter_menu_parent_id.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1 on 2024-09-17 09:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0002_menu_role_rolemenu_roleuser'), + ] + + operations = [ + migrations.AlterField( + model_name='menu', + name='order', + field=models.IntegerField(default=0, verbose_name='排序'), + ), + migrations.AlterField( + model_name='menu', + name='parent_id', + field=models.IntegerField(verbose_name='父菜单'), + ), + ] diff --git a/apps/auth/migrations/__init__.py b/apps/auth/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/auth/migrations/__pycache__/0001_initial.cpython-311.pyc b/apps/auth/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1135b2f448fcec4ab8f97db792557e8fcb8a46d GIT binary patch literal 1828 zcmZuxO>7%Q6rTO@#&-U^XsXF(>k!G@M_>>wgO0 zb|2Zu@w9lFpK?7gf8WOrr{k&;?yJ^ch5? zvZ-G#BhqyR+2fXj6jLoC5-w8&(>4y#1C&{o*1uR^+(Dj!&0H*S^=onP#sq>EKN59wm#}=?dEJ_ z?z8o;?lgY?vc<`huv&I4#k8*ahQ9bul z6@^3vV3e;^hL8DSp zN-CXwfPc}uaUz&Zh83vJE*P~u| zur9~%$=h*!&)gL+zGr1*^#ne10V5s93$=K`ix+Tgx-O^iz`^+o-oQZ$ICB@`OA0nC zcwnYBFyjr(;Mlu$c?VAHotM1C-X(Wcyn7hGJ&6-qEunb{4acVHasns!&p+oS_pdm2 z2XXRZEqT#PUc|At{H1+tY2Ql!>h8casnwF2mkdk?@zCJ~$s0Pnn#Dt>YeT2Kq0=~a zrY`TqsRQ#bd8q>{?yZV<7fK6ke}4Yp>&gO#>z&7@Jap+r~;F)JAPZ72<@ZZIF`CRCNujjc4qvWAB=^ zO&bnX4wag!0wUBxB&ftGw8BzDg&?9mM~L&>YUmcwF32QZzBSFr50 ztHM0t1*#h|y-^<6lD4Rw=b-RR6W{?I5mSz;03d)m((FZXmaM)*n)M`j;9y8+bp$wp zRCLYq1Vvg6RnJgTb%dbY+n^dY$=U^WZ-eq|lH~<^z#GNJ=i@^x+skk)8&ogYSM<%= zh+U*v55er;gb_efv3axgNk{R(^J8Sy#(1^tAYKQV#*OjvZ{y>kEvUdYsMqIV-3vSn z?!d#t%=Y?fl%YG-Q0=G0TCchvxzz6J7u#|%afv6WD77Lnsz5ucN0yIYT9F#RB1F@7LYgu=#ljOJHCS>)> z&C;b`O4FBCZqKobrF<)=p_a^#8FV*bDXSPz%gZV#&`Pl~b>CWng{+bvTbm?fmYfHF zto(epbaSrs>m;tz4FC;;7MnF%D+_dsEnmJ`dUz#d#|{7!N+F#$ykykUQXe;llcnj)%Qx;VUz@8ydF&)X(`8NnhApB| zWWI|D6{bNB3qyLEM8Y7HMZz-v_SMxN|FnXD-L*NHgp2A~Wz(xa-Ce%+Lj~ldVpu91 zET}5DDA8<%DOaGC#0pb?gg7kenoMdx%tOrQb;}tC(^6YTIcpiy)gQr3!xto_*ij&q zB%q>!atyli^KZ*j5BejgLtgBZnK!bGU9wDWngVf8#%@_YUr^FC0F(nT3pD_>xC(Oy zy|r+C4~zQ%y_yVqgJ7wfgs+dr3QIj>ieYu#{aPL-VTEgmkTjejsj?00chu8;Q& z43Bh%+hgP{N0==6q!J$|cE^-#HW#Bojy=0pW8`pj$}9yepp?`&8mVx0!l1j45qfv# zg2eO5+OI5fQm}028^y`b%PvkjH03g#{w1&PAMak|Yn{Ge`da5A3%zJ)1VI(~Qj5Nn z=}RHc_>#8;`NJ~_(;uEc{OAPoM;HB3(;r2iuh~=wo$8n$dNlt0ln*t9X7-s)p}FCO z?@-goV$+D(G=e-|E_wH(=C+xmW^>z|ve1pr#8C6u#pbhS^I7CMx8(Js!0}t6892TW zMuEY_z@QlzM4q7y6Y~HKLKH|W1`=ij9S`e`plNLdGT+_ z?E1v)8Z^7ULg&;n$4%IJc=9?J;U6=)&L|o2_VP>KS6x|l2-Io^wVIH1O3I%9rPUv| z?hz+Hr9b2S>X`|NxXC)yVK5rDK4QbwlWlYm7?x`Dtg5g=Vja5os1zoui}ap4Ke9^G z3FAY;(r>=pC?RFL&1NG9(H2Bp!1^z7$Iy2Fve;%5%iLBn?J_+_9@B~SZDyGb{{bV9 BHqHP5 literal 0 HcmV?d00001 diff --git a/apps/auth/migrations/__pycache__/0003_alter_menu_order_alter_menu_parent_id.cpython-311.pyc b/apps/auth/migrations/__pycache__/0003_alter_menu_order_alter_menu_parent_id.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f25c474e8af92eb69747d5422b605925b7de0450 GIT binary patch literal 1023 zcmZuv%}>-o6rX9k-ECPCX-q@|#)BC5LN*vLN+jaPMk8EEh-sQkDl;s*blW;@O}KF| zk&8l13>V`OHE{4`jDH0rdmwW)sN726#K||^?W({`=k@*G%=`MyeC+Qx5e&DsKmSxg z=!XRPD0G#>aZuI~MHG9eg>BqYYy~3))eu!)BC0anRCA{d&^CL>R;f0FDusQyT~UPD zYSg(KHv&HrdMlvJi{^4q`7d?B;RjIG5koen$W|z>V_Q`a)0%lvkeW)1-Yj-~5Y=d5 zOW%MtHeq$fR`LIWPQ@slh+%A*8yF(MIy*vLu}icMnkoxpD(?nb)7&Ip5Lc?z>KJJ; zKOsEuSSETXi5M4}grX2|$~c#GCOU|pZ{F^GUxhG5%I4j~i$(bbe<-tXO&ZFN{Fv3dCSe94>t5z(bO`(Cc=5q4 zCtQjb0^gYog2j7NGqYo(RR{j$e$(~q0hx5?79ow}hGFDL%ACJX!U6Jb5LYJcP?(YQ zuc6oKXt=~BZ<&xv^a{jsZ>BmjZld8OnXW+}^e(cC3lEHF46Tzt7T_AIr%v=9NuXG-1%J z^HKUNV>M&4Q~RJimYux>+Hq;Tb2WGP5J33=qgfECiZO8XVHVa+= literal 0 HcmV?d00001 diff --git a/apps/auth/migrations/__pycache__/__init__.cpython-311.pyc b/apps/auth/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8156bcd85d858497321bc9d9e8932281d9b46674 GIT binary patch literal 182 zcmZ3^%ge<81V!lw(m?cM5CH>>P{wCAAY(d13PUi1CZpd$OhIKy zMt)w5Q+|H7vu|*ik)A;ekdAlBO3X{ok9SH;&Q8rsiAgLdD2_=iEy;+<%}g&!EXmBz yD~^ee&&>P{wCAAY(d13PUi1CZpdYa(w_(pl@1P$S%Nr85uvsI0I^HKAq0-tOWN8b7t>^Drw;xBZv77w z@t^5fvN$-oRqE8qcS$OUzDwTw-o5X>clVwvl_H>p5Mr*q!P1xW;ZZmov*5Y0W{e5rzDGU^#43Fnxcd^^xCJb8((h z&vY$H<07RqILc_ebh;?jj0&s=nCCZCWI_tfByShZb@W!34h&V?NjW2 J{ZmSseFL2dhw}gc literal 0 HcmV?d00001 diff --git a/apps/home/__pycache__/models.cpython-311.pyc b/apps/home/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6c752b3526cdd485460866e92497c1d3fca4a72 GIT binary patch literal 223 zcmZ3^%ge<81X4Wr(`>C_r zq-PKVq~l${8seQ2le1IvQeqMd3W{Sg@^e#TAcpD{RQ}?y0kTVTQtgU3fQB&waj`6r U_`uA_$asT6<^ncU#0FFW00V?LZ2$lO literal 0 HcmV?d00001 diff --git a/apps/home/__pycache__/views.cpython-311.pyc b/apps/home/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfcdc70b57e33ba61a4ac5f165cca659fdb383e3 GIT binary patch literal 1007 zcmZuv&1(}u6rb7MBx}>SsrAr9DS9Y0V1t#?LlsSv7IU!$D*&|5!pNOs9#GlOr@y&>7=nah;Kc`Ae=W_S$!uAA}5FCk)BqU#x#`#cRFa2O z^7Zrk+K@_$8|veRRF)55#bxCHeNYCg!ornRj#*L6aJpAJ{qlOTsDeK7`{<)EA^|Ga z$K{7BPq@5ET<&vd-g5cahPU$!v9h*7GR&ntmq9LERE!?+@c<<+iiEjb*KqjRbhu@a`XFIh(rKqRXgwo8G3lCWeXXPClBoP1ClhScvxnylFlo ydR;iK0XtLgnYK|Zko$B3Oz|GsIax``mobNvHGynR*YqDWz3!C& literal 0 HcmV?d00001 diff --git a/apps/home/admin.py b/apps/home/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apps/home/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/home/apps.py b/apps/home/apps.py new file mode 100644 index 0000000..c11732f --- /dev/null +++ b/apps/home/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class HomeConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.home' diff --git a/apps/home/migrations/__init__.py b/apps/home/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/home/migrations/__pycache__/__init__.cpython-311.pyc b/apps/home/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..490db151363a8a148db1c72dc15b5d6147d99f64 GIT binary patch literal 182 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 literal 0 HcmV?d00001 diff --git a/data/initdata.json b/data/initdata.json new file mode 100644 index 0000000..216f09d --- /dev/null +++ b/data/initdata.json @@ -0,0 +1,16 @@ +[ + { + "model": "api.sysconfig", + "pk": 1, + "fields": { + "name": "系统名称", + "identity":"SysTitle", + "param":"图书管理系统", + "desc":"登录界面显示的系统标题", + "create_by":"admin", + "create_time":"2024-08-16 23:39:50", + "update_by":"admin", + "update_time":"2024-08-16 23:39:50" + } + } +] \ No newline at end of file diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..2c3670f --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'CMS_Django_Backend.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/upload/avatar/default.jpg b/upload/avatar/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f2a3a794c18b9d71b60f093da1abd7dfac4e606 GIT binary patch literal 39957 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 literal 0 HcmV?d00001