55import frappe
66from firebase_admin import messaging
77from frappe import _
8+ from frappe .utils import now_datetime
89from frappe .utils .response import Response
910
1011from raven_cloud .utils .fcm import get_app
@@ -27,6 +28,16 @@ def register_site(site_name: str):
2728 }
2829 ).insert ()
2930
31+ # update the last registered on and last registered by fields - to keep track of the last time the site was registered and by whom
32+ frappe .db .set_value (
33+ 'RC Site' ,
34+ site_name ,
35+ {
36+ 'last_registered_on' : now_datetime (),
37+ 'last_registered_by' : frappe .session .user ,
38+ }
39+ )
40+
3041 fcm_settings = frappe .get_doc ('RC FCM Settings' )
3142
3243 return {
@@ -495,26 +506,34 @@ def import_user_tokens(site_name: str, tokens: str):
495506 Tokens for users NOT in the incoming payload are left untouched,
496507 making this safe to call with partial/chunked token lists.
497508 """
498-
499- if isinstance (tokens , str ):
500- tokens = json .loads (tokens )
501-
502- # if no tokens are present, return
503- if not tokens :
504- return {
505- "status" : "success" ,
506- }
507-
508509 check_if_site_exists (site_name )
509510
510- # building an incoming set for faster lookup
511- incoming_users = list ({token .get ("user" ) for token in tokens })
512- incoming_tokens = {(token .get ("user" ), token .get ("fcm_token" )) for token in tokens }
511+ try :
512+ if isinstance (tokens , str ):
513+ tokens = json .loads (tokens )
514+
515+ # if no tokens are present, return
516+ if not tokens :
517+ frappe .db .set_value (
518+ "RC Site" ,
519+ site_name ,
520+ {
521+ "last_synced_on" : now_datetime (),
522+ "last_synced_status" : "Success" ,
523+ "last_sync_error" : None ,
524+ },
525+ update_modified = False ,
526+ )
527+ return {
528+ "status" : "success" ,
529+ }
513530
514- rc_site_user = frappe .qb .DocType ("RC Site User" )
515- rc_site_user_token = frappe .qb .DocType ("RC Site User Token" )
531+ # building an incoming set for faster lookup
532+ incoming_users = list ({token .get ("user" ) for token in tokens })
533+ incoming_tokens = {(token .get ("user" ), token .get ("fcm_token" )) for token in tokens }
516534
517- try :
535+ rc_site_user = frappe .qb .DocType ("RC Site User" )
536+ rc_site_user_token = frappe .qb .DocType ("RC Site User Token" )
518537
519538 # fetching all the existing tokens on RC for this site
520539 existing_tokens_query = (
@@ -569,7 +588,29 @@ def import_user_tokens(site_name: str, tokens: str):
569588 "user" : user_map [user_id ],
570589 "fcm_token" : fcm_token ,
571590 }).insert ()
591+
592+ frappe .db .set_value (
593+ "RC Site" ,
594+ site_name ,
595+ {
596+ "last_synced_on" : now_datetime (),
597+ "last_synced_status" : "Success" ,
598+ "last_sync_error" : None ,
599+ "last_synced_by" : frappe .session .user ,
600+ },
601+ update_modified = False ,
602+ )
572603 except Exception as e :
604+ frappe .db .set_value (
605+ "RC Site" ,
606+ site_name ,
607+ {
608+ "last_synced_status" : "Failed" ,
609+ "last_sync_error" : str (e ),
610+ "last_synced_by" : frappe .session .user ,
611+ },
612+ update_modified = False ,
613+ )
573614 frappe .log_error (title = f"Error syncing user tokens for { site_name } " , message = frappe .get_traceback ())
574615 frappe .throw (_ (f"Error syncing user tokens for { site_name } - { str (e )} " ))
575616
0 commit comments