1 import whoosh
2 import time
3
4 from flask.ext.whooshee import AbstractWhoosheer
5
6 from coprs import models
7 from coprs import whooshee
8 from coprs import db
9
10
11 @whooshee.register_whoosheer
12 -class CoprWhoosheer(AbstractWhoosheer):
13 schema = whoosh.fields.Schema(
14 copr_id=whoosh.fields.NUMERIC(stored=True, unique=True),
15 user_id=whoosh.fields.NUMERIC(stored=True),
16 group_id=whoosh.fields.NUMERIC(stored=True),
17
18
19 ownername=whoosh.fields.TEXT(
20 analyzer=whoosh.analysis.StandardAnalyzer(
21 expression=r"@?\w+(-\.?\w+)*"), field_boost=2),
22 coprname=whoosh.fields.TEXT(
23 analyzer=whoosh.analysis.StandardAnalyzer(
24 expression=r"\w+(-\.?\w+)*"), field_boost=3),
25 chroots=whoosh.fields.TEXT(field_boost=2),
26 packages=whoosh.fields.TEXT(
27 analyzer=whoosh.analysis.StandardAnalyzer(
28 expression=r"\s+", gaps=True), field_boost=2),
29 description=whoosh.fields.TEXT(),
30 instructions=whoosh.fields.TEXT())
31
32 models = [models.Copr, models.Package]
33
34 auto_update = False
35
36 @classmethod
47
48 @classmethod
51
52 @classmethod
63
64 @classmethod
67
68 @classmethod
70 writer.delete_by_term("copr_id", copr.id)
71
72 @classmethod
75
76 @classmethod
78
79
80 result = db.engine.execute(
81 """
82 SELECT os_release, os_version, arch
83 FROM mock_chroot
84 JOIN copr_chroot ON copr_chroot.mock_chroot_id=mock_chroot.id
85 WHERE copr_chroot.copr_id={0}
86 """.format(copr.id)
87 )
88 return ["{}-{}-{}".format(t[0], t[1], t[2]) for t in result.fetchall()]
89
90 @classmethod
92 result = db.engine.execute(
93 """
94 SELECT name
95 FROM package
96 WHERE copr_id={0}
97 """.format(copr.id)
98 )
99 return [row[0] for row in result.fetchall()]
100
101 @classmethod
103 """Should be registered with flask.ext.sqlalchemy.models_committed."""
104 for change in changes:
105 if change[0].__class__ in cls.models:
106 copr_id = change[0].get_search_related_copr_id()
107 db.engine.execute(
108 """
109 UPDATE copr SET latest_indexed_data_update = {0}
110 WHERE copr.id = {1}
111 """.format(int(time.time()), copr_id)
112 )
113