from apps.projects.models import ProjectRate, ProjectUserRate def create_project_rate(project, amount, currency="USD"): return ProjectRate.objects.create( project=project, amount=amount, currency=currency ) def update_project_rate(rate_instance, **kwargs): update_fields = [] for field, value in kwargs.items(): if hasattr(rate_instance, field) and getattr(rate_instance, field) != value: setattr(rate_instance, field, value) update_fields.append(field) if update_fields: update_fields.append("updated_at") rate_instance.save(update_fields=update_fields) return rate_instance def create_project_user_rate(project, user, amount, currency="USD"): return ProjectUserRate.objects.create( project=project, user=user, amount=amount, currency=currency ) def update_project_user_rate(user_rate_instance, **kwargs): update_fields = [] for field, value in kwargs.items(): if hasattr(user_rate_instance, field) and getattr(user_rate_instance, field) != value: setattr(user_rate_instance, field, value) update_fields.append(field) if update_fields: update_fields.append("updated_at") user_rate_instance.save(update_fields=update_fields) return user_rate_instance