From d1ad7df6c547e32ab10b0cb1cb1d47e99cb8c152 Mon Sep 17 00:00:00 2001 From: Fredrik Jonsson <frjo@xdeb.org> Date: Fri, 6 Jul 2018 10:29:41 +0200 Subject: [PATCH] Seed the community lab. --- .../seed_community_lab_application.py | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 opentech/apply/funds/management/commands/seed_community_lab_application.py diff --git a/opentech/apply/funds/management/commands/seed_community_lab_application.py b/opentech/apply/funds/management/commands/seed_community_lab_application.py new file mode 100644 index 000000000..c72201091 --- /dev/null +++ b/opentech/apply/funds/management/commands/seed_community_lab_application.py @@ -0,0 +1,101 @@ +import json + +from datetime import date + +from django.contrib.auth import get_user_model +from django.core.management.base import BaseCommand +from django.db import transaction + +from opentech.apply.funds.models import ApplicationForm, FundForm, FundType, Round +from opentech.apply.home.models import ApplyHomePage +from opentech.apply.users.groups import STAFF_GROUP_NAME + +CL_ROUND_TITLE = 'Community lab open round' + + +class Command(BaseCommand): + help = "Pre-seeds the Community lab application form and fund type. Depends on the categories seed being run first." + + @transaction.atomic + def handle(self, *args, **options): + # There's an Community lab open round, so bail out. Avoids duplicate command runs. + if Round.objects.filter(title=CL_ROUND_TITLE).count(): + self.stdout.write(self.style.WARNING('Skipping. The target Round/Fund Type and Application Form exist')) + return + + application_form = self.create_community_lab_form() + fund = self.create_community_lab_fund_type(application_form) + self.create_community_lab_round(fund) + + def create_community_lab_form(self): + + data = [ + {"type": "text_markup", "value": "<h3>Basic information</h3>", "id": "33d38e10-43e3-4a61-8a10-2d3ad760861b"}, + {"type": "title", "value": {"field_label": "What is your project name?", "help_text": "", "info": None}, "id": "4507372e-a284-488a-ac3c-53b689849d67"}, + {"type": "full_name", "value": {"field_label": "Your name", "help_text": "", "info": None}, "id": "b62f1c35-52c7-44b5-b7cd-2f1aac6701bd"}, + {"type": "email", "value": {"field_label": "E-mail", "help_text": "", "info": None}, "id": "02a6cd0e-7ff6-46cd-9bdb-bf5858fe2514"}, + {"type": "date", "value": {"field_label": "Date of event", "help_text": "", "required": "false", "default_value": ""}, "id": "8c74af9c-6cc7-4558-9d72-0f2c9a87f22b"}, + {"type": "value", "value": {"field_label": "Amount requested", "help_text": "", "info": None}, "id": "dfa76e03-0148-421b-a0fb-67f6fa1edee0"}, + {"type": "text_markup", "value": "<h3>More information about your product</h3>", "id": "d2090b37-11e0-4282-8f98-5edfb05918c0"}, + {"type": "rich_text", "value": {"field_label": "Please provide us a description of this event", "help_text": "", "required": "false", "default_value": ""}, "id": "fe488e12-b5f4-491a-9ca9-d7aff0993884"}, + {"type": "rich_text", "value": {"field_label": "Please describe the target audience(s)", "help_text": "", "required": "false", "default_value": ""}, "id": "e7a0bc56-ad5d-4be7-9709-eb823a0e6e3d"}, + {"type": "rich_text", "value": {"field_label": "What are the event’s objectives?", "help_text": "", "required": "false", "default_value": ""}, "id": "43d52051-27f2-4d30-abf1-173a31f15072"}, + {"type": "rich_text", "value": {"field_label": "Please describe the strategy that will allow you to achieve your goals", "help_text": "", "required": "false", "default_value": ""}, "id": "4e1f46ad-12d7-40c3-a1e8-0793bb327961"}, + {"type": "rich_text", "value": {"field_label": "How will this event support people living within a developing country affected by repressive censorship and/or surveillance?", "help_text": "", "required": "false", "default_value": ""}, "id": "e33e1415-6832-4ef3-8a10-ae6d3aef61c8"}, + {"type": "rich_text", "value": {"field_label": "What collaborations with other organizations, communities, or networks exist around this event, if any?", "help_text": "", "required": "false", "default_value": ""}, "id": "812792a3-edc5-4521-b5c7-e9c697122325"}, + {"type": "rich_text", "value": {"field_label": "How will the event ensure new and diverse voices are being represented?", "help_text": "", "required": "false", "default_value": ""}, "id": "c367cae6-9fde-40fc-8c99-7ca2117bda6a"}, + {"type": "rich_text", "value": {"field_label": "Please describe the outreach and promotion plan for the event?", "help_text": "", "required": "false", "default_value": ""}, "id": "14ef1b53-ef85-4756-a13e-19d3c3be7d85"}, + {"type": "rich_text", "value": {"field_label": "Is there anything you need help with in regards to planning this event that is non-monetary related?", "help_text": "For example, are there any audiences you are trying to cultivate? Do you need advice on the format of the event?", "required": "false", "default_value": ""}, "id": "eb6474e1-2f69-4f69-9a9c-edf13c25455c"}, + {"type": "rich_text", "value": {"field_label": "Please provide a detailed budget", "help_text": "", "required": "false", "default_value": ""}, "id": "de631da99f904f5f9c67e3a6e182f7c6"}, + {"type": "checkbox", "value": {"field_label": "Do you have a code of conduct?", "help_text": "If yes, upload it in the field below.", "required": "true", "default_value": "false"}, "id": "4948cc0fd1d142eeb81dd10784fba0f2"}, + {"type": "multi_file", "value": {"field_label": "Upload", "help_text": "", "required": "false"}, "id": "8c4f9cf13d624b64ab70e6cd342921f5"}, + {"type": "text_markup", "value": "<h3>I acknowledge</h3>", "id": "2c514f5844ae496085717dd48030d380"}, + {"type": "checkbox", "value": {"field_label": "My application will be dismissed if it does not fit within OTF\'s mission, values, principles statements.", "help_text": "", "required": "true", "default_value": ""}, "id": "9b20aa6384d54f64b1fb846efed89a41"}, + {"type": "text_markup", "value": "Read our <a href=\"\/about/program\">mission, values, and principles</a>.", "id": "cc52fb3e390647aa90024346af4dac3a"}, + {"type": "checkbox", "value": {"field_label": "I have read and understand OTF\'s Terms and Privacy policy.", "help_text": "", "required": "true", "default_value": ""}, "id": "b4a2f762f61c402aa8d22b58b3201263"}, + {"type": "text_markup", "value": "Read the <a href=\"\/tos\">Terms and Privacy policy</a>.", "id": "470782b4caf34cf89c9571eb16ae48cb"}, + {"type": "checkbox", "value": {"field_label": "I am legally able to sign contracts or represent an organization that can.", "help_text": "", "required": "true", "default_value": ""}, "id": "9409408f0cee4c97ac0517838eacdd9f"}, + {"type": "checkbox", "value": {"field_label": "I understand that all intellectual property created with support for this application must be openly licensed.", "help_text": "", "required": "true", "default_value": ""}, "id": "e0e6990db8744781afe9d42a105b8ff4"}, + {"type": "checkbox", "value": {"field_label": "I understand that if my application is incomplete in any way, it will be dismissed.", "help_text": "", "required": "true", "default_value": ""}, "id": "966cd67f04a34c16b4e5892d4cd1e175"}, + {"type": "checkbox", "value": {"field_label": "I understand that if my application is after a deadline, it will not be reviewed until after the next deadline.", "help_text": "", "required": "true", "default_value": ""}, "id": "d5b982f829dd4ee4aab3eb5349e6b077"}, + {"type": "text_markup", "value": "<h3>I would like to</h3>", "id": "2d813012ca1b44f6b42d560c1b475ff0"}, + {"type": "checkbox", "value": {"field_label": "Sign up to the OTF-Announce list, low traffic (funding opportunities, major alerts, etc)", "help_text": "", "required": "true", "default_value": ""}, "id": "4a4feb4e6e5445bd83b42e9f39ca833c"}, + {"type": "checkbox", "value": {"field_label": "Sign up for OTF\'s daily newsletter (collection of news related to global internet freedom).", "help_text": "", "required": "true", "default_value": ""}, "id": "e011bd48613648d48263997f71656bfc"} + ] + + application_form, _ = ApplicationForm.objects.get_or_create(name='Community lab', defaults={'form_fields': json.dumps(data)}) + + return application_form + + def create_community_lab_fund_type(self, application_form): + try: + fund = FundType.objects.get(title='Community lab') + except FundType.DoesNotExist: + apply_home = ApplyHomePage.objects.first() + + fund = FundType(title='Community lab', workflow_name='single') + apply_home.add_child(instance=fund) + + fund_form = FundForm.objects.create(fund=fund, form=application_form) + fund.forms = [fund_form] + fund.save() + + return fund + + def create_community_lab_round(self, fund): + User = get_user_model() + + try: + lead = User.objects.get(full_name="Lindsay Beck") + except User.DoesNotExist: + lead = User.objects.filter(groups__name=STAFF_GROUP_NAME).first() + + round = Round( + title=CL_ROUND_TITLE, + lead=lead, + # The date of the original Community lab request type + start_date=date(2015, 8, 28), + end_date=None + ) + round.parent_page = fund + fund.add_child(instance=round) -- GitLab