File size: 5,874 Bytes
84a60a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
from flask import Flask, render_template_string, request, send_file
from docx import Document
from docx.shared import Pt, Cm
from docx.oxml import OxmlElement, ns
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
import io

app = Flask(__name__)

HTML = """
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>إنشاء جدول DOCX</title>
<style>
body { font-family: Arial, sans-serif; text-align: right; padding: 20px; }
input, select { width: 100%; margin: 5px 0; padding: 5px; }
button { padding: 10px 20px; font-size: 16px; }
</style>
</head>
<body>
<h2>إنشاء جدول DOCX ديناميكي</h2>
<form method="POST">
    <label>القسم:</label>
    <input type="text" name="classe" required>
    <label>المادة:</label>
    <input type="text" name="matiere" required>
    <label>المعايير (افصل بين كل معيار بفاصلة):</label>
    <input type="text" name="criteria" placeholder="مع1, مع2, مع3..." required>
    <label>اختر مجموعة التلاميذ:</label>
    <select name="group_choice" required>
        <option value="1">المجموعة السابقة</option>
        <option value="2">المجموعة الجديدة</option>
    </select>
    <button type="submit">إنشاء الملف</button>
</form>
</body>
</html>
"""

group_old = [
"أمنه عبد اللطيف","أروى يقين طنيش","اسامه بنضو","أنس الخطيب","إسراء بنمفتاح",
"اياد بوحريه","إياد منصور عمار","المختار عبد الواحد","بادیس دقنيش","جاهد السياري",
"رنيم العزلوك","ريتاج الطالب","رحمة الونيسي","زينب طنيش","زينب عبد الواحد",
"سلمان الشبلي","فادي القلعاوي","الجين الزردابي","ليان الطالبي","مؤمن بنمبارك",
"محمد أمير الحمدي","محمد الطاهر مشيري","محمد زكرياء حلاوط","مريم الذكار",
"ملاك عبد اللطيف","منال بوحربه","هديل بن حامد","ياسمين الحاجي","ياسمين المستيسر",
"ياسين جويد","يقين بوروحه","يوسف الشيباني","يوسف بن يحي","يونس بوصفة"
]

group_new = [
"احلام الغليظ","أحمد التايب","أحمد الحمزي","أيمن حلموس","إدريس القرسان",
"إسراء المرزوقي","باديس سكيب","بتول الفيتوري","تسنيم الطالب","خليل الشلاخ",
"رضوان عبدالستار","رمزي المقدميني","رنیم خلفه","رنیم عازق","رياض لهول",
"سيرين العربي","شيماء المورو","عبد الرحمان الوذان","عبد الرحمان بومروة",
"الجين زهمول","محمد الطاهر بوطالب","محمد جاسم العطوي","محمد ياسين الجليدي",
"مريم الذكار","مريم حسين","میار حسن","ميس بنصميده","ميار دباغي",
"نزار عکار","نضال ابن غنيه","نادين مراحي","همام الغرياني","أميمة ذكار"
]

@app.route("/", methods=["GET","POST"])
def index():
    if request.method == "POST":
        classe = request.form.get("classe")
        matiere = request.form.get("matiere")
        criteria_input = request.form.get("criteria", "")
        criteria = [c.strip() for c in criteria_input.split(",") if c.strip()]
        if not criteria:
            criteria = ["مع 1", "مع 2", "مع 3"]
        group_choice = request.form.get("group_choice")
        names = group_new if group_choice=="2" else group_old
        doc = Document()
        title = doc.add_heading(f"جداول إسناد إعداد {matiere}", level=0)
        title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        subtitle = doc.add_paragraph(f"القسم: {classe}    -    مدرسة الحبيب بورقيبة تطاوين")
        subtitle.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        subtitle.runs[0].font.size = Pt(14)
        doc.add_paragraph("\n")
        cols = 1 + len(criteria)
        table = doc.add_table(rows=1, cols=cols)
        table.style = "Table Grid"
        table.alignment = 2
        tbl = table._tbl
        tblPr = tbl.find(ns.qn('w:tblPr'))
        if tblPr is None:
            tblPr = OxmlElement('w:tblPr')
            tbl.insert(0, tblPr)
        bidi = tblPr.find(ns.qn('w:bidiVisual'))
        if bidi is None:
            bidi = OxmlElement('w:bidiVisual')
            tblPr.append(bidi)
        hdr = table.rows[0].cells
        hdr[0].text = "الاسم"
        hdr[0].paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        hdr[0].paragraphs[0].runs[0].font.size = Pt(12)
        for i, c in enumerate(criteria):
            hdr[i+1].text = c
            hdr[i+1].paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
            hdr[i+1].paragraphs[0].runs[0].font.size = Pt(12)
        for name in names:
            row = table.add_row().cells
            row[0].text = name
            row[0].paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
            row[0].paragraphs[0].runs[0].font.size = Pt(11)
            for j in range(len(criteria)):
                row[j+1].text = ""
                row[j+1].paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                row[j+1].paragraphs[0].runs[0].font.size = Pt(11)
        for col in table.columns:
            for cell in col.cells:
                cell.width = Cm(3)
        f = io.BytesIO()
        doc.save(f)
        f.seek(0)
        return send_file(f, as_attachment=True, download_name="table_RTL_web.docx",
                         mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document")
    return render_template_string(HTML)

if __name__ == "__main__":
    app.run(debug=True)