1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# Copyright 2009 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
# pylint: disable-msg=E0611,W0212
"""Language pack store."""
__metaclass__ = type
__all__ = [
'LanguagePack',
'LanguagePackSet',
]
from sqlobject import ForeignKey
from zope.interface import implements
from canonical.database.constants import UTC_NOW
from canonical.database.datetimecol import UtcDateTimeCol
from canonical.database.enumcol import EnumCol
from canonical.database.sqlbase import (
SQLBase,
sqlvalues,
)
from lp.translations.enums import LanguagePackType
from lp.translations.interfaces.languagepack import (
ILanguagePack,
ILanguagePackSet,
)
class LanguagePack(SQLBase):
implements(ILanguagePack)
_table = 'LanguagePack'
file = ForeignKey(
foreignKey='LibraryFileAlias', dbName='file', notNull=True)
date_exported = UtcDateTimeCol(notNull=True, default=UTC_NOW)
distroseries = ForeignKey(
foreignKey='DistroSeries', dbName='distroseries', notNull=True)
type = EnumCol(
enum=LanguagePackType, notNull=True, default=LanguagePackType.FULL)
updates = ForeignKey(
foreignKey='LanguagePack', dbName='updates',
notNull=False, default=None)
class LanguagePackSet:
implements(ILanguagePackSet)
def addLanguagePack(self, distroseries, file_alias, type):
"""See `ILanguagePackSet`."""
assert type in LanguagePackType, (
'Unknown language pack type: %s' % type.name)
if (type == LanguagePackType.DELTA and
distroseries.language_pack_base is None):
raise AssertionError(
"There is no base language pack available for %s's %s to get"
" deltas from." % sqlvalues(
distroseries.distribution.name, distroseries.name))
updates = None
if type == LanguagePackType.DELTA:
updates = distroseries.language_pack_base
return LanguagePack(
file=file_alias, date_exported=UTC_NOW, distroseries=distroseries,
type=type, updates=updates)
|