""" Legal Documents Module for MyWebdav This module provides a base class for legal documents and specific implementations for various legal policies required for a European cloud storage provider. """ from abc import ABC, abstractmethod from datetime import datetime from typing import Dict class LegalDocument(ABC): """ Base class for all legal documents. Provides common structure and methods for generating legal content. """ def __init__( self, company_name: str = "MyWebdav Technologies", last_updated: str = None, contact_email: str = "legal@mywebdav.eu", website: str = "https://mywebdav.eu", ): self.company_name = company_name self.last_updated = last_updated or datetime.now().strftime("%B %d, %Y") self.contact_email = contact_email self.website = website @property @abstractmethod def title(self) -> str: """Return the document title.""" pass @abstractmethod def get_content(self) -> str: """Return the main content of the document as markdown.""" pass def get_header(self) -> str: """Return the standard header for legal documents.""" return f"# {self.title}\n\n**Last Updated:** {self.last_updated}\n\n" def get_footer(self) -> str: """Return the standard footer for legal documents.""" return f"\n## Contact Information\n\nIf you have any questions about this {self.title.lower()}, please contact us:\n\n- **Email:** [{self.contact_email}](mailto:{self.contact_email})\n- **Website:** {self.website}\n- **Address:** MyWebdav Technologies, European Union\n\n{self.company_name}" def to_markdown(self) -> str: """Generate the complete document in Markdown format.""" return self.get_header() + self.get_content() + self.get_footer() def to_html(self) -> str: """Generate the complete document as Jinja2 template extending base.html.""" html_content = self.get_content() template_content = f"""{{% extends "base.html" %}} {{% block title %}}{self.title} - MyWebdav{{% endblock %}} {{% block description %}}{self.title} for MyWebdav cloud storage service.{{% endblock %}} {{% block extra_css %}} {{% endblock %}} {{% block content %}}
Last Updated: {self.last_updated}
{html_content}If you have any questions about this {self.title.lower()}, please contact us:
MyWebdav Technologies ("we," "us," or "our") is committed to protecting your privacy and ensuring the security of your personal data. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our MyWebdav cloud storage service (the "Service"), in full compliance with the EU General Data Protection Regulation (GDPR), and other applicable data protection laws.
This policy applies to all users of our Service, including visitors to our website and registered users. By using our Service, you consent to the collection and use of information in accordance with this policy.
Data Controller: MyWebdav Technologies
Registered Address: European Union
Data Protection Officer: dpo@mywebdav.eu
Contact Email: privacy@mywebdav.eu
When you register for an account or use our Service, we collect:
We automatically collect certain information when you use our Service:
We use cookies and similar technologies to:
You can control cookie settings through your browser preferences. However, disabling certain cookies may limit Service functionality.
We process your personal data based on the following legal grounds under GDPR:
We use collected information for the following purposes:
We do not sell your personal data to third parties. We may share information in the following circumstances:
Your data may be processed in countries outside the EU. We ensure adequate protection through:
All international transfers comply with Chapter V of the GDPR.
We implement comprehensive security measures to protect your data:
We retain personal data only as long as necessary for the purposes outlined in this policy:
You have the following rights regarding your personal data:
To exercise these rights, contact our Data Protection Officer at dpo@mywebdav.eu. We will respond within 30 days.
Our Service is not intended for individuals under 16 years of age. We do not knowingly collect personal data from children under 16. If we become aware of such collection, we will delete the data immediately and terminate the account.
If you are a parent or guardian and believe your child has provided us with personal data, please contact us immediately.
We may update this Privacy Policy to reflect changes in our practices or legal requirements. We will:
Continued use of the Service after changes take effect constitutes acceptance of the updated policy.
If you believe we have not complied with applicable data protection laws, you have the right to lodge a complaint with a supervisory authority. In the Netherlands, this is the Autoriteit Persoonsgegevens (AP).
We encourage you to contact us first to resolve any concerns.
For any questions about this Privacy Policy or our data practices:
These Terms of Service ("Terms") constitute a legally binding agreement between you ("User," "you," or "your") and MyWebdav Technologies ("Company," "we," "us," or "our") governing your use of the MyWebdav cloud storage service (the "Service").
By accessing or using the Service, you acknowledge that you have read, understood, and agree to be bound by these Terms. If you do not agree, you must not use the Service.
MyWebdav provides cloud-based file storage, sharing, and collaboration tools. The Service includes:
You must be at least 16 years old and have the legal capacity to enter into these Terms.
To use the Service, you must create an account with accurate information. You are responsible for maintaining the confidentiality of your account credentials and all activities under your account.
We may suspend or terminate your account for violations of these Terms, illegal activity, or at our discretion with reasonable notice.
You agree not to:
You retain ownership of content you upload ("Your Content"). You grant us a limited license to store, process, and transmit Your Content solely to provide the Service.
You may not upload content that is:
We may remove content that violates these Terms, with or without notice.
We strive for high availability but do not guarantee uninterrupted service. Scheduled maintenance may cause temporary outages.
Storage limits vary by plan. Exceeding limits may result in additional charges or service restrictions.
Excessive usage that impacts other users may result in throttling or additional charges.
Service fees are as published on our website. Prices may change with 30 days' notice.
You agree to pay all charges associated with your account. Failed payments may result in service suspension.
Fees are generally non-refundable except as required by law or at our discretion.
Your use of the Service is subject to our Privacy Policy, which is incorporated by reference. We comply with GDPR and other data protection regulations.
We implement industry-standard security measures, but you acknowledge that no system is completely secure. You are responsible for your data security.
The Service and its original content are protected by intellectual property laws. You may not copy, modify, or distribute our proprietary materials.
THE SERVICE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND. WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
TO THE MAXIMUM EXTENT PERMITTED BY LAW, OUR TOTAL LIABILITY SHALL NOT EXCEED THE AMOUNT PAID BY YOU IN THE 12 MONTHS PRECEDING THE CLAIM.
You agree to indemnify and hold us harmless from claims arising from your use of the Service or violation of these Terms.
These Terms are governed by the laws of the Netherlands. Disputes shall be resolved through binding arbitration in Amsterdam, Netherlands.
We may modify these Terms with reasonable notice. Continued use after changes constitutes acceptance.
If any provision is found invalid, the remaining provisions remain in effect.
These Terms constitute the entire agreement between you and us regarding the Service.
""" class SecurityPolicy(LegalDocument): """Security Policy document.""" @property def title(self) -> str: return "Security Policy" def get_content(self) -> str: return """This policy establishes the framework for securing our cloud storage platform and ensures all personnel understand their security responsibilities.
Applies to all employees, contractors, systems, and data managed by MyWebdav Technologies.
We maintain an ISO/IEC 27001-certified ISMS with regular risk assessments, audits, and continuous improvement.
Access follows the principle of least privilege with multi-factor authentication required for administrative access.
Strong passwords, regular rotation, and account lockout policies are enforced.
Secured via VPN with full logging and monitoring.
Data classified as Public, Internal, Confidential, or Highly Sensitive with appropriate controls.
Data retained only as necessary with secure deletion methods.
Isolated networks with firewalls, IDS, and regular monitoring.
Hardened systems following CIS Benchmarks.
Controlled access to data centers with biometric authentication.
Secure storage in climate-controlled environments.
Comprehensive plan for identification, containment, eradication, recovery, and notification.
Incidents reported within 72 hours (GDPR) or 24 hours (NIS2) as applicable.
Code reviews, static/dynamic analysis, and vulnerability management.
Formal approval processes for production changes.
Security assessments and contractual requirements for all vendors.
Compliance with GDPR, NIS2, and ISO/IEC 27001.
Annual audits, quarterly penetration testing, and continuous monitoring.
Mandatory annual security training for all personnel.
Compliance is mandatory. Violations may result in disciplinary action up to termination.
""" class CookiePolicy(LegalDocument): """Cookie Policy document.""" @property def title(self) -> str: return "Cookie Policy" def get_content(self) -> str: return """Cookies are small text files stored on your device when you visit our Service. They help us provide a better user experience.
Required for basic Service functionality:
Enhance your experience:
Help us understand usage:
Used for targeted advertising (with consent):
You can control cookies through:
We may use third-party services that set cookies:
Under GDPR, you have rights regarding cookie-based processing:
We may update this policy. Material changes will be communicated via the Service.
""" class DataProcessingAgreement(LegalDocument): """Data Processing Agreement document.""" @property def title(self) -> str: return "Data Processing Agreement" def get_content(self) -> str: return """This Data Processing Agreement ("DPA") supplements the Terms of Service between MyWebdav Technologies (the "Processor") and the Customer (the "Controller") regarding the processing of personal data.
This DPA applies to all processing of personal data by the Processor on behalf of the Controller.
The Processor shall process personal data solely for the purpose of providing the Service as described in the Terms of Service.
Processing shall comply with GDPR and other applicable data protection laws.
The Processor shall implement appropriate technical and organizational measures to ensure data security.
All personnel with access to personal data shall maintain confidentiality.
The Processor shall assist the Controller in fulfilling data subject rights requests.
The Processor may engage subprocessors with prior notice to the Controller.
The Processor shall notify the Controller of any personal data breaches without undue delay.
The Processor shall assist with DPIAs when required.
Data transfers outside the EU shall comply with GDPR Chapter V.
The Controller may audit the Processor's compliance, subject to confidentiality obligations.
Upon termination, the Processor shall delete or return all personal data.
This DPA is governed by the laws of the Netherlands.
""" class ComplianceStatement(LegalDocument): """Compliance Statement document.""" @property def title(self) -> str: return "Compliance Statement" def get_content(self) -> str: return """MyWebdav Technologies is committed to maintaining the highest standards of compliance with applicable laws and regulations. This Compliance Statement outlines our commitments and achievements.
We comply with:
Customer data is stored within the EU by default, with options for specific country storage.
All data encrypted in transit and at rest using industry-standard algorithms.
Role-based access control with multi-factor authentication.
We publish annual transparency reports detailing:
Annual third-party audits verify compliance with all applicable standards.
We regularly review and update our compliance program to address emerging threats and regulatory changes.
""" class DataPortabilityDeletionPolicy(LegalDocument): """Data Portability and Deletion Policy document.""" @property def title(self) -> str: return "Data Portability and Deletion Policy" def get_content(self) -> str: return """This policy outlines your rights under GDPR regarding data portability and deletion, and how MyWebdav Technologies facilitates these rights.
You have the right to receive your personal data in a structured, commonly used, and machine-readable format.
Applies to personal data you have provided that is processed based on consent or contract.
Contact us at dpo@mywebdav.eu with "Data Portability Request" in the subject line.
Data will be provided in JSON or CSV format, depending on the data type.
Requests fulfilled within 30 days, extendable to 60 days for complex requests.
You have the right to have your personal data erased under certain circumstances.
Erasure not required if processing is necessary for:
Submit a deletion request via your account settings or contact dpo@mywebdav.eu.
We retain data only as long as necessary:
We do not use automated decision making with legal or significant effects on individuals.
For data rights requests:
MyWebdav Technologies provides multiple channels for you to contact us and raise concerns. We are committed to addressing your inquiries promptly and fairly.
Most complaints resolved through direct communication with our team.
For unresolved disputes, we offer mediation through a neutral third party.
If internal resolution fails, disputes may be brought before competent courts in the Netherlands.
We welcome your feedback to improve our services. Contact us at feedback@mywebdav.eu.
We publish annual reports on complaint handling and resolution rates.
""" # Utility functions def get_all_legal_documents() -> Dict[str, LegalDocument]: """Return a dictionary of all legal document instances.""" return { "privacy_policy": PrivacyPolicy(), "terms_of_service": TermsOfService(), "security_policy": SecurityPolicy(), "cookie_policy": CookiePolicy(), "data_processing_agreement": DataProcessingAgreement(), "compliance_statement": ComplianceStatement(), "data_portability_deletion_policy": DataPortabilityDeletionPolicy(), "contact_complaint_mechanism": ContactComplaintMechanism(), } def generate_legal_documents(template_dir: str = "mywebdav/templates/legal"): """Generate all legal documents as Jinja2 templates.""" import os os.makedirs(template_dir, exist_ok=True) documents = get_all_legal_documents() for doc_name, doc in documents.items(): html_filename = f"{doc_name}.html" html_path = os.path.join(template_dir, html_filename) with open(html_path, "w") as f: f.write(doc.to_html()) print(f"Generated {html_filename}") if __name__ == "__main__": generate_legal_documents()