Skip to content

Commit 1bea94e

Browse files
committed
Change auth model for new schema to use Person rather than Email where email is not necessary, use Person for user profiles rather than the old unused profile class, use REMOTE_USER backend directly instead of custom backend, use group roles for authorization rather than Django groups, port/proxy code from using IESGLogin to the new model
- Legacy-Id: 3151
1 parent 43c0288 commit 1bea94e

41 files changed

Lines changed: 576 additions & 308 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ietf/announcements/models.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,15 @@ class Meta:
8888
db_table = 'scheduled_announcements'
8989

9090

91-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
91+
if settings.USE_DB_REDESIGN_PROXY_CLASSES or hasattr(settings, "IMPORTING_ANNOUNCEMENTS"):
9292
import datetime
9393

94-
from person.models import Email
94+
from person.models import Email, Person
9595
from group.models import Group
9696

9797
class Message(models.Model):
9898
time = models.DateTimeField(default=datetime.datetime.now)
99-
by = models.ForeignKey(Email)
99+
by = models.ForeignKey(Person)
100100

101101
subject = models.CharField(max_length=255)
102102
frm = models.CharField(max_length=255)
@@ -116,7 +116,8 @@ def __unicode__(self):
116116

117117
class SendQueue(models.Model):
118118
time = models.DateTimeField(default=datetime.datetime.now)
119-
by = models.ForeignKey(Email)
119+
by = models.ForeignKey(Person)
120+
120121
comment = models.TextField()
121122
message = models.ForeignKey(Message)
122123
send_at = models.DateTimeField(blank=True, null=True)

ietf/announcements/views.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ def nomcom(request):
3535
'regimes' : regimes })
3636

3737
def nomcomREDESIGN(request):
38-
from person.models import Email
3938
from group.models import Group
4039
from ietf.announcements.models import Message
4140

@@ -75,7 +74,6 @@ def nomcomREDESIGN(request):
7574

7675

7776
def message_detail(request, object_id, queryset):
78-
from person.models import Email
7977
from group.models import Group
8078
from ietf.announcements.models import Message
8179

ietf/idrfc/expire.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from ietf.idrfc.utils import log_state_changed, add_document_comment
1212
from doc.models import Document, Event, save_document_in_history
1313
from name.models import IesgDocStateName, DocStateName, DocInfoTagName
14-
from person.models import Email
14+
from person.models import Person, Email
1515

1616
INTERNET_DRAFT_DAYS_TO_EXPIRE = 185
1717

@@ -186,7 +186,7 @@ def move_file(f):
186186
add_document_comment(None, doc, "Document is expired by system")
187187

188188
def expire_idREDESIGN(doc):
189-
system_email = Email.objects.get(address="(System)")
189+
system = Person.objects.get(name="(System)")
190190

191191
# clean up files
192192
def move_file(f):
@@ -219,9 +219,9 @@ def move_file(f):
219219
if doc.iesg_state != dead_state:
220220
prev = doc.iesg_state
221221
doc.iesg_state = dead_state
222-
log_state_changed(None, doc, system_email, prev)
222+
log_state_changed(None, doc, system, prev)
223223

224-
e = Event(doc=doc, by=system_email)
224+
e = Event(doc=doc, by=system)
225225
e.type = "expired_document"
226226
e.desc = "Document has expired"
227227
e.save()

ietf/idrfc/idrfc_wrapper.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -641,16 +641,16 @@ def _init(self):
641641
self.old_init()
642642
return
643643

644-
from redesign.person.models import Email
645-
active_ads = Email.objects.filter(role__name="ad", role__group__state="active")
644+
from redesign.person.models import Person
645+
active_ads = Person.objects.filter(email__role__name="ad", email__role__group__state="active").distinct()
646646

647647
positions = []
648648
seen = {}
649649

650650
from doc.models import BallotPositionEvent
651651
for pos in BallotPositionEvent.objects.filter(doc=self.ballot, type="changed_ballot_position", time__gte=self.ballot.process_start, time__lte=self.ballot.process_end).select_related('ad').order_by("-time", '-id'):
652652
if pos.ad not in seen:
653-
p = dict(ad_name=pos.ad.get_name(),
653+
p = dict(ad_name=pos.ad.name,
654654
ad_username=pos.ad.pk, # ought to rename this in doc_ballot_list
655655
position=pos.pos.name,
656656
is_old_ad=pos.ad not in active_ads,
@@ -684,7 +684,7 @@ def _init(self):
684684
if self.ballot_active:
685685
for ad in active_ads:
686686
if ad not in seen:
687-
d = dict(ad_name=ad.get_name(),
687+
d = dict(ad_name=ad.name,
688688
ad_username=ad.pk,
689689
position="No Record",
690690
)

ietf/idrfc/lastcall.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
from django.conf import settings
66

7-
from ietf.idtracker.models import InternetDraft, DocumentComment, BallotInfo, IESGLogin
7+
from ietf.idtracker.models import InternetDraft, DocumentComment, BallotInfo
88
from ietf.idrfc.mails import *
99
from ietf.idrfc.utils import *
1010

1111
from doc.models import Document, Event, LastCallEvent, WriteupEvent, save_document_in_history
1212
from name.models import IesgDocStateName
13-
from person.models import Email
13+
from person.models import Person
1414

1515
def request_last_call(request, doc):
1616
try:
@@ -33,9 +33,9 @@ def request_last_callREDESIGN(request, doc):
3333

3434
e = Event()
3535
e.type = "requested_last_call"
36-
e.by = request.user.get_profile().email()
36+
e.by = request.user.get_profile()
3737
e.doc = doc
38-
e.desc = "Last call was requested by %s" % e.by.get_name()
38+
e.desc = "Last call was requested by %s" % e.by.name
3939
e.save()
4040

4141
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
@@ -83,7 +83,7 @@ def expire_last_callREDESIGN(doc):
8383

8484
prev = doc.iesg_state
8585
doc.iesg_state = state
86-
e = log_state_changed(None, doc, Email.objects.get(address="(System)"), prev)
86+
e = log_state_changed(None, doc, Person.objects.get(name="(System)"), prev)
8787

8888
doc.time = e.time
8989
doc.save()

ietf/idrfc/mails.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ietf.utils.mail import send_mail, send_mail_text
1111
from ietf.idtracker.models import *
1212
from doc.models import WriteupEvent, BallotPositionEvent, LastCallEvent
13-
from person.models import Email
13+
from person.models import Person
1414

1515
def email_state_changed(request, doc, text):
1616
to = [x.strip() for x in doc.idinternal.state_change_notice_to.replace(';', ',').split(',')]
@@ -55,7 +55,7 @@ def email_ownerREDESIGN(request, doc, owner, changed_by, text, subject=None):
5555
to = owner.formatted_email()
5656
send_mail(request, to,
5757
"DraftTracker Mail System <iesg-secretary@ietf.org>",
58-
"%s updated by %s" % (doc.file_tag(), changed_by.get_name()),
58+
"%s updated by %s" % (doc.file_tag(), changed_by.name),
5959
"idrfc/change_notice.txt",
6060
dict(text=html_to_text(text),
6161
doc=doc,
@@ -88,9 +88,9 @@ def full_intended_status(intended_status):
8888
def generate_ballot_writeup(request, doc):
8989
e = WriteupEvent()
9090
e.type = "changed_ballot_writeup_text"
91-
e.by = request.user.get_profile().email()
91+
e.by = request.user.get_profile()
9292
e.doc = doc
93-
e.desc = u"Ballot writeup was generated by %s" % e.by.get_name()
93+
e.desc = u"Ballot writeup was generated by %s" % e.by.name
9494
e.text = unicode(render_to_string("idrfc/ballot_writeup.txt"))
9595
e.save()
9696

@@ -160,9 +160,9 @@ def generate_last_call_announcementREDESIGN(request, doc):
160160

161161
e = WriteupEvent()
162162
e.type = "changed_last_call_text"
163-
e.by = request.user.get_profile().email()
163+
e.by = request.user.get_profile()
164164
e.doc = doc
165-
e.desc = u"Last call announcement was generated by %s" % e.by.get_name()
165+
e.desc = u"Last call announcement was generated by %s" % e.by.name
166166
e.text = unicode(mail)
167167
e.save()
168168

@@ -255,9 +255,9 @@ def generate_approval_mailREDESIGN(request, doc):
255255

256256
e = WriteupEvent()
257257
e.type = "changed_ballot_approval_text"
258-
e.by = request.user.get_profile().email()
258+
e.by = request.user.get_profile()
259259
e.doc = doc
260-
e.desc = u"Ballot approval text was generated by %s" % e.by.get_name()
260+
e.desc = u"Ballot approval text was generated by %s" % e.by.name
261261
e.text = unicode(mail)
262262
e.save()
263263

@@ -292,12 +292,12 @@ def generate_approval_mail_approved(request, doc):
292292
made_by = "This document is the product of the %s." % doc.group.name_with_wg
293293

294294
director = doc.ad
295-
other_director = Email.objects.filter(role__group__role__email=director, role__group__role__name="ad").exclude(pk=director.pk)
295+
other_director = Person.objects.filter(email__role__group__role__email__person=director, email__role__group__role__name="ad").exclude(pk=director.pk)
296296

297297
if doc.group.type_id != "individ" and other_director:
298-
contacts = "The IESG contact persons are %s and %s." % (director.get_name(), other_director[0].get_name())
298+
contacts = "The IESG contact persons are %s and %s." % (director.name, other_director[0].name)
299299
else:
300-
contacts = "The IESG contact person is %s." % director.get_name()
300+
contacts = "The IESG contact person is %s." % director.name
301301

302302
doc_type = "RFC" if doc.state_id == "rfc" else "Internet Draft"
303303

@@ -476,7 +476,7 @@ def generate_issue_ballot_mailREDESIGN(request, doc):
476476
full_status = full_intended_status(doc.intended_std_level.name)
477477
status = full_status.replace("a ", "").replace("an ", "")
478478

479-
active_ads = Email.objects.filter(role__name="ad", role__group__state="active")
479+
active_ads = Person.objects.filter(email__role__name="ad", email__role__group__state="active").distinct()
480480

481481
e = doc.latest_event(type="started_iesg_process")
482482
positions = BallotPositionEvent.objects.filter(doc=doc, type="changed_ballot_position", time__gte=e.time).order_by("-time", '-id').select_related('ad')
@@ -499,7 +499,7 @@ def formatted(val):
499499
return "[ ]"
500500

501501
fmt = u"%-21s%-10s%-11s%-9s%-10s" % (
502-
p.ad.get_name()[:21],
502+
p.ad.name[:21],
503503
formatted(p.pos_id == "yes"),
504504
formatted(p.pos_id == "noobj"),
505505
formatted(p.pos_id == "discuss"),
@@ -517,7 +517,7 @@ def formatted(val):
517517

518518
active_ad_positions.sort()
519519
inactive_ad_positions.sort()
520-
ad_feedback.sort(key=lambda p: p.ad.get_name())
520+
ad_feedback.sort(key=lambda p: p.ad.name)
521521

522522
e = doc.latest_event(LastCallEvent, type="sent_last_call")
523523
last_call_expires = e.expires if e else None

ietf/idrfc/mirror_rfc_index.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,13 @@ def get_stream_mapping():
178178

179179
@django.db.transaction.commit_on_success
180180
def insert_to_databaseREDESIGN(data):
181-
from person.models import Email
181+
from person.models import Person
182182
from doc.models import Document, DocAlias, Event, RelatedDocument
183183
from group.models import Group
184184
from name.models import DocInfoTagName, DocRelationshipName
185185
from name.utils import name
186186

187-
system_email = Email.objects.get(address="(System)")
187+
system = Person.objects.get(name="(System)")
188188
std_level_mapping = get_std_level_mapping()
189189
stream_mapping = get_stream_mapping()
190190
tag_has_errata = name(DocInfoTagName, 'errata', "Has errata")
@@ -203,7 +203,8 @@ def insert_to_databaseREDESIGN(data):
203203

204204
# we assume two things can happen: we get a new RFC, or an
205205
# attribute has been updated at the RFC Editor (RFC Editor
206-
# attributes currently take precedence)
206+
# attributes currently take precedence over our local
207+
# attributes)
207208

208209
# make sure we got the document and alias
209210
created = False
@@ -257,7 +258,7 @@ def insert_to_databaseREDESIGN(data):
257258
if not doc.latest_event(type="published_rfc", time=pubdate):
258259
e = Event(doc=doc, type="published_rfc")
259260
e.time = pubdate
260-
e.by = system_email
261+
e.by = system
261262
e.desc = "RFC published"
262263
e.save()
263264
changed = True

ietf/idrfc/templatetags/ballot_icon.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,20 @@
4242
def get_user_adid(context):
4343
if 'user' in context and in_group(context['user'], "Area_Director"):
4444
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
45-
# with the new design, we need the email address (FIXME:
46-
# we shouldn't go through the old classes though,
47-
# IESGLogin needs revamping)
48-
return context['user'].get_profile().person().email()[1]
45+
return context['user'].get_profile().id
4946
return context['user'].get_profile().iesg_login_id()
5047
else:
5148
return None
5249

5350
def get_user_name(context):
5451
if 'user' in context and context['user'].is_authenticated():
52+
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
53+
from person.models import Person
54+
try:
55+
return context['user'].get_profile().name
56+
except Person.DoesNotExist:
57+
return None
58+
5559
person = context['user'].get_profile().person()
5660
if person:
5761
return str(person)

0 commit comments

Comments
 (0)