Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/currency.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import requests
import json
import os
from datetime import datetime, date
from datetime import datetime, date, timezone
from flask import current_app
import xml.etree.ElementTree as ET
from decimal import Decimal, getcontext, InvalidOperation
Expand Down Expand Up @@ -60,7 +60,7 @@ def get_exchange_rates(self, base_currency: str = 'EUR', force_refresh: bool = F
if not force_refresh and primary_provider:
record = ExchangeRate.query.filter_by(date=date.today(), base_currency=base_currency, provider=primary_provider).first()
if record:
age_min = (datetime.utcnow() - record.created_at).total_seconds() / 60.0
age_min = (datetime.now(timezone.utc) - record.created_at).total_seconds() / 60.0
if age_min <= refresh_minutes:
try:
self.last_provider = primary_provider
Expand All @@ -79,7 +79,7 @@ def get_exchange_rates(self, base_currency: str = 'EUR', force_refresh: bool = F
if not force_refresh:
cached = ExchangeRate.query.filter_by(date=date.today(), base_currency=base_currency, provider=provider).first()
if cached:
age_min = (datetime.utcnow() - cached.created_at).total_seconds() / 60.0
age_min = (datetime.now(timezone.utc) - cached.created_at).total_seconds() / 60.0
if age_min <= refresh_minutes:
try:
self.last_provider = provider
Expand Down
10 changes: 5 additions & 5 deletions app/models.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import datetime, date
from datetime import datetime, date, timezone
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from app import db, login_manager
Expand Down Expand Up @@ -62,7 +62,7 @@ class Webhook(db.Model):
custom_headers = db.Column(db.Text) # JSON string for custom headers
is_active = db.Column(db.Boolean, default=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))
last_used = db.Column(db.DateTime)

# Relationship
Expand Down Expand Up @@ -106,7 +106,7 @@ class ExchangeRate(db.Model):
base_currency = db.Column(db.String(3), nullable=False, default='EUR')
provider = db.Column(db.String(40), nullable=False, default='legacy') # data source identifier
rates_json = db.Column(db.Text, nullable=False) # JSON string of exchange rates
created_at = db.Column(db.DateTime, default=datetime.utcnow)
created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))

__table_args__ = (
db.UniqueConstraint('date', 'base_currency', 'provider', name='uq_rate_date_base_provider'),
Expand Down Expand Up @@ -136,7 +136,7 @@ def save_rates(cls, rates, base_currency='EUR', provider='unknown'):
existing_rate = cls.query.filter_by(date=today, base_currency=base_currency, provider=provider).first()
if existing_rate:
existing_rate.rates_json = json.dumps(rates)
existing_rate.created_at = datetime.utcnow()
existing_rate.created_at = datetime.now(timezone.utc)
else:
new_rate = cls(
date=today,
Expand All @@ -154,7 +154,7 @@ class PaymentMethod(db.Model):
last_four = db.Column(db.String(4), nullable=True)
notes = db.Column(db.Text, nullable=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))

# Relationship back to user
user = db.relationship('User', backref=db.backref('payment_methods', lazy=True))
Expand Down
10 changes: 5 additions & 5 deletions app/webhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import requests
import json
import logging
from datetime import datetime
from datetime import datetime, timezone
from typing import Dict, List, Optional, Any
from flask import current_app

Expand Down Expand Up @@ -58,7 +58,7 @@ def send(self, message: str, title: str = None, color: str = None) -> Dict[str,
response.raise_for_status()

# Update last_used timestamp
self.webhook.last_used = datetime.utcnow()
self.webhook.last_used = datetime.now(timezone.utc)
from app import db
db.session.commit()

Expand Down Expand Up @@ -111,7 +111,7 @@ def prepare_payload(self, message: str, title: str = None, color: str = None) ->

embed = {
"description": message,
"timestamp": datetime.utcnow().isoformat(),
"timestamp": datetime.now(timezone.utc).isoformat(),
"footer": {
"text": "Subscription Tracker"
}
Expand Down Expand Up @@ -151,7 +151,7 @@ def prepare_payload(self, message: str, title: str = None, color: str = None) ->

attachment = {
"text": message,
"ts": int(datetime.utcnow().timestamp()),
"ts": int(datetime.now(timezone.utc).timestamp()),
"footer": "Subscription Tracker"
}

Expand Down Expand Up @@ -239,7 +239,7 @@ class GenericWebhookSender(WebhookSender):
def prepare_payload(self, message: str, title: str = None, color: str = None) -> Dict[str, Any]:
payload = {
"text": message,
"timestamp": datetime.utcnow().isoformat()
"timestamp": datetime.now(timezone.utc).isoformat()
}

if title:
Expand Down
Loading