Added edit view for roms

This commit is contained in:
Sebastian 2017-05-16 00:05:52 +02:00
parent 62c35a3b0d
commit 59d6c0e1b5
5 changed files with 223 additions and 9 deletions

View File

@ -14,6 +14,13 @@
<div class="box"> <div class="box">
<h1 class="title is-2">{{rom.name}}</h1> <h1 class="title is-2">{{rom.name}}</h1>
{% if rom.user.id == user.id %}
<div class="columns less-margin">
<div class="column">
<a href="{% url 'romupdate' id=rom.id %}"><i class="fa fa-pencil"></i> Rom bearbeiten</a>
</div>
</div>
{% endif %}
<div class="columns less-margin"> <div class="columns less-margin">
<div class="column"> <div class="column">
{% for tag in rom.tags.all %} {% for tag in rom.tags.all %}

View File

@ -0,0 +1,197 @@
{% extends "base.html" %}
{% block title %}Rom bearbeiten{% endblock %}
{% block nav_rom_upload_class %}is-active{% endblock %}
{% block content %}
<div class="rom-overview">
<div class="columns">
<div class="column">
<div class="box">
<h1 class="title is-1">Rom bearbeiten</h1>
{% if form.non_field_errors %}
<div class="message is-danger">
<div class="message-header">
<strong>Nope!</strong>
</div>
<div class="message-body">
{{ form.non_field_errors }}
</div>
</div>
{% endif %}
<form enctype="multipart/form-data" method="post">
{% csrf_token %}
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label" for="{{form.tags.id_for_label}}">{{form.tags.label}}</label>
</div>
<div class="field-body">
<div class="field is-narrow">
<div class="control has-icons-left has-icons-right">
<input class="input {% if form.tags.errors %}is-danger{% endif %}"
type="text" name="{{form.tags.html_name}}"
id="{{form.tags.id_for_label}}" value="{{form.tags.value|default_if_none:''}}" />
<span class="icon is-small is-left">
<i class="fa fa-tags"></i>
</span>
<span class="icon is-small is-right">
{% if form.tags.errors %}
<i class="fa fa-warning"></i>
{% endif %}
</span>
</div>
<p class="help is-danger">
{{form.tags.errors.as_text}}
</p>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label" for="{{form.description.id_for_label}}">{{form.description.label}}</label>
</div>
<div class="field-body">
<div class="field">
<p class="control">
<textarea name="{{form.description.html_name}}"
id="{{form.description.id_for_label}}"
class="textarea {% if form.description.errors %}is-danger{% endif %} is-primary">{{form.description.value|default_if_none:''}}</textarea>
</p>
<p class="help is-danger">
{{form.description.errors.as_text}}
</p>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label" for="{{form.cover.id_for_label}}">{{form.cover.label}}</label>
</div>
<div class="field-body">
<div class="field is-narrow has-addons">
<input class="hidden" type="file" name="{{form.cover.html_name}}" id="{{form.cover.id_for_label}}" value="{{form.cover.value|default_if_none:''}}" />
<div class="control has-icons-left has-icons-right">
<input class="input {% if form.cover.errors %}is-danger{% endif %} is-primary"
type="text" value="{{form.cover.value|default_if_none:''}}" />
<span class="icon is-small is-left">
<i class="fa fa-picture-o"></i>
</span>
<span class="icon is-small is-right">
{% if form.cover.errors %}
<i class="fa fa-warning"></i>
{% endif %}
</span>
</div>
<div class="control">
<a class="button is-primary">
Durchsuchen
</a>
</div>
</div>
<p class="help is-danger">
{{form.cover.errors.as_text}}
</p>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label" for="{{form.high_binary.id_for_label}}">{{form.high_binary.label}}</label>
</div>
<div class="field-body">
<div class="field is-narrow has-addons">
<input class="hidden" type="file" name="{{form.high_binary.html_name}}" id="{{form.high_binary.id_for_label}}" value="{{form.high_binary.value|default_if_none:''}}" />
<div class="control has-icons-left has-icons-right">
<input class="input {% if form.high_binary.errors %}is-danger{% endif %} is-primary"
type="text" value="{{form.high_binary.value|default_if_none:''}}" />
<span class="icon is-small is-left">
<i class="fa fa-microchip"></i>
</span>
<span class="icon is-small is-right">
{% if form.high_binary.errors %}
<i class="fa fa-warning"></i>
{% endif %}
</span>
</div>
<div class="control">
<a class="button is-primary">
Durchsuchen
</a>
</div>
</div>
<p class="help is-danger">
{{form.high_binary.errors.as_text}}
</p>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label" for="{{form.low_binary.id_for_label}}">{{form.low_binary.label}}</label>
</div>
<div class="field-body">
<div class="field is-narrow has-addons">
<input class="hidden" type="file" name="{{form.low_binary.html_name}}" id="{{form.low_binary.id_for_label}}" value="{{form.low_binary.value|default_if_none:''}}" />
<div class="control has-icons-left has-icons-right">
<input class="input {% if form.low_binary.errors %}is-danger{% endif %} is-primary"
type="text" value="{{form.low_binary.value|default_if_none:''}}" />
<span class="icon is-small is-left">
<i class="fa fa-microchip"></i>
</span>
<span class="icon is-small is-right">
{% if form.low_binary.errors %}
<i class="fa fa-warning"></i>
{% endif %}
</span>
</div>
<div class="control">
<a class="button is-primary">
Durchsuchen
</a>
</div>
</div>
<p class="help is-danger">
{{form.low_binary.errors.as_text}}
</p>
</div>
</div>
<div class="field is-grouped">
<p class="control">
<button class="button is-primary">Hochladen</button>
</p>
</div>
</form>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$("input[type='file']").each(function () {
var fileField = $(this);
var textField = fileField.next('.control').find('input');
var button = fileField.next('.control').next('.control').find('a');
fileField.change(function() {
textField.val(fileField.val());
});
button.click(function() {
fileField.click()
});
});
});
</script>
{% endblock %}

View File

@ -1,6 +1,6 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from roms.views import RomListJson, RomDetailViewJson, RomList, RomDetailView, RomCreateView from roms.views import RomListJson, RomDetailViewJson, RomList, RomDetailView, RomCreateView, RomUpdateView
urlpatterns = [ urlpatterns = [
url(r'^json/list/$', RomListJson.as_view()), url(r'^json/list/$', RomListJson.as_view()),
@ -10,5 +10,7 @@ urlpatterns = [
url(r'^list/$', RomList.as_view(), name = 'romlist'), url(r'^list/$', RomList.as_view(), name = 'romlist'),
url(r'^list/(?P<tag>[a-zA-Z0-9-]+)/$', RomList.as_view(), name = 'romlist'), url(r'^list/(?P<tag>[a-zA-Z0-9-]+)/$', RomList.as_view(), name = 'romlist'),
url(r'^details/(?P<id>[0-9]+)/$', RomDetailView.as_view(), name = 'romdetails'), url(r'^details/(?P<id>[0-9]+)/$', RomDetailView.as_view(), name = 'romdetails'),
url(r'^new/$', RomCreateView.as_view(), name = 'romcreate')
url(r'^new/$', RomCreateView.as_view(), name = 'romcreate'),
url(r'^edit/(?P<id>[0-9]+)/$', RomUpdateView.as_view(), name = 'romupdate')
] ]

View File

@ -1,6 +1,6 @@
from django.views.generic.list import ListView from django.views.generic.list import ListView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView from django.views.generic.edit import CreateView, UpdateView
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import JsonResponse from django.http import JsonResponse
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
@ -50,9 +50,6 @@ class RomCreateView(LoginRequiredMixin, CreateView):
fields = ['name', 'description', 'cover', 'low_binary', 'high_binary', 'tags'] fields = ['name', 'description', 'cover', 'low_binary', 'high_binary', 'tags']
template_name = 'roms/create.html' template_name = 'roms/create.html'
def get_queryset(self):
return Rom.objects.filtered(user__id = request.user.id)
def form_valid(self, form): def form_valid(self, form):
res = super(RomCreateView, self).form_valid(form) res = super(RomCreateView, self).form_valid(form)
@ -62,6 +59,17 @@ class RomCreateView(LoginRequiredMixin, CreateView):
return res return res
class RomUpdateView(LoginRequiredMixin, UpdateView):
model = Rom
pk_url_kwarg = 'id'
fields = ['description', 'cover', 'low_binary', 'high_binary', 'tags']
template_name = 'roms/update.html'
def get_queryset(self):
return Rom.objects.filter(user__id = self.request.user.id)
class RomListJson(ListView): class RomListJson(ListView):

View File

@ -15,7 +15,7 @@
<nav class="nav has-shadow"> <nav class="nav has-shadow">
<div class="container"> <div class="container">
<div class="nav-left"> <div class="nav-left">
<a class="nav-item"> <a href="{% url 'romlist' %}" class="nav-item">
<img src="{% static "images/logo.png" %}"/> <img src="{% static "images/logo.png" %}"/>
</a> </a>
<a class="nav-item is-tab is-hidden-mobile {% block nav_rom_class %}{% endblock %}" <a class="nav-item is-tab is-hidden-mobile {% block nav_rom_class %}{% endblock %}"
@ -24,7 +24,7 @@
</a> </a>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a class="nav-item is-tab is-hidden-mobile {% block nav_rom_upload_class %}{% endblock %}" <a class="nav-item is-tab is-hidden-mobile {% block nav_rom_upload_class %}{% endblock %}"
href=""> href="{% url 'romcreate' %}">
Rom Hochladen Rom Hochladen
</a> </a>
{% endif %} {% endif %}
@ -42,7 +42,7 @@
</a> </a>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a class="nav-item is-tab is-hidden-tablet {% block nav_mobile_rom_upload_class %}{% endblock %}" <a class="nav-item is-tab is-hidden-tablet {% block nav_mobile_rom_upload_class %}{% endblock %}"
href=""> href="{% url 'romcreate' %}">
Rom Hochladen Rom Hochladen
</a> </a>
{% endif %} {% endif %}