Allow creation of repo with label from form

This commit is contained in:
George Lacey 2021-05-07 18:36:15 +01:00
parent 3853f2ba2d
commit c7da5c26c8
2 changed files with 21 additions and 12 deletions

View File

@ -5,3 +5,4 @@ class RepoForm(forms.Form):
fingerprint = forms.CharField(label='Fingerprint') fingerprint = forms.CharField(label='Fingerprint')
location = forms.CharField(label='Location') location = forms.CharField(label='Location')
last_modified = forms.DateTimeField(label='Last Modified', input_formats=["%Y-%m-%dT%H:%M:%S.%z"]) last_modified = forms.DateTimeField(label='Last Modified', input_formats=["%Y-%m-%dT%H:%M:%S.%z"])
label = forms.CharField(label='Label')

View File

@ -1,9 +1,9 @@
from django.shortcuts import render from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotAllowed
from .models import Repo from .models import Repo, Label
from .forms import RepoForm
from django.urls import reverse from django.urls import reverse
from .forms import RepoForm
def index(request): def index(request):
@ -19,17 +19,25 @@ def index(request):
def get_repo(request): def get_repo(request):
if request.method == 'POST': if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = RepoForm(request.POST) form = RepoForm(request.POST)
# check whether it's valid:
if form.is_valid(): if form.is_valid():
print(form.cleaned_data) cdata = form.cleaned_data
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
return HttpResponseRedirect(reverse('index'))
# if a GET (or any other method) we'll create a blank form repo_query = Repo.objects.all().filter(fingerprint=cdata['fingerprint'])
if len(repo_query) > 0:
label = repo_query[0].label
label.label = cdata['label']
label.save()
label, _ = Label.objects.get_or_create(label=cdata['label'])
label.save()
repo, repo_exists = Repo.objects.update_or_create(fingerprint=cdata['fingerprint'],
defaults={'location': cdata['location'],
'last_modified': cdata['last_modified'],
'label': label})
repo.save()
return HttpResponseRedirect(reverse('index'))
else: else:
form = RepoForm() form = RepoForm()