From: "Mart Raudsepp" <leio@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/grumpy:master commit in: backend/lib/
Date: Wed, 7 Dec 2016 07:10:14 +0000 (UTC) [thread overview]
Message-ID: <1481094592.8d90fa100941d73a026a7270f64d16fbe65dc8a5.leio@gentoo> (raw)
commit: 8d90fa100941d73a026a7270f64d16fbe65dc8a5
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 7 07:09:52 2016 +0000
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Wed Dec 7 07:09:52 2016 +0000
URL: https://gitweb.gentoo.org/proj/grumpy.git/commit/?id=8d90fa10
models: Add preliminary model and fields for keyword and p.mask storage
backend/lib/models.py | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/backend/lib/models.py b/backend/lib/models.py
index 2eb9e8c..010d58f 100644
--- a/backend/lib/models.py
+++ b/backend/lib/models.py
@@ -2,6 +2,18 @@ from datetime import datetime
from .. import db
+class Keyword(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ # current longest entries would be of length 16 with "~sparc64-freebsd" and "~sparc64-solaris"
+ name = db.Column(db.Unicode(20), unique=True, nullable=False) # TODO: Force lower case?
+
+ @property
+ def stable(self):
+ return not self.name.startswith('~')
+
+ def __repr__(self):
+ return "<Keyword %r>" % self.name
+
class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(30), unique=True, nullable=False)
@@ -19,12 +31,13 @@ class Package(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(128), nullable=False)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=False)
- category = db.relationship('Category', backref=db.backref('packages', lazy='dynamic'))
+ category = db.relationship('Category', backref=db.backref('packages', lazy='select'))
description = db.Column(db.Unicode(500))
last_sync_ts = db.Column(db.TIMESTAMP, nullable=False, default=datetime.utcfromtimestamp(0))
maintainers = db.relationship("Maintainer",
secondary=package_maintainer_rel_table,
backref='directly_maintained_packages')
+ # versions backref
@property
def full_name(self):
@@ -33,11 +46,18 @@ class Package(db.Model):
def __repr__(self):
return "<Package '%s/%s'>" % (self.category.name, self.name)
+package_version_keywords_rel_table = db.Table('package_version_keywords_rel',
+ db.Column('package_version_id', db.Integer, db.ForeignKey('package_version.id')),
+ db.Column('keyword_id', db.Integer, db.ForeignKey('keyword.id')),
+)
+
class PackageVersion(db.Model):
id = db.Column(db.Integer, primary_key=True)
version = db.Column(db.Unicode(128), nullable=False)
package_id = db.Column(db.Integer, db.ForeignKey('package.id'), nullable=False)
- package = db.relationship('Package', backref=db.backref('versions', lazy='dynamic'))
+ package = db.relationship('Package', backref=db.backref('versions', lazy='select'))
+ keywords = db.relationship("Keyword", secondary=package_version_keywords_rel_table)
+ masks = db.Column(db.UnicodeText, nullable=True) # Concatenated mask reasons if p.masked, NULL if not a masked version. TODO: arch specific masks
def __repr__(self):
return "<PackageVersion '%s/%s-%s'>" % (self.package.category.name, self.package.name, self.version)
next reply other threads:[~2016-12-07 7:10 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-07 7:10 Mart Raudsepp [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-01-23 0:06 [gentoo-commits] proj/grumpy:master commit in: backend/lib/ Gilles Dartiguelongue
2017-01-22 17:46 Gilles Dartiguelongue
2017-01-22 17:13 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:24 Gilles Dartiguelongue
2017-01-22 12:24 Gilles Dartiguelongue
2017-01-22 12:24 Gilles Dartiguelongue
2017-01-22 12:08 Mart Raudsepp
2017-01-22 12:00 Gilles Dartiguelongue
2017-01-22 12:00 Gilles Dartiguelongue
2017-01-22 11:59 Mart Raudsepp
2017-01-22 11:04 Gilles Dartiguelongue
2017-01-22 11:04 Gilles Dartiguelongue
2016-12-07 4:42 Mart Raudsepp
2016-12-07 2:53 Mart Raudsepp
2016-12-07 2:40 Mart Raudsepp
2016-12-07 2:10 Mart Raudsepp
2016-12-07 1:58 Mart Raudsepp
2016-12-07 1:58 Mart Raudsepp
2016-12-07 0:34 Mart Raudsepp
2016-12-05 17:46 Mart Raudsepp
2016-12-04 8:04 Mart Raudsepp
2016-12-04 8:04 Mart Raudsepp
2016-12-04 7:44 Mart Raudsepp
2016-12-04 6:27 Mart Raudsepp
2016-12-04 6:27 Mart Raudsepp
2016-12-04 5:26 Mart Raudsepp
2016-12-04 5:26 Mart Raudsepp
2016-12-04 4:56 Mart Raudsepp
2016-11-11 1:22 Mart Raudsepp
2016-11-10 15:50 Mart Raudsepp
2016-09-24 7:02 Mart Raudsepp
2016-09-07 20:21 Mart Raudsepp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1481094592.8d90fa100941d73a026a7270f64d16fbe65dc8a5.leio@gentoo \
--to=leio@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox