2DU 9 éve
szülő
commit
4fcf9de1d8
49 módosított fájl, 192 hozzáadás és 24 törlés
  1. 54 0
      app.py
  2. 0 0
      static/font-awesome/HELP-US-OUT.txt
  3. 0 0
      static/font-awesome/css/font-awesome.css
  4. 0 0
      static/font-awesome/css/font-awesome.min.css
  5. 0 0
      static/font-awesome/fonts/FontAwesome.otf
  6. 0 0
      static/font-awesome/fonts/fontawesome-webfont.eot
  7. 0 0
      static/font-awesome/fonts/fontawesome-webfont.svg
  8. 0 0
      static/font-awesome/fonts/fontawesome-webfont.ttf
  9. 0 0
      static/font-awesome/fonts/fontawesome-webfont.woff
  10. 0 0
      static/font-awesome/fonts/fontawesome-webfont.woff2
  11. 0 0
      static/font-awesome/less/animated.less
  12. 0 0
      static/font-awesome/less/bordered-pulled.less
  13. 0 0
      static/font-awesome/less/core.less
  14. 0 0
      static/font-awesome/less/fixed-width.less
  15. 0 0
      static/font-awesome/less/font-awesome.less
  16. 0 0
      static/font-awesome/less/icons.less
  17. 0 0
      static/font-awesome/less/larger.less
  18. 0 0
      static/font-awesome/less/list.less
  19. 0 0
      static/font-awesome/less/mixins.less
  20. 0 0
      static/font-awesome/less/path.less
  21. 0 0
      static/font-awesome/less/rotated-flipped.less
  22. 0 0
      static/font-awesome/less/screen-reader.less
  23. 0 0
      static/font-awesome/less/stacked.less
  24. 0 0
      static/font-awesome/less/variables.less
  25. 0 0
      static/font-awesome/scss/_animated.scss
  26. 0 0
      static/font-awesome/scss/_bordered-pulled.scss
  27. 0 0
      static/font-awesome/scss/_core.scss
  28. 0 0
      static/font-awesome/scss/_fixed-width.scss
  29. 0 0
      static/font-awesome/scss/_icons.scss
  30. 0 0
      static/font-awesome/scss/_larger.scss
  31. 0 0
      static/font-awesome/scss/_list.scss
  32. 0 0
      static/font-awesome/scss/_mixins.scss
  33. 0 0
      static/font-awesome/scss/_path.scss
  34. 0 0
      static/font-awesome/scss/_rotated-flipped.scss
  35. 0 0
      static/font-awesome/scss/_screen-reader.scss
  36. 0 0
      static/font-awesome/scss/_stacked.scss
  37. 0 0
      static/font-awesome/scss/_variables.scss
  38. 0 0
      static/font-awesome/scss/font-awesome.scss
  39. BIN
      static/images/christmas.png
  40. BIN
      static/images/on.ico
  41. BIN
      static/images/on.png
  42. BIN
      static/images/on2.png
  43. BIN
      static/images/quote.png
  44. 0 0
      static/primer.css
  45. 0 0
      static/style.css
  46. 69 0
      templates/edit.html
  47. 0 2
      templates/hello.html
  48. 69 0
      templates/index.html
  49. 0 22
      test.py

+ 54 - 0
app.py

@@ -0,0 +1,54 @@
+from flask import Flask, request, session, render_template
+app = Flask(__name__)
+
+from urllib import parse
+import json
+import pymysql
+
+json_data=open('set.json').read()
+data = json.loads(json_data)
+
+conn = pymysql.connect(host = data['host'], user = data['user'], password = data['pw'], db = data['db'], charset = 'utf8')
+curs = conn.cursor(pymysql.cursors.DictCursor)
+
+@app.route('/')
+@app.route('/w/')
+def redirect():
+    return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(data['frontpage']) + '" />'
+
+@app.route('/w/<name>')
+def w(name = None):
+    curs.execute("select * from data where title = '" + name + "'")
+    rows = curs.fetchall()
+    if(rows):
+        for row in rows:
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = row['data'])
+    else:
+        return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '문서 없음')
+
+@app.route('/edit/<name>', methods=['POST', 'GET'])
+def edit(name = None):
+    if(request.method == 'POST'):
+        return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
+    else:
+        curs.execute("select * from data where title = '" + name + "'")
+        rows = curs.fetchall()
+        if(rows):
+            for row in rows:
+                return render_template('edit.html', title = name, logo = data['name'], page = parse.quote(name), data = row['data'])
+        else:
+            return render_template('edit.html', title = name, logo = data['name'], page = parse.quote(name), data = '')
+
+@app.route('/setup')
+def setup():
+    curs.execute("create table if not exists data(title text not null, data longtext not null, acl text not null)")
+    curs.execute("create table if not exists history(id text not null, title text not null, data longtext not null, date text not null, ip text not null, send text not null, leng text not null)")
+    curs.execute("create table if not exists rc(title text not null, date text not null, ip text not null, send text not null, leng text not null, back text not null)")
+    curs.execute("create table if not exists rd(title text not null, sub text not null, date text not null, ip text not null)")
+    curs.execute("create table if not exists user(id text not null, pw text not null, acl text not null)")
+    curs.execute("create table if not exists ban(block text not null, end text not null, why text not null, band text not null)")
+    curs.execute("create table if not exists topic(id text not null, title text not null, sub text not null, data longtext not null, date text not null, ip text not null, block text not null)")
+    return '문제 없음'
+
+if __name__ == '__main__':
+    app.run()

+ 0 - 0
stylesheets/font-awesome/HELP-US-OUT.txt → static/font-awesome/HELP-US-OUT.txt


+ 0 - 0
stylesheets/font-awesome/css/font-awesome.css → static/font-awesome/css/font-awesome.css


+ 0 - 0
stylesheets/font-awesome/css/font-awesome.min.css → static/font-awesome/css/font-awesome.min.css


+ 0 - 0
stylesheets/font-awesome/fonts/FontAwesome.otf → static/font-awesome/fonts/FontAwesome.otf


+ 0 - 0
stylesheets/font-awesome/fonts/fontawesome-webfont.eot → static/font-awesome/fonts/fontawesome-webfont.eot


+ 0 - 0
stylesheets/font-awesome/fonts/fontawesome-webfont.svg → static/font-awesome/fonts/fontawesome-webfont.svg


+ 0 - 0
stylesheets/font-awesome/fonts/fontawesome-webfont.ttf → static/font-awesome/fonts/fontawesome-webfont.ttf


+ 0 - 0
stylesheets/font-awesome/fonts/fontawesome-webfont.woff → static/font-awesome/fonts/fontawesome-webfont.woff


+ 0 - 0
stylesheets/font-awesome/fonts/fontawesome-webfont.woff2 → static/font-awesome/fonts/fontawesome-webfont.woff2


+ 0 - 0
stylesheets/font-awesome/less/animated.less → static/font-awesome/less/animated.less


+ 0 - 0
stylesheets/font-awesome/less/bordered-pulled.less → static/font-awesome/less/bordered-pulled.less


+ 0 - 0
stylesheets/font-awesome/less/core.less → static/font-awesome/less/core.less


+ 0 - 0
stylesheets/font-awesome/less/fixed-width.less → static/font-awesome/less/fixed-width.less


+ 0 - 0
stylesheets/font-awesome/less/font-awesome.less → static/font-awesome/less/font-awesome.less


+ 0 - 0
stylesheets/font-awesome/less/icons.less → static/font-awesome/less/icons.less


+ 0 - 0
stylesheets/font-awesome/less/larger.less → static/font-awesome/less/larger.less


+ 0 - 0
stylesheets/font-awesome/less/list.less → static/font-awesome/less/list.less


+ 0 - 0
stylesheets/font-awesome/less/mixins.less → static/font-awesome/less/mixins.less


+ 0 - 0
stylesheets/font-awesome/less/path.less → static/font-awesome/less/path.less


+ 0 - 0
stylesheets/font-awesome/less/rotated-flipped.less → static/font-awesome/less/rotated-flipped.less


+ 0 - 0
stylesheets/font-awesome/less/screen-reader.less → static/font-awesome/less/screen-reader.less


+ 0 - 0
stylesheets/font-awesome/less/stacked.less → static/font-awesome/less/stacked.less


+ 0 - 0
stylesheets/font-awesome/less/variables.less → static/font-awesome/less/variables.less


+ 0 - 0
stylesheets/font-awesome/scss/_animated.scss → static/font-awesome/scss/_animated.scss


+ 0 - 0
stylesheets/font-awesome/scss/_bordered-pulled.scss → static/font-awesome/scss/_bordered-pulled.scss


+ 0 - 0
stylesheets/font-awesome/scss/_core.scss → static/font-awesome/scss/_core.scss


+ 0 - 0
stylesheets/font-awesome/scss/_fixed-width.scss → static/font-awesome/scss/_fixed-width.scss


+ 0 - 0
stylesheets/font-awesome/scss/_icons.scss → static/font-awesome/scss/_icons.scss


+ 0 - 0
stylesheets/font-awesome/scss/_larger.scss → static/font-awesome/scss/_larger.scss


+ 0 - 0
stylesheets/font-awesome/scss/_list.scss → static/font-awesome/scss/_list.scss


+ 0 - 0
stylesheets/font-awesome/scss/_mixins.scss → static/font-awesome/scss/_mixins.scss


+ 0 - 0
stylesheets/font-awesome/scss/_path.scss → static/font-awesome/scss/_path.scss


+ 0 - 0
stylesheets/font-awesome/scss/_rotated-flipped.scss → static/font-awesome/scss/_rotated-flipped.scss


+ 0 - 0
stylesheets/font-awesome/scss/_screen-reader.scss → static/font-awesome/scss/_screen-reader.scss


+ 0 - 0
stylesheets/font-awesome/scss/_stacked.scss → static/font-awesome/scss/_stacked.scss


+ 0 - 0
stylesheets/font-awesome/scss/_variables.scss → static/font-awesome/scss/_variables.scss


+ 0 - 0
stylesheets/font-awesome/scss/font-awesome.scss → static/font-awesome/scss/font-awesome.scss


BIN
static/images/christmas.png


BIN
static/images/on.ico


BIN
static/images/on.png


BIN
static/images/on2.png


BIN
static/images/quote.png


+ 0 - 0
stylesheets/primer.css → static/primer.css


+ 0 - 0
stylesheets/style.css → static/style.css


+ 69 - 0
templates/edit.html

@@ -0,0 +1,69 @@
+<html>
+	<head>
+		<title>{{title}}</title>
+		<link rel="stylesheet" href="{{url_for('static', filename='primer.css')}}">
+		<link rel="stylesheet" href="{{url_for('static', filename='style.css')}}">
+		<link rel="stylesheet" href="{{url_for('static', filename='font-awesome/css/font-awesome.min.css')}}">
+		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css">
+		<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js"></script>
+		<link rel="shortcut icon" href="{{url_for('static', filename='images/on.ico')}}">
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<br>
+		<div class="one-fifth column">
+			<div id="top">
+				<a href="/" id="logo">{{logo}}</a>
+				<div>
+					<a href="/RecentChanges" id="RecentChanges"><i class="fa fa-refresh" aria-hidden="true"></i><span id="is_mobile">최근 변경</span></a>
+					<a href="/RecentChanges" id="RecentChanges"><i class="fa fa-comment" aria-hidden="true"></i><span id="is_mobile">최근 토론</span></a>
+					<a href="/random" id="log"><i class="fa fa-random" aria-hidden="true"></i></a>
+					<a href="/user" id="log"><i class="fa fa-user" aria-hidden="true"></i></a>
+					<a href="/other" id="log"><i class="fa fa-cogs" aria-hidden="true"></i></a>
+				</div>
+				<form method="POST" action="/search" id="search">
+					<div class="input-group">
+						<input class="form-control" name="name" type="text">
+						<span class="input-group-button"><button class="btn"><i class="fa fa-long-arrow-left" aria-hidden="true"></i></button></span>
+					</div>
+				</form>
+			</div>
+		</div>
+		<div class="scroll-buttons">
+			<a class="scroll-toc" href="#toc"><i class="fa fa-list-alt" aria-hidden="true"></i></a>
+			<a class="scroll-button" href="#top" id="left"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+			<a class="scroll-bottom" href="#powered" id="right"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+		</div>
+		<div id="left_bar">
+			<a href="#">맨 위로</a>
+			<br>
+			<br>
+			<!-- 내용 넣는 자리 -->
+		</div>
+		<div class="four-fifths column">
+			<div id="tool">
+				<nav class="menu">
+					<a class="menu-item selected" href="#">수정</a>
+					<a class="menu-item" href="/w/{{page}}">문서</a>
+				</nav>
+			</div>
+			<h1 class="title">{{title}}</h1>
+			<h2 class="title"><span style="margin-left:5px"></span>(수정)</h2>
+			<form id="usrform" name="f1" method="POST" action="/edit/{{page}}">
+				<textarea rows="30" cols="100" name="content" form="usrform">{{data}}</textarea>
+				<input name="send" style="margin-top:10px;width:100%" type="text">
+				<br>
+				<br>
+				<div class="form-actions">
+					<button class="btn btn-primary" type="submit" onclick="f1.action='/edit/{{page}}';">저장</button>
+					<button class="btn" type="submit" onclick="f1.action='/preview/{{page}}';">미리보기</button>
+				</div>
+			</form>
+			<hr id="last">
+			<p>{{license}}</p>
+			<div id="powered">
+				<a href="https://github.com/2DU/Ownet"><img src="{{url_for('static', filename='images/on2.png')}}" width="100px"></a>
+			</div>
+		</div>
+	</body>
+</html>

+ 0 - 2
templates/hello.html

@@ -1,2 +0,0 @@
-<!-- hello.html -->
-hello {{ name }}!!

+ 69 - 0
templates/index.html

@@ -0,0 +1,69 @@
+<html>
+	<head>
+		<title>{{title}}</title>
+		<link rel="stylesheet" href="{{url_for('static', filename='primer.css')}}">
+		<link rel="stylesheet" href="{{url_for('static', filename='style.css')}}">
+		<link rel="stylesheet" href="{{url_for('static', filename='font-awesome/css/font-awesome.min.css')}}">
+		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css">
+		<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.js"></script>
+		<link rel="shortcut icon" href="{{url_for('static', filename='images/on.ico')}}">
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+	</head>
+	<body>
+		<br>
+		<div class="one-fifth column">
+			<div id="top">
+				<a href="/" id="logo">{{logo}}</a>
+				<div>
+					<a href="/RecentChanges" id="RecentChanges"><i class="fa fa-refresh" aria-hidden="true"></i><span id="is_mobile">최근 변경</span></a>
+					<a href="/RecentChanges" id="RecentChanges"><i class="fa fa-comment" aria-hidden="true"></i><span id="is_mobile">최근 토론</span></a>
+					<a href="/random" id="log"><i class="fa fa-random" aria-hidden="true"></i></a>
+					<a href="/user" id="log"><i class="fa fa-user" aria-hidden="true"></i></a>
+					<a href="/other" id="log"><i class="fa fa-cogs" aria-hidden="true"></i></a>
+				</div>
+				<form method="POST" action="/search" id="search">
+					<div class="input-group">
+						<input class="form-control" name="name" type="text">
+						<span class="input-group-button"><button class="btn"><i class="fa fa-long-arrow-left" aria-hidden="true"></i></button></span>
+					</div>
+				</form>
+			</div>
+		</div>
+		<div class="scroll-buttons">
+			<a class="scroll-toc" href="#toc"><i class="fa fa-list-alt" aria-hidden="true"></i></a>
+			<a class="scroll-button" href="#top" id="left"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+			<a class="scroll-bottom" href="#powered" id="right"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+		</div>
+		<div id="left_bar">
+			<a href="#">맨 위로</a>
+			<br>
+			<br>
+			<!-- 내용 넣는 자리 -->
+		</div>
+		<div class="four-fifths column">
+			<div id="tool">
+				<nav class="menu">
+					<a class="menu-item selected" href="#" onclick="return false">문서</a>
+					<a class="menu-item" href="/edit/{{page}}">수정</a>
+					<a class="menu-item" href="/topic/{{page}}">토론</a>
+					<a class="menu-item" href="/delete/{{page}}">삭제</a>
+					<a class="menu-item" href="/move/{{page}}">이동</a>
+					<a class="menu-item" href="/raw/{{page}}">Raw</a>
+					<a class="menu-item" href="/history/{{page}}">역사</a>
+					<a class="menu-item" href="/xref/{{page}}">역링크</a>
+				</nav>
+			</div>
+			<h1 class="titlee">{{title}}</h1>
+			<h2 class="titlee"><span style="margin-left:5px"></span></h2>
+			<div>
+				<br>
+				{{data}}
+			</div>
+			<hr id="last">
+			<p>{{license}}</p>
+			<div id="powered">
+				<a href="https://github.com/2DU/Ownet"><img src="{{url_for('static', filename='images/on2.png')}}" width="100px"></a>
+			</div>
+		</div>
+	</body>
+</html>

+ 0 - 22
test.py

@@ -1,22 +0,0 @@
-from flask import Flask, render_template
-app = Flask(__name__)
-
-import json
-import pymysql
-
-json_data=open('set.json').read()
-data = json.loads(json_data)
-
-conn = pymysql.connect(host = data['host'], user = data['user'], password = data['pw'], db = data['db'], charset = 'utf8')
-curs = conn.cursor()
-
-@app.route('/')
-def redirect():
-    return '<meta http-equiv="refresh" content="0;url=/w/" />'
-
-@app.route('/w/')
-def w(name=None):
-    return render_template('index.html')
-
-if __name__ == '__main__':
-    app.run()