implement /packages/{name} as its own route

A few things added with this commit:

- aurweb.packages.util
    - A module providing package and pkgbase helpers.
- aurweb.template.register_filter
    - A decorator that can be used to register a filter:
      @register_filter("some_filter") def f(): pass

Additionally, template partials have been split off a bit
differently. Changes:

- /packages/{name} is defined in packages/show.html.
- partials/packages/package_actions.html is now
  partials/packages/actions.html.
- partials/packages/details.html has been added.
- partials/packages/comments.html has been added.
- partials/packages/comment.html has been added.
- models.dependency_type additions: name and id constants.
- models.relation_type additions: name and id constants.
- models.official_provider additions: base official url constant.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-07-15 22:48:26 -07:00
parent 2d3d03e01e
commit ae3d302c47
22 changed files with 1166 additions and 254 deletions

View file

@ -1,7 +1,13 @@
from sqlalchemy import Column, Integer
from aurweb import db
from aurweb.models.declarative import Base
DEPENDS = "depends"
MAKEDEPENDS = "makedepends"
CHECKDEPENDS = "checkdepends"
OPTDEPENDS = "optdepends"
class DependencyType(Base):
__tablename__ = "DependencyTypes"
@ -12,3 +18,13 @@ class DependencyType(Base):
def __init__(self, Name: str = None):
self.Name = Name
DEPENDS_ID = db.query(DependencyType).filter(
DependencyType.Name == DEPENDS).first().ID
MAKEDEPENDS_ID = db.query(DependencyType).filter(
DependencyType.Name == MAKEDEPENDS).first().ID
CHECKDEPENDS_ID = db.query(DependencyType).filter(
DependencyType.Name == CHECKDEPENDS).first().ID
OPTDEPENDS_ID = db.query(DependencyType).filter(
DependencyType.Name == OPTDEPENDS).first().ID

View file

@ -3,6 +3,8 @@ from sqlalchemy.exc import IntegrityError
from aurweb.models.declarative import Base
OFFICIAL_BASE = "https://aur.archlinux.org"
class OfficialProvider(Base):
__tablename__ = "OfficialProviders"

View file

@ -61,3 +61,12 @@ class PackageDependency(Base):
self.DepDesc = DepDesc
self.DepCondition = DepCondition
self.DepArch = DepArch
def is_package(self) -> bool:
from aurweb import db
from aurweb.models.official_provider import OfficialProvider
from aurweb.models.package import Package
pkg = db.query(Package, Package.Name == self.DepName)
official = db.query(OfficialProvider,
OfficialProvider.Name == self.DepName)
return pkg.count() > 0 or official.count() > 0

View file

@ -1,7 +1,12 @@
from sqlalchemy import Column, Integer
from aurweb import db
from aurweb.models.declarative import Base
CONFLICTS = "conflicts"
PROVIDES = "provides"
REPLACES = "replaces"
class RelationType(Base):
__tablename__ = "RelationTypes"
@ -12,3 +17,11 @@ class RelationType(Base):
def __init__(self, Name: str = None):
self.Name = Name
CONFLICTS_ID = db.query(RelationType).filter(
RelationType.Name == CONFLICTS).first().ID
PROVIDES_ID = db.query(RelationType).filter(
RelationType.Name == PROVIDES).first().ID
REPLACES_ID = db.query(RelationType).filter(
RelationType.Name == REPLACES).first().ID