Add CommonEvent model
This commit is contained in:
parent
6228e0e003
commit
555ccf3fab
4 changed files with 128 additions and 3 deletions
|
@ -5,7 +5,8 @@ from django.utils.safestring import mark_safe
|
||||||
from .models.locale import Language, Continent, Country, SPR, City
|
from .models.locale import Language, Continent, Country, SPR, City
|
||||||
from .models.profiles import UserProfile, Organization, Team, Member, Category, Topic
|
from .models.profiles import UserProfile, Organization, Team, Member, Category, Topic
|
||||||
from .models.search import Searchable
|
from .models.search import Searchable
|
||||||
from .models.events import Place, Event, EventPhoto, Attendee
|
from .models.events import Place, Event, EventPhoto, CommonEvent, Attendee
|
||||||
|
from .models.events import Place, Event, CommonEvent, Attendee
|
||||||
|
|
||||||
admin.site.register(Language)
|
admin.site.register(Language)
|
||||||
admin.site.register(Continent)
|
admin.site.register(Continent)
|
||||||
|
@ -66,6 +67,15 @@ class EventPhotoAdmin(admin.ModelAdmin):
|
||||||
view.short_description = 'Photo'
|
view.short_description = 'Photo'
|
||||||
admin.site.register(EventPhoto, EventPhotoAdmin)
|
admin.site.register(EventPhoto, EventPhotoAdmin)
|
||||||
|
|
||||||
|
class CommonEventAdmin(admin.ModelAdmin):
|
||||||
|
raw_id_fields = ('place', 'city', 'spr', 'country')
|
||||||
|
list_display = ('__str__', 'participant_count', 'organization', 'start_time', 'country', 'spr', 'city')
|
||||||
|
ordering = ('-start_time',)
|
||||||
|
def participant_count(self, event):
|
||||||
|
return event.participating_events.all().count()
|
||||||
|
participant_count.short_description = 'Participants'
|
||||||
|
admin.site.register(CommonEvent, CommonEventAdmin)
|
||||||
|
|
||||||
class MemberAdmin(admin.ModelAdmin):
|
class MemberAdmin(admin.ModelAdmin):
|
||||||
list_display = ('__str__', 'role')
|
list_display = ('__str__', 'role')
|
||||||
list_filter = ('role', 'team')
|
list_filter = ('role', 'team')
|
||||||
|
|
82
events/migrations/0017_add_common_events.py
Normal file
82
events/migrations/0017_add_common_events.py
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
# Generated by Django 2.0 on 2018-03-12 18:57
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('events', '0016_make_searchable_uri_unique'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='CommonEvent',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=150, verbose_name='Event Name')),
|
||||||
|
('start_time', models.DateTimeField(db_index=True, help_text='Local date and time that the event starts', verbose_name='Local Start Time')),
|
||||||
|
('end_time', models.DateTimeField(db_index=True, help_text='Local date and time that the event ends', verbose_name='Local End Time')),
|
||||||
|
('summary', models.TextField(blank=True, help_text='Summary of the Event', null=True)),
|
||||||
|
('web_url', models.URLField(blank=True, help_text='URL for the event', null=True, verbose_name='Website')),
|
||||||
|
('announce_url', models.URLField(blank=True, help_text='URL for the announcement', null=True, verbose_name='Announcement')),
|
||||||
|
('created_time', models.DateTimeField(db_index=True, default=datetime.datetime.now, help_text='the date and time when the event was created')),
|
||||||
|
('tags', models.CharField(blank=True, max_length=128, null=True, verbose_name='Keyword Tags')),
|
||||||
|
('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.Category')),
|
||||||
|
('city', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.City')),
|
||||||
|
('country', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.Country')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='organization',
|
||||||
|
name='owner_profile',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='owned_orgs', to='events.UserProfile'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='team',
|
||||||
|
name='organization',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teams', to='events.Organization'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='team',
|
||||||
|
name='owner_profile',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owned_teams', to='events.UserProfile'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='created_by',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='events.UserProfile'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='organization',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='events.Organization'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='parent',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sub_events', to='events.CommonEvent'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='place',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.Place'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='spr',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.SPR'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='commonevent',
|
||||||
|
name='topics',
|
||||||
|
field=models.ManyToManyField(blank=True, to='events.Topic'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='parent',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='participating_events', to='events.CommonEvent'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -55,6 +55,7 @@ class PlaceSerializer(serializers.ModelSerializer):
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
name = models.CharField(max_length=150, verbose_name=_('Event Name'))
|
name = models.CharField(max_length=150, verbose_name=_('Event Name'))
|
||||||
team = models.ForeignKey(Team, on_delete=models.CASCADE)
|
team = models.ForeignKey(Team, on_delete=models.CASCADE)
|
||||||
|
parent = models.ForeignKey('CommonEvent', related_name='participating_events', null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
start_time = models.DateTimeField(help_text=_('Local date and time that the event starts'), verbose_name=_('Local Start Time'), db_index=True)
|
start_time = models.DateTimeField(help_text=_('Local date and time that the event starts'), verbose_name=_('Local Start Time'), db_index=True)
|
||||||
end_time = models.DateTimeField(help_text=_('Local date and time that the event ends'), verbose_name=_('Local End Time'), db_index=True)
|
end_time = models.DateTimeField(help_text=_('Local date and time that the event ends'), verbose_name=_('Local End Time'), db_index=True)
|
||||||
|
@ -196,3 +197,33 @@ class EventPhoto(models.Model):
|
||||||
processors=[ResizeToFill(250, 187)],
|
processors=[ResizeToFill(250, 187)],
|
||||||
format='JPEG',
|
format='JPEG',
|
||||||
options={'quality': 60})
|
options={'quality': 60})
|
||||||
|
|
||||||
|
class CommonEvent(models.Model):
|
||||||
|
name = models.CharField(max_length=150, verbose_name=_('Event Name'))
|
||||||
|
organization = models.ForeignKey(Organization, null=True, blank=True, on_delete=models.CASCADE)
|
||||||
|
parent = models.ForeignKey('CommonEvent', related_name='sub_events', null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
|
start_time = models.DateTimeField(help_text=_('Local date and time that the event starts'), verbose_name=_('Local Start Time'), db_index=True)
|
||||||
|
end_time = models.DateTimeField(help_text=_('Local date and time that the event ends'), verbose_name=_('Local End Time'), db_index=True)
|
||||||
|
summary = models.TextField(help_text=_('Summary of the Event'), blank=True, null=True)
|
||||||
|
|
||||||
|
country = models.ForeignKey(Country, null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
spr = models.ForeignKey(SPR, null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
city = models.ForeignKey(City, null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
place = models.ForeignKey(Place, blank=True, null=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
|
web_url = models.URLField(verbose_name=_('Website'), help_text=_('URL for the event'), max_length=200, blank=True, null=True)
|
||||||
|
announce_url = models.URLField(verbose_name=_('Announcement'), help_text=_('URL for the announcement'), max_length=200, blank=True, null=True)
|
||||||
|
|
||||||
|
created_by = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
|
||||||
|
created_time = models.DateTimeField(help_text=_('the date and time when the event was created'), default=datetime.datetime.now, db_index=True)
|
||||||
|
|
||||||
|
category = models.ForeignKey('Category', on_delete=models.SET_NULL, blank=False, null=True)
|
||||||
|
topics = models.ManyToManyField('Topic', blank=True)
|
||||||
|
tags = models.CharField(verbose_name=_("Keyword Tags"), blank=True, null=True, max_length=128)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
>>>>>>> Add CommonEvent model
|
||||||
|
|
|
@ -156,12 +156,14 @@ class Organization(models.Model):
|
||||||
name = models.CharField(max_length=256, null=False, blank=False)
|
name = models.CharField(max_length=256, null=False, blank=False)
|
||||||
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
owner_profile = models.ForeignKey(UserProfile, related_name='owned_orgs', blank=False, null=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return u'%s' % (self.name)
|
return u'%s' % (self.name)
|
||||||
|
|
||||||
class Team(models.Model):
|
class Team(models.Model):
|
||||||
name = models.CharField(_("Team Name"), max_length=256, null=False, blank=False)
|
name = models.CharField(_("Team Name"), max_length=256, null=False, blank=False)
|
||||||
organization = models.ForeignKey(Organization, null=True, blank=True, on_delete=models.CASCADE)
|
organization = models.ForeignKey(Organization, related_name='teams', null=True, blank=True, on_delete=models.CASCADE)
|
||||||
|
|
||||||
description = models.TextField(help_text=_('Team Description'), blank=True, null=True)
|
description = models.TextField(help_text=_('Team Description'), blank=True, null=True)
|
||||||
|
|
||||||
|
@ -174,7 +176,7 @@ class Team(models.Model):
|
||||||
|
|
||||||
created_date = models.DateField(_("Date Created"), null=True, blank=True)
|
created_date = models.DateField(_("Date Created"), null=True, blank=True)
|
||||||
|
|
||||||
owner_profile = models.ForeignKey(UserProfile, related_name='owner', null=True, on_delete=models.CASCADE)
|
owner_profile = models.ForeignKey(UserProfile, related_name='owned_teams', null=True, on_delete=models.CASCADE)
|
||||||
admin_profiles = models.ManyToManyField(UserProfile, related_name='admins', blank=True)
|
admin_profiles = models.ManyToManyField(UserProfile, related_name='admins', blank=True)
|
||||||
contact_profiles = models.ManyToManyField(UserProfile, related_name='contacts', blank=True)
|
contact_profiles = models.ManyToManyField(UserProfile, related_name='contacts', blank=True)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue