def handle(self, **options): activate(settings.WORKBENCH.PDF_LANGUAGE) set_user_name("Fairy tasks") create_accruals_for_last_month() create_recurring_invoices_and_notify() coffee_invites() changes_mails() annual_working_time_warnings_mails() send_unsent_projected_invoices_reminders()
def forwards(apps, schema_editor): set_user_name("Migrations") LoggedCost = apps.get_model("logbook", "LoggedCost") Service = apps.get_model("projects", "Service") project_ids_with_costs_without_services = set( LoggedCost.objects.filter(service_id__isnull=True).values_list( "project_id", flat=True)) for project_id in project_ids_with_costs_without_services: service = Service.objects.create( project_id=project_id, title="Keine Leistung", position=-1, allow_logging=False, ) LoggedCost.objects.filter(project=project_id, service__isnull=True).update(service=service)
def test_header(self): """Headings of versions contain users' names or primary keys""" set_user_name("ballabla") user1 = factories.UserFactory.create(_full_name="foo") set_user_name("user-%d-%s" % (user1.id, user1.get_short_name())) user2 = factories.UserFactory.create(_full_name="bar") set_user_name("user-%d-%s" % (user2.id, user2.get_short_name())) user3 = factories.UserFactory.create() self.client.force_login(user1) response = self.client.get("/history/accounts_user/id/{}/".format( user1.pk)) self.assertContains(response, "INSERT accounts_user {}".format(user1.pk)) response = self.client.get("/history/accounts_user/id/{}/".format( user2.pk)) self.assertContains(response, "INSERT accounts_user {}".format(user2.pk)) response = self.client.get("/history/accounts_user/id/{}/".format( user3.pk)) self.assertContains(response, "INSERT accounts_user {}".format(user3.pk))
def handle(self, **options): activate("de") set_user_name("Offer importer") with io.open(options["dump"][0]) as f: data = json.load(f) offers = {} contacts = { row["pk"]: { "customer_id": row["fields"]["employer"], "contact_id": row["fields"]["person"], } for row in data if row["model"] == "addressbook.address" } activities = { row["pk"]: row["fields"] for row in data if row["model"] == "articles.activity" } articles = { row["pk"]: row["fields"] for row in data if row["model"] == "articles.article" } def article_name(stuff, pk): if stuff[pk]["level"] <= 1: return stuff[pk]["name"] else: return "%s - %s" % ( stuff[stuff[pk]["parent"]]["name"], stuff[pk]["name"], ) for row in data: if row["model"] == "offers.joboffer": if row["pk"] not in offers: offers[row["pk"]] = { "project": Project(title=row["fields"]["name"], description="", owned_by_id=row["fields"]["manager"], type=Project.ORDER, created_at=parse_datetime( row["fields"]["created"]), **contacts[row["fields"]["contact"]]), "offer": Offer( title=row["fields"]["name"], description=dehtml(row["fields"]["description"]), owned_by_id=row["fields"]["manager"], created_at=parse_datetime( row["fields"]["created"]), offered_on=parse_date(row["fields"]["offer_date"]), status=Offer.OFFERED, postal_address="%s\r\n%s %s\r\n%s\r\n%s %s" % ( row["fields"]["offer_company"], row["fields"]["offer_first_name"], row["fields"]["offer_last_name"], row["fields"]["offer_address"], row["fields"]["offer_zip_code"], row["fields"]["offer_city"], ), subtotal=Decimal(row["fields"]["subtotal"]), discount=Decimal(row["fields"]["discount"]), liable_to_vat=True, tax_rate=Decimal(row["fields"]["tax"]), total=Decimal(row["fields"]["total"]), ), "services": [], } elif row["model"] == "offers.offeredactivity": offers[row["fields"]["joboffer"]]["services"].append( Service( created_at=parse_datetime(row["fields"]["created"]), title=article_name(activities, row["fields"]["activity"]), description=row["fields"]["notes"], position=row["fields"]["ordering"], effort_type=article_name(activities, row["fields"]["activity"]), effort_hours=Decimal(row["fields"]["hours"]), effort_rate=Decimal( row["fields"]["invoicing_hourly_rate"]), is_optional=row["fields"]["optional"], )) elif row["model"] == "offers.offeredarticle": offers[row["fields"]["joboffer"]]["services"].append( Service( created_at=parse_datetime(row["fields"]["created"]), title=article_name(articles, row["fields"]["article"]), description=row["fields"]["notes"], position=1000 + row["fields"]["ordering"], cost=row["fields"]["count"] * Decimal(row["fields"]["cost"]) * (1 + Decimal(row["fields"]["commission"]) / 100), )) for offer in offers.values(): offer["project"].save() offer["offer"].project = offer["project"] offer["offer"].save() for service in offer["services"]: service.project = offer["project"] service.offer = offer["offer"] service.save(skip_related_model=True) offer["offer"].save()
def handle(self, **options): activate("de") set_user_name("Fairy tasks") create_accruals_for_last_month() create_recurring_invoices_and_notify() send_accounting_files()
def handle(self, **options): activate("de") set_user_name("GlassFrog") update_circles()
def set_current_user(self): user = factories.UserFactory.create() set_user_name(f"user-{user.pk}-{user.get_short_name()}") return user