Pranesh64 commited on
Commit
ca54e42
Β·
verified Β·
1 Parent(s): d273c32

added Not-Active to Active transition.

Browse files
Files changed (1) hide show
  1. app.py +47 -5
app.py CHANGED
@@ -26,21 +26,20 @@ load_dotenv()
26
  DB_URL = os.getenv("DB_URL")
27
  GMAIL_USER = os.getenv("GMAIL_USER")
28
  HF_URL = os.getenv("HF_URL")
29
- # ADMIN_SECRET = os.getenv("ADMIN_SECRET")
30
  XSRF_TOKEN = os.getenv("XSRF_TOKEN")
31
  BIP_SESSION = os.getenv("BIP_SESSION")
32
  BIP_API = "https://bip.bitsathy.ac.in/nova-api/student-activity-masters"
33
 
34
  TOKEN_FILE = "token.pkl"
35
 
36
- # COOKIE_FILE = "bip_cookies.json"
37
  STATE_FILE = "state.json"
38
  NEW_EVENTS_FILE = "new_events.json"
39
  PAGE1_LOG_FILE = "page1_logs.json"
 
40
 
41
  SCOPES = ["https://www.googleapis.com/auth/gmail.send"]
42
 
43
- MAX_PAGES = 50
44
  REQUEST_TIMEOUT = 20
45
 
46
 
@@ -258,6 +257,17 @@ def save_state(latest_id):
258
  json.dump(state, f, indent=2)
259
 
260
 
 
 
 
 
 
 
 
 
 
 
 
261
  def save_new_events(events):
262
  """Save new events to file"""
263
  data = {
@@ -563,8 +573,19 @@ def check_events():
563
  print("πŸ“ Last known ID:", old_id)
564
 
565
  new_events = fetch_new_events(old_id)
 
 
 
 
 
 
 
566
 
567
- if not new_events:
 
 
 
 
568
  print("⏳ No new events added")
569
  return "⏳ No new events found"
570
 
@@ -579,8 +600,29 @@ def check_events():
579
  save_state(latest["id"])
580
 
581
  # Send notifications to users
582
- return send_notifications_for_events(new_events)
583
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
584
  except Exception as e:
585
  error_msg = f"❌ Event check error: {e}"
586
  print(error_msg)
 
26
  DB_URL = os.getenv("DB_URL")
27
  GMAIL_USER = os.getenv("GMAIL_USER")
28
  HF_URL = os.getenv("HF_URL")
 
29
  XSRF_TOKEN = os.getenv("XSRF_TOKEN")
30
  BIP_SESSION = os.getenv("BIP_SESSION")
31
  BIP_API = "https://bip.bitsathy.ac.in/nova-api/student-activity-masters"
32
 
33
  TOKEN_FILE = "token.pkl"
34
 
 
35
  STATE_FILE = "state.json"
36
  NEW_EVENTS_FILE = "new_events.json"
37
  PAGE1_LOG_FILE = "page1_logs.json"
38
+ PENDING_EVENTS_FILE = "pending_events.json"
39
 
40
  SCOPES = ["https://www.googleapis.com/auth/gmail.send"]
41
 
42
+ MAX_PAGES = 5
43
  REQUEST_TIMEOUT = 20
44
 
45
 
 
257
  json.dump(state, f, indent=2)
258
 
259
 
260
+ def load_pending_events():
261
+ try:
262
+ with open(PENDING_EVENTS_FILE, "r") as f:
263
+ return json.load(f)
264
+ except:
265
+ return {}
266
+
267
+ def save_pending_events(data):
268
+ with open(PENDING_EVENTS_FILE, "w") as f:
269
+ json.dump(data, f, indent=2)
270
+
271
  def save_new_events(events):
272
  """Save new events to file"""
273
  data = {
 
573
  print("πŸ“ Last known ID:", old_id)
574
 
575
  new_events = fetch_new_events(old_id)
576
+ pending = load_pending_events()
577
+ events_to_send = []
578
+ page1_events = fetch_latest()
579
+
580
+ for res in page1_events:
581
+ ev = parse_event(res)
582
+ eid = str(ev["id"])
583
 
584
+ if eid in pending and ev.get("status") == "Active":
585
+ print("πŸ”₯ Pending event became active:", ev.get("event_name"))
586
+ events_to_send.append(ev)
587
+ del pending[eid]
588
+ if not new_events and not events_to_send:
589
  print("⏳ No new events added")
590
  return "⏳ No new events found"
591
 
 
600
  save_state(latest["id"])
601
 
602
  # Send notifications to users
603
+ for ev in new_events:
604
 
605
+ status = ev.get("status")
606
+ eid = str(ev["id"])
607
+
608
+ if status == "Not-Active":
609
+ pending[eid] = ev
610
+
611
+ elif status == "Active":
612
+
613
+ if eid in pending:
614
+ print("πŸ”₯ Event became active:", ev.get("event_name"))
615
+ events_to_send.append(ev)
616
+ del pending[eid]
617
+
618
+ else:
619
+ events_to_send.append(ev)
620
+
621
+ # SAVE pending events
622
+ events_to_send = list({e["id"]: e for e in events_to_send}.values())
623
+ save_pending_events(pending)
624
+ return send_notifications_for_events(events_to_send)
625
+
626
  except Exception as e:
627
  error_msg = f"❌ Event check error: {e}"
628
  print(error_msg)