[Flask] Web media downloader frontend.
1
# -*- mode: python; -*-
2
3
4
from flask_sqlalchemy import SQLAlchemy
5
from sqlalchemy.sql import func
6
7
from flask_login import UserMixin
8
9
db = ()
10
11
12
classUser(UserMixin,db.Model):
13
"""UserMixin inheritance required for features described here:
14
15
https://stackoverflow./questions/63231163/what-is-the-usermixin-in-flask"""
16
17
__tablename__ = "User"
18
19
defget_id(self):
20
return self.
21
22
primary_key = db.("UserId",.,primary_key=True)
23
username = db.("Username",.(20),nullable=False)
24
hashed_password = db.("HashedPassword",.(100),nullable=False)
25
name_first = db.("NameFirst",.(20),nullable=False)
26
name_last = db.("NameLast",.(20),nullable=False)
27
date_time_created = db.(
28
"DateTimeCreated",.,server_default=.()
29
)
30
date_time_updated = db.(
31
"DateTimeUpdated",.,server_onupdate=.()
32
)
33
downloads = db.("Download",back_populates="user")
34
35
def__repr__(self):
36
return f"<User {self.} {self.}>"
37
38
39
classDownload(db.Model):
40
"""One record per file downloaded."""
41
42
__tablename__ = "Download"
43
primary_key = db.("DownloadId",.,primary_key=True)
44
title = db.("Title",.(20),nullable=False)
45
url = db.("URL",.,nullable=False)
46
date_time_downloaded = db.(
47
"DateTimeDownloaded",.,server_default=.()
48
)
49
user_id = db.("UserId",.,.("User.UserId"))
50
user = db.("User",back_populates="downloads")
51
52
def__init__(
53
self,
54
title,
55
url,
56
user_id,
57
):
58
self. = title
59
self. = url
60
self. = user_id
61
62
def__repr__(self):
63
return f"<Download {self..} for {self..} downloaded {self.}>"
64