def index(request: HttpRequest): repositories = Repository.index_queryset(request).annotate( package_count=Count('element')) if not request.user.has_perm('repository.add_repository'): form = None elif request.method == 'POST': form = get_repository_form()(request.POST) if form.is_valid(): author = None if request.user.is_anonymous() else request.user repo = Repository(author=author, name=form.cleaned_data['name'], on_index=form.cleaned_data['on_index'], archive_type=form.cleaned_data['archive_type'], is_private=form.cleaned_data['is_private']) repo.save() for group in form.cleaned_data['admin_group']: repo.admin_group.add(group) for state in set(form.cleaned_data['states'].split()): ArchiveState(repository=repo, name=state, author=author).save() messages.info(request, _('Your new repository has been created.')) return HttpResponseRedirect(reverse('moneta:index')) else: form = get_repository_form()() # compute repos with admin rights upload_ids = {x.id for x in Repository.upload_queryset(request)} admin_ids = {x.id for x in Repository.admin_queryset(request)} template_values = { 'repositories': repositories, 'form': form, 'request': request, 'upload_ids': upload_ids, 'admin_ids': admin_ids, } return render_to_response('moneta/index.html', template_values, RequestContext(request))
def setUpClass(cls): super().setUpClass() cls.repo = Repository(archive_type=Maven3.archive_type, name='test_maven3') cls.repo.save() cls.elts = [ Element( version='1.1.4c', archive='xpp3.xpp3_min', name='xpp3_min', filename='xpp3_min-1.1.4c.jar', full_name='xpp3_min-1.1.4c.jar', sha1='19d4e90b43059058f6e056f794f0ea4030d60b86', ), Element( version='1.0-2', archive='javax.xml.stream.stax-api', name='stax-api', filename='stax-api-1.0-2.jar', full_name='stax-api-1.0-2.jar', sha1='d6337b0de8b25e53e81b922352fbea9f9f57ba0b', ), Element( version='1.0-2', archive='javax.xml.stream.stax-api', name='stax-api', filename='stax-api-1.0-2.pom', full_name='stax-api-1.0-2.pom', sha1='5379b69f557c5ab7c144d22bf7c3768bd2adb93d', ), Element( version='2.2.2', archive='javax.xml.bind.jaxb-api', name='jaxb-api', filename='jaxb-api-2.2.2.jar', full_name='jaxb-api-2.2.2.jar', sha1='aeb3021ca93dde265796d82015beecdcff95bf09', ), Element( version='2.2.2', archive='javax.xml.bind.jaxb-api', name='jaxb-api', filename='jaxb-api-2.2.2.pom', full_name='jaxb-api-2.2.2.pom', sha1='a8368234f7555dd64d3a9060a0b02e6c215694fb', ), ] for elt in cls.elts: elt.repository = cls.repo Element.objects.bulk_create(cls.elts)
def create_repository(self, repo_cls, name='test_repo', author=None, states='qualif prod'): assert issubclass(repo_cls, RepositoryModel) if author is None: author = User.objects.get_or_create(username='******')[0] repo = Repository(author=author, name=name, on_index=True, archive_type=repo_cls.archive_type, is_private=False) repo.save() for state in states.split(): ArchiveState(repository=repo, name=state, author=author).save() return repo