def __init__(self, *args, **kwargs): super(PackageSearchForm, self).__init__(*args, **kwargs) self.fields["repo"].choices = [("", "All")] + make_choice([repo.name for repo in Repo.objects.all()]) self.fields["arch"].choices = [("", "All")] + make_choice([arch.name for arch in Arch.objects.all()]) self.fields["q"].widget.attrs.update({"size": "30"}) maints = User.objects.filter(is_active=True).order_by("username") self.fields["maintainer"].choices = [("", "All"), ("orphan", "Orphan")] + [ (m.username, m.get_full_name()) for m in maints ]
def __init__(self, *args, **kwargs): super(MirrorlistForm, self).__init__(*args, **kwargs) countries = Mirror.objects.filter(active=True).values_list("country", flat=True).distinct().order_by("country") self.fields["country"].choices = [("all", "All")] + make_choice(countries) self.fields["country"].initial = ["all"] protos = make_choice(MirrorProtocol.objects.filter(is_download=True)) initial = MirrorProtocol.objects.filter(is_download=True, default=True) self.fields["protocol"].choices = protos self.fields["protocol"].initial = [p.protocol for p in initial] self.fields["ip_version"].initial = ["4"]
def __init__(self, *args, **kwargs): super(MirrorlistForm, self).__init__(*args, **kwargs) mirrors = Mirror.objects.filter(active=True).values_list( 'country', flat=True).distinct().order_by('country') self.fields['country'].choices = [('all','All')] + make_choice( mirrors) self.fields['country'].initial = ['all'] protos = make_choice( MirrorProtocol.objects.filter(is_download=True)) self.fields['protocol'].choices = protos self.fields['protocol'].initial = [t[0] for t in protos] self.fields['ip_version'].initial = ['4']
def __init__(self, *args, **kwargs): show_staging = kwargs.pop('show_staging', False) super(GroupSearchForm, self).__init__(*args, **kwargs) repos = Repo.objects.all() if not show_staging: repos = repos.filter(staging=False) self.fields['repo'].choices = make_choice( [repo.name for repo in repos]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()])
def __init__(self, *args, **kwargs): super(PackageSearchForm, self).__init__(*args, **kwargs) self.fields['repo'].choices = make_choice( [repo.name for repo in Repo.objects.all()]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) maints = User.objects.filter(is_active=True).order_by( 'first_name', 'last_name') self.fields['maintainer'].choices = \ [('', 'All'), ('orphan', 'Orphan')] + \ [(m.username, m.get_full_name()) for m in maints] self.fields['packager'].choices = \ [('', 'All'), ('unknown', 'Unknown')] + \ [(m.username, m.get_full_name()) for m in maints]
class PackageSearchForm(forms.Form): repo = forms.MultipleChoiceField(required=False) arch = forms.MultipleChoiceField(required=False) name = forms.CharField(required=False) desc = forms.CharField(required=False) q = forms.CharField(required=False) sort = forms.CharField(required=False, widget=forms.HiddenInput()) maintainer = forms.ChoiceField(required=False) packager = forms.ChoiceField(required=False) flagged = forms.ChoiceField( choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']), required=False) def __init__(self, *args, **kwargs): show_staging = kwargs.pop('show_staging', False) super(PackageSearchForm, self).__init__(*args, **kwargs) repos = Repo.objects.all() if not show_staging: repos = repos.filter(staging=False) self.fields['repo'].choices = make_choice( [repo.name for repo in repos]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) maints = User.objects.filter(is_active=True).order_by( 'first_name', 'last_name') self.fields['maintainer'].choices = \ [('', 'All'), ('orphan', 'Orphan')] + \ [(m.username, m.get_full_name()) for m in maints] self.fields['packager'].choices = \ [('', 'All'), ('unknown', 'Unknown')] + \ [(m.username, m.get_full_name()) for m in maints]
class UserProfile(models.Model): notify = models.BooleanField( "Send notifications", default=True, help_text="When enabled, send user 'flag out-of-date' notifications") time_zone = models.CharField(max_length=100, choices=make_choice(pytz.common_timezones), default="UTC", help_text="Used for developer clock page") alias = models.CharField(max_length=50, help_text="Required field") public_email = models.CharField(max_length=50, help_text="Required field") other_contact = models.CharField(max_length=100, null=True, blank=True) pgp_key = PGPKeyField( max_length=40, null=True, blank=True, verbose_name="PGP key fingerprint", help_text="consists of 40 hex digits; use `gpg --fingerprint`") website = models.CharField(max_length=200, null=True, blank=True) yob = models.IntegerField("Year of birth", null=True, blank=True) country = CountryField(blank=True) location = models.CharField(max_length=50, null=True, blank=True) languages = models.CharField(max_length=50, null=True, blank=True) interests = models.CharField(max_length=255, null=True, blank=True) occupation = models.CharField(max_length=50, null=True, blank=True) roles = models.CharField(max_length=255, null=True, blank=True) favorite_distros = models.CharField(max_length=255, null=True, blank=True) picture = models.FileField(upload_to='devs', default='devs/silhouette.png', help_text="Ideally 125px by 125px") user = models.OneToOneField(User, related_name='userprofile') allowed_repos = models.ManyToManyField('main.Repo', blank=True) latin_name = models.CharField( max_length=255, null=True, blank=True, help_text="Latin-form name; used only for non-Latin full names") last_modified = models.DateTimeField(editable=False) class Meta: db_table = 'user_profiles' get_latest_by = 'last_modified' verbose_name = 'additional profile data' verbose_name_plural = 'additional profile data' def get_absolute_url(self): # TODO: this is disgusting. find a way to consolidate this logic with # public.views.userlist among other places, and make some constants or # something so we aren't using copies of string names everywhere. group_names = self.user.groups.values_list('name', flat=True) if "Developers" in group_names: prefix = "developers" elif "Trusted Users" in group_names: prefix = "trustedusers" else: prefix = "fellows" return '/%s/#%s' % (prefix, self.user.username)
class UserProfile(models.Model): latin_name = models.CharField( max_length=255, null=True, blank=True, help_text="Latin-form name; used only for non-Latin full names") notify = models.BooleanField( "Send notifications", default=True, help_text="When enabled, send user 'flag out-of-date' notifications") time_zone = models.CharField( max_length=100, choices=make_choice(pytz.common_timezones), default="UTC", help_text="Used for developer clock page") alias = models.CharField( max_length=50, help_text="Required field") public_email = models.CharField( max_length=50, help_text="Required field") other_contact = models.CharField(max_length=100, null=True, blank=True) pgp_key = PGPKeyField( max_length=40, null=True, blank=True, verbose_name="PGP key fingerprint", help_text="consists of 40 hex digits; use `gpg --fingerprint`") website = models.CharField(max_length=200, null=True, blank=True) website_rss = models.CharField(max_length=200, null=True, blank=True, help_text='RSS Feed of your website for planet.archlinux.org') yob = models.IntegerField("Year of birth", null=True, blank=True) country = CountryField(blank=True) location = models.CharField(max_length=50, null=True, blank=True) languages = models.CharField(max_length=50, null=True, blank=True) interests = models.CharField(max_length=255, null=True, blank=True) occupation = models.CharField(max_length=50, null=True, blank=True) roles = models.CharField(max_length=255, null=True, blank=True) favorite_distros = models.CharField(max_length=255, null=True, blank=True) picture = models.FileField( upload_to='devs', default='devs/silhouette.png', help_text="Ideally 125px by 125px") user = models.OneToOneField(User, related_name='userprofile', on_delete=models.CASCADE) allowed_repos = models.ManyToManyField('main.Repo', blank=True) rebuilderd_updates = models.BooleanField( default=False, help_text='Receive reproducible build package updates') repos_auth_token = models.CharField(max_length=32, null=True, blank=True) last_modified = models.DateTimeField(editable=False) class Meta: db_table = 'user_profiles' get_latest_by = 'last_modified' verbose_name = 'additional profile data' verbose_name_plural = 'additional profile data' def get_absolute_url(self): user = self.user group = StaffGroup.objects.filter(group=user.groups.all().first()).get() if group: return '%s#%s' % (group.get_absolute_url(), user.username) return None
def __init__(self, *args, **kwargs): show_staging = kwargs.pop('show_staging', False) super(PackageSearchForm, self).__init__(*args, **kwargs) repos = Repo.objects.all() if not show_staging: repos = repos.filter(staging=False) self.fields['repo'].choices = make_choice([repo.name for repo in repos]) self.fields['arch'].choices = make_choice([arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) profile_ids = UserProfile.allowed_repos.through.objects.values('userprofile_id') people = User.objects.filter( is_active=True, userprofile__id__in=profile_ids).order_by( 'first_name', 'last_name') maintainers = [('', 'All'), ('orphan', 'Orphan')] + \ [(p.username, p.get_full_name()) for p in people] packagers = [('', 'All'), ('unknown', 'Unknown')] + \ [(p.username, p.get_full_name()) for p in people] self.fields['maintainer'].choices = maintainers self.fields['packager'].choices = packagers
class PackageSearchForm(forms.Form): limit = forms.IntegerField(required=False, min_value=0) page = forms.CharField(required=False) repo = forms.MultipleChoiceField(required=False) arch = forms.MultipleChoiceField(required=False) name = forms.CharField(required=False) desc = forms.CharField(required=False) q = forms.CharField(required=False, max_length=100, widget=forms.TextInput(attrs={'autofocus': True})) sort = forms.CharField(required=False, widget=forms.HiddenInput()) maintainer = forms.ChoiceField(required=False) packager = forms.ChoiceField(required=False) flagged = forms.ChoiceField(choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']), required=False) def __init__(self, *args, **kwargs): show_staging = kwargs.pop('show_staging', False) super(PackageSearchForm, self).__init__(*args, **kwargs) repos = Repo.objects.all() if not show_staging: repos = repos.filter(staging=False) self.fields['repo'].choices = make_choice( [repo.name for repo in repos]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) profile_ids = UserProfile.allowed_repos.through.objects.values( 'userprofile_id') people = User.objects.filter(is_active=True, userprofile__id__in=profile_ids).order_by( 'first_name', 'last_name') maintainers = [('', 'All'), ('orphan', 'Orphan')] + \ [(p.username, p.get_full_name()) for p in people] packagers = [('', 'All'), ('unknown', 'Unknown')] + \ [(p.username, p.get_full_name()) for p in people] self.fields['maintainer'].choices = maintainers self.fields['packager'].choices = packagers def exact_matches(self): # only do exact match search if 'q' is sole parameter if self.changed_data != ['q']: return [] if 'q' not in self.cleaned_data: return [] return Package.objects.normal().filter( pkgname__iexact=self.cleaned_data['q'])
def __init__(self, *args, **kwargs): show_staging = kwargs.pop('show_staging', False) super(PackageSearchForm, self).__init__(*args, **kwargs) repos = Repo.objects.all() if not show_staging: repos = repos.filter(staging=False) self.fields['repo'].choices = make_choice( [repo.name for repo in repos]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) profile_ids = UserProfile.allowed_repos.through.objects.values('userprofile_id') people = User.objects.filter( is_active=True, userprofile__id__in=profile_ids).order_by( 'first_name', 'last_name') maintainers = [('', 'All'), ('orphan', 'Orphan')] + \ [(p.username, p.get_full_name()) for p in people] packagers = [('', 'All'), ('unknown', 'Unknown')] + \ [(p.username, p.get_full_name()) for p in people] self.fields['maintainer'].choices = maintainers self.fields['packager'].choices = packagers
class PackageSearchForm(forms.Form): repo = forms.MultipleChoiceField(required=False) arch = forms.MultipleChoiceField(required=False) name = forms.CharField(required=False) desc = forms.CharField(required=False) q = forms.CharField(required=False) sort = forms.CharField(required=False, widget=forms.HiddenInput()) maintainer = forms.ChoiceField(required=False) packager = forms.ChoiceField(required=False) last_update = forms.DateField(required=False, widget=AdminDateWidget(), label='Last Updated After') flagged = forms.ChoiceField(choices=[('', 'All')] + make_choice(['Flagged', 'Not Flagged']), required=False) limit = LimitTypedChoiceField(choices=make_choice([50, 100, 250]) + [('all', 'All')], coerce=coerce_limit_value, required=False, initial=50) def __init__(self, *args, **kwargs): super(PackageSearchForm, self).__init__(*args, **kwargs) self.fields['repo'].choices = make_choice( [repo.name for repo in Repo.objects.all()]) self.fields['arch'].choices = make_choice( [arch.name for arch in Arch.objects.all()]) self.fields['q'].widget.attrs.update({"size": "30"}) maints = User.objects.filter(is_active=True).order_by( 'first_name', 'last_name') self.fields['maintainer'].choices = \ [('', 'All'), ('orphan', 'Orphan')] + \ [(m.username, m.get_full_name()) for m in maints] self.fields['packager'].choices = \ [('', 'All'), ('unknown', 'Unknown')] + \ [(m.username, m.get_full_name()) for m in maints]