Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
03eccbd56a | ||
|
|
fb31ea3c22 | ||
|
|
4082863b5a |
@@ -398,7 +398,7 @@ class Package(db.Model):
|
|||||||
forums = db.Column(db.Integer, nullable=True)
|
forums = db.Column(db.Integer, nullable=True)
|
||||||
|
|
||||||
provides = db.relationship("MetaPackage", secondary=provides, lazy="subquery",
|
provides = db.relationship("MetaPackage", secondary=provides, lazy="subquery",
|
||||||
backref=db.backref("packages", lazy="dynamic"))
|
backref=db.backref("packages", lazy="dynamic", order_by=db.desc("score")))
|
||||||
|
|
||||||
dependencies = db.relationship("Dependency", backref="depender", lazy="dynamic", foreign_keys=[Dependency.depender_id])
|
dependencies = db.relationship("Dependency", backref="depender", lazy="dynamic", foreign_keys=[Dependency.depender_id])
|
||||||
|
|
||||||
@@ -441,6 +441,13 @@ class Package(db.Model):
|
|||||||
else:
|
else:
|
||||||
return "ready"
|
return "ready"
|
||||||
|
|
||||||
|
def getAsDictionaryKey(self):
|
||||||
|
return {
|
||||||
|
"name": self.name,
|
||||||
|
"author": self.author.display_name,
|
||||||
|
"type": self.type.toName(),
|
||||||
|
}
|
||||||
|
|
||||||
def getAsDictionaryShort(self, base_url, version=None, protonum=None):
|
def getAsDictionaryShort(self, base_url, version=None, protonum=None):
|
||||||
tnurl = self.getThumbnailURL(1)
|
tnurl = self.getThumbnailURL(1)
|
||||||
release = self.getDownloadRelease(version=version, protonum=protonum)
|
release = self.getDownloadRelease(version=version, protonum=protonum)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from flask import render_template
|
from flask import render_template, url_for
|
||||||
from flask_mail import Message
|
from flask_mail import Message
|
||||||
from app import mail
|
from app import mail
|
||||||
from app.tasks import celery
|
from app.tasks import celery
|
||||||
@@ -24,7 +24,18 @@ from app.tasks import celery
|
|||||||
def sendVerifyEmail(newEmail, token):
|
def sendVerifyEmail(newEmail, token):
|
||||||
print("Sending verify email!")
|
print("Sending verify email!")
|
||||||
msg = Message("Verify email address", recipients=[newEmail])
|
msg = Message("Verify email address", recipients=[newEmail])
|
||||||
msg.body = "This is a verification email!"
|
|
||||||
|
msg.body = """
|
||||||
|
This email has been sent to you because someone (hopefully you)
|
||||||
|
has entered your email address as a user's email.
|
||||||
|
|
||||||
|
If it wasn't you, then just delete this email.
|
||||||
|
|
||||||
|
If this was you, then please click this link to verify the address:
|
||||||
|
|
||||||
|
{}
|
||||||
|
""".format(url_for('verify_email_page', token=token, _external=True))
|
||||||
|
|
||||||
msg.html = render_template("emails/verify.html", token=token)
|
msg.html = render_template("emails/verify.html", token=token)
|
||||||
mail.send(msg)
|
mail.send(msg)
|
||||||
|
|
||||||
@@ -33,9 +44,7 @@ def sendEmailRaw(to, subject, text, html):
|
|||||||
from flask_mail import Message
|
from flask_mail import Message
|
||||||
msg = Message(subject, recipients=to)
|
msg = Message(subject, recipients=to)
|
||||||
|
|
||||||
if text:
|
msg.body = text or html
|
||||||
msg.body = text
|
|
||||||
|
|
||||||
html = html or text
|
html = html or text
|
||||||
msg.html = render_template("emails/base.html", subject=subject, content=html)
|
msg.html = render_template("emails/base.html", subject=subject, content=html)
|
||||||
mail.send(msg)
|
mail.send(msg)
|
||||||
|
|||||||
@@ -298,8 +298,13 @@ def cloneRepo(urlstr, ref=None, recursive=False):
|
|||||||
try:
|
try:
|
||||||
gitUrl = generateGitURL(urlstr)
|
gitUrl = generateGitURL(urlstr)
|
||||||
print("Cloning from " + gitUrl)
|
print("Cloning from " + gitUrl)
|
||||||
repo = git.Repo.clone_from(gitUrl, gitDir, \
|
|
||||||
progress=None, env=None, depth=1, recursive=recursive, kill_after_timeout=15, b=ref)
|
if ref is None:
|
||||||
|
repo = git.Repo.clone_from(gitUrl, gitDir, \
|
||||||
|
progress=None, env=None, depth=1, recursive=recursive, kill_after_timeout=15)
|
||||||
|
else:
|
||||||
|
repo = git.Repo.clone_from(gitUrl, gitDir, \
|
||||||
|
progress=None, env=None, depth=1, recursive=recursive, kill_after_timeout=15, b=ref)
|
||||||
|
|
||||||
return gitDir, repo
|
return gitDir, repo
|
||||||
|
|
||||||
|
|||||||
@@ -32,12 +32,42 @@ def api_packages_page():
|
|||||||
for package in query.all()]
|
for package in query.all()]
|
||||||
return jsonify(pkgs)
|
return jsonify(pkgs)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/api/packages/<author>/<name>/")
|
@app.route("/api/packages/<author>/<name>/")
|
||||||
@is_package_page
|
@is_package_page
|
||||||
def api_package_page(package):
|
def api_package_page(package):
|
||||||
return jsonify(package.getAsDictionary(app.config["BASE_URL"]))
|
return jsonify(package.getAsDictionary(app.config["BASE_URL"]))
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/api/packages/<author>/<name>/dependencies/")
|
||||||
|
@is_package_page
|
||||||
|
def api_package_deps_page(package):
|
||||||
|
ret = []
|
||||||
|
|
||||||
|
for dep in package.dependencies:
|
||||||
|
name = None
|
||||||
|
fulfilled_by = None
|
||||||
|
|
||||||
|
if dep.package:
|
||||||
|
name = dep.package.name
|
||||||
|
fulfilled_by = [ dep.package.getAsDictionaryKey() ]
|
||||||
|
|
||||||
|
elif dep.meta_package:
|
||||||
|
name = dep.meta_package.name
|
||||||
|
fulfilled_by = [ pkg.getAsDictionaryKey() for pkg in dep.meta_package.packages]
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise "Malformed dependency"
|
||||||
|
|
||||||
|
ret.append({
|
||||||
|
"name": name,
|
||||||
|
"is_optional": dep.optional,
|
||||||
|
"packages": fulfilled_by
|
||||||
|
})
|
||||||
|
|
||||||
|
return jsonify(ret)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/api/topics/")
|
@app.route("/api/topics/")
|
||||||
def api_topics_page():
|
def api_topics_page():
|
||||||
qb = QueryBuilder(request.args)
|
qb = QueryBuilder(request.args)
|
||||||
|
|||||||
@@ -33,5 +33,6 @@ services:
|
|||||||
- config.env
|
- config.env
|
||||||
volumes:
|
volumes:
|
||||||
- "./data/uploads:/home/cdb/app/public/uploads"
|
- "./data/uploads:/home/cdb/app/public/uploads"
|
||||||
|
- "./app:/home/cdb/app"
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
|
|||||||
@@ -18,4 +18,4 @@ GitPython~=2.1
|
|||||||
lxml~=4.2
|
lxml~=4.2
|
||||||
pillow~=5.3
|
pillow~=5.3
|
||||||
pyScss~=1.3
|
pyScss~=1.3
|
||||||
redis~=3.0
|
redis==2.10.6
|
||||||
|
|||||||
Reference in New Issue
Block a user