Skip to content

Instantly share code, notes, and snippets.

@Anas-jaf
Created November 24, 2025 19:42
Show Gist options
  • Select an option

  • Save Anas-jaf/466ac95528460a1e32a8ec705386fabe to your computer and use it in GitHub Desktop.

Select an option

Save Anas-jaf/466ac95528460a1e32a8ec705386fabe to your computer and use it in GitHub Desktop.
class RandomNumberGenerator:
"""A class for generating random numbers with a specified sum and individual ranges.
Example Usage:
```python
total_sum = 18
numbers = [3, 2, 4, 5, 1, 3]
ranges = RandomNumberGenerator.convert_to_ranges(numbers) # ranges = [(0, 3), (0, 3), (0, 5), (0, 5), (0, 2), (0, 2)]
generator = RandomNumberGenerator(total_sum, ranges)
result = generator.generate_numbers_with_sum()
print(result)
```
Attributes:
- total_sum (int): The desired sum of the generated numbers.
- ranges (list): A list of tuples representing the minimum and maximum values for each number.
Methods:
- `generate_numbers(self)`: Generates a list of random numbers based on the specified ranges.
- `check_sum(self, numbers)`: Checks if the sum of the given list of numbers is equal to the specified total_sum.
- `generate_numbers_with_sum(self)`: Generates a set of numbers that satisfy the specified sum and ranges.
Static Methods:
- `convert_to_ranges(numbers)`: Converts a list of numbers into a list of ranges represented as tuples.
Example Usage:
```python
total_sum = 18
numbers = [3, 2, 4, 5, 1, 3]
ranges = RandomNumberGenerator.convert_to_ranges(numbers)
generator = RandomNumberGenerator(total_sum, ranges)
result = generator.generate_numbers_with_sum()
print(result)
```"""
def __init__(self, total_sum, ranges):
self.total_sum = total_sum
self.ranges = ranges
def generate_numbers(self):
numbers = [random.randint(minimum, maximum) for minimum, maximum in self.ranges]
return numbers
def check_sum(self, numbers):
return sum(numbers) == self.total_sum
def generate_numbers_with_sum(self):
for numbers in product(
*(range(minimum, maximum + 1) for minimum, maximum in self.ranges)
):
if self.check_sum(numbers):
return numbers
@staticmethod
def convert_to_ranges(numbers):
ranges = [(1, int(number)) for number in numbers]
return ranges
class InvalidPageRangeError(Exception):
pass
def chunk_dictionary(data_dict, chunk_size):
items = list(data_dict.items())
for i in range(0, len(items), chunk_size):
yield dict(items[i:i + chunk_size])
class TeacherForms:
def __init__(
self,
Name: list[str] = [""]*4,
MinistaryNumber: int = 0,
InterrogateBody: str = "",
TeacherType: str = "",
TeacherRole: str = "",
SchoolName: str = "",
SchoolNationalNumber: str = "",
Directorate: str = "",
Principle: str = "",
NationalNumber: str = "0123456789",
Title: str = "",
Date="",
DateHijry="",
DateMelady="",
Hospital: str = "",
Age: int = 0,
BookNumber: int = 0,
BookDate="",
MobasharaDate="",
MobasharaCause: str = "",
MobasharaJob: str = "",
TemplatePath: str = "",
Date1: str = "",
Date2: str = "",
Reason: str = "",
EmploymentDate: str = "",
Period: str = "",
TeacherPhone: str = "",
Years: str = "",
Qualification: str = "",
Specialization: str = "",
Level: str = "",
Address: str = "",
Gender: int = 1,
Subject: str = "",
Body: str = "",
PrincipleGender: int = 1,
Day1: str = "",
Day2: str = "",
Date3: str = "",
BankBill: int = 0,
LawParagraph: str = "",
Relevance: str = "",
Days: str = "",
Penalty: str = "",
output: str = "./send_folder/",
):
self.Name = " ".join(Name)
self.MinistaryNumber = MinistaryNumber
self.interogate_body = InterrogateBody
self.TeacherType = TeacherType
self.TeacherRole = TeacherRole
self.SchoolName = SchoolName
self.SchoolNationalNumber = SchoolNationalNumber
self.Directorate = Directorate
self.Principle = Principle
self.Hospital = Hospital
self.age = Age
self.BookNumber = BookNumber
self.BookDate = BookDate
self.MobasharaDate = MobasharaDate
self.MobasharaCause = MobasharaCause
self.MobasharaJob = MobasharaJob
self.Date1 = Date1
self.Date2 = Date2
self.Reason = Reason
self.Period = Period
self.TeacherPhone = TeacherPhone
self.Years = Years
self.Qualification = Qualification
self.Specialization = Specialization
self.EmploymentDate = EmploymentDate
self.Level = Level
self.Address = Address
self.Gender = Gender
self.Subject = Subject
self.Body = Body
self.PrincipleGender = PrincipleGender
self.Day1 = Day1
self.Day2 = Day2
self.Date3 = Date3
self.BankBill = BankBill
self.LawParagraph = LawParagraph
self.Relevance = Relevance
self.Days = Days
self.Penalty = Penalty
if not len(Date):
from datetime import date
from hijri_converter import Hijri
current_date = date.today().strftime("%Y/%m/%d")
self.Date, self.DateMelady = current_date, current_date
self.DateHijry = Hijri.today().dmyformat()
else:
self.Date = Date
self.DateHijry = (DateHijry,)
self.DateMelady = (DateMelady,)
self.NationalNumber = NationalNumber
self.Title = Title
self.output = output
self.TemplatePath = TemplatePath
def fill_word_document(self, FileName):
if self.Gender == 1:
clearance = "بريء"
else:
clearance = "بريئة"
if self.PrincipleGender == 1:
PrincipleGender = ""
else:
PrincipleGender = "ة"
context = {
"الاسم": self.Name,
"اسم": self.Name,
"رقم_وزاري": self.MinistaryNumber,
"وزاري": self.MinistaryNumber,
"الاستفسار": self.interogate_body,
"الفئه": self.TeacherType,
"وظيفة": self.TeacherRole,
"مدرسة": self.SchoolName,
"رقم_وطني": self.SchoolNationalNumber,
"مديرية": self.Directorate,
"مدير": self.Principle,
"تاريخ": self.Date,
"رقم_وطني_للمعلم": self.NationalNumber,
"وطني": self.NationalNumber,
"هجري": self.DateHijry,
"ميلادي": self.DateMelady,
"nat1": self.NationalNumber[0],
"nat2": self.NationalNumber[1],
"nat3": self.NationalNumber[2],
"nat4": self.NationalNumber[3],
"nat5": self.NationalNumber[4],
"nat6": self.NationalNumber[5],
"nat7": self.NationalNumber[6],
"nat8": self.NationalNumber[7],
"nat9": self.NationalNumber[8],
"nat10": self.NationalNumber[9],
"مركز": self.Hospital,
"رقم_الكتاب": self.BookNumber,
"تاريخ1": self.BookDate,
"تاريخ2": self.MobasharaDate,
"مدة": self.Period,
"تعيين": self.EmploymentDate,
"هاتف": self.TeacherPhone,
"سنوات": self.Years,
"مؤهل1": self.Qualification,
"تخصص1": self.Specialization,
"تاريخ1": self.Date1,
"تاريخ2": self.Date2,
"تاريخ3": self.Date3,
"سبب": self.Reason,
"مسمى": self.Title,
"درجة": self.Level,
"عنوان": self.Address,
"بريء": clearance,
"موضوع": self.Subject,
"نص": self.Body,
"ة": PrincipleGender,
"مة": PrincipleGender,
"مؤهل": self.Qualification,
"تخصص": self.Specialization,
"يوم1": self.Day1,
"يوم2": self.Day2,
"إيصال_البنك": self.BankBill,
"فئة": self.TeacherType,
"فقرة": self.LawParagraph,
"قرابة": self.Relevance,
"ايام": self.Days,
"عقوبة": self.Penalty,
}
fill_doc(self.TemplatePath, context, self.output + FileName + ".docx")
def Interrogation(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/Estegwab.docx"
)
self.fill_word_document("استجواب")
def MedicalForm80(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/form80.docx"
)
self.fill_word_document("نموذج طبي-معلم")
def WorkResumption(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/mobashrat amal.docx.docx"
self.fill_word_document("مباشرة عمل")
def WorkClearance(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/Enfekak.docx"
)
self.fill_word_document("انفكاك")
def UnpaidLeaveRequest(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/talab ejazah bedoon rateb.docx"
self.fill_word_document("اجازة بدون راتب")
def ClearanceCertificate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/braat demah.docx"
)
self.fill_word_document("براءة ذمة")
def CoverLetterTemplate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/cover book.docx"
)
self.fill_word_document("كتاب تغطية")
def SubTeachingClaim(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/motalabat edafi.docx"
self.fill_word_document("مطالبة اضافي")
def TeacherVerification(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/teacher ethbat.docx"
self.fill_word_document("اثبات معلم")
def CasualLeave(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/Ejazah aradeiah.docx"
self.fill_word_document("اجازة عرضية")
def UnpaidLeave(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/Ejazah bedoon rateb.docx"
self.fill_word_document("اجازة بدون راتب")
def Casual_BereavementLeave(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/Ejazah wafah.docx"
self.fill_word_document("اجازة وفاة")
def BreastfeedingHour(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/saat redaah.docx"
)
self.fill_word_document("ساعة رضاعة")
def AnnualLeaveRequest(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/talab ejazah sanawiah.docx"
self.fill_word_document("اجازة سنوية")
def PaternityLeave(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/Ejazet Ebowah.docx"
self.fill_word_document("اجازة ابوه")
def SickLeave(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/Ejazah maradiah.docx"
self.fill_word_document("اجازة مرضية")
def LeaveRequest(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/moqadarah.docx"
)
self.fill_word_document("نموذج مغادرة")
def Warning_Penalty(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Tforms/endar tanbeeh.docx"
self.fill_word_document("انذار او تنبيه")
def Non_paymentNotice(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/adam saref.docx"
)
self.fill_word_document("عدم صرف")
class StudentForms:
def __init__(
self,
Name: list[str] = ["", "", "", ""],
NationalNumber: str = "",
SchoolNat3="",
SchoolNat2="",
SchoolNat1="",
Directory1="",
Directory2="",
School1: str = "",
School2: str = "",
Nationality: str = "",
BirthPlace: str = "",
relegion: str = "",
StudentGender: int = 1,
BirthDate="",
Work: str = "",
Address: str = "",
PhoneNumber="",
Grade: str = "",
ClassName: str = "",
Year="",
Absent="",
ValidAbsence="",
NotValidAbsence="",
Principle="",
Date="",
DateHijry="",
DateMelady="",
Behave: str = "",
Semester: str = "",
Hospital: str = "",
Age: str = "",
Result: str = "",
TemplatePath: str = "",
output: str = "./send_folder/",
):
self.Name = " ".join(Name)
self.NameList = Name
self.SchoolNat3 = SchoolNat3
self.SchoolNat2 = SchoolNat2
self.SchoolNat1 = SchoolNat1
self.Directory1 = Directory1
self.Directory2 = Directory2
self.School1 = School1
self.School2 = School2
self.StudentGender = StudentGender
self.Nationality = Nationality
self.BirthPlace = BirthPlace
self.BirthDate = BirthDate
self.relegion = relegion
self.Work = Work
self.Address = Address
self.PhoneNumber = PhoneNumber
self.Grade = Grade
self.ClassName = ClassName
self.Year = Year
self.Absent = Absent
self.ValidAbsence = ValidAbsence
self.NotValidAbsence = NotValidAbsence
self.Principle = Principle
self.Hospital = Hospital
self.Age = Age
self.Result = Result
if not len(Date):
from datetime import date
from hijri_converter import Hijri
current_date = date.today().strftime("%d/%m/%Y")
self.Date, self.DateMelady = current_date, current_date
self.DateHijry = Hijri.today().dmyformat()
else:
self.Date = Date
self.DateHijry = (DateHijry,)
self.DateMelady = (DateMelady,)
if len(str(NationalNumber)) == 0:
self.NationalNumber = [""] * 10
else:
self.NationalNumber = str(NationalNumber)
self.Behave = Behave
self.Semester = Semester
self.output = output
self.TemplatePath = TemplatePath
def fill_word_document(self, FileName):
if self.StudentGender == 1:
gender1, gender2, gender3, gender4, gender5, gender6 = (
"",
"",
"",
"",
"ين",
"طلبة",
)
else:
gender1, gender2, gender3, gender4, gender5, gender6 = (
"ة",
"ت",
"ا",
"ى",
"ات",
"طالبات",
)
context = {
"الاسم": self.Name,
"و3": self.SchoolNat3,
"و2": self.SchoolNat2,
"و1": self.SchoolNat1,
"هجري": self.DateHijry,
"ميلادي": self.DateMelady,
"مديرية": self.Directory1,
"مديرية2": self.Directory2,
"مدرسة": self.School1,
"مدرسة2": self.School2,
"ة": gender1,
"اسم": self.NameList[0],
"اب": self.NameList[1],
"جد": self.NameList[2],
"عائلة": self.NameList[3],
"جنسية": self.Nationality,
"مكان_الولادة": self.BirthPlace,
"تاريخ_الولادة": self.BirthDate,
"ديانة": self.relegion,
"عمل": self.Work,
"عنوان": self.Address,
"هاتف": self.PhoneNumber,
"صف": self.Grade,
"شعبة": self.ClassName,
"سنة": self.Year,
"ت": gender2,
"ا": gender3,
"ى": gender4,
"ين": gender5,
"طلبة": gender6,
"غياب": self.Absent,
"م": self.ValidAbsence,
"غم": self.NotValidAbsence,
"مدير": self.Principle,
"فصل": self.Semester,
"سلوك": self.Behave,
"مركز": self.Hospital,
"تاريخ": self.Date,
"ميلادي": self.Date,
"عمر": self.Age,
"نتيجة": self.Result,
"وزاري": "",
"وظيفة": "طالب",
"nat1": self.NationalNumber[9],
"nat2": self.NationalNumber[8],
"nat3": self.NationalNumber[7],
"nat4": self.NationalNumber[6],
"nat5": self.NationalNumber[5],
"nat6": self.NationalNumber[4],
"nat7": self.NationalNumber[3],
"nat8": self.NationalNumber[2],
"nat9": self.NationalNumber[1],
"nat10": self.NationalNumber[0],
}
fill_doc(self.TemplatePath, context, self.output + FileName + ".docx")
def StudentTransferCertificate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Sforms/trans lic.docx"
)
self.fill_word_document("شهادة انتقال طالب")
def OpenTransferredStudentsRecord(self):
pass
def ClassTransferCertificates(self):
pass
def AdmissionForm(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Sforms/st receve.docx"
)
self.fill_word_document("نموذج اثبات طالب")
def CurrentStudentVerification(self):
if not len(self.TemplatePath):
self.TemplatePath = "./templet_files/plusForms23-24 updated_version/Sforms/current st ethbat.docx"
self.fill_word_document("اثبات طالب حالي")
def BehaviorCertificate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Sforms/solooc lic.docx"
)
self.fill_word_document("شهادة سلوك")
def SecondarySchoolYearCertificate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Sforms/thanawi y2.docx"
)
self.Semester = 2
self.fill_word_document("شهادة ثانوي سنة")
def FormerStudentVerification(self):
pass
def FirstYearSecondarySchoolCertificate(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Sforms/thanawi y1.docx"
)
self.Semester = 1
self.fill_word_document("شهادة ثانوي سنة اولى")
def PrimarySchoolCertificate(self):
pass
def MedicalForm(self):
if not len(self.TemplatePath):
self.TemplatePath = (
"./templet_files/plusForms23-24 updated_version/Tforms/form80-2.docx"
)
self.fill_word_document("نموذج طبي-طالب")
class PrivateSchoolForms:
def MonthlyDammanList(self):
pass
def SchoolFormations(self):
pass
def AppointmentofJordanianTeachers(self):
pass
def AppointmentofJordanianKindergartenTeachers(self):
pass
def FirstGradeStudentLists(self):
pass
def AnnualGuaranteeList(self):
pass
def KindergartenFormations(self):
pass
def AppointmentofNon_JordanianTeachers(self):
pass
def AppointmentofNon_JordanianKindergartenTeachers(self):
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment