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)