class ReadOnlyWalkRouteForm(forms.Form): """ Readonly map widget for displaying walk """ route = forms.LineStringField( widget=ResponsiveMapWidget(attrs={ "default_zoom": 16, "modifiable": False }), label="", disabled=True, )
def __init__(self, *args, **kwargs): feature_type = kwargs.pop('feature_type') user = kwargs.pop('user', None) super().__init__(*args, **kwargs) project = feature_type.project # Status choices initial = 'draft' choices = tuple(x for x in Feature.STATUS_CHOICES) if not project.moderation: choices = tuple(x for x in Feature.STATUS_CHOICES if x[0] != 'pending') initial = 'published' if not self.instance else self.instance.status if project.moderation and not Authorization.has_permission( user, 'can_publish_feature', project): choices = tuple(x for x in Feature.STATUS_CHOICES if x[0] in ['draft', 'pending']) initial = 'pending' if project.moderation and Authorization.has_permission( user, 'can_publish_feature', project): choices = tuple(x for x in Feature.STATUS_CHOICES if x[0] in ['draft', 'published', 'archived']) initial = 'draft' self.fields['status'] = forms.ChoiceField(choices=choices, initial=initial, label='Statut') # TODO: factoriser les attributs de champs geom if feature_type.geom_type == "point": self.fields['geom'] = forms.PointField(label="Localisation", required=True, srid=4326) if feature_type.geom_type == "linestring": self.fields['geom'] = forms.LineStringField(label="Localisation", required=True, srid=4326) if feature_type.geom_type == "polygon": self.fields['geom'] = forms.PolygonField(label="Localisation", required=True, srid=4326)
class LineStringForm(forms.Form): f = forms.LineStringField()