Pmuscat41 commited on
Commit
dabc084
·
verified ·
1 Parent(s): 0876876

Update app.py

Browse files

rewrite to add Hijry days/ months, not gregorian

Files changed (1) hide show
  1. app.py +155 -85
app.py CHANGED
@@ -8,11 +8,45 @@ from dateutil.relativedelta import relativedelta
8
  st.sidebar.title("Navigation")
9
  option = st.sidebar.radio(
10
  "Choose an option",
11
- ("Three Month Deadline Converter", "60 Days Deadline Converter", "90 Days Deadline Converter",
12
- "Convert Hijri Date to Gregorian Date", "Add 20 Years to Filing Date", "Add 15 Years to Filing Date",
13
- "Add 10 Years to Filing Date")
 
 
 
 
 
 
14
  )
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  # Function to calculate three month deadlines
17
  def three_month_deadlines():
18
  st.title("Three Month Deadline Converter")
@@ -20,44 +54,48 @@ def three_month_deadlines():
20
  date_data = []
21
 
22
  if start_date:
23
- # Original Gregorian date
24
  gregorian_date = Gregorian(start_date.year, start_date.month, start_date.day)
25
-
26
- # Convert to Hijri for display
27
  hijri_start_date = gregorian_date.to_hijri()
28
-
29
- # Calculate deadline by adding 3 months to Gregorian date
30
- deadline_gregorian = start_date + relativedelta(months=3)
31
-
32
- # Convert deadline to Hijri
33
- deadline_hijri = Gregorian(deadline_gregorian.year, deadline_gregorian.month, deadline_gregorian.day).to_hijri()
34
-
35
- # Add to date_data list
36
- date_data.append({
37
- "Description": "Chosen Start Date",
38
- "Hijri Date": hijri_start_date.isoformat(),
39
- "Gregorian Date": gregorian_date.isoformat()
40
- })
41
- date_data.append({
42
- "Description": "Deadline - three months from start date",
43
- "Hijri Date": deadline_hijri.isoformat(),
44
- "Gregorian Date": deadline_gregorian.isoformat()
45
- })
 
 
 
 
46
 
47
  # Function to add months and store results
48
- def add_months_and_store_from_deadline(deadline_gregorian, months):
49
  for i in range(1, months + 1):
50
- future_gregorian = deadline_gregorian + relativedelta(months=i)
51
- future_hijri = Gregorian(future_gregorian.year, future_gregorian.month, future_gregorian.day).to_hijri()
52
-
53
- description = f"{i} month extension from deadline"
54
- date_data.append({
55
- "Description": description,
56
- "Hijri Date": future_hijri.isoformat(),
57
- "Gregorian Date": future_gregorian.isoformat()
58
- })
59
-
60
- add_months_and_store_from_deadline(deadline_gregorian, 3)
 
 
61
  df = pd.DataFrame(date_data)
62
  st.write("### Date Conversion Table")
63
  st.dataframe(df)
@@ -69,21 +107,30 @@ def sixty_days_deadlines():
69
  date_data = []
70
 
71
  if start_date:
72
- gregorian_date = start_date
73
- hijri_date = Gregorian(gregorian_date.year, gregorian_date.month, gregorian_date.day).to_hijri()
74
- date_data.append({
75
- "Description": "Chosen Start Date",
76
- "Hijri Date": hijri_date.isoformat(),
77
- "Gregorian Date": gregorian_date.isoformat()
78
- })
79
-
80
- deadline_gregorian_date = gregorian_date + relativedelta(days=60)
81
- deadline_hijri_date = Gregorian(deadline_gregorian_date.year, deadline_gregorian_date.month, deadline_gregorian_date.day).to_hijri()
82
- date_data.append({
83
- "Description": "Deadline - 60 days from start date",
84
- "Hijri Date": deadline_hijri_date.isoformat(),
85
- "Gregorian Date": deadline_gregorian_date.isoformat()
86
- })
 
 
 
 
 
 
 
 
 
87
 
88
  df = pd.DataFrame(date_data)
89
  st.write("### Date Conversion Table")
@@ -96,21 +143,30 @@ def ninety_days_deadlines():
96
  date_data = []
97
 
98
  if start_date:
99
- gregorian_date = start_date
100
- hijri_date = Gregorian(gregorian_date.year, gregorian_date.month, gregorian_date.day).to_hijri()
101
- date_data.append({
102
- "Description": "Chosen Start Date",
103
- "Hijri Date": hijri_date.isoformat(),
104
- "Gregorian Date": gregorian_date.isoformat()
105
- })
106
-
107
- deadline_gregorian_date = gregorian_date + relativedelta(days=90)
108
- deadline_hijri_date = Gregorian(deadline_gregorian_date.year, deadline_gregorian_date.month, deadline_gregorian_date.day).to_hijri()
109
- date_data.append({
110
- "Description": "Deadline - 90 days from start date",
111
- "Hijri Date": deadline_hijri_date.isoformat(),
112
- "Gregorian Date": deadline_gregorian_date.isoformat()
113
- })
 
 
 
 
 
 
 
 
 
114
 
115
  df = pd.DataFrame(date_data)
116
  st.write("### Date Conversion Table")
@@ -119,7 +175,7 @@ def ninety_days_deadlines():
119
  # Function to convert Hijri date to Gregorian date
120
  def hijri_to_gregorian():
121
  st.title("Convert Hijri Date to Gregorian Date")
122
-
123
  # Inputs for Hijri year, month, and day
124
  hijri_year = st.number_input("Enter Hijri Year:", min_value=1, step=1)
125
  hijri_month = st.number_input("Enter Hijri Month:", min_value=1, max_value=12, step=1)
@@ -134,31 +190,45 @@ def hijri_to_gregorian():
134
  except ValueError as e:
135
  st.error(f"Invalid Hijri date: {e}")
136
 
137
- # New function to add years to filing date
138
  def add_years_to_filing_date(years):
139
  st.title(f"Add {years} Years to Filing Date")
140
  filing_date = st.date_input("Select a Gregorian filing date")
141
  date_data = []
142
 
143
  if filing_date:
144
- gregorian_date = filing_date
145
- hijri_date = Gregorian(gregorian_date.year, gregorian_date.month, gregorian_date.day).to_hijri()
146
- date_data.append({
147
- "Description": "Filing Date",
148
- "Hijri Date": hijri_date.isoformat(),
149
- "Gregorian Date": gregorian_date.isoformat()
150
- })
151
-
152
- future_gregorian_date = gregorian_date + relativedelta(years=years)
153
- future_hijri_date = Gregorian(future_gregorian_date.year, future_gregorian_date.month, future_gregorian_date.day).to_hijri()
154
- date_data.append({
155
- "Description": f"Date after adding {years} years",
156
- "Hijri Date": future_hijri_date.isoformat(),
157
- "Gregorian Date": future_gregorian_date.isoformat()
158
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
  df = pd.DataFrame(date_data)
161
- st.write(f"### Date Conversion Table ({years} Years Added)")
162
  st.dataframe(df)
163
 
164
  # Sidebar navigation using radio buttons
@@ -175,4 +245,4 @@ elif option == "Add 20 Years to Filing Date":
175
  elif option == "Add 15 Years to Filing Date":
176
  add_years_to_filing_date(15)
177
  elif option == "Add 10 Years to Filing Date":
178
- add_years_to_filing_date(10)
 
8
  st.sidebar.title("Navigation")
9
  option = st.sidebar.radio(
10
  "Choose an option",
11
+ (
12
+ "Three Month Deadline Converter",
13
+ "60 Days Deadline Converter",
14
+ "90 Days Deadline Converter",
15
+ "Convert Hijri Date to Gregorian Date",
16
+ "Add 20 Years to Filing Date",
17
+ "Add 15 Years to Filing Date",
18
+ "Add 10 Years to Filing Date",
19
+ ),
20
  )
21
 
22
+ # Function to add months to a Hijri date
23
+ def add_hijri_months(hijri_date, months):
24
+ year = hijri_date.year
25
+ month = hijri_date.month
26
+ day = hijri_date.day
27
+
28
+ month += months
29
+ while month > 12:
30
+ month -= 12
31
+ year += 1
32
+
33
+ # Adjust the day if necessary
34
+ try:
35
+ new_hijri_date = Hijri(year, month, day)
36
+ except ValueError:
37
+ # If day is invalid (e.g., 30 in a month that only has 29 days), adjust day to 29
38
+ day = 29
39
+ new_hijri_date = Hijri(year, month, day)
40
+
41
+ return new_hijri_date
42
+
43
+ # Function to add days to a Hijri date
44
+ def add_hijri_days(hijri_date, days):
45
+ jd = hijri_date.to_jd()
46
+ new_jd = jd + days
47
+ new_hijri_date = Hijri.from_jd(new_jd)
48
+ return new_hijri_date
49
+
50
  # Function to calculate three month deadlines
51
  def three_month_deadlines():
52
  st.title("Three Month Deadline Converter")
 
54
  date_data = []
55
 
56
  if start_date:
57
+ # Convert start_date to Hijri
58
  gregorian_date = Gregorian(start_date.year, start_date.month, start_date.day)
 
 
59
  hijri_start_date = gregorian_date.to_hijri()
60
+
61
+ date_data.append(
62
+ {
63
+ "Description": "Chosen Start Date",
64
+ "Hijri Date": hijri_start_date.isoformat(),
65
+ "Gregorian Date": gregorian_date.isoformat(),
66
+ }
67
+ )
68
+
69
+ # Add 3 months to Hijri date
70
+ deadline_hijri = add_hijri_months(hijri_start_date, 3)
71
+
72
+ # Convert deadline back to Gregorian
73
+ deadline_gregorian = deadline_hijri.to_gregorian()
74
+
75
+ date_data.append(
76
+ {
77
+ "Description": "Deadline - three Hijri months from start date",
78
+ "Hijri Date": deadline_hijri.isoformat(),
79
+ "Gregorian Date": deadline_gregorian.isoformat(),
80
+ }
81
+ )
82
 
83
  # Function to add months and store results
84
+ def add_months_and_store_from_deadline(deadline_hijri, months):
85
  for i in range(1, months + 1):
86
+ future_hijri = add_hijri_months(deadline_hijri, i)
87
+ future_gregorian = future_hijri.to_gregorian()
88
+
89
+ description = f"{i} Hijri month extension from deadline"
90
+ date_data.append(
91
+ {
92
+ "Description": description,
93
+ "Hijri Date": future_hijri.isoformat(),
94
+ "Gregorian Date": future_gregorian.isoformat(),
95
+ }
96
+ )
97
+
98
+ add_months_and_store_from_deadline(deadline_hijri, 3)
99
  df = pd.DataFrame(date_data)
100
  st.write("### Date Conversion Table")
101
  st.dataframe(df)
 
107
  date_data = []
108
 
109
  if start_date:
110
+ # Convert start date to Hijri date
111
+ gregorian_date = Gregorian(start_date.year, start_date.month, start_date.day)
112
+ hijri_date = gregorian_date.to_hijri()
113
+ date_data.append(
114
+ {
115
+ "Description": "Chosen Start Date",
116
+ "Hijri Date": hijri_date.isoformat(),
117
+ "Gregorian Date": gregorian_date.isoformat(),
118
+ }
119
+ )
120
+
121
+ # Add 60 days to Hijri date
122
+ deadline_hijri_date = add_hijri_days(hijri_date, 60)
123
+
124
+ # Convert deadline Hijri date to Gregorian date
125
+ deadline_gregorian_date = deadline_hijri_date.to_gregorian()
126
+
127
+ date_data.append(
128
+ {
129
+ "Description": "Deadline - 60 Hijri days from start date",
130
+ "Hijri Date": deadline_hijri_date.isoformat(),
131
+ "Gregorian Date": deadline_gregorian_date.isoformat(),
132
+ }
133
+ )
134
 
135
  df = pd.DataFrame(date_data)
136
  st.write("### Date Conversion Table")
 
143
  date_data = []
144
 
145
  if start_date:
146
+ # Convert start date to Hijri date
147
+ gregorian_date = Gregorian(start_date.year, start_date.month, start_date.day)
148
+ hijri_date = gregorian_date.to_hijri()
149
+ date_data.append(
150
+ {
151
+ "Description": "Chosen Start Date",
152
+ "Hijri Date": hijri_date.isoformat(),
153
+ "Gregorian Date": gregorian_date.isoformat(),
154
+ }
155
+ )
156
+
157
+ # Add 90 days to Hijri date
158
+ deadline_hijri_date = add_hijri_days(hijri_date, 90)
159
+
160
+ # Convert deadline Hijri date to Gregorian date
161
+ deadline_gregorian_date = deadline_hijri_date.to_gregorian()
162
+
163
+ date_data.append(
164
+ {
165
+ "Description": "Deadline - 90 Hijri days from start date",
166
+ "Hijri Date": deadline_hijri_date.isoformat(),
167
+ "Gregorian Date": deadline_gregorian_date.isoformat(),
168
+ }
169
+ )
170
 
171
  df = pd.DataFrame(date_data)
172
  st.write("### Date Conversion Table")
 
175
  # Function to convert Hijri date to Gregorian date
176
  def hijri_to_gregorian():
177
  st.title("Convert Hijri Date to Gregorian Date")
178
+
179
  # Inputs for Hijri year, month, and day
180
  hijri_year = st.number_input("Enter Hijri Year:", min_value=1, step=1)
181
  hijri_month = st.number_input("Enter Hijri Month:", min_value=1, max_value=12, step=1)
 
190
  except ValueError as e:
191
  st.error(f"Invalid Hijri date: {e}")
192
 
193
+ # Function to add years to filing date according to Hijri calendar
194
  def add_years_to_filing_date(years):
195
  st.title(f"Add {years} Years to Filing Date")
196
  filing_date = st.date_input("Select a Gregorian filing date")
197
  date_data = []
198
 
199
  if filing_date:
200
+ # Convert filing date to Hijri date
201
+ gregorian_date = Gregorian(filing_date.year, filing_date.month, filing_date.day)
202
+ hijri_date = gregorian_date.to_hijri()
203
+ date_data.append(
204
+ {
205
+ "Description": "Filing Date",
206
+ "Hijri Date": hijri_date.isoformat(),
207
+ "Gregorian Date": gregorian_date.isoformat(),
208
+ }
209
+ )
210
+
211
+ # Add years to Hijri date
212
+ future_hijri_date = Hijri(hijri_date.year + years, hijri_date.month, hijri_date.day)
213
+
214
+ # Adjust the day if necessary
215
+ try:
216
+ future_hijri_date = Hijri(future_hijri_date.year, future_hijri_date.month, future_hijri_date.day)
217
+ except ValueError:
218
+ future_hijri_date = Hijri(future_hijri_date.year, future_hijri_date.month, 29)
219
+
220
+ # Convert future Hijri date to Gregorian date
221
+ future_gregorian_date = future_hijri_date.to_gregorian()
222
+ date_data.append(
223
+ {
224
+ "Description": f"Date after adding {years} Hijri years",
225
+ "Hijri Date": future_hijri_date.isoformat(),
226
+ "Gregorian Date": future_gregorian_date.isoformat(),
227
+ }
228
+ )
229
 
230
  df = pd.DataFrame(date_data)
231
+ st.write(f"### Date Conversion Table ({years} Hijri Years Added)")
232
  st.dataframe(df)
233
 
234
  # Sidebar navigation using radio buttons
 
245
  elif option == "Add 15 Years to Filing Date":
246
  add_years_to_filing_date(15)
247
  elif option == "Add 10 Years to Filing Date":
248
+ add_years_to_filing_date(10)