Created
November 24, 2025 19:42
-
-
Save Anas-jaf/466ac95528460a1e32a8ec705386fabe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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