Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

db.py 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from __future__ import absolute_import
  2. import django
  3. from contextlib import contextmanager
  4. from django.db import transaction
  5. if django.VERSION < (1, 6): # pragma: no cover
  6. def get_queryset(s):
  7. return s.get_query_set()
  8. else:
  9. def get_queryset(s): # noqa
  10. return s.get_queryset()
  11. try:
  12. from django.db.transaction import atomic # noqa
  13. except ImportError: # pragma: no cover
  14. try:
  15. from django.db.transaction import Transaction # noqa
  16. except ImportError:
  17. @contextmanager
  18. def commit_on_success(*args, **kwargs):
  19. try:
  20. transaction.enter_transaction_management(*args, **kwargs)
  21. transaction.managed(True, *args, **kwargs)
  22. try:
  23. yield
  24. except:
  25. if transaction.is_dirty(*args, **kwargs):
  26. transaction.rollback(*args, **kwargs)
  27. raise
  28. else:
  29. if transaction.is_dirty(*args, **kwargs):
  30. try:
  31. transaction.commit(*args, **kwargs)
  32. except:
  33. transaction.rollback(*args, **kwargs)
  34. raise
  35. finally:
  36. transaction.leave_transaction_management(*args, **kwargs)
  37. else: # pragma: no cover
  38. from django.db.transaction import commit_on_success # noqa
  39. commit_unless_managed = transaction.commit_unless_managed
  40. rollback_unless_managed = transaction.rollback_unless_managed
  41. else:
  42. @contextmanager
  43. def commit_on_success(using=None): # noqa
  44. connection = transaction.get_connection(using)
  45. if connection.features.autocommits_when_autocommit_is_off:
  46. # ignore stupid warnings and errors
  47. yield
  48. else:
  49. with transaction.atomic(using):
  50. yield
  51. def commit_unless_managed(*args, **kwargs): # noqa
  52. pass
  53. def rollback_unless_managed(*args, **kwargs): # noqa
  54. pass