from pirate_forum.models import ForumDimension, DimensionTracker
from pirate_topics.models import Topic
from pirate_consensus.models import Consensus, PhaseLink, Phase
from pirate_reputation.models import ReputationEvent
from django.contrib.contenttypes.models import ContentType
from pirate_consensus.models import RatingVote, UpDownVote
import datetime
from pirate_messages.models import Notification
from pirate_ranking.models import update_rankings
#ForumDimension.objects.register(key='pro', name='Problem',
# help_text ='Got a problem in the community? Describe your problem and seek the expertise of others.',
# app_label = 'pirate_issues', model_class_name='Problem', form_class_name='ProblemForm')
#ForumDimension.objects.register(key='sol', name='Solution', help_text='Create a new solution for this problem.',
# app_label='pirate_issues' , model_class_name= 'Solution', form_class_name='SolutionForm', is_child=True)
#ForumDimension.objects.register(key='pol', name='Policy', help_text="Policy statements are concise descriptions of some political stance, much like the planks of a modern political party's platform.",
# app_label='pirate_issues', model_class_name='Policy' , form_class_name='PolicyForm')
#ForumDimension.objects.register(key='yea', name="Yea Argument", help_text="Argue for their claims!", app_label='pirate_deliberation',
# model_class_name='Argument', form_class_name='YeaArgumentForm', is_child=True)
#ForumDimension.objects.register(key='nay', name="Nay Argument", help_text="Argue against their claims!", app_label='pirate_deliberation',
# model_class_name='Argument', form_class_name='NayArgumentForm', is_child=True)
#ForumDimension.objects.register(key='mes', name='Message', help_text='', app_label='pirate_messages',
# model_class_name='Message', form_class_name='MessageForm',is_content=False)
#ForumDimension.objects.register(key='fil', name='Film', help_text= 'Upload Film for Genome Project',
# app_label='oa_filmgenome', model_class_name='Film', form_class_name='FilmForm', is_admin=True)
#ForumDimension.objects.register(key='sce', name='Scene', help_text='Upload Scene for Genome Project',
# app_label='oa_filmgenome', model_class_name='Scene', form_class_name='SceneForm', is_admin=True)
#ForumDimension.objects.register(key='bug', name='Bug', help_text='File a bug report and help improve Open Assembly',#
# app_label='oa_suggest', model_class_name='Bug', form_class_name='BugForm',)
#ForumDimension.objects.register(key='sug', name='Suggestion', help_text='Got an idea for a feature? Let us know.',
# app_label='oa_suggest' , model_class_name='Suggestion' , form_class_name='SuggestionForm',)
#ForumDimension.objects.register(key='eve', name= "Event", help_text='Create a new political action.',
# app_label='pirate_actions', model_class_name='Action', form_class_name='ActionForm')
#ForumDimension.objects.register(key='act', name= "Action", help_text='Upload an event or create your own.',
# app_label='pirate_actions', model_class_name='Event', form_class_name='EventForm')
#ForumDimension.objects.register(key='boy', name= "Boycott", help_text='Boycotts are an excellent way to fight the corporate abuse of power. Please include reasoning for boycott and the target.',
# app_label='pirate_actions', model_class_name='Boycott', form_class_name='BoycottForm')
ForumDimension.objects.register(key='nom', name="Response", help_text='Respond to a Proposal',
app_label='pirate_forum', model_class_name='Nomination', form_class_name='NominationForm', is_child=True)
ForumDimension.objects.register(key='pol', name="Proposal", help_text='Single Policy with Timed Decision. Nominate your ideas for policy or action and then vote on those. Optionally you can also rank the resulting ideas.',
app_label='pirate_forum', model_class_name='Question', form_class_name='BlobForm')
ForumDimension.objects.register(key='tem', name="Temp. Check", help_text='Temperature Check of idea over time, no set time for decision',
app_label='pirate_forum', model_class_name='Question', form_class_name='BlobForm')
#######GET OR CREATE OA_CACHE
[docs]def main():
for r in RatingVote.objects.all():
try:
str(r)
cons = r.parent
r.parent_pk = cons.parent_pk
r.save()
except:
r.delete()
for r in UpDownVote.objects.all():
try:
str(r)
cons = r.parent
r.parent_pk = cons.parent_pk
r.save()
except:
r.delete()
# for i in ReputationEvent.objects.all():
# consensus = i.related_object
# try:
# print str(consensus)
# except:
# i.delete()
for exist in DimensionTracker.objects.all():
exist.delete()
for topic in Topic.objects.all():
for fd in ForumDimension.objects.all():
#issue_list = Consensus.objects.all()
#issue_list = issue_list.filter(parent_pk=topic.pk)
#type_class = ContentType.objects.get(app_label=str(fd.app_label), model=str(fd.model_class_name).lower())
#issue_list = issue_list.filter(content_type=type_class)
d, is_new = DimensionTracker.objects.get_or_create(object_pk=topic.pk, dimension=fd)
#d.children = issue_list.count()
d.save()
for cons in Consensus.objects.all():
update_rankings.apply_async(args=['null', cons])
### CREATE THE PHASELINKS and LINKS BETWEEN THEM
ph1, is_new = PhaseLink.objects.get_or_create(phasename="nom", verb="pose your question")
ph2, is_new = PhaseLink.objects.get_or_create(phasename="vote", verb="nominate a solution and debate")
ph3, is_new = PhaseLink.objects.get_or_create(phasename="decision", verb="vote to make a decision")
ph1.prevphase = None
ph1.nextphase = ph2
ph1.save()
ph2.prevphase = ph1
ph2.nextphase = ph3
ph2.save()
ph3.prevphase = ph2
ph3.nextphase = None
ph3.save()
########TEMPORARY FIX FOR PRODUCTION AFTER DEPLOYMENT GET RID OF THIS
for i in Notification.objects.all():
i.sender_pk = i.sender.pk
i.save()
#Fix all the existing consensus objects
###DANGEROUS OPERATION, SHOULD ONLY BE DONE ONCE
#for cons in Consensus.objects.all():
# ph = Phase(consensus=cons, curphase=ph3,
# creation_dt=datetime.datetime.now(), decision_dt=datetime.datetime.now(),
# phase_change_dt=datetime.datetime.now(), complete=True, active=True)
# ph.save()
# cons.phase = ph
# cons.save()
main()