جدول المحتويات
دراسة توزيع الملفات
الاستخدامات المرجوة
- كتطبيق تقليدي مجلد واحد قابل للكتابة من قبل المستخدم
- في لينكس يكود داخل البيت
- في ويندوز يكون داخل MyDocuments
- السماح للمستخدم بإضافة أي عدد من مجلدات للقراءة فقط إلى جانب ما يلي
- في لينكس /usr/share/thawab/db و /usr/local/thawab/db
- في ويندوز X:/thawab/db حيث X هي C فما فوق
- عند استخدام قرص DVD أو CD فإن مجلد db المجاور للملف التنفيذي هو مجلد للقراءة فقط يحتوي على الكتب
- عند استخدام ذاكرة فلاش فإن المجلد السابق يكون قابل للكتابة أيضا ويكون أفضل من استخدام MyDocuments
os.access('/usr/share/thawab/', os.W_OK)
حصر المجلدات
- مجلد للتخزين المؤقت (يمكن أن نترك تحديده للنظام)
- قائمة لمجلدات للقراءة فقط تحتوي كتب (الكتب الخاصة بالنظام أو الكتب التي تكون على قرص مدمج)
- مجلد خاص بالمستخدم يسمح له الكتابة فيه يحتوي الكتب التي يثبتها ويزيلها أو يحررها ..إلخ
- مجلد خاص بالمستخدم يسمح له الكتابة فيه يحتوي الميتا
- مجلد خاص بالمستخدم يسمح له الكتابة فيه يحتوي فهارس البحث
فهارس للقراءة فقط
كود من أجل ويندوز
الكود التالي يستخرج مكان ال application data و my documents
import winshell winshell.application_data() winshell.my_documents()
الكود التالي يستخرج مكان ال mydocuments
from win32com.shell import shell df = shell.SHGetDesktopFolder() pidl = df.ParseDisplayName(0, None, "::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1] mydocs = shell.SHGetPathFromIDList(pidl)
كلاهما يحتاجان python win32 extension والتي حجمها حوالي 6 ميغا
وهناك طريقة لا تحتاج اعتماديات وهي دالة get_appdata من winpaths
أما لمعرفة الأقراص يمكننا عمل
drives=filter(lambda j: os.path.exists(j), [chr(i)+':\\' for i in range(67,91)])
للمزيد
لينكس وويندوز
في نظام لينكس يعتبر المجلد ~/.thawab
وفي نظام ويندوز يتم استخدام local appdata
وهو في الحالتين مجلد خاص بالمستخدم لحفظ بيانات البرامج وإعداداتها
قرص مدمج يحتوي المكتبة والفهارس
في هذه الحالة يكون لدينا مكتبة للقراءة فقط توفر تصفح وبحث سريع دون أن تشغل أي شيء على القرص الصلب.
دراسة طرق التنفيذ
إذن اختصار الطريقة:
- أولا: يتم فحص المجلد الذي يحتوي الملف التنفيذي:
- ثانيا: يتم إضافة كل المجلدات التالية:
- في لينكس /usr/local/thawab/db ثم /usr/share/thawab/db
- في ويندوز X:/thawab/db حيث X هي C فما فوق
- ثالثا: يتم اختبار قابلية كل ما سبق للكتابة واحتواؤه على ملف اسمه .THAWAB.PREFIX بالترتيب
فإن كان قابلا للكتابة ووجد ملف اسمه .THAWAB.PREFIX يتم تقديمه على أنه السابقة المطلوبة (مثلا افتراض أننا في فلاش) وإلا نستخدم .thawab داخل البيت أو ثواب داخل MyDocuments كسابقة قابلة للكتابة (دون أن تحتويا .THAWAB.PREFIX ودون فحص قابلية الكتابة)