File size: 2,888 Bytes
ba575fd 98dc217 8ccf4f9 98dc217 8ccf4f9 98dc217 2609650 98dc217 8ccf4f9 ba575fd 2609650 ba575fd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
from flask import Flask, request, render_template, jsonify, redirect
import json
from datetime import datetime, timedelta
import os
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# ✅ Use Hugging Face's writable temp directory
DATA_DIR = '/tmp/data'
DATA_FILE = os.path.join(DATA_DIR, 'events.json')
# ✅ Ensure the /tmp/data directory exists
os.makedirs(DATA_DIR, exist_ok=True)
# ✅ Create the events.json file if it doesn't exist
if not os.path.exists(DATA_FILE):
with open(DATA_FILE, 'w') as f:
json.dump([], f)
def load_events():
if not os.path.exists(DATA_FILE):
return []
with open(DATA_FILE, 'r') as f:
return json.load(f)
def save_events(events):
with open(DATA_FILE, 'w') as f:
json.dump(events, f, indent=2)
def get_upcoming_reminders(events):
now = datetime.now()
end = now + timedelta(hours=4)
upcoming = []
for e in events:
start = datetime.fromisoformat(e['start_time'])
if now <= start < end:
upcoming.append(e)
return upcoming
@app.route('/')
def index():
all_events = load_events()
reminders = get_upcoming_reminders(all_events)
search_query = request.args.get('search', '').lower()
if search_query:
events = [e for e in all_events if search_query in e['title'].lower()]
else:
events = all_events
return render_template('index.html', events=events, reminders=reminders, search=search_query)
@app.route('/events', methods=['GET', 'POST'])
@app.route('/events/', methods=['GET', 'POST'])
def events():
if request.method == 'GET':
events = load_events()
return jsonify(events)
elif request.method == 'POST':
events = load_events()
data = request.get_json()
new_event = {
'id': str(len(events) + 1),
'title': data['title'],
'description': data.get('description', ''),
'start_time': data['start_time'],
'end_time': data['end_time'],
}
events.append(new_event)
save_events(events)
return jsonify(new_event), 201
@app.route('/events/<event_id>', methods=['PUT'])
def update_event(event_id):
events = load_events()
data = request.get_json()
for event in events:
if event['id'] == event_id:
event.update(data)
save_events(events)
return jsonify(event)
return jsonify({'error': 'Event not found'}), 404
@app.route('/events/<event_id>', methods=['DELETE'])
def delete_event(event_id):
events = load_events()
events = [e for e in events if e['id'] != event_id]
save_events(events)
return '', 204
@app.template_filter('format12')
def format12(value):
dt = datetime.fromisoformat(value)
return dt.strftime('%I:%M %p, %b %d')
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860)
|