Add members

This commit is contained in:
2020-06-09 11:32:07 +00:00
parent 9e670c289f
commit 7c09d76035
11 changed files with 162 additions and 3 deletions

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@ fet2020/files/*
fet2020/.env/*
*.sqlite3
fet2020/posts/migrations/*
fet2020/members/migrations/*
.theia/*

View File

@@ -33,6 +33,7 @@ CKEDITOR_UPLOAD_PATH = 'upload'
INSTALLED_APPS = [
'posts.apps.PostsConfig',
'members.apps.MembersConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',

View File

@@ -31,5 +31,6 @@ urlpatterns = [
path('', views.index, name='home'),
path('index.html', views.index, name='home'),
path('ckeditor/', include('ckeditor_uploader.urls')),
path('api/', include(router.urls))
path('api/', include(router.urls)),
path('members/', include('members.urls')),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

32
fet2020/members/admin.py Normal file
View File

@@ -0,0 +1,32 @@
from django.contrib import admin
from .models import Member, Job, JobMember
from .forms import MyMemberForm, MyJobForm
class JobMemberInline(admin.TabularInline):
model = JobMember
extra = 1
class MyMemberAdmin(admin.ModelAdmin):
form = MyMemberForm
model = Member
list_display = ['name', 'nickname', 'mailaccount', 'role', 'body', 'image']
inlines = (JobMemberInline,)
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form, change)
admin.site.register(Member, MyMemberAdmin)
class MyJobAdmin(admin.ModelAdmin):
form = MyJobForm
model = Job
list_display = ['name', 'body', 'image']
inlines = (JobMemberInline,)
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form, change)
admin.site.register(Job, MyJobAdmin)

5
fet2020/members/apps.py Normal file
View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class MembersConfig(AppConfig):
name = 'members'

19
fet2020/members/forms.py Normal file
View File

@@ -0,0 +1,19 @@
from django import forms
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from .models import Member, Job
class MyMemberForm(forms.ModelForm):
class Meta:
model = Member
fields = ['name','nickname','mailaccount', 'role', 'body', 'image']
widgets = {'body': CKEditorUploadingWidget(config_name='default')}
class MyJobForm(forms.ModelForm):
class Meta:
model = Job
fields = ['name', 'body', 'image']
widgets = {'body': CKEditorUploadingWidget(config_name='default')}

71
fet2020/members/models.py Normal file
View File

@@ -0,0 +1,71 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
import uuid
class MemberManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(role='A')
class PensionManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(role='P')
class Member(models.Model):
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=128)
nickname = models.CharField(max_length=128)
mailaccount = models.CharField(max_length=128)
role = models.CharField(max_length=1, choices=[('A', _('Active')), ('P', _('Pension'))], default='A')
body = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
#birthday
#handy phone
# TimeStamps
date_modified = models.DateTimeField(auto_now=True)
date_created = models.DateTimeField(auto_now_add=True)
has_jobs = models.ManyToManyField(
'Job',
through='JobMember',
through_fields=('member', 'job')
)
# Managers
all_members = models.Manager()
active_member = MemberManager()
pension_member = PensionManager()
def __str__(self):
return self.name
class Job(models.Model):
name = models.CharField(max_length=128)
body = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
has_members = models.ManyToManyField(
'Member',
through='JobMember',
through_fields=('job', 'member')
)
def __str__(self):
return self.name
class JobMember(models.Model):
member = models.ForeignKey(Member, on_delete=models.CASCADE)
job = models.ForeignKey(Job, on_delete=models.CASCADE)
job_start = models.DateField('Job Start')
job_end = models.DateField('Job Ende', null=True, blank=True)
class Meta:
unique_together = [['member', 'job']]
jobmember = models.Manager()

3
fet2020/members/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

8
fet2020/members/urls.py Normal file
View File

@@ -0,0 +1,8 @@
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]

18
fet2020/members/views.py Normal file
View File

@@ -0,0 +1,18 @@
from django.shortcuts import render
from django.http import HttpResponse
from collections import deque
from .models import Member, JobMember
def index(request):
member = deque(Member.member.all())
jobmember = deque(JobMember.jobmember.all())
context = {
"member": member,
"jobmember": jobmember
}
return render(request, 'member/index.html', context)