From bf2c41713a4cd95cab8e93ef41a4f600f5926f88 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 13:14:46 +0800
Subject: [PATCH 01/16] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
judge/judger_controller/settings.py | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/judge/judger_controller/settings.py b/judge/judger_controller/settings.py
index 92d17807..e141c525 100644
--- a/judge/judger_controller/settings.py
+++ b/judge/judger_controller/settings.py
@@ -1,7 +1,12 @@
# coding=utf-8
+"""
+注意:
+此文件包含 celery 的部分配置,但是 celery 并不是运行在docker 中的,所以本配置文件中的 redis和 MySQL 的地址就应该是
+运行 redis 和 MySQL 的 docker 容器的地址了。怎么获取这个地址见帮助文档。测试用例的路径和源代码路径同理。
+"""
# 这个redis 是 celery 使用的,包括存储队列信息还有部分统计信息
redis_config = {
- "host": "121.42.32.129",
+ "host": "192.168.42.23",
"port": 6379,
"db": 0
}
@@ -9,23 +14,23 @@ redis_config = {
# 判题的 docker 容器的配置参数
docker_config = {
- "image_name": "3da0e526934e",
+ "image_name": "judger",
"docker_path": "docker",
"shell": True
}
# 测试用例的路径,是主机上的实际路径
-test_case_dir = "/var/mnt/source/test_case/"
+test_case_dir = "/root/test_case/"
# 源代码路径,也就是 manage.py 所在的实际路径
-source_code_dir = "/var/mnt/source/OnlineJudge/"
+source_code_dir = "/root/qduoj/"
# 日志文件夹路径
-log_dir = "/var/log/"
+log_dir = "/root/log/"
# 存储提交信息的数据库,是 celery 使用的,与 oj.settings/local_settings 等区分,那是 web 服务器访问的地址
submission_db = {
- "host": "127.0.0.1",
+ "host": "192.168.42.32",
"port": 3306,
"db": "oj_submission",
"user": "root",
From 2fe2d7b9ccc16dd1c53c4e01dde9a8ac3a147d03 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 16:35:39 +0800
Subject: [PATCH 02/16] =?UTF-8?q?judger=20=E5=A2=9E=E5=8A=A0=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
judge/judger_controller/tasks.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/judge/judger_controller/tasks.py b/judge/judger_controller/tasks.py
index df1deaba..d120ee34 100644
--- a/judge/judger_controller/tasks.py
+++ b/judge/judger_controller/tasks.py
@@ -11,7 +11,8 @@ from settings import docker_config, source_code_dir, test_case_dir, log_dir, sub
@app.task
def judge(submission_id, time_limit, memory_limit, test_case_id):
try:
- command = "%s run -t -i --privileged --rm=true " \
+ command = "%s run -t -i --privileged --rm " \
+ "--link mysql " \
"-v %s:/var/judger/test_case/ " \
"-v %s:/var/judger/code/ " \
"-v %s:/var/judger/code/log/ " \
From 45db5c7c1c34ac716b5ee048d80aac669bcc4e43 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 16:52:39 +0800
Subject: [PATCH 03/16] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=B8=AE=E5=8A=A9?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
template/src/utils/help.html | 38 ++++++++++++++----------------------
1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/template/src/utils/help.html b/template/src/utils/help.html
index c03b354e..f82d81c1 100644
--- a/template/src/utils/help.html
+++ b/template/src/utils/help.html
@@ -22,37 +22,29 @@
System Error: 判题系统发生故障,请等待重判
Waiting: 你的提交正在等待处理
- 支持的语言
-
- - C (GCC 4.8)
- - C++ (G++ 4.3)
-
- - Java (Oracle JDK 1.7)
-
编译参数
- - C
- gcc -DONLINE_JUDGE -O2 -w -std=c99 {src_path} -lm -o {exe_path}main
- - C++
- g++ -DONLINE_JUDGE -O2 -w -std=c++11 {src_path} -lm -o {exe_path}main
- - Java
- javac {src_path} -d {exe_path}
- java -cp {exe_path} Main
+ - C(GCC 4.8)
+
gcc -DONLINE_JUDGE -O2 -w -std=c99 {src_path} -lm -o {exe_path}main
+ C++(G++ 4.3)
+ g++ -DONLINE_JUDGE -O2 -w -std=c++11 {src_path} -lm -o {exe_path}main
+ Java(Oracle JDK 1.7)
+
+//编译
+javac {src_path} -d {exe_path}
+//运行
+java -cp {exe_path} Main
常见问题
- - 输入输出
- 无特殊说明,请使用标准输入输出
- - C/C++的64位整数类型
- 请使用long long声明,使用cin/cout或 %lld输入输出
- - 判题结果与本地执行结果不一致
- 是否使用了不同版本的编译器(VC和TC并不完全符合C/C++标准)
- 判题时可能使用了与您测试时不同的测试数据(不仅限于样例中展示的数据)
- - 程序执行时间和占用的内存如何计算
- 执行时间指CPU时间,占用内存按执行过程中内存消耗的峰值计,有多组测试数据时以最大的时间和内存消耗为准
+ - 无特殊说明,请使用标准输入输出。
+ - Java 代码需使用 Main 作为主类名。C/C++代码使用
int main()
,并且需要return 0;
。
+ - C/C++ 的64位整数类型,请使用
long long
声明,使用 cin/cout
或 %lld
输入输出。
+ 使用__int64
会导致编译错误。
+ - 程序执行时间指CPU时间,占用内存按执行过程中内存消耗的峰值计,有多组测试数据时以最大的时间和内存消耗为准
From 65a49f54801d25eb8f42d17190580e35a561ad8c Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 19:12:50 +0800
Subject: [PATCH 04/16] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20readme?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/README.md b/README.md
index e69de29b..cdf478d7 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,33 @@
+# OnlineJudge
+
+基于 Python 和 Django的在线评测平台。
+
+文档:https://www.zybuluo.com/virusdefender/note/171932
+
+TODO:
+
+ - 完善文档,目前还差很多
+ - 完善测试
+ - 搭建 demo 站点
+
+![oj_previewindex.png][1]
+
+![preview.jpeg][2]
+
+![oj_preview_submission.png][3]
+
+![contest][4]
+
+![contest_rank_edit][5]
+
+![admin_problem][6]
+
+![admin_contest][7]
+
+[1]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewindex.png
+[2]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewproblem.png
+[3]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewsubmission.png
+[4]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewcontest.png
+[5]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewcontest_rank.png?edit
+[6]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewadmin_problem.png
+[7]: https://dn-virusdefender-blog-cdn.qbox.me/oj_previewadmin_contest.png
\ No newline at end of file
From 6045b34e0adec4a2c277b48fe3fc61a12d1f85fe Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 20:56:14 +0800
Subject: [PATCH 05/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=AD=E8=A8=80?=
=?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=85=8D=E7=BD=AE=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitattributes | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 .gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..b6cb82c9
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,3 @@
+static/src/js/lib/* linguist-vendored
+static/src/js/require.js linguist-vendored
+static/src/js/r.js linguist-vendored
\ No newline at end of file
From cc138542b4b7d9180c380844ab5a76346c87d2e8 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 20:58:40 +0800
Subject: [PATCH 06/16] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
install/__init__.py | 0
install/migrations/__init__.py | 0
install/models.py | 3 ---
install/tests.py | 3 ---
install/views.py | 23 -----------------------
judge/README.md | 3 ---
6 files changed, 32 deletions(-)
delete mode 100644 install/__init__.py
delete mode 100644 install/migrations/__init__.py
delete mode 100644 install/models.py
delete mode 100644 install/tests.py
delete mode 100644 install/views.py
delete mode 100644 judge/README.md
diff --git a/install/__init__.py b/install/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/install/migrations/__init__.py b/install/migrations/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/install/models.py b/install/models.py
deleted file mode 100644
index 71a83623..00000000
--- a/install/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.
diff --git a/install/tests.py b/install/tests.py
deleted file mode 100644
index 7ce503c2..00000000
--- a/install/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/install/views.py b/install/views.py
deleted file mode 100644
index 75fd7bd5..00000000
--- a/install/views.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# coding=utf-8
-from django.shortcuts import render
-from django.http import HttpResponse
-
-from account.models import User
-from group.models import Group, UserGroupRelation, JoinGroupRequest
-
-
-def install(request):
- for i in range(10):
- user = User.objects.create(username="root" + str(i), admin_type=2, real_name="real_name", email="11111@qq.com")
- user.set_password("root")
- user.save()
- for i in range(10):
- group = Group.objects.create(name="group" + str(i),
- description="description",
- admin=User.objects.get(username="root0"))
- for i in range(7):
- UserGroupRelation.objects.create(user=User.objects.get(username="root" + str(i)), group=group)
- for i in range(7, 10):
- JoinGroupRequest.objects.create(user=User.objects.get(username="root" + str(i)),
- group=group, message=u"你好啊")
- return HttpResponse("success")
diff --git a/judge/README.md b/judge/README.md
deleted file mode 100644
index c40444b1..00000000
--- a/judge/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-/usr/bin/docker run -t -i --privileged -v /var/test_case/:/var/judger/test_case/ -v /var/code/:/var/judger/code/ judger /bin/bash
-
-python judge/judger/run.py -solution_id 1 -max_cpu_time 1 -max_memory 1 -test_case_id 1
From 83e45501b0d99687c17d7ef69351ae8274d25251 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Tue, 15 Sep 2015 22:45:04 +0800
Subject: [PATCH 07/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=80=E6=BA=90?=
=?UTF-8?q?=E5=8D=8F=E8=AE=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
LICENSE | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 LICENSE
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..c51daa11
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Qingdao University College of Information Engineering
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
From cc0562f3480c22d98c5ba1ad04040d32e39f44a6 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 10:01:25 +0800
Subject: [PATCH 08/16] update license
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index c51daa11..7126efb1 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2015 Qingdao University College of Information Engineering
+Copyright (c) 2015 Qingdao 青岛大学信息工程学院创新实验室
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From 758132c40d91792992d88cd379a521b3179ff2c8 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 12:57:48 +0800
Subject: [PATCH 09/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=BE=E7=A4=BA?=
=?UTF-8?q?=E7=9C=9F=E5=AE=9E=E5=A7=93=E5=90=8D=E7=9A=84=E9=9A=90=E8=97=8F?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
contest/views.py | 5 ++++-
template/src/oj/contest/contest_rank.html | 7 ++++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/contest/views.py b/contest/views.py
index 31a6c36c..5bb089bc 100644
--- a/contest/views.py
+++ b/contest/views.py
@@ -433,7 +433,9 @@ def contest_rank_page(request, contest_id):
except ContestSubmission.DoesNotExist:
result[i]["problems"].append({})
result[i]["total_ac"] = submissions.filter(ac=True).count()
- result[i]["username"] = User.objects.get(id=result[i]["user_id"]).username
+ user= User.objects.get(id=result[i]["user_id"])
+ result[i]["username"] = user.username
+ result[i]["real_name"] = user.real_name
result[i]["total_time"] = get_the_time_format(submissions.filter(ac=True).aggregate(total_time=Sum("total_time"))["total_time"])
result = sorted(result, cmp=_cmp, reverse=True)
r.set("contest_rank_" + contest_id, json.dumps(list(result)))
@@ -449,4 +451,5 @@ def contest_rank_page(request, contest_id):
{"contest": contest, "contest_problems": contest_problems,
"result": result,
"auto_refresh": request.GET.get("auto_refresh", None) == "true",
+ "show_real_name": result.GET.get("show_real_name", None) == "true",
"real_time_rank": contest.real_time_rank})
diff --git a/template/src/oj/contest/contest_rank.html b/template/src/oj/contest/contest_rank.html
index aefb1990..20b2d6ab 100644
--- a/template/src/oj/contest/contest_rank.html
+++ b/template/src/oj/contest/contest_rank.html
@@ -45,7 +45,12 @@
{% for item in result %}
{{ forloop.counter }} |
- {{ item.username }} |
+
+ {{ item.username }}
+ {% if show_real_name %}
+ ({{ item.real_name }})
+ {% endif %}
+ |
{{ item.total_ac }} / {{ item.total_submit }} |
{% if item.total_time %}{{ item.total_time }}{% else %}--{% endif %} |
{% for problem in item.problems %}
From 5723572af774f27fec62f35cb9258e075d036ac3 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 13:25:23 +0800
Subject: [PATCH 10/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E4=BD=93?=
=?UTF-8?q?=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
static/src/css/global.css | 23 ++++++++++++++---------
static/src/css/oj.css | 3 +--
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/static/src/css/global.css b/static/src/css/global.css
index 56c87eb1..2d389311 100644
--- a/static/src/css/global.css
+++ b/static/src/css/global.css
@@ -1,13 +1,17 @@
-html{
+body, button, input, select, textarea, h1, h2, h3, h4, h5, h6 {
+ font-family: Georgia, STHeiti, "Microsoft Yahei";
+}
+
+html {
height: 100%;
}
-body{
- height:100%; /*使内容高度和body一样*/
- margin-bottom:-80px;/*向上缩减80像素,不至于footer超出屏幕可视范围*/
+body {
+ height: 100%; /*使内容高度和body一样*/
+ margin-bottom: -80px; /*向上缩减80像素,不至于footer超出屏幕可视范围*/
}
-.main{
+.main {
padding-bottom: 120px;
}
@@ -30,10 +34,11 @@ label {
display: none
}
-.right{
+.right {
float: right;
}
-.CodeMirror pre {
- font-family: "Consolas","Bitstream Vera Sans Mono","Courier New", Courier, monospace !important;
-}
\ No newline at end of file
+
+pre {
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+}
diff --git a/static/src/css/oj.css b/static/src/css/oj.css
index 86748c2d..cecc0b50 100644
--- a/static/src/css/oj.css
+++ b/static/src/css/oj.css
@@ -1,8 +1,7 @@
-@import url("global.css");
@import url("bootstrap/bootstrap.min.css");
@import url("bootstrap/todc-bootstrap.min.css");
@import url("codeMirror/codemirror.css");
-
+@import url("global.css");
#language-selector {
width: 130px;
From 6122cc1a32ace6da9b1edd23e5094748c7440cea Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 13:50:08 +0800
Subject: [PATCH 11/16] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E4=BD=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
static/src/css/admin.css | 2 +-
static/src/css/global.css | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/static/src/css/admin.css b/static/src/css/admin.css
index fb9c9f25..6a613e7c 100644
--- a/static/src/css/admin.css
+++ b/static/src/css/admin.css
@@ -1,4 +1,3 @@
-@import url("global.css");
@import url("bootstrap/bootstrap.min.css");
@import url("bootstrap/todc-bootstrap.min.css");
@import url("codeMirror/codemirror.css");
@@ -6,6 +5,7 @@
@import url("webuploader/webuploader.css");
@import url("datetime_picker/bootstrap-datetimepicker.css");
@import url("tagEditor/jquery.tag-editor.css");
+@import url("global.css");
#loading-gif {
width: 40px;
diff --git a/static/src/css/global.css b/static/src/css/global.css
index 2d389311..2d4f6181 100644
--- a/static/src/css/global.css
+++ b/static/src/css/global.css
@@ -1,5 +1,5 @@
body, button, input, select, textarea, h1, h2, h3, h4, h5, h6 {
- font-family: Georgia, STHeiti, "Microsoft Yahei";
+ font-family: Georgia, STHeiti, "Microsoft Yahei", SimSun, "Droid Sans";
}
html {
@@ -40,5 +40,5 @@ label {
pre {
- font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
}
From d5e12d6a23b97b24f4c9e4d9f239cc5fb40d9d47 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 13:53:31 +0800
Subject: [PATCH 12/16] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9D=99=E6=80=81?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E5=8E=8B=E7=BC=A9=E8=84=9A=E6=9C=AC=E4=B8=AD?=
=?UTF-8?q?=E7=9A=84=E6=8F=90=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
tools/release_static.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tools/release_static.py b/tools/release_static.py
index 0a51b8a7..f937ae33 100644
--- a/tools/release_static.py
+++ b/tools/release_static.py
@@ -9,6 +9,12 @@ template_release_path = "template/release/"
static_src_path = "static/src/"
static_release_path = "static/release/"
+
+print "Begin to compress js"
+if os.system("node static/src/js/r.js -o static/src/js/build.js"):
+ print "Failed to compress js, exit"
+ exit()
+
try:
# 删除模板的 release 文件夹
shutil.rmtree(template_release_path)
@@ -30,7 +36,7 @@ name_map = {}
def process(match):
file_path = match.group(1).replace("/static/", "")
- # print file_path, match.group(), match.group(1)
+ print "Processing: " + file_path
if not os.path.exists(static_release_path + file_path):
return match.group(0)
@@ -59,3 +65,5 @@ for root, dirs, files in os.walk(template_release_path):
f = open(html_path, "w")
f.write(css_replaced_html_content)
f.close()
+
+print "Done"
\ No newline at end of file
From 8e60d08f142f798e536fb5b49eebbabf03fcc0f6 Mon Sep 17 00:00:00 2001
From: virusdefender <1670873886@qq.com>
Date: Wed, 16 Sep 2015 15:21:24 +0800
Subject: [PATCH 13/16] =?UTF-8?q?IE=E6=B5=8F=E8=A7=88=E5=99=A8=E4=B8=8B?=
=?UTF-8?q?=E5=BE=88=E5=A4=9A=20css=20=E6=A0=B7=E5=BC=8F=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=EF=BC=8C=E5=86=B3=E5=AE=9A=E4=B8=8D=E5=86=8D=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=EF=BC=8C=E5=BC=BA=E5=88=B6=E8=B7=B3=E8=BD=AC=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
static/src/img/chrome.png | Bin 0 -> 16407 bytes
static/src/img/firefox.png | Bin 0 -> 24971 bytes
static/src/img/ie.png | Bin 0 -> 19044 bytes
static/src/img/unsupported_browser.html | 37 ++++++++++++++++++++++++
template/src/admin/admin.html | 12 ++++----
template/src/oj_base.html | 14 ++++-----
6 files changed, 48 insertions(+), 15 deletions(-)
create mode 100644 static/src/img/chrome.png
create mode 100644 static/src/img/firefox.png
create mode 100644 static/src/img/ie.png
create mode 100644 static/src/img/unsupported_browser.html
diff --git a/static/src/img/chrome.png b/static/src/img/chrome.png
new file mode 100644
index 0000000000000000000000000000000000000000..06a52bc40a2aab2cd4f3c13bb1f0e4567819f2fb
GIT binary patch
literal 16407
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