Compare commits

..

3 Commits

Author SHA1 Message Date
rubenwardy
03eccbd56a Fix text in emails 2019-09-15 18:43:22 +01:00
rubenwardy
fb31ea3c22 Fix git clone breaking when branch is None 2019-09-15 18:30:42 +01:00
rubenwardy
4082863b5a Add basic dependency resolution 2019-09-03 00:42:51 +01:00
6 changed files with 61 additions and 9 deletions

View File

@@ -398,7 +398,7 @@ class Package(db.Model):
forums = db.Column(db.Integer, nullable=True)
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])
@@ -441,6 +441,13 @@ class Package(db.Model):
else:
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):
tnurl = self.getThumbnailURL(1)
release = self.getDownloadRelease(version=version, protonum=protonum)

View File

@@ -15,7 +15,7 @@
# 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 app import mail
from app.tasks import celery
@@ -24,7 +24,18 @@ from app.tasks import celery
def sendVerifyEmail(newEmail, token):
print("Sending verify email!")
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)
mail.send(msg)
@@ -33,9 +44,7 @@ def sendEmailRaw(to, subject, text, html):
from flask_mail import Message
msg = Message(subject, recipients=to)
if text:
msg.body = text
msg.body = text or html
html = html or text
msg.html = render_template("emails/base.html", subject=subject, content=html)
mail.send(msg)

View File

@@ -298,8 +298,13 @@ def cloneRepo(urlstr, ref=None, recursive=False):
try:
gitUrl = generateGitURL(urlstr)
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

View File

@@ -32,12 +32,42 @@ def api_packages_page():
for package in query.all()]
return jsonify(pkgs)
@app.route("/api/packages/<author>/<name>/")
@is_package_page
def api_package_page(package):
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/")
def api_topics_page():
qb = QueryBuilder(request.args)

View File

@@ -33,5 +33,6 @@ services:
- config.env
volumes:
- "./data/uploads:/home/cdb/app/public/uploads"
- "./app:/home/cdb/app"
depends_on:
- redis

View File

@@ -18,4 +18,4 @@ GitPython~=2.1
lxml~=4.2
pillow~=5.3
pyScss~=1.3
redis~=3.0
redis==2.10.6