BROKEN! MIGRATE! BIG UPD: not yet complete support for publish[ed|ing]_[web|facebook]
This commit is contained in:
@@ -246,7 +246,7 @@ class Event(models.Model):
|
||||
verbose_name = _(u'Veranstaltung')
|
||||
verbose_name_plural = _(u'Veranstaltungen')
|
||||
ordering = ['first_day']
|
||||
default_permissions = ('view', 'accept', 'edit', 'delete')
|
||||
# default_permissions = ('view', 'edit', 'delete')
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{number} - {title} ({date})'.format(number=self.get_number(),
|
||||
@@ -331,8 +331,12 @@ class Event(models.Model):
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_status_flags(self):
|
||||
return workflow.get_status_flags(self)
|
||||
|
||||
def get_status(self):
|
||||
workflow.status_code_update(self)
|
||||
|
||||
last_flag = self.flags.last()
|
||||
if last_flag:
|
||||
return last_flag.status
|
||||
@@ -472,7 +476,6 @@ class Event(models.Model):
|
||||
|
||||
r = {
|
||||
'event': self,
|
||||
'status': self.get_status(),
|
||||
'number': self.get_number(),
|
||||
'title': self.title,
|
||||
'description': self.description,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from ..validators import LowerAlphanumericValidator
|
||||
from ..validators import IdStringValidator
|
||||
|
||||
BOOTSTRAP_CONTEXT_CHOICES = (
|
||||
('default', 'default'),
|
||||
@@ -17,7 +17,11 @@ DEFAULT_EVENT_STATI = {
|
||||
'draft': (10, _(u'Entwurf'), 'info'),
|
||||
'submitted': (30, _(u'Eingereicht'), 'danger'),
|
||||
'accepted': (50, _(u'Freigegeben'), 'warning'),
|
||||
'publishing_facebook': (68, _(u'Veröffentlichung Facebook'), 'warning'),
|
||||
'publishing_web': (69, _(u'Veröffentlichung Web'), 'warning'),
|
||||
'publishing': (70, _(u'Veröffentlichung'), 'warning'),
|
||||
'published_facebook': (78, _(u'Veröffentlicht Facebook'), 'success'),
|
||||
'published_web': (79, _(u'Veröffentlicht Web'), 'success'),
|
||||
'published': (80, _(u'Veröffentlicht'), 'success'),
|
||||
'expired': (100, _(u'Ausgelaufen'), None),
|
||||
}
|
||||
@@ -39,7 +43,7 @@ def get_event_status(code):
|
||||
|
||||
|
||||
class EventStatus(models.Model):
|
||||
code = models.CharField(primary_key=True, max_length=254, validators=[LowerAlphanumericValidator])
|
||||
code = models.CharField(primary_key=True, max_length=254, validators=[IdStringValidator])
|
||||
severity = models.IntegerField(unique=True)
|
||||
label = models.CharField(unique=True, max_length=254)
|
||||
bootstrap_context = models.CharField(max_length=20, blank=True, choices=BOOTSTRAP_CONTEXT_CHOICES)
|
||||
@@ -50,9 +54,9 @@ class EventStatus(models.Model):
|
||||
ordering = ['severity']
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{label} ({severity} {code})'.format(code=self.code,
|
||||
severity=self.severity,
|
||||
label=self.label)
|
||||
return u'{label} ({severity} - {code})'.format(code=self.code,
|
||||
severity=self.severity,
|
||||
label=self.label)
|
||||
|
||||
def get_bootstrap_label(self):
|
||||
context = self.bootstrap_context or 'default'
|
||||
|
||||
@@ -14,9 +14,8 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class OneClickAction(models.Model):
|
||||
COMMANDS = (
|
||||
('EA', 'accept event'),
|
||||
('EP', 'confirm publication of an event'),
|
||||
('EL', 'login and go to event list')
|
||||
('EVENT_LIST', 'login and go to event list (user id)'),
|
||||
('EVENT_STATUS_UPDATE', 'update event status (event id,status code,user id)'),
|
||||
)
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
@@ -28,7 +27,7 @@ class OneClickAction(models.Model):
|
||||
done_at = models.DateTimeField(blank=True,
|
||||
null=True)
|
||||
|
||||
command = models.CharField(max_length=2, choices=COMMANDS)
|
||||
command = models.CharField(max_length=254, choices=COMMANDS)
|
||||
|
||||
parameters = models.TextField(blank=True)
|
||||
|
||||
@@ -56,79 +55,7 @@ class OneClickAction(models.Model):
|
||||
return result
|
||||
|
||||
logger.info('OneClickAction.run(): %s(%s)', self.command, self.parameters)
|
||||
if self.command == 'EA':
|
||||
text = u''
|
||||
try:
|
||||
event_id, user_id = self.parameters.split(',')
|
||||
event = Event.objects.get(id=event_id)
|
||||
user = get_user_model().objects.get(id=user_id)
|
||||
flag = event.flags.filter(status__code='accepted').first()
|
||||
if flag:
|
||||
status = 'info'
|
||||
message = (ugettext(u'Veranstaltung wurde bereits von %(fullname)s freigegeben.') %
|
||||
{'fullname': flag.user.get_full_name()})
|
||||
text = unicode(event)
|
||||
text += u'\n'
|
||||
text += (ugettext(u'Freigegeben am: %(date)s') %
|
||||
{'date': flag.timestamp.strftime('%d.%m.%Y %H:%M:%S')})
|
||||
else:
|
||||
event.confirm_status('accepted', user)
|
||||
status = 'success'
|
||||
message = ugettext(u'Veranstaltung freigegeben.')
|
||||
text = unicode(event)
|
||||
|
||||
self.done = True
|
||||
self.done_at = timezone.now()
|
||||
self.save()
|
||||
except Exception as e:
|
||||
status = 'danger'
|
||||
message = str(e)
|
||||
logger.error('OneClickAction.run(): %s(%s): %s', self.command, self.parameters, message)
|
||||
|
||||
result['context'] = {
|
||||
'status': status,
|
||||
'message': message,
|
||||
'text': text,
|
||||
}
|
||||
elif self.command == 'EP':
|
||||
text = u''
|
||||
try:
|
||||
event_id, user_id = self.parameters.split(',')
|
||||
event = Event.objects.get(id=event_id)
|
||||
user = get_user_model().objects.get(id=user_id)
|
||||
flag = event.flags.filter(status__code__in=('publishing', 'published')).first()
|
||||
if flag:
|
||||
status = 'info'
|
||||
message = (ugettext(u'Veröffentlichung wurde bereits von %(fullname)s bestätigt.') %
|
||||
{'fullname': flag.user.get_full_name()})
|
||||
text = unicode(event)
|
||||
text += u'\n'
|
||||
text += (ugettext(u'Bestätigt am: %(date)s') %
|
||||
{'date': flag.timestamp.strftime('%d.%m.%Y %H:%M:%S')})
|
||||
else:
|
||||
if event.planned_publication_date:
|
||||
new_state = 'publishing'
|
||||
else:
|
||||
new_state = 'published'
|
||||
event.confirm_status(new_state, user)
|
||||
status = 'success'
|
||||
message = ugettext(u'Veröffentlichung registriert.')
|
||||
text = unicode(event)
|
||||
|
||||
self.done = True
|
||||
self.done_at = timezone.now()
|
||||
self.save()
|
||||
except Exception as e:
|
||||
status = 'danger'
|
||||
message = str(e)
|
||||
logger.error('OneClickAction.run(): %s(%s): %s', self.command, self.parameters, message)
|
||||
|
||||
result['context'] = {
|
||||
'status': status,
|
||||
'message': message,
|
||||
'text': text,
|
||||
}
|
||||
elif self.command == 'EL':
|
||||
if self.command == 'EVENT_LIST':
|
||||
try:
|
||||
user_id = self.parameters
|
||||
user = get_user_model().objects.get(id=user_id)
|
||||
@@ -142,6 +69,42 @@ class OneClickAction(models.Model):
|
||||
'status': 'danger',
|
||||
'message': message,
|
||||
}
|
||||
elif self.command == 'EVENT_STATUS_UPDATE':
|
||||
try:
|
||||
event_id, status_code, user_id = self.parameters.split(',')
|
||||
event = Event.objects.get(id=event_id)
|
||||
user = get_user_model().objects.get(id=user_id)
|
||||
|
||||
flag = event.flags.filter(status__code=status_code).first()
|
||||
if flag:
|
||||
message = (ugettext(u'Der Status wurde bereits'
|
||||
u' am %(date)s'
|
||||
u' von %(user)s'
|
||||
u' auf \'%(status)s\' gesetzt.') % {
|
||||
'status': flag.status.label,
|
||||
'date': flag.timestamp.strftime('%d.%m.%Y %H:%M:%S'),
|
||||
'user': flag.user.get_full_name(),
|
||||
})
|
||||
else:
|
||||
flag = event.confirm_status(status_code, user)
|
||||
message = (ugettext(u'Der Status wurde auf \'%(status)s\' gesetzt.') %
|
||||
{'status': flag.status.label})
|
||||
|
||||
result['context'] = {
|
||||
'status': 'success',
|
||||
'message': message,
|
||||
}
|
||||
|
||||
self.done = True
|
||||
self.done_at = timezone.now()
|
||||
self.save()
|
||||
except Exception as e:
|
||||
message = str(e)
|
||||
logger.error('OneClickAction.run(): %s(%s): %s', self.command, self.parameters, message)
|
||||
result['context'] = {
|
||||
'status': 'danger',
|
||||
'message': message,
|
||||
}
|
||||
else:
|
||||
result['context'] = {
|
||||
'status': 'danger',
|
||||
|
||||
Reference in New Issue
Block a user