Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import unicode_literals
- import datetime
- from django.db import models
- from django.utils import timezone
- from django.contrib.auth.models import User, AbstractUser
- from django.contrib.auth.admin import UserAdmin
- from django.db.models.signals import post_save
- from django.dispatch import receiver
- from datetime import date
- from itertools import groupby
- from django.utils.encoding import python_2_unicode_compatible
- @python_2_unicode_compatible
- class Profile(models.Model):
- STUDENT = 1
- TEACHER = 2
- SUPERVISOR = 3
- ROLE_CHOICES = (
- (STUDENT, 'Student'),
- (TEACHER, 'Teacher'),
- (SUPERVISOR, 'Supervisor'),
- )
- user = models.OneToOneField(User, on_delete=models.CASCADE)
- location = models.CharField(max_length=30, blank=True)
- birthdate = models.DateField(null=True, blank=True)
- role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, null=True, blank=True)
- class Meta:
- verbose_name = 'profile'
- verbose_name_plural = 'profiles'
- def __str__(self):
- return self.user.username
- @receiver(post_save, sender=User)
- def create_or_update_user_profile(sender, instance, created, **kwargs):
- if created:
- Profile.objects.create(user=instance)
- instance.profile.save()
- class CustomUserAdmin(UserAdmin):
- inlines = (ProfileInline, )
- list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'get_location')
- list_select_related = ('profile', )
- def get_location(self, instance):
- return instance.profile.location
- get_location.short_description = 'Location'
- def get_inline_instances(self, request, obj=None):
- if not obj:
- return list()
- return super(CustomUserAdmin, self).get_inline_instances(request, obj)
- class Question(models.Model):
- question_text = models.CharField(max_length=200)
- pub_date = models.DateTimeField('date published')
- def __str__(self):
- return self.question_text
- def was_published_recently(self):
- return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
- class Choice(models.Model):
- question = models.ForeignKey(Question, on_delete=models.CASCADE)
- choice_text = models.CharField(max_length=200)
- votes = models.IntegerField(default=0)
- def __str__(self):
- return self.choice_text
- class Post(models.Model):
- title = models.CharField(max_length = 20)
- body = models.TextField()
- timestamp = models.DateTimeField()
- class Groups(models.Model):
- groupID = models.CharField(primary_key = True, max_length = 15)
- permissions = models.CharField(max_length = 15)
- description = models.TextField()
- class Users(models.Model):
- userID = models.CharField(primary_key = True, max_length = 16)
- groupID = models.ForeignKey(Groups)
- password = models.CharField(max_length = 16)
- email = models.CharField(max_length = 20)
- fname = models.CharField(max_length = 16)
- sname = models.CharField(max_length = 16)
- description = models.TextField()
- picture = models.ImageField()
- class Positions(models.Model):
- positionID = models.CharField(primary_key = True, max_length = 16)
- description = models.TextField()
- class Venues(models.Model):
- venuesID = models.CharField(primary_key = True, max_length = 16)
- address = models.CharField(max_length = 30)
- website = models.CharField(max_length = 30)
- description = models.TextField()
- class Bands(models.Model):
- bandID = models.CharField(primary_key = True, max_length = 16)
- description = models.TextField()
- picture = models.ImageField()
- class Events(models.Model):
- eventID = models.CharField(primary_key = True, max_length = 16)
- bandID = models.ForeignKey(Bands)
- venuesID = models.ForeignKey(Venues)
- datetime = models.DateTimeField()
- cost = models.CharField(max_length = 4)
- description = models.TextField()
- class BandMembers(models.Model):
- userID = models.ForeignKey(Users)
- bandID = models.ForeignKey(Bands)
- bandManager = models.BooleanField()
- positionID = models.ForeignKey(Positions)
- class Overview(models.Model):
- ID = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')
- day = models.DateTimeField()
- from .models import Profile, Question
- from django.contrib import admin
- from django.contrib.auth.admin import UserAdmin
- from django.contrib.auth.models import User
- from .models import Profile
- class ProfileInline(admin.StackedInline):
- model = Profile
- can_delete = False
- verbose_name_plural = 'Profile'
- fk_name = 'user'
- class CustomUserAdmin(UserAdmin):
- inlines = (ProfileInline, )
- list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'get_location')
- list_select_related = ('profile', )
- def get_location(self, instance):
- return instance.profile.location
- get_location.short_description = 'Location'
- def get_inline_instances(self, request, obj=None):
- if not obj:
- return list()
- return super(CustomUserAdmin, self).get_inline_instances(request, obj)
- admin.site.unregister(User)
- admin.site.register(User, CustomUserAdmin)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement