Просмотр исходного кода

최근 편집 요청 기능 임시 추가

https://github.com/openNAMU/openNAMU/issues/2064
잉여개발기 2 лет назад
Родитель
Сommit
d1b6e0abea

+ 6 - 1
app.py

@@ -489,6 +489,8 @@ app.route('/recent_change', defaults = { 'tool' : 'recent' })(recent_change)
 app.route('/recent_changes', defaults = { 'tool' : 'recent' })(recent_change)
 app.route('/recent_change/<int:num>/<set_type>', defaults = { 'tool' : 'recent' })(recent_change)
 
+app.route('/recent_edit_request', defaults = { 'db_set' : db_set_str })(recent_edit_request)
+
 app.route('/record/<name>', defaults = { 'tool' : 'record' })(recent_change)
 app.route('/record/<int:num>/<set_type>/<name>', defaults = { 'tool' : 'record' })(recent_change)
 
@@ -700,12 +702,15 @@ app.route('/api/search_page/<int:num>/<everything:name>', defaults = { 'db_set'
 app.route('/api/search_data/<everything:name>', defaults = { 'search_type' : 'data', 'db_set' : db_set_str })(api_search)
 app.route('/api/search_data_page/<int:num>/<everything:name>', defaults = { 'search_type' : 'data', 'db_set' : db_set_str })(api_search)
 
-# 곧 개편 당할 곳
 app.route('/api/recent_change', defaults = { 'db_set' : db_set_str })(api_recent_change)
 app.route('/api/recent_changes', defaults = { 'db_set' : db_set_str })(api_recent_change)
 app.route('/api/recent_change/<int:limit>', defaults = { 'db_set' : db_set_str })(api_recent_change)
 app.route('/api/recent_change/<int:limit>/<set_type>/<int:num>', defaults = { 'db_set' : db_set_str })(api_recent_change)
 
+app.route('/api/recent_edit_request', defaults = { 'db_set' : db_set_str })(api_recent_edit_request)
+app.route('/api/recent_edit_request/<int:limit>/<set_type>/<int:num>', defaults = { 'db_set' : db_set_str })(api_recent_edit_request)
+
+# 곧 개편 당할 곳
 app.route('/api/recent_discuss/<get_type>/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss')(api_recent_discuss)

+ 2 - 0
route/__init__.py

@@ -106,6 +106,7 @@ from route.recent_app_submit import recent_app_submit_2
 
 from route.recent_block import recent_block
 from route.recent_change import recent_change
+from route.recent_edit_request import recent_edit_request
 from route.recent_discuss import recent_discuss
 from route.recent_history_add import recent_history_add
 from route.recent_history_delete import recent_history_delete
@@ -173,6 +174,7 @@ from route.go_api_func_ip import api_func_ip
 from route.go_api_search import api_search
 
 from route.go_api_recent_change import api_recent_change
+from route.go_api_recent_edit_request import api_recent_edit_request
 
 from route.go_api_topic import api_topic
 

+ 1 - 1
route/edit.py

@@ -223,7 +223,7 @@ def edit(name = 'Test', section = 0, do_type = ''):
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_date', ?)"), [name, doc_ver, today])
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_send', ?)"), [name, doc_ver, send])
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_leng', ?)"), [name, doc_ver, leng])
-                curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_doing', '1')"), [name, doc_ver])
+                curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_doing', ?)"), [name, doc_ver, today])
 
                 curs.execute(db_change("select id from user_set where name = 'watchlist' and data = ?"), [name])
                 for scan_user in curs.fetchall():

+ 25 - 0
route/go_api_recent_edit_request.py

@@ -0,0 +1,25 @@
+from .tool.func import *
+
+def api_recent_edit_request(db_set, num = 1, set_type = 'normal', limit = 50):
+    with get_db_connect() as conn:
+        other_set = {}
+        other_set["num"] = str(num)
+        other_set["limit"] = str(limit)
+        other_set["set_type"] = set_type
+        other_set["ip"] = ip_check()
+        other_set = json.dumps(other_set)
+
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+
+        data = data.decode('utf8')
+
+        return flask.Response(response = data, status = 200, mimetype = 'application/json')

+ 1 - 1
route/recent_change.py

@@ -224,7 +224,7 @@ def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                     '<hr class="main_hr">' + div + \
                 ''
 
-                menu = [['other', load_lang('return')]]
+                menu = [['other', load_lang('return')], ['recent_edit_request', load_lang('edit_request')]]
                 title = load_lang('recent_change')
 
                 if all_admin == 1:

+ 56 - 0
route/recent_edit_request.py

@@ -0,0 +1,56 @@
+from .tool.func import *
+
+from .recent_change import recent_change_send_render
+
+from .go_api_recent_edit_request import api_recent_edit_request
+
+def recent_edit_request(db_set):
+    with get_db_connect() as conn:
+        div = ''
+        div += '''
+            <table id="main_table_set">
+                <tbody>
+                    <tr id="main_table_top_tr">
+                        <td id="main_table_width">''' + load_lang('discussion_name') + '''</td>
+                        <td id="main_table_width">''' + load_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + load_lang('time') + '''</td>
+                    </tr>
+        '''
+
+        all_list = json.loads(api_recent_edit_request(db_set).data)
+        for data in all_list:
+            if re.search(r"\+", data[5]):
+                leng = '<span style="color:green;">(' + data[5] + ')</span>'
+            elif re.search(r"\-", data[5]):
+                leng = '<span style="color:red;">(' + data[5] + ')</span>'
+            else:
+                leng = '<span style="color:gray;">(' + data[5] + ')</span>'
+
+            send = data[4]
+            ip = data[6]
+            date = data[2]
+
+            title = '<a href="/edit_request/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a> '
+            title += '<a href="/history/' + url_pas(data[0]) + '">(r' + data[1] + ')</a> '
+
+            div += '''
+                <tr>
+                    <td>''' + title + ' ' + leng + '''</td>
+                    <td>''' + ip + '''</td>
+                    <td>''' + date + '''</td>
+                </tr>
+                <tr>
+                    <td colspan="3">''' + recent_change_send_render(html.escape(send)) + '''</td>
+                </tr>
+            '''
+
+        div += '' + \
+                '</tbody>' + \
+            '</table>' + \
+        ''
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = [load_lang('recent_edit_request'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+            data = div,
+            menu = [['recent_change', load_lang('return')]]
+        ))

+ 1 - 1
route/topic.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-from .go_api_topic import api_topic, api_topic_thread_pre_render
+from .go_api_topic import api_topic_thread_pre_render
 
 from .edit import edit_editor
 

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 4 - 0
route_go/linux_amd64.sh

@@ -1,21 +1,25 @@
 echo "file_name : "
 read file_name
 
+echo "linux amd64"
 export GOOS=linux
 export GOARCH=amd64
 CGO_ENABLED=0 go build $file_name.go
 mv $file_name ./bin/$file_name.amd64.bin
 
+echo "linux arm64"
 export GOOS=linux
 export GOARCH=arm64
 CGO_ENABLED=0 go build $file_name.go
 mv $file_name ./bin/$file_name.arm64.bin
 
+echo "windows amd64"
 export GOOS=windows
 export GOARCH=amd64
 CGO_ENABLED=0 go build $file_name.go
 mv $file_name.exe ./bin/$file_name.amd64.exe
 
+echo "windows arm64"
 export GOOS=windows
 export GOARCH=arm64
 CGO_ENABLED=0 go build $file_name.go

+ 2 - 0
route_go/main.go

@@ -24,5 +24,7 @@ func main() {
 		route.Api_func_ip(call_arg[1:])
 	} else if call_arg[0] == "api_recent_change" {
 		route.Api_recent_change(call_arg[1:])
+	} else if call_arg[0] == "api_recent_edit_request" {
+		route.Api_recent_edit_request(call_arg[1:])
 	}
 }

+ 6 - 2
route_go/route/api_recent_change.go

@@ -103,6 +103,10 @@ func Api_recent_change(call_arg []string) {
 		}
 	}
 
-	json_data, _ := json.Marshal(data_list)
-	fmt.Print(string(json_data))
+	if len(data_list) == 0 {
+		fmt.Print("{}")
+	} else {
+		json_data, _ := json.Marshal(data_list)
+		fmt.Print(string(json_data))
+	}
 }

+ 122 - 0
route_go/route/api_recent_edit_request.go

@@ -0,0 +1,122 @@
+package route
+
+import (
+	"database/sql"
+	"encoding/json"
+	"fmt"
+	"opennamu/route/tool"
+	"strconv"
+)
+
+func Api_recent_edit_request(call_arg []string) {
+	db_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &db_set)
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[1]), &other_set)
+
+	db := tool.DB_connect(db_set)
+	if db == nil {
+		return
+	}
+	defer db.Close()
+
+	limit_int, err := strconv.Atoi(other_set["limit"])
+	if err != nil {
+		return
+	}
+
+	if limit_int > 50 || limit_int < 0 {
+		limit_int = 50
+	}
+
+	stmt, err := db.Prepare(tool.DB_change(db_set, "select doc_name, doc_rev, set_data from data_set where set_name = 'edit_request_doing' order by set_data desc limit ?"))
+	if err != nil {
+		return
+	}
+	defer stmt.Close()
+
+	rows, err := stmt.Query(limit_int)
+	if err != nil {
+		return
+	}
+	defer rows.Close()
+
+	var doc_name string
+	var doc_rev string
+	var date string
+
+	var data_list [][]string
+	for rows.Next() {
+		err := rows.Scan(&doc_name, &doc_rev, &date)
+		if err != nil {
+			return
+		}
+
+		var ip string
+		var send string
+		var leng string
+
+		stmt, err := db.Prepare(tool.DB_change(db_set, "select set_data from data_set where set_name = 'edit_request_user' and doc_rev = ? and doc_name = ?"))
+		if err != nil {
+			return
+		}
+		defer stmt.Close()
+
+		err = stmt.QueryRow(doc_rev, doc_name).Scan(&ip)
+		if err != nil {
+			if err == sql.ErrNoRows {
+				ip = ""
+			} else {
+				return
+			}
+		}
+
+		stmt, err = db.Prepare(tool.DB_change(db_set, "select set_data from data_set where set_name = 'edit_request_send' and doc_rev = ? and doc_name = ?"))
+		if err != nil {
+			return
+		}
+		defer stmt.Close()
+
+		err = stmt.QueryRow(doc_rev, doc_name).Scan(&send)
+		if err != nil {
+			if err == sql.ErrNoRows {
+				send = ""
+			} else {
+				return
+			}
+		}
+
+		stmt, err = db.Prepare(tool.DB_change(db_set, "select set_data from data_set where set_name = 'edit_request_leng' and doc_rev = ? and doc_name = ?"))
+		if err != nil {
+			return
+		}
+		defer stmt.Close()
+
+		err = stmt.QueryRow(doc_rev, doc_name).Scan(&leng)
+		if err != nil {
+			if err == sql.ErrNoRows {
+				leng = ""
+			} else {
+				return
+			}
+		}
+
+		data_list = append(data_list, []string{
+			doc_name,
+			doc_rev,
+			date,
+			tool.IP_preprocess(db, db_set, ip, other_set["ip"])[0],
+			send,
+			leng,
+			tool.IP_parser(db, db_set, ip, other_set["ip"]),
+		})
+	}
+
+	if len(data_list) == 0 {
+		fmt.Print("{}")
+	} else {
+		json_data, _ := json.Marshal(data_list)
+		fmt.Print(string(json_data))
+	}
+}

+ 5 - 1
route_go/windows_amd64.ps1

@@ -1,5 +1,6 @@
-$file_name = Read-Host "file_name : "
+$file_name = Read-Host "file_name "
 
+Write-Host "linux amd64"
 $env:GOOS = "linux"
 $env:GOARCH = "amd64"
 $env:CGO_ENABLED = 0
@@ -7,6 +8,7 @@ go build $file_name.go
 Remove-Item ".\bin\$file_name.amd64.bin"
 Move-Item "opennamu" ".\bin\$file_name.amd64.bin"
 
+Write-Host "linux arm64"
 $env:GOOS = "linux"
 $env:GOARCH = "arm64"
 $env:CGO_ENABLED = 0
@@ -14,6 +16,7 @@ go build $file_name.go
 Remove-Item ".\bin\$file_name.arm64.bin"
 Move-Item "opennamu" ".\bin\$file_name.arm64.bin"
 
+Write-Host "windows amd64"
 $env:GOOS = "windows"
 $env:GOARCH = "amd64"
 $env:CGO_ENABLED = 0
@@ -21,6 +24,7 @@ go build $file_name.go
 Remove-Item ".\bin\$file_name.amd64.exe"
 Move-Item "opennamu.exe" ".\bin\$file_name.amd64.exe"
 
+Write-Host "windows arm64"
 $env:GOOS = "windows"
 $env:GOARCH = "arm64"
 $env:CGO_ENABLED = 0

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev30",
+        "r_ver" : "v3.5.0-dev31",
         "c_ver" : "3500376",
         "s_ver" : "3500113"
     }