|
15 | 15 | from ..models import FlagRequest |
16 | 16 | from main.models import Package |
17 | 17 |
|
18 | | - |
19 | 18 | class FlagForm(forms.Form): |
20 | 19 | email = forms.EmailField(label='E-mail Address') |
21 | 20 | message = forms.CharField(label='Message To Developer', |
@@ -48,40 +47,46 @@ def clean_message(self): |
48 | 47 | def flaghelp(request): |
49 | 48 | return render(request, 'packages/flaghelp.html') |
50 | 49 |
|
51 | | - |
52 | | -@never_cache |
53 | | -def flag(request, name, repo, arch): |
54 | | - pkg = get_object_or_404(Package.objects.normal(), |
55 | | - pkgname=name, repo__name__iexact=repo, arch__name=arch) |
56 | | - if pkg.flag_date is not None: |
57 | | - # already flagged. do nothing. |
58 | | - return render(request, 'packages/flagged.html', {'pkg': pkg}) |
59 | | - |
| 50 | +def find_same_pkgbase(pkg): |
60 | 51 | # Find packages based on the same packagebase |
61 | | - pkg_filter = Q(pkgbase=pkg.pkgbase, flag_date__isnull=True, |
| 52 | + pkg_filter = Q(pkgbase=pkg.pkgbase, |
62 | 53 | repo__testing=pkg.repo.testing, |
63 | 54 | repo__staging=pkg.repo.staging) |
64 | 55 |
|
65 | | - if "lib32-" in name: |
| 56 | + if "lib32-" in pkg.pkgname: |
66 | 57 | # Find normal version of lib32 packages |
67 | 58 | non_lib32_pkg = get_object_or_404(Package.objects.normal(), |
68 | | - pkgname=name.replace("lib32-","")) |
| 59 | + pkgname=pkg.pkgname.replace("lib32-","")) |
69 | 60 | pkg_filter = pkg_filter | Q(pkgbase=non_lib32_pkg.pkgbase, |
70 | | - flag_date__isnull=True) |
| 61 | + repo__testing=pkg.repo.testing, |
| 62 | + repo__staging=pkg.repo.staging) |
71 | 63 | else: |
72 | 64 | # Find lib32 version of normal packages |
73 | 65 | try: |
74 | 66 | lib32_pkg = get_object_or_404(Package.objects.normal(), |
75 | 67 | pkgname="lib32-"+pkg.pkgbase) |
76 | 68 | pkg_filter = pkg_filter | Q(pkgbase=lib32_pkg.pkgbase, |
77 | | - flag_date__isnull=True) |
| 69 | + repo__testing=pkg.repo.testing, |
| 70 | + repo__staging=pkg.repo.staging) |
78 | 71 | except Http404: |
79 | 72 | pass # Do not raise an error when there is no lib32 version |
80 | 73 |
|
81 | | - |
82 | | - |
83 | 74 | pkgs = Package.objects.normal().filter(pkg_filter).order_by( |
84 | 75 | 'pkgname', 'repo__name', 'arch__name') |
| 76 | + |
| 77 | + return pkgs |
| 78 | + |
| 79 | +@never_cache |
| 80 | +def flag(request, name, repo, arch): |
| 81 | + pkg = get_object_or_404(Package.objects.normal(), |
| 82 | + pkgname=name, repo__name__iexact=repo, arch__name=arch) |
| 83 | + if pkg.flag_date is not None: |
| 84 | + # already flagged. do nothing. |
| 85 | + return render(request, 'packages/flagged.html', {'pkg': pkg}) |
| 86 | + |
| 87 | + pkgs = find_same_pkgbase(pkg).filter( |
| 88 | + flag_date__isnull=True) |
| 89 | + |
85 | 90 | authenticated = request.user.is_authenticated |
86 | 91 |
|
87 | 92 | if request.POST: |
@@ -166,11 +171,8 @@ def perform_updates(): |
166 | 171 | def flag_confirmed(request, name, repo, arch): |
167 | 172 | pkg = get_object_or_404(Package, |
168 | 173 | pkgname=name, repo__name__iexact=repo, arch__name=arch) |
169 | | - pkgs = Package.objects.normal().filter( |
170 | | - pkgbase=pkg.pkgbase, flag_date=pkg.flag_date, |
171 | | - repo__testing=pkg.repo.testing, |
172 | | - repo__staging=pkg.repo.staging).order_by( |
173 | | - 'pkgname', 'repo__name', 'arch__name') |
| 174 | + pkgs = find_same_pkgbase(pkg).filter( |
| 175 | + flag_date=pkg.flag_date) |
174 | 176 |
|
175 | 177 | context = {'package': pkg, 'packages': pkgs} |
176 | 178 |
|
|
0 commit comments