Identifier generating
* refactors identifier generating into BaseObject class
This commit is contained in:
		
							parent
							
								
									df70f99ca4
								
							
						
					
					
						commit
						bdf46d9114
					
				@ -9,15 +9,11 @@ from django.contrib.auth.models import User
 | 
			
		||||
from django.contrib.gis.db import models
 | 
			
		||||
from django.core.validators import MinValueValidator
 | 
			
		||||
from django.db.models import Sum
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from compensation.settings import COMPENSATION_IDENTIFIER_LENGTH, COMPENSATION_IDENTIFIER_TEMPLATE, \
 | 
			
		||||
    ECO_ACCOUNT_IDENTIFIER_LENGTH, ECO_ACCOUNT_IDENTIFIER_TEMPLATE
 | 
			
		||||
from intervention.models import Intervention, ResponsibilityData
 | 
			
		||||
from konova.models import BaseObject, BaseResource, Geometry, UuidModel
 | 
			
		||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
 | 
			
		||||
from konova.utils.generators import generate_random_string
 | 
			
		||||
from user.models import UserActionLogEntry
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -146,22 +142,6 @@ class Compensation(AbstractCompensation):
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "{}".format(self.identifier)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _generate_new_identifier() -> str:
 | 
			
		||||
        """ Generates a new identifier for the intervention object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            str
 | 
			
		||||
        """
 | 
			
		||||
        curr_month = str(now().month)
 | 
			
		||||
        curr_year = str(now().year)
 | 
			
		||||
        rand_str = generate_random_string(
 | 
			
		||||
            length=COMPENSATION_IDENTIFIER_LENGTH,
 | 
			
		||||
            only_numbers=True,
 | 
			
		||||
        )
 | 
			
		||||
        _str = "{}{}{}".format(curr_month, curr_year, rand_str)
 | 
			
		||||
        return COMPENSATION_IDENTIFIER_TEMPLATE.format(_str)
 | 
			
		||||
 | 
			
		||||
    def save(self, *args, **kwargs):
 | 
			
		||||
        if self.identifier is None or len(self.identifier) == 0:
 | 
			
		||||
            # Create new identifier
 | 
			
		||||
@ -284,22 +264,6 @@ class EcoAccount(AbstractCompensation):
 | 
			
		||||
        # ToDo
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _generate_new_identifier() -> str:
 | 
			
		||||
        """ Generates a new identifier for the intervention object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            str
 | 
			
		||||
        """
 | 
			
		||||
        curr_month = str(now().month)
 | 
			
		||||
        curr_year = str(now().year)
 | 
			
		||||
        rand_str = generate_random_string(
 | 
			
		||||
            length=ECO_ACCOUNT_IDENTIFIER_LENGTH,
 | 
			
		||||
            only_numbers=True,
 | 
			
		||||
        )
 | 
			
		||||
        _str = "{}{}{}".format(curr_month, curr_year, rand_str)
 | 
			
		||||
        return ECO_ACCOUNT_IDENTIFIER_TEMPLATE.format(_str)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EcoAccountWithdraw(BaseResource):
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@ -7,16 +7,11 @@ Created on: 17.11.20
 | 
			
		||||
"""
 | 
			
		||||
from django.contrib.auth.models import User
 | 
			
		||||
from django.contrib.gis.db import models
 | 
			
		||||
from django.db import transaction
 | 
			
		||||
from django.utils import timezone
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
 | 
			
		||||
from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_IDENTIFIER_TEMPLATE
 | 
			
		||||
from konova.models import BaseObject, Geometry, UuidModel, BaseResource
 | 
			
		||||
from konova.settings import DEFAULT_SRID_RLP, LANIS_LINK_TEMPLATE
 | 
			
		||||
from konova.utils import generators
 | 
			
		||||
from konova.utils.generators import generate_random_string
 | 
			
		||||
from organisation.models import Organisation
 | 
			
		||||
from user.models import UserActionLogEntry
 | 
			
		||||
 | 
			
		||||
@ -135,22 +130,6 @@ class Intervention(BaseObject):
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "{} ({})".format(self.identifier, self.title)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _generate_new_identifier() -> str:
 | 
			
		||||
        """ Generates a new identifier for the intervention object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            str
 | 
			
		||||
        """
 | 
			
		||||
        curr_month = str(now().month)
 | 
			
		||||
        curr_year = str(now().year)
 | 
			
		||||
        rand_str = generate_random_string(
 | 
			
		||||
            length=INTERVENTION_IDENTIFIER_LENGTH,
 | 
			
		||||
            only_numbers=True,
 | 
			
		||||
        )
 | 
			
		||||
        _str = "{}{}{}".format(curr_month, curr_year, rand_str)
 | 
			
		||||
        return INTERVENTION_IDENTIFIER_TEMPLATE.format(_str)
 | 
			
		||||
 | 
			
		||||
    def generate_access_token(self, make_unique: bool = False, rec_depth: int = 5):
 | 
			
		||||
        """ Creates a new access token for the intervention
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,10 +9,15 @@ import os
 | 
			
		||||
import uuid
 | 
			
		||||
 | 
			
		||||
from django.contrib.auth.models import User
 | 
			
		||||
from django.utils.timezone import now
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from django.contrib.gis.db.models import MultiPolygonField
 | 
			
		||||
from django.db import models, transaction
 | 
			
		||||
 | 
			
		||||
from compensation.settings import COMPENSATION_IDENTIFIER_TEMPLATE, COMPENSATION_IDENTIFIER_LENGTH, \
 | 
			
		||||
    ECO_ACCOUNT_IDENTIFIER_TEMPLATE, ECO_ACCOUNT_IDENTIFIER_LENGTH
 | 
			
		||||
from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_IDENTIFIER_TEMPLATE
 | 
			
		||||
from konova.utils.generators import generate_random_string
 | 
			
		||||
from user.models import UserActionLogEntry, UserAction
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -118,6 +123,43 @@ class BaseObject(BaseResource):
 | 
			
		||||
        else:
 | 
			
		||||
            return User.objects.none()
 | 
			
		||||
 | 
			
		||||
    def _generate_new_identifier(self) -> str:
 | 
			
		||||
        """ Generates a new identifier for the intervention object
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            str
 | 
			
		||||
        """
 | 
			
		||||
        from compensation.models import Compensation, EcoAccount
 | 
			
		||||
        from intervention.models import Intervention
 | 
			
		||||
        definitions = {
 | 
			
		||||
            Intervention: {
 | 
			
		||||
                "length": INTERVENTION_IDENTIFIER_LENGTH,
 | 
			
		||||
                "template": INTERVENTION_IDENTIFIER_TEMPLATE,
 | 
			
		||||
            },
 | 
			
		||||
            Compensation: {
 | 
			
		||||
                "length": COMPENSATION_IDENTIFIER_LENGTH,
 | 
			
		||||
                "template": COMPENSATION_IDENTIFIER_TEMPLATE,
 | 
			
		||||
            },
 | 
			
		||||
            EcoAccount: {
 | 
			
		||||
                "length": ECO_ACCOUNT_IDENTIFIER_LENGTH,
 | 
			
		||||
                "template": ECO_ACCOUNT_IDENTIFIER_TEMPLATE,
 | 
			
		||||
            },
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if self.__class__ not in definitions:
 | 
			
		||||
            # Not defined, yet. Create fallback identifier for this case
 | 
			
		||||
            return generate_random_string(10)
 | 
			
		||||
 | 
			
		||||
        _now = now()
 | 
			
		||||
        curr_month = str(_now.month)
 | 
			
		||||
        curr_year = str(_now.year)
 | 
			
		||||
        rand_str = generate_random_string(
 | 
			
		||||
            length=definitions[self.__class__]["length"],
 | 
			
		||||
            only_numbers=True,
 | 
			
		||||
        )
 | 
			
		||||
        _str = "{}{}-{}".format(curr_month, curr_year, rand_str)
 | 
			
		||||
        return definitions[self.__class__]["template"].format(_str)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DeadlineType(models.TextChoices):
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user