Skip to content

Commit

Permalink
Merge pull request #26 from l0rb/corpus-settings
Browse files Browse the repository at this point in the history
Corpus settings
  • Loading branch information
interrogator committed Dec 10, 2019
2 parents 119859c + eebb129 commit 73eea62
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 16 deletions.
9 changes: 5 additions & 4 deletions accounts/urls.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.urls import path

from accounts import views as accounts_views
from accounts import views


urlpatterns = [
path('signup/', accounts_views.signup, name='signup'),
path('logout/', accounts_views.logout_view, name='logout'),
path('login/', accounts_views.login_view, name='login'),
path('signup/', views.signup, name='signup'),
path('logout/', views.logout_view, name='logout'),
path('login/', views.login_view, name='login'),
path('corpus_settings/', views.corpus_settings, name='corpus_settings'),
]
20 changes: 20 additions & 0 deletions accounts/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import UserCreationForm
from django import forms

import explore.models

def signup(request):
if request.method == 'POST':
Expand All @@ -25,3 +28,20 @@ def login_view(request):
login(request, user)
return redirect('/')

def corpus_settings(request):
fields = ('name', 'desc')
formset_factory = forms.modelformset_factory(explore.models.Corpus, fields=fields, extra=0)

if request.method == 'POST':
formset = formset_factory(request.POST)
if formset.is_valid():
formset.save()

corpora = explore.models.Corpus.objects.all()
formset = formset_factory(queryset=corpora)
context = {
'corpora': corpora,
'formset': formset,
}
return render(request, 'accounts/corpus_settings.html', context)

27 changes: 16 additions & 11 deletions buzzword/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,18 @@
# Application definition

INSTALLED_APPS = [
"dpd_static_support",
"start.apps.StartConfig",
"explore.apps.ExploreConfig",
"django_plotly_dash.apps.DjangoPlotlyDashConfig",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"accounts",
'dpd_static_support',
'start.apps.StartConfig',
'explore.apps.ExploreConfig',
'django_plotly_dash.apps.DjangoPlotlyDashConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'guardian',
'accounts',
]

STATICFILES_FINDERS = [
Expand Down Expand Up @@ -137,6 +138,10 @@
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",},
]

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'guardian.backends.ObjectPermissionBackend',
)

# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/
Expand Down
24 changes: 24 additions & 0 deletions buzzword/templates/accounts/corpus_settings.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

{% block content %}
<h2>Corpus Settings</h2>
<table class="table">
<form method="post" novalidate>
{{ formset.management_form }}
{% csrf_token %}
<tr>
{% for form in formset %}
<td>
Slug: {{ form.instance.slug }}
{{ form.as_p }}
</td>
{% endfor %}
</tr>
<tr>
<td>
<button type="submit" class="btn btn-primary">Save</button>
</td>
</tr>
</form>
</table>
{% endblock %}

13 changes: 12 additions & 1 deletion explore/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
from django.contrib import admin
from explore.models import Corpus
from guardian.admin import GuardedModelAdmin

@admin.register(Corpus)
class CorpusAdmin(GuardedModelAdmin):
list_display = ('slug',)

def get_fields(self, request, obj):
if request.user.is_superuser:
return super().get_fields(request, obj)
else: # staff
return ['disabled', 'desc', 'name']

# Register your models here.
3 changes: 3 additions & 0 deletions explore/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ def _string_or_none(jsonfield):
return json.dumps(jsonfield)

class Corpus(models.Model):
class Meta:
verbose_name_plural = "Corpora" # can't tolerate "Corpuss"

slug = models.SlugField(
max_length=255, unique=True
) # this can't be null because a name needs to exist
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
django==3.0.0
#django-guardian==2.1.0
git+git://github.com/l0rb/django-guardian@devel#egg=django-guardian
django-plotly-dash==1.1.3
dpd-static-support==0.0.4
dash_bootstrap_components==0.7.2
Expand Down

0 comments on commit 73eea62

Please sign in to comment.