SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit faaf52dc authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add model organizations.OrganizationEvent

parent d50b1a99
No related branches found
No related tags found
No related merge requests found
...@@ -64,6 +64,24 @@ ORGANIZATION_STATUSES = ( ...@@ -64,6 +64,24 @@ ORGANIZATION_STATUSES = (
(ORGSTATUS_OBSOLETE, 'Obsolete'), (ORGSTATUS_OBSOLETE, 'Obsolete'),
) )
ORGANIZATION_EVENT_REQUESTED = 'requested'
ORGANIZATION_EVENT_COMMENT = 'comment'
ORGANIZATION_EVENT_EMAIL_SENT = 'email_sent'
ORGANIZATION_EVENT_INITIATE_NEGOTIATION = 'negotiating'
ORGANIZATION_EVENT_MARKED_AS_UNINTERESTED = 'marked_as_uninterested'
ORGANIZATION_EVENT_PROMOTED = 'promoted'
ORGANIZATION_STATUS_UPDATED = 'status_updated'
ORGANIZATION_EVENTS = (
(ORGANIZATION_EVENT_REQUESTED, 'Requested (from online form)'),
(ORGANIZATION_EVENT_COMMENT, 'Comment added'),
(ORGANIZATION_EVENT_EMAIL_SENT, 'Email sent'),
(ORGANIZATION_EVENT_INITIATE_NEGOTIATION, 'Initiated negotiation'),
(ORGANIZATION_EVENT_MARKED_AS_UNINTERESTED, 'Marked as uninterested'),
(ORGANIZATION_EVENT_PROMOTED, 'Promoted to Sponsor'),
(ORGANIZATION_STATUS_UPDATED, 'Status updated'),
)
ROLE_GENERAL = 'gen' ROLE_GENERAL = 'gen'
ROLE_TECH = 'tech' ROLE_TECH = 'tech'
ROLE_FIN = 'fin' ROLE_FIN = 'fin'
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2019-02-19 07:52
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('organizations', '0003_contact_contactperson_contactrole'),
]
operations = [
migrations.CreateModel(
name='OrganizationEvent',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('event', models.CharField(choices=[('requested', 'Requested (from online form)'), ('comment', 'Comment added'), ('email_sent', 'Email sent'), ('negotiating', 'Initiated negotiation'), ('marked_as_uninterested', 'Marked as uninterested'), ('promoted', 'Promoted to Sponsor'), ('status_updated', 'Status updated')], max_length=64)),
('comments', models.TextField(blank=True)),
('noted_on', models.DateTimeField(auto_now_add=True)),
('noted_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organizations.Organization')),
],
),
]
...@@ -17,8 +17,7 @@ from django.urls import reverse ...@@ -17,8 +17,7 @@ from django.urls import reverse
from django_countries.fields import CountryField from django_countries.fields import CountryField
from .constants import ORGANIZATION_TYPES, ORGTYPE_PRIVATE_BENEFACTOR,\ from .constants import ORGANIZATION_TYPES, ORGTYPE_PRIVATE_BENEFACTOR,\
ORGANIZATION_STATUSES, ORGSTATUS_ACTIVE,\ ORGANIZATION_STATUSES, ORGSTATUS_ACTIVE, ORGANIZATION_EVENTS, ROLE_KINDS
ROLE_KINDS
from .managers import OrganizationQuerySet from .managers import OrganizationQuerySet
from scipost.constants import TITLE_CHOICES from scipost.constants import TITLE_CHOICES
...@@ -185,6 +184,25 @@ class Organization(models.Model): ...@@ -185,6 +184,25 @@ class Organization(models.Model):
###################################
# Events related to Organizations #
###################################
class OrganizationEvent(models.Model):
"""
Documents an event related to an Organization.
"""
organization = models.ForeignKey('organizations.Organization', on_delete=models.CASCADE)
event = models.CharField(max_length=64, choices=ORGANIZATION_EVENTS)
comments = models.TextField(blank=True)
noted_on = models.DateTimeField(auto_now_add=True)
noted_by = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return '%s: %s' % (str(self.organization), self.get_event_display())
#################################### ####################################
# Contact persons, users and roles # # Contact persons, users and roles #
#################################### ####################################
......
...@@ -47,6 +47,7 @@ now = timezone.now() ...@@ -47,6 +47,7 @@ now = timezone.now()
# Prospective Partners # # Prospective Partners #
######################## ########################
# TODO: to be deleted, use Organization instead
class ProspectivePartner(models.Model): class ProspectivePartner(models.Model):
"""A prospect Partner is a Partner without explicit contract with SciPost yet.""" """A prospect Partner is a Partner without explicit contract with SciPost yet."""
...@@ -102,6 +103,7 @@ class ProspectiveContact(models.Model): ...@@ -102,6 +103,7 @@ class ProspectiveContact(models.Model):
return "%s %s %s" % (self.get_title_display(), self.first_name, self.last_name) return "%s %s %s" % (self.get_title_display(), self.first_name, self.last_name)
# TODO: delete, superseded by OrganizationEvent
class ProspectivePartnerEvent(models.Model): class ProspectivePartnerEvent(models.Model):
prospartner = models.ForeignKey('partners.ProspectivePartner', on_delete=models.CASCADE) prospartner = models.ForeignKey('partners.ProspectivePartner', on_delete=models.CASCADE)
event = models.CharField(max_length=64, choices=PROSPECTIVE_PARTNER_EVENTS) event = models.CharField(max_length=64, choices=PROSPECTIVE_PARTNER_EVENTS)
...@@ -204,6 +206,7 @@ class Contact(models.Model): ...@@ -204,6 +206,7 @@ class Contact(models.Model):
return ', '.join([choices[value] for index, value in enumerate(self.kind)]) return ', '.join([choices[value] for index, value in enumerate(self.kind)])
# TODO: delete, use Organizations instead
class Partner(models.Model): class Partner(models.Model):
""" """
Supporting Partners. Supporting Partners.
...@@ -234,6 +237,7 @@ class Partner(models.Model): ...@@ -234,6 +237,7 @@ class Partner(models.Model):
raise NotImplemented raise NotImplemented
# TODO: delete, superseded by OrganizationEvent
class PartnerEvent(models.Model): class PartnerEvent(models.Model):
partner = models.ForeignKey('partners.Partner', on_delete=models.CASCADE, partner = models.ForeignKey('partners.Partner', on_delete=models.CASCADE,
related_name='events') related_name='events')
...@@ -246,6 +250,7 @@ class PartnerEvent(models.Model): ...@@ -246,6 +250,7 @@ class PartnerEvent(models.Model):
return '%s: %s' % (str(self.partner), self.get_event_display()) return '%s: %s' % (str(self.partner), self.get_event_display())
# TODO: delete, use finances.Subsidy instead
class MembershipAgreement(models.Model): class MembershipAgreement(models.Model):
""" """
Agreement for membership of the Supporting Partners Board. Agreement for membership of the Supporting Partners Board.
...@@ -271,6 +276,7 @@ class MembershipAgreement(models.Model): ...@@ -271,6 +276,7 @@ class MembershipAgreement(models.Model):
return reverse('partners:agreement_details', args=(self.id,)) return reverse('partners:agreement_details', args=(self.id,))
# TODO: delete, use finances.SubsidyAttachment instead
class PartnersAttachment(models.Model): class PartnersAttachment(models.Model):
""" """
An Attachment which can (in the future) be related to a Partner, Contact, MembershipAgreement, An Attachment which can (in the future) be related to a Partner, Contact, MembershipAgreement,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment