Accept Merge Request #149 修改部分配置项目 : (virusdefender-dev -> dev)

Merge Request: 修改部分配置项目
Created By: @virusdefender
Accepted By: @virusdefender
URL: https://coding.net/u/virusdefender/p/qduoj/git/merge/149
This commit is contained in:
virusdefender
2015-09-01 22:35:13 +08:00
14 changed files with 47 additions and 55 deletions

View File

@@ -1,13 +1,7 @@
FROM python:2.7 FROM python:2.7
ENV PYTHONUNBUFFERED 1 ENV PYTHONBUFFERED 1
ENV oj_env daocloud RUN mkdir -p /code/log /code/test_case
RUN mkdir /var/oj WORKDIR /code
COPY . /var/oj/ ADD requirements.txt /code/
WORKDIR /var/oj/
RUN pip install -r requirements.txt RUN pip install -r requirements.txt
EXPOSE 8080 EXPOSE 8010
RUN mkdir LOG
RUN mkdir test_case
RUN mkdir tmp
RUN python manage.py migrate
CMD python manage.py runserver 0.0.0.0:8080

19
judge/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM ubuntu:14.04
MAINTAINER virusdefender<qduliyang@outlook.com>
RUN mkdir /var/install/
WORKDIR /var/install/
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get -y install software-properties-common python-software-properties
RUN add-apt-repository -y ppa:webupd8team/java
RUN apt-get update
RUN apt-get -y install python gcc g++ rake pkg-config git make autoconf automake libtool python-pip python2.7-mysqldb
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
RUN echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
RUN apt-get install -y oracle-java7-installer
RUN apt-get -y install libseccomp-dev
RUN git clone https://github.com/quark-zju/lrun.git
RUN cd lrun && make install
RUN mkdir -p /var/judger/run/ && mkdir /var/judger/test_case/ && mkdir /var/judger/code/
RUN chmod -R 777 /var/judger/run/
WORKDIR /var/judger/code/

View File

@@ -1,4 +1,5 @@
# coding=utf-8 # coding=utf-8
# 这个redis 是 celery 使用的,包括存储队列信息还有部分统计信息
redis_config = { redis_config = {
"host": "121.42.32.129", "host": "121.42.32.129",
"port": 6379, "port": 6379,
@@ -6,17 +7,21 @@ redis_config = {
} }
# 判题的 docker 容器的配置参数
docker_config = { docker_config = {
"image_name": " a7673b55d263", "image_name": "3da0e526934e",
"docker_path": "docker", "docker_path": "docker",
"shell": True "shell": True
} }
test_case_dir = "/root/test_case/" # 测试用例的路径,是主机上的实际路径
source_code_dir = "/root/" test_case_dir = "/var/mnt/source/test_case/"
# 源代码路径,也就是 manage.py 所在的实际路径
source_code_dir = "/var/mnt/source/OnlineJudge/"
# 存储提交信息的数据库,是 celery 使用的,与 oj.settings/local_settings 等区分,那是 web 服务器访问的地址
submission_db = { submission_db = {
"host": "127.0.0.1", "host": "127.0.0.1",
"port": 3306, "port": 3306,

View File

@@ -1,19 +0,0 @@
# coding=utf-8
import os
LOG_PATH = "LOG/"
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'CONN_MAX_AGE': 1,
}
}
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

View File

@@ -12,15 +12,16 @@ DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'CONN_MAX_AGE': 0.3,
}, },
# submission 的 name 和 engine 请勿修改,其他代码会用到
'submission': { 'submission': {
'NAME': 'oj_submission', 'NAME': 'oj_submission',
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
'HOST': "121.42.32.129", 'HOST': "121.42.32.129",
'PORT': 3306, 'PORT': 3306,
'USER': 'root', 'USER': 'root',
'PASSWORD': 'mypwd' 'PASSWORD': 'mypwd',
'CONN_MAX_AGE': 0.1,
} }
} }
@@ -30,4 +31,3 @@ DEBUG = True
TEST_CASE_DIR = os.path.join(BASE_DIR, 'test_case/') TEST_CASE_DIR = os.path.join(BASE_DIR, 'test_case/')
ALLOWED_HOSTS = [] ALLOWED_HOSTS = []

View File

@@ -12,7 +12,7 @@ DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
'NAME': "oj", 'NAME': "oj",
'CONN_MAX_AGE': 0.3, 'CONN_MAX_AGE': 0.1,
'HOST': '127.0.0.1', 'HOST': '127.0.0.1',
'PORT': 3306, 'PORT': 3306,
'USER': 'root', 'USER': 'root',
@@ -21,6 +21,7 @@ DATABASES = {
'submission': { 'submission': {
'NAME': 'oj_submission', 'NAME': 'oj_submission',
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
'CONN_MAX_AGE': 0.1,
'HOST': "127.0.0.1", 'HOST': "127.0.0.1",
'PORT': 3306, 'PORT': 3306,
'USER': 'root', 'USER': 'root',
@@ -34,4 +35,3 @@ DEBUG = True
TEST_CASE_DIR = '/root/test_case/' TEST_CASE_DIR = '/root/test_case/'
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']

View File

@@ -113,10 +113,6 @@ STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static/src/"),) STATICFILES_DIRS = (os.path.join(BASE_DIR, "static/src/"),)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, "template/src"),
)
AUTH_USER_MODEL = 'account.User' AUTH_USER_MODEL = 'account.User'
LOGGING = { LOGGING = {

View File

@@ -26,8 +26,8 @@ class CreateProblemSerializer(serializers.Serializer):
samples = ProblemSampleSerializer() samples = ProblemSampleSerializer()
test_case_id = serializers.CharField(max_length=40) test_case_id = serializers.CharField(max_length=40)
source = serializers.CharField(max_length=30, required=False, default=None) source = serializers.CharField(max_length=30, required=False, default=None)
time_limit = serializers.IntegerField() time_limit = serializers.IntegerField(min_value=1)
memory_limit = serializers.IntegerField() memory_limit = serializers.IntegerField(min_value=1)
difficulty = serializers.IntegerField() difficulty = serializers.IntegerField()
tags = serializers.ListField(child=serializers.CharField(max_length=10)) tags = serializers.ListField(child=serializers.CharField(max_length=10))
hint = serializers.CharField(max_length=3000, allow_blank=True) hint = serializers.CharField(max_length=3000, allow_blank=True)
@@ -61,8 +61,8 @@ class EditProblemSerializer(serializers.Serializer):
output_description = serializers.CharField(max_length=10000) output_description = serializers.CharField(max_length=10000)
test_case_id = serializers.CharField(max_length=40) test_case_id = serializers.CharField(max_length=40)
source = serializers.CharField(max_length=30) source = serializers.CharField(max_length=30)
time_limit = serializers.IntegerField() time_limit = serializers.IntegerField(min_value=1)
memory_limit = serializers.IntegerField() memory_limit = serializers.IntegerField(min_value=1)
difficulty = serializers.IntegerField() difficulty = serializers.IntegerField()
tags = serializers.ListField(child=serializers.CharField(max_length=20)) tags = serializers.ListField(child=serializers.CharField(max_length=20))
samples = ProblemSampleSerializer() samples = ProblemSampleSerializer()

View File

@@ -8,3 +8,4 @@ celery
gunicorn gunicorn
coverage coverage
django-extensions django-extensions
supervisor

View File

@@ -13,10 +13,6 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "tagE
bsAlert("题目描述不能为空!"); bsAlert("题目描述不能为空!");
return false; return false;
} }
if (vm.timeLimit < 1000 || vm.timeLimit > 5000) {
bsAlert("保证时间限制是一个1000-5000的合法整数");
return false;
}
if (vm.samples.length == 0) { if (vm.samples.length == 0) {
bsAlert("请至少添加一组样例!"); bsAlert("请至少添加一组样例!");
return false; return false;

View File

@@ -48,7 +48,7 @@ require(["jquery", "codeMirror", "csrfToken", "bsAlert"], function ($, codeMirro
if (!data.result) { if (!data.result) {
html += "CPU time: " + data.accepted_answer_time + "ms &nbsp;&nbsp;"; html += "CPU time: " + data.accepted_answer_time + "ms &nbsp;&nbsp;";
} }
html += ('<a href="/my_submission/' + submissionId + '/" target="_blank">查看详情</a></div> </div>'); html += ('<a href="/submission/' + submissionId + '/" target="_blank">查看详情</a></div> </div>');
return html; return html;
} }

View File

@@ -23,7 +23,7 @@
<div class="problem-section"> <div class="problem-section">
<label class="problem-label">输出</label> <label class="problem-label">输出</label>
<p class="problem-detail">{{ problem.output_description }}k</p> <p class="problem-detail">{{ problem.output_description }}</p>
</div> </div>
{% for item in samples %} {% for item in samples %}
<div class="problem-section"> <div class="problem-section">

View File

@@ -56,7 +56,7 @@
{{ request.user.username }} {{ request.user.username }}
<span class="caret"></span></a> <span class="caret"></span></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="/submission/">我的提交</a></li> <li><a href="/submissions/">我的提交</a></li>
<li><a href="#">我的资料</a></li> <li><a href="#">我的资料</a></li>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li><a href="/logout/">退出</a></li> <li><a href="/logout/">退出</a></li>