Merge branch 'develop' into api/cleanup

This commit is contained in:
modulos 2017-06-01 20:47:11 +02:00
commit d229d124e9
7 changed files with 119 additions and 48 deletions

View file

@ -4,6 +4,7 @@ from django import forms
from membership.models import CustomUser
from django.contrib.auth import authenticate
from django.utils.translation import ugettext_lazy as _
from utils.stripe_utils import StripeUtils
@ -57,10 +58,12 @@ class HostingUserSignupForm(forms.ModelForm):
class UserHostingKeyForm(forms.ModelForm):
private_key = forms.CharField(widget=forms.PasswordInput(), required=False)
public_key = forms.CharField(widget=forms.PasswordInput(), required=False)
user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(), required=False)
name = forms.CharField(required=False)
private_key = forms.CharField(widget=forms.HiddenInput(), required=False)
public_key = forms.CharField(widget=forms.Textarea(), required=False,
help_text=_('Paste here your public key'))
user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(),
required=False, widget=forms.HiddenInput())
name = forms.CharField(required=True)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
@ -69,9 +72,7 @@ class UserHostingKeyForm(forms.ModelForm):
# print(self.fields)
def clean_name(self):
return "dcl-priv-key-%s" % (
''.join(random.choice(string.ascii_lowercase) for i in range(7))
)
return self.data.get('name')
def clean_user(self):
return self.request.user
@ -90,4 +91,15 @@ class UserHostingKeyForm(forms.ModelForm):
class Meta:
model = UserHostingKey
fields = ['user', 'public_key', 'name']
fields = ['user', 'name', 'public_key']
labels = {
'public_key': _('Writer'),
}
help_texts = {
'public_key': 'Put your shit here',
}
error_messages = {
'name': {
'max_length': _("This writer's name is too long."),
},
}

View file

@ -6,7 +6,7 @@
<div class="row">
<div class="col-md-9 col-md-offset-2">
<div class="col-sm-12">
<form method="POST" action="" >
<form method="POST" action="" novalidate>
{% csrf_token %}
<h3><i class="fa fa-key" aria-hidden="true"></i>{% trans "Access Key"%} </h3>
{% if messages %}
@ -15,28 +15,25 @@
<span>{{ message }}</span>
{% endfor %}
</div>
{% endif %}
<hr/>
{% if not user_key %}
<h3>
{% endif %}
{% for field in form %}
{% bootstrap_field field %}
{% endfor %}
{% buttons %}
<button type="submit" class="btn btn-success">
{% trans "Upload your own key. "%}
</h3>
<div class="form-group">
<label for="comment">Paste here your public key</label>
<textarea class="form-control" rows="6" name="public_key"></textarea>
</div>
<div class="form-group">
<button class="btn btn-success">{% trans "Upload Key"%} </a>
</div>
<h3>
{% trans "Or generate a new key pair."%}
</h3>
<div class="form-group">
</button>
<br />
<br />
{% trans "Or generate a new key pair."%} <br />
<br />
<button class="btn btn-success">{% trans "Generate Key Pair"%} </a>
</button>
{% endbuttons %}
<div class="form-group">
</div>
{% else %}
<h5> Use your created key to access to the machine. If you lost it, contact us. </h5>
<table class="table borderless table-hover">
<br/>
@ -49,6 +46,7 @@
</tr>
</thead>
<tbody>
{% for user_key in keys %}
<tr>
<td scope="row">{{user_key.name}}</td>
<td>{{user_key.created_at}}</td>
@ -57,9 +55,9 @@
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</form>
{% if private_key %}

View file

@ -1,3 +1,5 @@
from django.test import TestCase
# Create your tests here.
test_user_can_add_key()

View file

@ -301,16 +301,12 @@ class GenerateVMSSHKeysView(LoginRequiredMixin, FormView):
self
).get_context_data(**kwargs)
try:
user_key = UserHostingKey.objects.get(
user=self.request.user
)
except UserHostingKey.DoesNotExist:
user_key = None
user_keys = UserHostingKey.objects.filter(
user=self.request.user
)
context.update({
'user_key': user_key
'keys': user_keys
})
return context
@ -351,24 +347,25 @@ class GenerateVMSSHKeysView(LoginRequiredMixin, FormView):
opennebula_user = user_pool.get_by_name(owner.email)
# Get user ssh key
user_key = UserHostingKey.objects.get(user=owner)
public_key = form.cleaned_data.get('public_key')
# Add ssh key to user
manager.oneadmin_client.call('user.update', opennebula_user.id,
'<CONTEXT><SSH_PUBLIC_KEY>{ssh_key}</SSH_PUBLIC_KEY></CONTEXT>'.format(ssh_key=user_key.public_key))
'<CONTEXT><SSH_PUBLIC_KEY>{key}</SSH_PUBLIC_KEY></CONTEXT>'.format(key=public_key))
return render(self.request, self.template_name, context)
def post(self, request, *args, **kwargs):
try:
UserHostingKey.objects.get(
user=self.request.user
)
return HttpResponseRedirect(reverse('hosting:key_pair'))
# try:
# UserHostingKey.objects.get(
# user=self.request.user
# )
# return HttpResponseRedirect(reverse('hosting:key_pair'))
except UserHostingKey.DoesNotExist:
pass
# except UserHostingKey.DoesNotExist:
# pass
form = self.get_form()
if form.is_valid():
return self.form_valid(form)