django-ledger 0.7.3__py3-none-any.whl → 0.7.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of django-ledger might be problematic. Click here for more details.

Files changed (42) hide show
  1. django_ledger/__init__.py +1 -1
  2. django_ledger/contrib/django_ledger_graphene/journal_entry/schema.py +2 -3
  3. django_ledger/contrib/django_ledger_graphene/transaction/schema.py +9 -7
  4. django_ledger/forms/journal_entry.py +19 -12
  5. django_ledger/forms/transactions.py +8 -12
  6. django_ledger/io/io_core.py +14 -11
  7. django_ledger/io/io_library.py +3 -3
  8. django_ledger/migrations/0001_initial.py +1 -1
  9. django_ledger/migrations/0019_alter_transactionmodel_amount_and_more.py +33 -0
  10. django_ledger/models/bill.py +17 -2
  11. django_ledger/models/chart_of_accounts.py +4 -0
  12. django_ledger/models/closing_entry.py +8 -6
  13. django_ledger/models/invoice.py +12 -4
  14. django_ledger/models/journal_entry.py +843 -481
  15. django_ledger/models/ledger.py +45 -4
  16. django_ledger/models/transactions.py +303 -305
  17. django_ledger/models/unit.py +42 -22
  18. django_ledger/templates/django_ledger/account/tags/accounts_table.html +1 -1
  19. django_ledger/templates/django_ledger/bills/bill_detail.html +1 -1
  20. django_ledger/templates/django_ledger/invoice/invoice_detail.html +1 -1
  21. django_ledger/templates/django_ledger/journal_entry/je_create.html +2 -3
  22. django_ledger/templates/django_ledger/journal_entry/je_delete.html +2 -3
  23. django_ledger/templates/django_ledger/journal_entry/je_detail.html +1 -1
  24. django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html +8 -8
  25. django_ledger/templates/django_ledger/journal_entry/je_list.html +16 -13
  26. django_ledger/templates/django_ledger/journal_entry/je_update.html +2 -3
  27. django_ledger/templates/django_ledger/journal_entry/tags/je_table.html +24 -24
  28. django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html +17 -14
  29. django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html +38 -37
  30. django_ledger/templates/django_ledger/transactions/tags/txs_table.html +69 -0
  31. django_ledger/templatetags/django_ledger.py +24 -45
  32. django_ledger/urls/account.py +4 -4
  33. django_ledger/views/account.py +7 -7
  34. django_ledger/views/journal_entry.py +84 -101
  35. django_ledger/views/ledger.py +16 -21
  36. django_ledger/views/mixins.py +11 -10
  37. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/METADATA +8 -3
  38. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/RECORD +42 -40
  39. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/AUTHORS.md +0 -0
  40. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/LICENSE +0 -0
  41. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/WHEEL +0 -0
  42. {django_ledger-0.7.3.dist-info → django_ledger-0.7.4.dist-info}/top_level.txt +0 -0
@@ -125,6 +125,7 @@ class LedgerModelManager(models.Manager):
125
125
  qs = super().get_queryset()
126
126
  return qs.select_related('entity').annotate(
127
127
  Count('journal_entries'),
128
+ _entity_slug=F('entity__slug'),
128
129
  earliest_timestamp=Min('journal_entries__timestamp',
129
130
  filter=Q(journal_entries__posted=True)),
130
131
  )
@@ -167,7 +168,7 @@ class LedgerModelManager(models.Manager):
167
168
 
168
169
  class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
169
170
  """
170
- Base implmentation of the LedgerModel.
171
+ Base implementation of the LedgerModel.
171
172
 
172
173
  Attributes
173
174
  ----------
@@ -231,6 +232,14 @@ class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
231
232
  ledger_str = f'LedgerModel: {self.uuid}'
232
233
  return f'{ledger_str} | Posted: {self.posted} | Locked: {self.locked}'
233
234
 
235
+ @property
236
+ def entity_slug(self):
237
+ try:
238
+ return getattr(self, '_entity_slug')
239
+ except AttributeError:
240
+ pass
241
+ return self.entity.slug
242
+
234
243
  def has_wrapped_model_info(self):
235
244
  if self.additional_info is not None:
236
245
  return self._WRAPPED_MODEL_KEY in self.additional_info
@@ -435,9 +444,6 @@ class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
435
444
  return True
436
445
  return False
437
446
 
438
- def can_edit_journal_entries(self) -> bool:
439
- return not self.is_locked()
440
-
441
447
  def post(self, commit: bool = False, raise_exception: bool = True, **kwargs):
442
448
  """
443
449
  Posts the LedgerModel.
@@ -628,6 +634,7 @@ class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
628
634
  def get_entity_last_closing_date(self) -> Optional[date]:
629
635
  return self.entity.last_closing_date
630
636
 
637
+ # URLS....
631
638
  def get_absolute_url(self) -> str:
632
639
  """
633
640
  Determines the absolute URL of the LedgerModel instance.
@@ -690,6 +697,20 @@ class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
690
697
  'entity_slug': self.entity.slug
691
698
  })
692
699
 
700
+ def get_journal_entry_list_url(self) -> str:
701
+ return reverse('django_ledger:je-list',
702
+ kwargs={
703
+ 'entity_slug': self.entity_slug,
704
+ 'ledger_pk': self.uuid,
705
+ })
706
+
707
+ def get_journal_entry_create_url(self) -> str:
708
+ return reverse('django_ledger:je-create',
709
+ kwargs={
710
+ 'entity_slug': self.entity_slug,
711
+ 'ledger_pk': self.uuid
712
+ })
713
+
693
714
  def get_balance_sheet_url(self):
694
715
  return reverse(
695
716
  viewname='django_ledger:ledger-bs',
@@ -720,11 +741,31 @@ class LedgerModelAbstract(CreateUpdateMixIn, IOMixIn):
720
741
  def get_delete_message(self):
721
742
  return _(f'Are you sure you want to delete Ledger {self.name} from Entity {self.get_entity_name()}?')
722
743
 
744
+ # Action URL...
745
+ def get_action_post_journal_entries_url(self):
746
+ return reverse(
747
+ viewname='django_ledger:ledger-action-post-journal-entries',
748
+ kwargs={
749
+ 'entity_slug': self.entity_slug,
750
+ 'ledger_pk': self.uuid
751
+ }
752
+ )
753
+
754
+ def get_action_lock_journal_entries_url(self):
755
+ return reverse(
756
+ viewname='django_ledger:ledger-action-lock-journal-entries',
757
+ kwargs={
758
+ 'entity_slug': self.entity_slug,
759
+ 'ledger_pk': self.uuid
760
+ }
761
+ )
762
+
723
763
 
724
764
  class LedgerModel(LedgerModelAbstract):
725
765
  """
726
766
  Base LedgerModel from Abstract.
727
767
  """
768
+
728
769
  class Meta(LedgerModelAbstract.Meta):
729
770
  swappable = 'DJANGO_LEDGER_LEDGER_MODEL'
730
771
  abstract = False